Commit c884bf1dd4fd63c4cc39c37dcda07be26f6fb31e
1 parent
42d69861
通过URL传参访问车辆和通道信息
Showing
12 changed files
with
139 additions
and
4983 deletions
src/main/java/com/bsth/controller/video/VideoController.java
| ... | ... | @@ -59,21 +59,28 @@ public class VideoController { |
| 59 | 59 | |
| 60 | 60 | @GetMapping("/tree/carNo/{parentId}") |
| 61 | 61 | public List<VideoTree> layTreeNodeCarNo(@PathVariable("parentId") String parentId) { |
| 62 | - return videoService.combinationTreeOfCar(parentId); | |
| 62 | + return videoService.combinationTreeOfCar(parentId, false); | |
| 63 | 63 | } |
| 64 | 64 | |
| 65 | 65 | @GetMapping("/tree/search") |
| 66 | 66 | public Map<String, Object> searchLayTreeNode(HttpServletRequest request) { |
| 67 | + Map<String, Object> result = new HashMap<>(); | |
| 67 | 68 | String carNo = request.getParameter("insideCode_like"); |
| 68 | 69 | if (StringUtils.isEmpty(carNo)) { |
| 69 | 70 | return combinationTree(); |
| 70 | 71 | } |
| 71 | - List<VideoTree> groups = videoService.searchTreeDataByCarNo(carNo); | |
| 72 | + List<VideoTree> groups = null; | |
| 73 | + try { | |
| 74 | + groups = videoService.searchTreeDataByCarNo(carNo, Boolean.TRUE); | |
| 72 | 75 | |
| 73 | - Map<String, Object> result = new HashMap<>(); | |
| 74 | - result.put("status", ResponseCode.SUCCESS); | |
| 75 | - result.put("data", groups); | |
| 76 | 76 | |
| 77 | + setAttributeToPage(result); | |
| 78 | + result.put("status", ResponseCode.SUCCESS); | |
| 79 | + result.put("data", groups); | |
| 80 | + } catch (Exception e) { | |
| 81 | + log.error("搜索车辆通道异常:[{}]", carNo, e); | |
| 82 | + result.put("status", ResponseCode.ERROR); | |
| 83 | + } | |
| 77 | 84 | return result; |
| 78 | 85 | } |
| 79 | 86 | |
| ... | ... | @@ -144,32 +151,10 @@ public class VideoController { |
| 144 | 151 | public Map<String, Object> queryChannelsTree(@PathVariable String carNo) { |
| 145 | 152 | Map<String, Object> result = new HashMap<>(); |
| 146 | 153 | try { |
| 147 | - | |
| 148 | - | |
| 149 | - List<Map<String, Object>> videoChannels = videoService.getVideoChannel(carNo); | |
| 150 | - List<VideoTree> trees = new ArrayList<>(); | |
| 151 | - | |
| 152 | - if (CollectionUtils.isNotEmpty(videoChannels)) { | |
| 153 | - for (Map<String, Object> map : videoChannels) { | |
| 154 | - VideoTree tree = new VideoTree(); | |
| 155 | - tree.setId(map.get("channelId")); | |
| 156 | - tree.setCode(map.get("channelId")); | |
| 157 | - tree.setSourceId(map.get("deviceId")); | |
| 158 | - tree.setType(401); | |
| 159 | - tree.setIcon("layui-icon-video"); | |
| 160 | - String name = Objects.isNull(map.get("name")) ? map.get("channelId") + "_" + map.get("deviceId") : map.get("name").toString(); | |
| 161 | - tree.setText("<span><img src='/metronic_v4.5.4/layui/icon/video1.ico' class ='imageIcon' /></span><span>"+name+"</span>"); | |
| 162 | - tree.setNodePValue(carNo); | |
| 163 | - | |
| 164 | - trees.add(tree); | |
| 165 | - } | |
| 166 | - } | |
| 167 | - result.put("status", ResponseCode.SUCCESS); | |
| 154 | + List<VideoTree> trees = videoService.queryChannelsTree(carNo, Boolean.TRUE); | |
| 155 | + setAttributeToPage(result); | |
| 168 | 156 | result.put("data", trees); |
| 169 | - result.put("channelImageURL", wvpConfig.getChannelListOfImgURL()); | |
| 170 | - result.put("wvpPlayURL", wvpConfig.getWvpPlayURL()); | |
| 171 | - result.put("wvpLiveBroadcast", wvpConfig.getWvpLiveBroadcast()); | |
| 172 | - | |
| 157 | + result.put("status", ResponseCode.SUCCESS); | |
| 173 | 158 | } catch (Exception e) { |
| 174 | 159 | log.error("查询车辆通道异常:[{}]", carNo, e); |
| 175 | 160 | result.put("status", ResponseCode.ERROR); |
| ... | ... | @@ -177,6 +162,7 @@ public class VideoController { |
| 177 | 162 | return result; |
| 178 | 163 | } |
| 179 | 164 | |
| 165 | + | |
| 180 | 166 | @GetMapping("/car/channel/history/{device}/{channel}/{dateStr}") |
| 181 | 167 | public Map<String, Object> queryChannelHistoryList(@PathVariable("device") String device, @PathVariable("channel") String channel, @PathVariable("dateStr") String dateStr) { |
| 182 | 168 | Map<String, Object> result = new HashMap<>(); |
| ... | ... | @@ -193,4 +179,10 @@ public class VideoController { |
| 193 | 179 | } |
| 194 | 180 | return result; |
| 195 | 181 | } |
| 182 | + | |
| 183 | + private void setAttributeToPage(Map<String, Object> result) { | |
| 184 | + result.put("channelImageURL", wvpConfig.getChannelListOfImgURL()); | |
| 185 | + result.put("wvpPlayURL", wvpConfig.getWvpPlayURL()); | |
| 186 | + result.put("wvpLiveBroadcast", wvpConfig.getWvpLiveBroadcast()); | |
| 187 | + } | |
| 196 | 188 | } | ... | ... |
src/main/java/com/bsth/service/impl/videoimpl/VideoServiceImpl.java
| ... | ... | @@ -69,7 +69,7 @@ public class VideoServiceImpl implements VideoService { |
| 69 | 69 | } |
| 70 | 70 | |
| 71 | 71 | @Override |
| 72 | - public List<VideoTree> combinationTreeOfCar(String code) { | |
| 72 | + public List<VideoTree> combinationTreeOfCar(String code,boolean spread) { | |
| 73 | 73 | if (Objects.nonNull(code)) { |
| 74 | 74 | List<VideoTree> trees = new ArrayList<>(); |
| 75 | 75 | Set<String> carNos = groupCarNosByComputeCode(code); |
| ... | ... | @@ -77,14 +77,14 @@ public class VideoServiceImpl implements VideoService { |
| 77 | 77 | Set<Line> lineSet = groupLingByCompany(code); |
| 78 | 78 | if (CollectionUtils.isNotEmpty(lineSet)) { |
| 79 | 79 | for (Line line : lineSet) { |
| 80 | - VideoTree videoTree = combinationOfLine(code, line); | |
| 80 | + VideoTree videoTree = combinationOfLine(code, line,spread); | |
| 81 | 81 | trees.add(videoTree); |
| 82 | 82 | |
| 83 | 83 | Set<String> carNoSets = groupCarNoByLine(line.getId()); |
| 84 | 84 | if (CollectionUtils.isNotEmpty(carNoSets)) { |
| 85 | 85 | List<VideoTree> children = new ArrayList<>(); |
| 86 | 86 | for (String carNo : carNoSets) { |
| 87 | - VideoTree carTree = combnationOfCar(carNo, line.getId().toString()); | |
| 87 | + VideoTree carTree = combnationOfCar(carNo, line.getId().toString(),spread); | |
| 88 | 88 | children.add(carTree); |
| 89 | 89 | |
| 90 | 90 | if (CollectionUtils.isNotEmpty(carNos)) { |
| ... | ... | @@ -100,7 +100,7 @@ public class VideoServiceImpl implements VideoService { |
| 100 | 100 | |
| 101 | 101 | if (CollectionUtils.isNotEmpty(carNos)) { |
| 102 | 102 | for (String carNo : carNos) { |
| 103 | - VideoTree carTree = combnationOfCar(carNo, code); | |
| 103 | + VideoTree carTree = combnationOfCar(carNo, code,spread); | |
| 104 | 104 | trees.add(carTree); |
| 105 | 105 | } |
| 106 | 106 | } |
| ... | ... | @@ -109,17 +109,17 @@ public class VideoServiceImpl implements VideoService { |
| 109 | 109 | return null; |
| 110 | 110 | } |
| 111 | 111 | |
| 112 | - private VideoTree combnationOfCar(String carNo, String line) { | |
| 112 | + private VideoTree combnationOfCar(String carNo, String line,boolean spread) { | |
| 113 | 113 | String name = Objects.isNull(basicData) || MapUtils.isEmpty(basicData.nbbmCompanyPlateMap) ? null : basicData.nbbmCompanyPlateMap.get(carNo); |
| 114 | - return combinationVideoTree(carNo, carNo, line, carNo, 301, "bus1", carNo); | |
| 114 | + return combinationVideoTree(carNo, carNo, line, carNo, 301, "bus1", carNo,spread); | |
| 115 | 115 | } |
| 116 | 116 | |
| 117 | - private VideoTree combinationOfLine(String code, Line line) { | |
| 118 | - return combinationVideoTree(line.getId(), line.getName(), code, line.getId(), 201, "line", line.getLineCode()); | |
| 117 | + private VideoTree combinationOfLine(String code, Line line,boolean spread) { | |
| 118 | + return combinationVideoTree(line.getId(), line.getName(), code, line.getId(), 201, "line", line.getLineCode(),spread); | |
| 119 | 119 | } |
| 120 | 120 | |
| 121 | 121 | @Override |
| 122 | - public List<VideoTree> searchTreeDataByCarNo(String carNo) { | |
| 122 | + public List<VideoTree> searchTreeDataByCarNo(String carNo,boolean spread) throws Exception { | |
| 123 | 123 | Line line = findLineByCode(carNo); |
| 124 | 124 | |
| 125 | 125 | Iterable<Business> businessIterable = businessService.list(new HashMap<>()); |
| ... | ... | @@ -131,21 +131,25 @@ public class VideoServiceImpl implements VideoService { |
| 131 | 131 | Set<Business> businesses = new LinkedHashSet<>(); |
| 132 | 132 | findBussinessByUpCode(line.getCompany(), businessIterable, businesses); |
| 133 | 133 | if (CollectionUtils.isNotEmpty(businesses)) { |
| 134 | - List<VideoTree> group = combitionBussiness(businesses); | |
| 134 | + List<VideoTree> group = combitionBussiness(businesses,spread); | |
| 135 | 135 | |
| 136 | 136 | VideoTree sourceTree = findVideoTreeByBusinessCode(line.getCompany(), group); |
| 137 | 137 | if (Objects.isNull(sourceTree.getChildren())) { |
| 138 | 138 | sourceTree.setChildren(new ArrayList<>()); |
| 139 | 139 | } |
| 140 | - VideoTree lineOfTreeNode = combinationOfLine(sourceTree.getId().toString(), line); | |
| 140 | + VideoTree lineOfTreeNode = combinationOfLine(sourceTree.getId().toString(), line,spread); | |
| 141 | 141 | lineOfTreeNode.setSpread(Boolean.TRUE.toString()); |
| 142 | 142 | lineOfTreeNode.setChildren(new ArrayList<>()); |
| 143 | 143 | sourceTree.getChildren().add(lineOfTreeNode); |
| 144 | 144 | |
| 145 | - VideoTree carOfTreeNode = combnationOfCar(carNo, line.getLineCode()); | |
| 145 | + VideoTree carOfTreeNode = combnationOfCar(carNo, line.getLineCode(),spread); | |
| 146 | 146 | lineOfTreeNode.getChildren().add(carOfTreeNode); |
| 147 | 147 | carOfTreeNode.setSpread(Boolean.TRUE.toString()); |
| 148 | 148 | |
| 149 | + List<VideoTree> children = queryChannelsTree(carNo,spread); | |
| 150 | + carOfTreeNode.setChildren(children); | |
| 151 | + | |
| 152 | + | |
| 149 | 153 | return group; |
| 150 | 154 | } |
| 151 | 155 | } else { |
| ... | ... | @@ -154,16 +158,18 @@ public class VideoServiceImpl implements VideoService { |
| 154 | 158 | if (StringUtils.isNotEmpty(company)) { |
| 155 | 159 | findBussinessByUpCode(company, businessIterable, businesses); |
| 156 | 160 | if (CollectionUtils.isNotEmpty(businesses)) { |
| 157 | - List<VideoTree> group = combitionBussiness(businesses); | |
| 161 | + List<VideoTree> group = combitionBussiness(businesses,spread); | |
| 158 | 162 | VideoTree sourceTree = findVideoTreeByBusinessCode(company, group); |
| 159 | 163 | if (Objects.nonNull(sourceTree) && Objects.isNull(sourceTree.getChildren())) { |
| 160 | 164 | sourceTree.setChildren(new ArrayList<>()); |
| 161 | 165 | } |
| 162 | - VideoTree carOfTreeNode = combnationOfCar(carNo, company); | |
| 166 | + VideoTree carOfTreeNode = combnationOfCar(carNo, company,spread); | |
| 163 | 167 | carOfTreeNode.setSpread(Boolean.TRUE.toString()); |
| 164 | 168 | sourceTree.getChildren().add(carOfTreeNode); |
| 165 | 169 | |
| 166 | 170 | sourceTree.setSpread("true"); |
| 171 | + List<VideoTree> children = queryChannelsTree(carNo,spread); | |
| 172 | + carOfTreeNode.setChildren(children); | |
| 167 | 173 | |
| 168 | 174 | return group; |
| 169 | 175 | } |
| ... | ... | @@ -175,6 +181,29 @@ public class VideoServiceImpl implements VideoService { |
| 175 | 181 | } |
| 176 | 182 | |
| 177 | 183 | @Override |
| 184 | + public List<VideoTree> queryChannelsTree(String carNo, boolean spread) throws Exception { | |
| 185 | + List<Map<String, Object>> videoChannels = getVideoChannel(carNo); | |
| 186 | + List<VideoTree> trees = new ArrayList<>(); | |
| 187 | + | |
| 188 | + if (CollectionUtils.isNotEmpty(videoChannels)) { | |
| 189 | + for (Map<String, Object> map : videoChannels) { | |
| 190 | + VideoTree tree = new VideoTree(); | |
| 191 | + tree.setId(map.get("channelId")); | |
| 192 | + tree.setCode(map.get("channelId")); | |
| 193 | + tree.setSourceId(map.get("deviceId")); | |
| 194 | + tree.setType(401); | |
| 195 | + tree.setIcon("layui-icon-video"); | |
| 196 | + String name = Objects.isNull(map.get("name")) ? map.get("channelId") + "_" + map.get("deviceId") : map.get("name").toString(); | |
| 197 | + tree.setText("<span><img src='/metronic_v4.5.4/layui/icon/video1.ico' class ='imageIcon' /></span><span>"+name+"</span>"); | |
| 198 | + tree.setNodePValue(carNo); | |
| 199 | + | |
| 200 | + trees.add(tree); | |
| 201 | + } | |
| 202 | + } | |
| 203 | + return trees; | |
| 204 | + } | |
| 205 | + | |
| 206 | + @Override | |
| 178 | 207 | public List<Map<String, Object>> getVideoChannel(String carNo) throws Exception { |
| 179 | 208 | return getWvpVideoChannelByCarNo(carNo); |
| 180 | 209 | } |
| ... | ... | @@ -202,16 +231,16 @@ public class VideoServiceImpl implements VideoService { |
| 202 | 231 | return Collections.emptyList(); |
| 203 | 232 | } |
| 204 | 233 | |
| 205 | - return combitionBussiness(businessIterable); | |
| 234 | + return combitionBussiness(businessIterable,false); | |
| 206 | 235 | |
| 207 | 236 | } |
| 208 | 237 | |
| 209 | - private List<VideoTree> combitionBussiness(Iterable<Business> businessIterable) { | |
| 238 | + private List<VideoTree> combitionBussiness(Iterable<Business> businessIterable,boolean spread) { | |
| 210 | 239 | List<VideoTree> trees = new ArrayList<>(); |
| 211 | 240 | Iterator<Business> iterator = businessIterable.iterator(); |
| 212 | 241 | while (iterator.hasNext()) { |
| 213 | 242 | Business business = iterator.next(); |
| 214 | - VideoTree videoTree = combinationVideoTree(business.getBusinessCode(), business.getBusinessName(), business.getUpCode(), business.getId(), null, "company1", business.getBusinessCode()); | |
| 243 | + VideoTree videoTree = combinationVideoTree(business.getBusinessCode(), business.getBusinessName(), business.getUpCode(), business.getId(), null, "company1", business.getBusinessCode(),spread); | |
| 215 | 244 | trees.add(videoTree); |
| 216 | 245 | } |
| 217 | 246 | List<VideoTree> groupTree = new ArrayList<>(); |
| ... | ... | @@ -219,6 +248,7 @@ public class VideoServiceImpl implements VideoService { |
| 219 | 248 | if (Objects.equals(tree.getNodePValue(), "0")) { |
| 220 | 249 | VideoTree target = new VideoTree(); |
| 221 | 250 | BeanUtils.copyProperties(tree, target); |
| 251 | + target.setSpread(String.valueOf(tree.getSpread())); | |
| 222 | 252 | // target.setParent("#"); |
| 223 | 253 | target.setType(0); |
| 224 | 254 | groupTree.add(target); |
| ... | ... | @@ -245,7 +275,7 @@ public class VideoServiceImpl implements VideoService { |
| 245 | 275 | * @param icon 图标 |
| 246 | 276 | * @return com.bsth.entity.video.VideoTree |
| 247 | 277 | */ |
| 248 | - private VideoTree combinationVideoTree(Object id, String text, String parent, Object sourceId, Integer type, String icon, Object code) { | |
| 278 | + private VideoTree combinationVideoTree(Object id, String text, String parent, Object sourceId, Integer type, String icon, Object code,boolean spread) { | |
| 249 | 279 | VideoTree videoTree = new VideoTree(); |
| 250 | 280 | videoTree.setId(id); |
| 251 | 281 | videoTree.setText("<span><img src='/metronic_v4.5.4/layui/icon/"+icon+".png' class ='imageIcon' /></span><span>"+text+"</span>"); |
| ... | ... | @@ -254,6 +284,7 @@ public class VideoServiceImpl implements VideoService { |
| 254 | 284 | videoTree.setType(type); |
| 255 | 285 | videoTree.setIcon(icon); |
| 256 | 286 | videoTree.setCode(code); |
| 287 | + videoTree.setSpread(String.valueOf(spread)); | |
| 257 | 288 | return videoTree; |
| 258 | 289 | } |
| 259 | 290 | |
| ... | ... | @@ -269,6 +300,7 @@ public class VideoServiceImpl implements VideoService { |
| 269 | 300 | VideoTree target = new VideoTree(); |
| 270 | 301 | BeanUtils.copyProperties(videoTree, target); |
| 271 | 302 | target.setType(tree.getType() + 1); |
| 303 | + target.setSpread(String.valueOf(tree.getSpread())); | |
| 272 | 304 | |
| 273 | 305 | |
| 274 | 306 | tree.getChildren().add(target); | ... | ... |
src/main/java/com/bsth/service/video/VideoService.java
| ... | ... | @@ -18,9 +18,11 @@ public interface VideoService { |
| 18 | 18 | |
| 19 | 19 | List<VideoTree> combinationTree(); |
| 20 | 20 | |
| 21 | - List<VideoTree> combinationTreeOfCar(String code); | |
| 21 | + List<VideoTree> combinationTreeOfCar(String code,boolean spread); | |
| 22 | 22 | |
| 23 | - List<VideoTree> searchTreeDataByCarNo(String carNo); | |
| 23 | + List<VideoTree> searchTreeDataByCarNo(String carNo,boolean spread) throws Exception; | |
| 24 | + | |
| 25 | + List<VideoTree> queryChannelsTree(String carNo,boolean spread) throws Exception; | |
| 24 | 26 | |
| 25 | 27 | List<Map<String, Object>> getVideoChannel(String carNo)throws Exception; |
| 26 | 28 | ... | ... |
src/main/resources/static/other/video/video.html
src/main/resources/static/other/video/video.js
| ... | ... | @@ -21,12 +21,31 @@ $(document).ready(function () { |
| 21 | 21 | } |
| 22 | 22 | }); |
| 23 | 23 | |
| 24 | - $.getJSON("/video/tree", null, function (rep) { | |
| 25 | - if (rep.status == "SUCCESS") { | |
| 26 | - initTree(rep.data); | |
| 24 | + let flag = true; | |
| 25 | + let urlSearchParams = new URLSearchParams(window.location.search); | |
| 26 | + if(urlSearchParams){ | |
| 27 | + let params = Object.fromEntries(urlSearchParams.entries()); | |
| 28 | + console.log(params); | |
| 29 | + if(!isEmpty(params.insideCode_like)){ | |
| 30 | + flag = false; | |
| 31 | + queryTreeTable(params.insideCode_like,function (data){ | |
| 32 | + if(data.status==="SUCCESS"){ | |
| 33 | + treeData = data.data; | |
| 34 | + initTree(treeData); | |
| 35 | + } | |
| 36 | + }); | |
| 27 | 37 | } |
| 38 | + } | |
| 39 | + | |
| 40 | + if(flag){ | |
| 41 | + $.getJSON("/video/tree", null, function (rep) { | |
| 42 | + if (rep.status == "SUCCESS") { | |
| 43 | + initTree(rep.data); | |
| 44 | + } | |
| 45 | + | |
| 46 | + }); | |
| 47 | + } | |
| 28 | 48 | |
| 29 | - }); | |
| 30 | 49 | |
| 31 | 50 | }); |
| 32 | 51 | |
| ... | ... | @@ -37,13 +56,14 @@ function initTree(data) { |
| 37 | 56 | var opt = initTreeOpt(data, tree); |
| 38 | 57 | // 渲染 |
| 39 | 58 | var treeObj = tree.render(opt); |
| 40 | - bindClick(); | |
| 41 | - closeLoading(); | |
| 42 | - }); | |
| 59 | + bindClick(function (){ | |
| 60 | + closeLoading(); | |
| 61 | + }); | |
| 43 | 62 | |
| 63 | + }); | |
| 44 | 64 | } |
| 45 | 65 | |
| 46 | -function bindClick(opt){ | |
| 66 | +function bindClick(fun){ | |
| 47 | 67 | |
| 48 | 68 | $("span",$("#video_tree")).each(function (index,node){ |
| 49 | 69 | let $node = $(node); |
| ... | ... | @@ -54,7 +74,7 @@ function bindClick(opt){ |
| 54 | 74 | } |
| 55 | 75 | }); |
| 56 | 76 | |
| 57 | - treeClickBack(); | |
| 77 | + treeClickBack(fun); | |
| 58 | 78 | |
| 59 | 79 | } |
| 60 | 80 | |
| ... | ... | @@ -104,11 +124,16 @@ function treeClickFun(node,tree){ |
| 104 | 124 | } |
| 105 | 125 | loading = loadingFunction(); |
| 106 | 126 | |
| 107 | - $("#skeyewebplayerDivContent").html('<div class="skeyewebplayerDivContent_one skeyewebplayerDivContent_play_selected " id="skeyewebplayerDivContent_play_0" onclick="skeyewebplayerDivContent_play_click(this)"><div class="skeyewebplayerDiv_title"></div><div id="skeyewebplayerDiv_play_content_0" class="skeyewebplayerDiv_play_content" style="height: 95%"></div></div>') | |
| 108 | - $("#deviceVideoTbody").html(""); | |
| 127 | + | |
| 109 | 128 | if (node.data.type < 400) { |
| 129 | + $("#skeyewebplayerDivContent").html('<div class="skeyewebplayerDivContent_one skeyewebplayerDivContent_play_selected " id="skeyewebplayerDivContent_play_0" onclick="skeyewebplayerDivContent_play_click(this)"><div class="skeyewebplayerDiv_title"></div><div id="skeyewebplayerDiv_play_content_0" class="skeyewebplayerDiv_play_content" style="height: 95%"></div></div>') | |
| 130 | + $("#deviceVideoTbody").html(""); | |
| 131 | + | |
| 110 | 132 | lasyCarNo(node, tree); |
| 111 | 133 | node.initChild = true; |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 112 | 137 | } else { |
| 113 | 138 | treeSelectNode = node; |
| 114 | 139 | if("live_broadcast_lay_id" === lay_id){ |
| ... | ... | @@ -118,7 +143,7 @@ function treeClickFun(node,tree){ |
| 118 | 143 | } |
| 119 | 144 | } |
| 120 | 145 | |
| 121 | -function treeClickBack(){ | |
| 146 | +function treeClickBack(fun){ | |
| 122 | 147 | if(treeSelectNode){ |
| 123 | 148 | $("div",$("#video_tree")).each(function (index,node1){ |
| 124 | 149 | let $node=$(node1); |
| ... | ... | @@ -143,7 +168,12 @@ function treeClickBack(){ |
| 143 | 168 | |
| 144 | 169 | }); |
| 145 | 170 | } |
| 171 | + if(fun){ | |
| 172 | + try{ | |
| 173 | + fun(); | |
| 174 | + }catch (e){} | |
| 146 | 175 | |
| 176 | + } | |
| 147 | 177 | } |
| 148 | 178 | |
| 149 | 179 | function lasyCarNo(node, tree) { |
| ... | ... | @@ -157,7 +187,7 @@ function lasyCarNo(node, tree) { |
| 157 | 187 | }); |
| 158 | 188 | |
| 159 | 189 | if(data && data.length > 0) { |
| 160 | - tree.reload('video_tree', {data: treeData}); | |
| 190 | + reloadTree('video_tree',treeData) | |
| 161 | 191 | bindClick(treeData,node); |
| 162 | 192 | } |
| 163 | 193 | closeLoading(); |
| ... | ... | @@ -171,7 +201,7 @@ function lasyCarNo(node, tree) { |
| 171 | 201 | }); |
| 172 | 202 | |
| 173 | 203 | if(data && data.data && data.data.length > 0){ |
| 174 | - tree.reload('video_tree', {data: treeData}); | |
| 204 | + reloadTree('video_tree',treeData); | |
| 175 | 205 | } |
| 176 | 206 | treeClickBack(); |
| 177 | 207 | closeLoading(); |
| ... | ... | @@ -243,24 +273,37 @@ function layDataClose(datas){ |
| 243 | 273 | } |
| 244 | 274 | |
| 245 | 275 | |
| 246 | -function queryTreeTable() { | |
| 276 | +function queryTreeTable(insideCode_like,fun) { | |
| 247 | 277 | let url = "/video/tree/search?1=1"; |
| 248 | 278 | |
| 249 | 279 | |
| 250 | 280 | if (!isEmpty($("#insideCode_like").val())) { |
| 251 | 281 | url += "&insideCode_like=" + $("#insideCode_like").val(); |
| 282 | + }else if(insideCode_like){ | |
| 283 | + url += "&insideCode_like=" + insideCode_like; | |
| 252 | 284 | } |
| 253 | 285 | |
| 254 | 286 | $.getJSON(url,function (data){ |
| 255 | - if(data.status==="SUCCESS"){ | |
| 256 | - treeData = data.data; | |
| 257 | - layui.tree.reload('video_tree', {data: treeData}); | |
| 287 | + if(fun){ | |
| 288 | + fun(data); | |
| 289 | + }else{ | |
| 290 | + if(data.status==="SUCCESS"){ | |
| 291 | + treeData = data.data; | |
| 292 | + reloadTree('video_tree',treeData) | |
| 293 | + } | |
| 258 | 294 | } |
| 295 | + | |
| 259 | 296 | },function (e){ |
| 260 | 297 | |
| 261 | 298 | }); |
| 299 | +} | |
| 262 | 300 | |
| 263 | - | |
| 301 | +function reloadTree(id,data){ | |
| 302 | + try { | |
| 303 | + layui.tree.reload(id, {data: data}); | |
| 304 | + }catch (e){ | |
| 305 | + closeLoading(); | |
| 306 | + } | |
| 264 | 307 | } |
| 265 | 308 | |
| 266 | 309 | function isEmpty(val) { | ... | ... |
src/main/resources/static/other/video/videoPage.html deleted
100644 → 0
src/main/resources/static/pages/video/static/SkeyeWebPlayer/SkeyeWebPlayer-pack.js deleted
100644 → 0
| 1 | -/*! For license information please see SkeyeWebPlayer_2.0.1.min.js.LICENSE.txt */ | |
| 2 | -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.WebMediaPlayer=e():t.WebMediaPlayer=e()}(this,(function(){return function(t){var e={};function i(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,i),n.l=!0,n.exports}return i.m=t,i.c=e,i.d=function(t,e,r){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)i.d(r,n,function(e){return t[e]}.bind(null,n));return r},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=283)}([function(t,e,i){"use strict";i.r(e),i.d(e,"tVideoRenderYV12",(function(){return n})),i.d(e,"tVideoRenderRGB",(function(){return o})),i.d(e,"tVideoRenderRGBA",(function(){return a})),i.d(e,"tOpenStream",(function(){return s})),i.d(e,"tCloseStream",(function(){return h})),i.d(e,"tFrameData",(function(){return u})),i.d(e,"tReOpenStream",(function(){return l})),i.d(e,"tConnecting",(function(){return d})),i.d(e,"tOpenAudio",(function(){return c})),i.d(e,"tCloseAudio",(function(){return p})),i.d(e,"tOutputStatInfo",(function(){return m})),i.d(e,"tGetTsStream",(function(){return g})),i.d(e,"tGetTsStreamRsp",(function(){return v})),i.d(e,"tDecode",(function(){return y})),i.d(e,"tVidInterval",(function(){return b})),i.d(e,"tPauseStream",(function(){return _})),i.d(e,"tResumeStream",(function(){return w})),i.d(e,"tSeekStream",(function(){return A})),i.d(e,"tMediaInfo",(function(){return M})),i.d(e,"tGetTsComplete",(function(){return E})),i.d(e,"tError",(function(){return S})),i.d(e,"tExcept",(function(){return k})),i.d(e,"tDisconnect",(function(){return T})),i.d(e,"tResetMSE",(function(){return R})),i.d(e,"tDecoderWorkerStartup",(function(){return I})),i.d(e,"DOWNLOAD_WORKER_ID",(function(){return C})),i.d(e,"DECODE_WORKER_ID",(function(){return P})),i.d(e,"RENDER_WORKER_ID",(function(){return x})),i.d(e,"setLiveStreamType",(function(){return V})),i.d(e,"GetLiveStreamType",(function(){return H})),i.d(e,"setCodecTypeStr",(function(){return z})),i.d(e,"setVideoWidth",(function(){return G})),i.d(e,"setVideoHeight",(function(){return X})),i.d(e,"setVideoBitrate",(function(){return Z})),i.d(e,"GetCodecTypeStr",(function(){return K})),i.d(e,"GetVideoWidth",(function(){return Q})),i.d(e,"GetVideoHeight",(function(){return Y})),i.d(e,"GetVideoBitrate",(function(){return J})),i.d(e,"SetEnableAudio",(function(){return $})),i.d(e,"GetEnableAudio",(function(){return tt})),i.d(e,"ClearAppendBufferError",(function(){return et})),i.d(e,"SetAppendBufferError",(function(){return it})),i.d(e,"GetAppendBufferError",(function(){return rt})),i.d(e,"sleep",(function(){return nt})),i.d(e,"MediaWorkerLog",(function(){return ot})),i.d(e,"getFullURL",(function(){return at})),i.d(e,"getMessage",(function(){return st})),i.d(e,"setMessage",(function(){return ht}));var r=f;!function(t,e){for(var i=f,r=t();;)try{if(568290===-parseInt(i(133,"z*d^"))/1*(parseInt(i(143,"910C"))/2)+parseInt(i(160,"CDl3"))/3*(-parseInt(i(150,"a8ng"))/4)+-parseInt(i(139,"LEw2"))/5*(parseInt(i(164,"Jo^l"))/6)+parseInt(i(154,"gvq)"))/7*(-parseInt(i(129,"fRUp"))/8)+parseInt(i(146,"^0y0"))/9*(parseInt(i(138,"!YIt"))/10)+-parseInt(i(151,"O%q4"))/11+parseInt(i(130,"UnZ4"))/12*(parseInt(i(141,"E^JA"))/13))break;r.push(r.shift())}catch(t){r.push(r.shift())}}(q);var n=1,o=2,a=3,s=1,h=2,u=3,l=4,d=5;function f(t,e){var i=q();return f=function(e,r){var n=i[e-=127];if(void 0===f.DsHZPz){var o=function(t){for(var e,i,r="",n="",o=0,a=0;i=t.charAt(a++);~i&&(e=o%4?64*e+i:i,o++%4)?r+=String.fromCharCode(255&e>>(-2*o&6)):0)i="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(i);for(var s=0,h=r.length;s<h;s++)n+="%"+("00"+r.charCodeAt(s).toString(16)).slice(-2);return decodeURIComponent(n)},a=function(t,e){var i,r,n=[],a=0,s="";for(t=o(t),r=0;r<256;r++)n[r]=r;for(r=0;r<256;r++)a=(a+n[r]+e.charCodeAt(r%e.length))%256,i=n[r],n[r]=n[a],n[a]=i;r=0,a=0;for(var h=0;h<t.length;h++)a=(a+n[r=(r+1)%256])%256,i=n[r],n[r]=n[a],n[a]=i,s+=String.fromCharCode(t.charCodeAt(h)^n[(n[r]+n[a])%256]);return s};f.BEleuN=a,t=arguments,f.DsHZPz=!0}var s=i[0],h=e+s,u=t[h];return u?n=u:(void 0===f.FreeCU&&(f.FreeCU=!0),n=f.BEleuN(n,r),t[h]=n),n},f(t,e)}var c=6,p=7,m=8,g=10,v=11,y=12,b=13,_=14,w=15,A=16,M=20,E=21,S=100,k=101,T=102,R=103,I=200,C=1,P=2,x=3,D=!0,O=r(128,"phS^"),B=1920,L=1080,W=0,N=!0,F={};F[r(162,"l7Tx")]=!1,F[r(148,"gvq)")]=!1;var U=F,j=[];function V(t){D=t}function H(){return D}function z(t){O=t}function G(t){B=t}function q(){var t=["W7JdKCkVWOriWRFdIgLJWQWFW6iC","E8kzW40tqsRdUcO","kIBcKSkipcldULRdPCkFvCkKka","dmoBfmkeCdpdP2a","W5z0WQDBbSkg","WQ1yWOTHka","o8o9W4vqWPdcI8kKoa","vmoGwmkXi3b+oa","fSkZBmkIWOmvW7JcUSoCwCoLmCkBWPO","WOb+W7FdVmkyW67dOZdcObrFcSo1WQ0","WOuudSkEka","W6KjWR9tmCodWQyz","dtidDCoiW5jPWOWXW4vkp2G","W7ZcQmkECYRdPZ4h","sc5fWPhdHCkwpNtdPmoN","W4nHwx3cTWrmc8kqvxDTimoB","sc5fWPtdG8knoxm","ESkAWObsovZdPbawWQddNxW","W5tcSmo9rq","tJ5vWRxdGW","g0vqnSoj","W6PuWRpcN8ksW7VdQCkZW78+W47cGG","sc5fWPJdJCkmlG","vL4njs8","dSoqsCoNfutdMMyhW600rG","e0mv","ACk5sc4","wqmoB8klWRpdNSk1WPFcSXOrW58","cdeaD8ohW5bRW5yoW7TIoN/cPG","EHBcSmorq8ouEq","qN88imk1","ACoVySoflgWs","W7NdV8kUdq","ACkeuCo+WPJdMSkXEmk9","hxnHWOVdMSk6a1y","W4X/x8ksW4i","tr1kECoysCkzWPNcI8kjW6xcQ8oc","WRJcUmoTagSJaCo5nq","nspcVutdTSoiW7ZdPq","W5VdTLRcI8olWPlcMti","hLXyoSos"];return(q=function(){return t})()}function X(t){L=t}function Z(t){W=t}function K(){return O}function Q(){return B}function Y(){return L}function J(){return W}function $(t){N=t}function tt(){return N}function et(){var t=r;U[t(153,"Wo@Z")]=!1,U[t(137,"PFV2")]=!1}function it(t){var e=r;t===e(132,"wu1V")?U[e(142,"fRUp")]=!0:"audio"===t&&(U[e(166,"[W2e")]=!0)}function rt(){return U}function nt(t){return new Promise((function(e){return setTimeout(e,t)}))}function ot(t){var e=r,i=new Date,n=i.getFullYear(),o=i[e(140,"O7#I")]()+1,a=i[e(165,"l7Tx")]();i[e(147,"wYCL")]();i[e(159,"l7Tx")](),i[e(157,"l7Tx")](),i.getSeconds()}function at(){for(var t=r,e=window[t(149,"BsNI")].href[t(163,"fRUp")]("/"),i="",n=0;n<3;n++)i+=e[n],i+="/";return i}function st(t){return j}function ht(t){j[r(134,"LEw2")](t)}},function(t,e,i){"use strict";var r=i(6),n=i.n(r),o=function(){function t(){}return t.e=function(e,i){e&&!t.FORCE_GLOBAL_TAG||(e=t.GLOBAL_TAG);var r="["+e+"] > "+i;t.ENABLE_CALLBACK&&t.emitter.emit("log","error",r),t.ENABLE_ERROR&&(console.error||console.warn)},t.i=function(e,i){e&&!t.FORCE_GLOBAL_TAG||(e=t.GLOBAL_TAG);var r="["+e+"] > "+i;t.ENABLE_CALLBACK&&t.emitter.emit("log","info",r),t.ENABLE_INFO&&console.info},t.w=function(e,i){e&&!t.FORCE_GLOBAL_TAG||(e=t.GLOBAL_TAG);var r="["+e+"] > "+i;t.ENABLE_CALLBACK&&t.emitter.emit("log","warn",r),t.ENABLE_WARN&&console.warn},t.d=function(e,i){e&&!t.FORCE_GLOBAL_TAG||(e=t.GLOBAL_TAG);var r="["+e+"] > "+i;t.ENABLE_CALLBACK&&t.emitter.emit("log","debug",r),t.ENABLE_DEBUG&&console.debug},t.v=function(e,i){e&&!t.FORCE_GLOBAL_TAG||(e=t.GLOBAL_TAG);var r="["+e+"] > "+i;t.ENABLE_CALLBACK&&t.emitter.emit("log","verbose",r),t.ENABLE_VERBOSE},t}();o.GLOBAL_TAG="SyncPlayer.js",o.FORCE_GLOBAL_TAG=!1,o.ENABLE_ERROR=!0,o.ENABLE_INFO=!0,o.ENABLE_WARN=!0,o.ENABLE_DEBUG=!0,o.ENABLE_VERBOSE=!0,o.ENABLE_CALLBACK=!1,o.emitter=new n.a,e.a=o},function(t,e,i){"use strict";function r(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,n(t,e)}function n(t,e){return n=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},n(t,e)}function o(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function a(t,e,i){return e&&o(t.prototype,e),i&&o(t,i),Object.defineProperty(t,"prototype",{writable:!1}),t}i.d(e,"d",(function(){return s})),i.d(e,"a",(function(){return h})),i.d(e,"b",(function(){return u})),i.d(e,"c",(function(){return l}));var s=function(){function t(t){this._message=t}return t.prototype.toString=function(){return this.name+": "+this.message},a(t,[{key:"name",get:function(){return"RuntimeException"}},{key:"message",get:function(){return this._message}}]),t}(),h=function(t){function e(e){return t.call(this,e)||this}return r(e,t),a(e,[{key:"name",get:function(){return"IllegalStateException"}}]),e}(s),u=function(t){function e(e){return t.call(this,e)||this}return r(e,t),a(e,[{key:"name",get:function(){return"InvalidArgumentException"}}]),e}(s),l=function(t){function e(e){return t.call(this,e)||this}return r(e,t),a(e,[{key:"name",get:function(){return"NotImplementedException"}}]),e}(s)},function(t,e){"function"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var i=function(){};i.prototype=e.prototype,t.prototype=new i,t.prototype.constructor=t}}},function(t,e,i){var r=i(9),n=r.Buffer;function o(t,e){for(var i in t)e[i]=t[i]}function a(t,e,i){return n(t,e,i)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?t.exports=r:(o(r,e),e.Buffer=a),a.prototype=Object.create(n.prototype),o(n,a),a.from=function(t,e,i){if("number"==typeof t)throw new TypeError("Argument must not be a number");return n(t,e,i)},a.alloc=function(t,e,i){if("number"!=typeof t)throw new TypeError("Argument must be a number");var r=n(t);return void 0!==e?"string"==typeof i?r.fill(e,i):r.fill(e):r.fill(0),r},a.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return n(t)},a.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return r.SlowBuffer(t)}},function(t,e,i){(function(e){var r;t.exports=(r=r||function(t,r){var n;if("undefined"!=typeof window&&window.crypto&&(n=window.crypto),"undefined"!=typeof self&&self.crypto&&(n=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(n=globalThis.crypto),!n&&"undefined"!=typeof window&&window.msCrypto&&(n=window.msCrypto),!n&&void 0!==e&&e.crypto&&(n=e.crypto),!n)try{n=i(258)}catch(t){}var o=function(){if(n){if("function"==typeof n.getRandomValues)try{return n.getRandomValues(new Uint32Array(1))[0]}catch(t){}if("function"==typeof n.randomBytes)try{return n.randomBytes(4).readInt32LE()}catch(t){}}throw new Error("Native crypto module could not be used to get secure random number.")},a=Object.create||function(){function t(){}return function(e){var i;return t.prototype=e,i=new t,t.prototype=null,i}}(),s={},h=s.lib={},u=h.Base={extend:function(t){var e=a(this);return t&&e.mixIn(t),e.hasOwnProperty("init")&&this.init!==e.init||(e.init=function(){e.$super.init.apply(this,arguments)}),e.init.prototype=e,e.$super=this,e},create:function(){var t=this.extend();return t.init.apply(t,arguments),t},init:function(){},mixIn:function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);t.hasOwnProperty("toString")&&(this.toString=t.toString)},clone:function(){return this.init.prototype.extend(this)}},l=h.WordArray=u.extend({init:function(t,e){t=this.words=t||[],this.sigBytes=e!=r?e:4*t.length},toString:function(t){return(t||f).stringify(this)},concat:function(t){var e=this.words,i=t.words,r=this.sigBytes,n=t.sigBytes;if(this.clamp(),r%4)for(var o=0;o<n;o++){var a=i[o>>>2]>>>24-o%4*8&255;e[r+o>>>2]|=a<<24-(r+o)%4*8}else for(var s=0;s<n;s+=4)e[r+s>>>2]=i[s>>>2];return this.sigBytes+=n,this},clamp:function(){var e=this.words,i=this.sigBytes;e[i>>>2]&=4294967295<<32-i%4*8,e.length=t.ceil(i/4)},clone:function(){var t=u.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var e=[],i=0;i<t;i+=4)e.push(o());return new l.init(e,t)}}),d=s.enc={},f=d.Hex={stringify:function(t){for(var e=t.words,i=t.sigBytes,r=[],n=0;n<i;n++){var o=e[n>>>2]>>>24-n%4*8&255;r.push((o>>>4).toString(16)),r.push((15&o).toString(16))}return r.join("")},parse:function(t){for(var e=t.length,i=[],r=0;r<e;r+=2)i[r>>>3]|=parseInt(t.substr(r,2),16)<<24-r%8*4;return new l.init(i,e/2)}},c=d.Latin1={stringify:function(t){for(var e=t.words,i=t.sigBytes,r=[],n=0;n<i;n++){var o=e[n>>>2]>>>24-n%4*8&255;r.push(String.fromCharCode(o))}return r.join("")},parse:function(t){for(var e=t.length,i=[],r=0;r<e;r++)i[r>>>2]|=(255&t.charCodeAt(r))<<24-r%4*8;return new l.init(i,e)}},p=d.Utf8={stringify:function(t){try{return decodeURIComponent(escape(c.stringify(t)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:function(t){return c.parse(unescape(encodeURIComponent(t)))}},m=h.BufferedBlockAlgorithm=u.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=p.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(e){var i,r=this._data,n=r.words,o=r.sigBytes,a=this.blockSize,s=o/(4*a),h=(s=e?t.ceil(s):t.max((0|s)-this._minBufferSize,0))*a,u=t.min(4*h,o);if(h){for(var d=0;d<h;d+=a)this._doProcessBlock(n,d);i=n.splice(0,h),r.sigBytes-=u}return new l.init(i,u)},clone:function(){var t=u.clone.call(this);return t._data=this._data.clone(),t},_minBufferSize:0}),g=(h.Hasher=m.extend({cfg:u.extend(),init:function(t){this.cfg=this.cfg.extend(t),this.reset()},reset:function(){m.reset.call(this),this._doReset()},update:function(t){return this._append(t),this._process(),this},finalize:function(t){return t&&this._append(t),this._doFinalize()},blockSize:16,_createHelper:function(t){return function(e,i){return new t.init(i).finalize(e)}},_createHmacHelper:function(t){return function(e,i){return new g.HMAC.init(t,i).finalize(e)}}}),s.algo={});return s}(Math),r)}).call(this,i(10))},function(t,e,i){"use strict";var r,n="object"==typeof Reflect?Reflect:null,o=n&&"function"==typeof n.apply?n.apply:function(t,e,i){return Function.prototype.apply.call(t,e,i)};r=n&&"function"==typeof n.ownKeys?n.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var a=Number.isNaN||function(t){return t!=t};function s(){s.init.call(this)}t.exports=s,t.exports.once=function(t,e){return new Promise((function(i,r){function n(i){t.removeListener(e,o),r(i)}function o(){"function"==typeof t.removeListener&&t.removeListener("error",n),i([].slice.call(arguments))}v(t,e,o,{once:!0}),"error"!==e&&function(t,e,i){"function"==typeof t.on&&v(t,"error",e,i)}(t,n,{once:!0})}))},s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var h=10;function u(t){if("function"!=typeof t)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}function l(t){return void 0===t._maxListeners?s.defaultMaxListeners:t._maxListeners}function d(t,e,i,r){var n,o,a;if(u(i),void 0===(o=t._events)?(o=t._events=Object.create(null),t._eventsCount=0):(void 0!==o.newListener&&(t.emit("newListener",e,i.listener?i.listener:i),o=t._events),a=o[e]),void 0===a)a=o[e]=i,++t._eventsCount;else if("function"==typeof a?a=o[e]=r?[i,a]:[a,i]:r?a.unshift(i):a.push(i),(n=l(t))>0&&a.length>n&&!a.warned){a.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");s.name="MaxListenersExceededWarning",s.emitter=t,s.type=e,s.count=a.length,console&&console.warn}return t}function f(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function c(t,e,i){var r={fired:!1,wrapFn:void 0,target:t,type:e,listener:i},n=f.bind(r);return n.listener=i,r.wrapFn=n,n}function p(t,e,i){var r=t._events;if(void 0===r)return[];var n=r[e];return void 0===n?[]:"function"==typeof n?i?[n.listener||n]:[n]:i?function(t){for(var e=new Array(t.length),i=0;i<e.length;++i)e[i]=t[i].listener||t[i];return e}(n):g(n,n.length)}function m(t){var e=this._events;if(void 0!==e){var i=e[t];if("function"==typeof i)return 1;if(void 0!==i)return i.length}return 0}function g(t,e){for(var i=new Array(e),r=0;r<e;++r)i[r]=t[r];return i}function v(t,e,i,r){if("function"==typeof t.on)r.once?t.once(e,i):t.on(e,i);else{if("function"!=typeof t.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof t);t.addEventListener(e,(function n(o){r.once&&t.removeEventListener(e,n),i(o)}))}}Object.defineProperty(s,"defaultMaxListeners",{enumerable:!0,get:function(){return h},set:function(t){if("number"!=typeof t||t<0||a(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");h=t}}),s.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},s.prototype.setMaxListeners=function(t){if("number"!=typeof t||t<0||a(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this},s.prototype.getMaxListeners=function(){return l(this)},s.prototype.emit=function(t){for(var e=[],i=1;i<arguments.length;i++)e.push(arguments[i]);var r="error"===t,n=this._events;if(void 0!==n)r=r&&void 0===n.error;else if(!r)return!1;if(r){var a;if(e.length>0&&(a=e[0]),a instanceof Error)throw a;var s=new Error("Unhandled error."+(a?" ("+a.message+")":""));throw s.context=a,s}var h=n[t];if(void 0===h)return!1;if("function"==typeof h)o(h,this,e);else{var u=h.length,l=g(h,u);for(i=0;i<u;++i)o(l[i],this,e)}return!0},s.prototype.addListener=function(t,e){return d(this,t,e,!1)},s.prototype.on=s.prototype.addListener,s.prototype.prependListener=function(t,e){return d(this,t,e,!0)},s.prototype.once=function(t,e){return u(e),this.on(t,c(this,t,e)),this},s.prototype.prependOnceListener=function(t,e){return u(e),this.prependListener(t,c(this,t,e)),this},s.prototype.removeListener=function(t,e){var i,r,n,o,a;if(u(e),void 0===(r=this._events))return this;if(void 0===(i=r[t]))return this;if(i===e||i.listener===e)0==--this._eventsCount?this._events=Object.create(null):(delete r[t],r.removeListener&&this.emit("removeListener",t,i.listener||e));else if("function"!=typeof i){for(n=-1,o=i.length-1;o>=0;o--)if(i[o]===e||i[o].listener===e){a=i[o].listener,n=o;break}if(n<0)return this;0===n?i.shift():function(t,e){for(;e+1<t.length;e++)t[e]=t[e+1];t.pop()}(i,n),1===i.length&&(r[t]=i[0]),void 0!==r.removeListener&&this.emit("removeListener",t,a||e)}return this},s.prototype.off=s.prototype.removeListener,s.prototype.removeAllListeners=function(t){var e,i,r;if(void 0===(i=this._events))return this;if(void 0===i.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==i[t]&&(0==--this._eventsCount?this._events=Object.create(null):delete i[t]),this;if(0===arguments.length){var n,o=Object.keys(i);for(r=0;r<o.length;++r)"removeListener"!==(n=o[r])&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(e=i[t]))this.removeListener(t,e);else if(void 0!==e)for(r=e.length-1;r>=0;r--)this.removeListener(t,e[r]);return this},s.prototype.listeners=function(t){return p(this,t,!0)},s.prototype.rawListeners=function(t){return p(this,t,!1)},s.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):m.call(t,e)},s.prototype.listenerCount=m,s.prototype.eventNames=function(){return this._eventsCount>0?r(this._events):[]}},function(t,e,i){"use strict";e.a={OK:"OK",FORMAT_ERROR:"FormatError",FORMAT_UNSUPPORTED:"FormatUnsupported",CODEC_UNSUPPORTED:"CodecUnsupported"}},function(t,e){var i,r,n=t.exports={};function o(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(t){if(i===setTimeout)return setTimeout(t,0);if((i===o||!i)&&setTimeout)return i=setTimeout,setTimeout(t,0);try{return i(t,0)}catch(e){try{return i.call(null,t,0)}catch(e){return i.call(this,t,0)}}}!function(){try{i="function"==typeof setTimeout?setTimeout:o}catch(t){i=o}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(t){r=a}}();var h,u=[],l=!1,d=-1;function f(){l&&h&&(l=!1,h.length?u=h.concat(u):d=-1,u.length&&c())}function c(){if(!l){var t=s(f);l=!0;for(var e=u.length;e;){for(h=u,u=[];++d<e;)h&&h[d].run();d=-1,e=u.length}h=null,l=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function p(t,e){this.fun=t,this.array=e}function m(){}n.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var i=1;i<arguments.length;i++)e[i-1]=arguments[i];u.push(new p(t,e)),1!==u.length||l||s(c)},p.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.browser=!0,n.env={},n.argv=[],n.version="",n.versions={},n.on=m,n.addListener=m,n.once=m,n.off=m,n.removeListener=m,n.removeAllListeners=m,n.emit=m,n.prependListener=m,n.prependOnceListener=m,n.listeners=function(t){return[]},n.binding=function(t){throw new Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(t){throw new Error("process.chdir is not supported")},n.umask=function(){return 0}},function(t,e,i){"use strict";(function(t){var r=i(140),n=i(141),o=i(78);function a(){return h.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(t,e){if(a()<e)throw new RangeError("Invalid typed array length");return h.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=h.prototype:(null===t&&(t=new h(e)),t.length=e),t}function h(t,e,i){if(!(h.TYPED_ARRAY_SUPPORT||this instanceof h))return new h(t,e,i);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return d(this,t)}return u(this,t,e,i)}function u(t,e,i,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,i,r){if(e.byteLength,i<0||e.byteLength<i)throw new RangeError("'offset' is out of bounds");if(e.byteLength<i+(r||0))throw new RangeError("'length' is out of bounds");e=void 0===i&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,i):new Uint8Array(e,i,r);h.TYPED_ARRAY_SUPPORT?(t=e).__proto__=h.prototype:t=f(t,e);return t}(t,e,i,r):"string"==typeof e?function(t,e,i){"string"==typeof i&&""!==i||(i="utf8");if(!h.isEncoding(i))throw new TypeError('"encoding" must be a valid string encoding');var r=0|p(e,i),n=(t=s(t,r)).write(e,i);n!==r&&(t=t.slice(0,n));return t}(t,e,i):function(t,e){if(h.isBuffer(e)){var i=0|c(e.length);return 0===(t=s(t,i)).length||e.copy(t,0,0,i),t}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||(r=e.length)!=r?s(t,0):f(t,e);if("Buffer"===e.type&&o(e.data))return f(t,e.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}function l(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function d(t,e){if(l(e),t=s(t,e<0?0:0|c(e)),!h.TYPED_ARRAY_SUPPORT)for(var i=0;i<e;++i)t[i]=0;return t}function f(t,e){var i=e.length<0?0:0|c(e.length);t=s(t,i);for(var r=0;r<i;r+=1)t[r]=255&e[r];return t}function c(t){if(t>=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|t}function p(t,e){if(h.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var i=t.length;if(0===i)return 0;for(var r=!1;;)switch(e){case"ascii":case"latin1":case"binary":return i;case"utf8":case"utf-8":case void 0:return j(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*i;case"hex":return i>>>1;case"base64":return V(t).length;default:if(r)return j(t).length;e=(""+e).toLowerCase(),r=!0}}function m(t,e,i){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===i||i>this.length)&&(i=this.length),i<=0)return"";if((i>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return C(this,e,i);case"utf8":case"utf-8":return k(this,e,i);case"ascii":return R(this,e,i);case"latin1":case"binary":return I(this,e,i);case"base64":return S(this,e,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,e,i);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function g(t,e,i){var r=t[e];t[e]=t[i],t[i]=r}function v(t,e,i,r,n){if(0===t.length)return-1;if("string"==typeof i?(r=i,i=0):i>2147483647?i=2147483647:i<-2147483648&&(i=-2147483648),i=+i,isNaN(i)&&(i=n?0:t.length-1),i<0&&(i=t.length+i),i>=t.length){if(n)return-1;i=t.length-1}else if(i<0){if(!n)return-1;i=0}if("string"==typeof e&&(e=h.from(e,r)),h.isBuffer(e))return 0===e.length?-1:y(t,e,i,r,n);if("number"==typeof e)return e&=255,h.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(t,e,i):Uint8Array.prototype.lastIndexOf.call(t,e,i):y(t,[e],i,r,n);throw new TypeError("val must be string, number or Buffer")}function y(t,e,i,r,n){var o,a=1,s=t.length,h=e.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;a=2,s/=2,h/=2,i/=2}function u(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}if(n){var l=-1;for(o=i;o<s;o++)if(u(t,o)===u(e,-1===l?0:o-l)){if(-1===l&&(l=o),o-l+1===h)return l*a}else-1!==l&&(o-=o-l),l=-1}else for(i+h>s&&(i=s-h),o=i;o>=0;o--){for(var d=!0,f=0;f<h;f++)if(u(t,o+f)!==u(e,f)){d=!1;break}if(d)return o}return-1}function b(t,e,i,r){i=Number(i)||0;var n=t.length-i;r?(r=Number(r))>n&&(r=n):r=n;var o=e.length;if(o%2!=0)throw new TypeError("Invalid hex string");r>o/2&&(r=o/2);for(var a=0;a<r;++a){var s=parseInt(e.substr(2*a,2),16);if(isNaN(s))return a;t[i+a]=s}return a}function _(t,e,i,r){return H(j(e,t.length-i),t,i,r)}function w(t,e,i,r){return H(function(t){for(var e=[],i=0;i<t.length;++i)e.push(255&t.charCodeAt(i));return e}(e),t,i,r)}function A(t,e,i,r){return w(t,e,i,r)}function M(t,e,i,r){return H(V(e),t,i,r)}function E(t,e,i,r){return H(function(t,e){for(var i,r,n,o=[],a=0;a<t.length&&!((e-=2)<0);++a)r=(i=t.charCodeAt(a))>>8,n=i%256,o.push(n),o.push(r);return o}(e,t.length-i),t,i,r)}function S(t,e,i){return 0===e&&i===t.length?r.fromByteArray(t):r.fromByteArray(t.slice(e,i))}function k(t,e,i){i=Math.min(t.length,i);for(var r=[],n=e;n<i;){var o,a,s,h,u=t[n],l=null,d=u>239?4:u>223?3:u>191?2:1;if(n+d<=i)switch(d){case 1:u<128&&(l=u);break;case 2:128==(192&(o=t[n+1]))&&(h=(31&u)<<6|63&o)>127&&(l=h);break;case 3:o=t[n+1],a=t[n+2],128==(192&o)&&128==(192&a)&&(h=(15&u)<<12|(63&o)<<6|63&a)>2047&&(h<55296||h>57343)&&(l=h);break;case 4:o=t[n+1],a=t[n+2],s=t[n+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&(h=(15&u)<<18|(63&o)<<12|(63&a)<<6|63&s)>65535&&h<1114112&&(l=h)}null===l?(l=65533,d=1):l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|1023&l),r.push(l),n+=d}return function(t){var e=t.length;if(e<=T)return String.fromCharCode.apply(String,t);var i="",r=0;for(;r<e;)i+=String.fromCharCode.apply(String,t.slice(r,r+=T));return i}(r)}e.Buffer=h,e.SlowBuffer=function(t){+t!=t&&(t=0);return h.alloc(+t)},e.INSPECT_MAX_BYTES=50,h.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}(),e.kMaxLength=a(),h.poolSize=8192,h._augment=function(t){return t.__proto__=h.prototype,t},h.from=function(t,e,i){return u(null,t,e,i)},h.TYPED_ARRAY_SUPPORT&&(h.prototype.__proto__=Uint8Array.prototype,h.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&h[Symbol.species]===h&&Object.defineProperty(h,Symbol.species,{value:null,configurable:!0})),h.alloc=function(t,e,i){return function(t,e,i,r){return l(e),e<=0?s(t,e):void 0!==i?"string"==typeof r?s(t,e).fill(i,r):s(t,e).fill(i):s(t,e)}(null,t,e,i)},h.allocUnsafe=function(t){return d(null,t)},h.allocUnsafeSlow=function(t){return d(null,t)},h.isBuffer=function(t){return!(null==t||!t._isBuffer)},h.compare=function(t,e){if(!h.isBuffer(t)||!h.isBuffer(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var i=t.length,r=e.length,n=0,o=Math.min(i,r);n<o;++n)if(t[n]!==e[n]){i=t[n],r=e[n];break}return i<r?-1:r<i?1:0},h.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},h.concat=function(t,e){if(!o(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return h.alloc(0);var i;if(void 0===e)for(e=0,i=0;i<t.length;++i)e+=t[i].length;var r=h.allocUnsafe(e),n=0;for(i=0;i<t.length;++i){var a=t[i];if(!h.isBuffer(a))throw new TypeError('"list" argument must be an Array of Buffers');a.copy(r,n),n+=a.length}return r},h.byteLength=p,h.prototype._isBuffer=!0,h.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)g(this,e,e+1);return this},h.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)g(this,e,e+3),g(this,e+1,e+2);return this},h.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)g(this,e,e+7),g(this,e+1,e+6),g(this,e+2,e+5),g(this,e+3,e+4);return this},h.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?k(this,0,t):m.apply(this,arguments)},h.prototype.equals=function(t){if(!h.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===h.compare(this,t)},h.prototype.inspect=function(){var t="",i=e.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,i).match(/.{2}/g).join(" "),this.length>i&&(t+=" ... ")),"<Buffer "+t+">"},h.prototype.compare=function(t,e,i,r,n){if(!h.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===i&&(i=t?t.length:0),void 0===r&&(r=0),void 0===n&&(n=this.length),e<0||i>t.length||r<0||n>this.length)throw new RangeError("out of range index");if(r>=n&&e>=i)return 0;if(r>=n)return-1;if(e>=i)return 1;if(this===t)return 0;for(var o=(n>>>=0)-(r>>>=0),a=(i>>>=0)-(e>>>=0),s=Math.min(o,a),u=this.slice(r,n),l=t.slice(e,i),d=0;d<s;++d)if(u[d]!==l[d]){o=u[d],a=l[d];break}return o<a?-1:a<o?1:0},h.prototype.includes=function(t,e,i){return-1!==this.indexOf(t,e,i)},h.prototype.indexOf=function(t,e,i){return v(this,t,e,i,!0)},h.prototype.lastIndexOf=function(t,e,i){return v(this,t,e,i,!1)},h.prototype.write=function(t,e,i,r){if(void 0===e)r="utf8",i=this.length,e=0;else if(void 0===i&&"string"==typeof e)r=e,i=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(i)?(i|=0,void 0===r&&(r="utf8")):(r=i,i=void 0)}var n=this.length-e;if((void 0===i||i>n)&&(i=n),t.length>0&&(i<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return b(this,t,e,i);case"utf8":case"utf-8":return _(this,t,e,i);case"ascii":return w(this,t,e,i);case"latin1":case"binary":return A(this,t,e,i);case"base64":return M(this,t,e,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,t,e,i);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var T=4096;function R(t,e,i){var r="";i=Math.min(t.length,i);for(var n=e;n<i;++n)r+=String.fromCharCode(127&t[n]);return r}function I(t,e,i){var r="";i=Math.min(t.length,i);for(var n=e;n<i;++n)r+=String.fromCharCode(t[n]);return r}function C(t,e,i){var r=t.length;(!e||e<0)&&(e=0),(!i||i<0||i>r)&&(i=r);for(var n="",o=e;o<i;++o)n+=U(t[o]);return n}function P(t,e,i){for(var r=t.slice(e,i),n="",o=0;o<r.length;o+=2)n+=String.fromCharCode(r[o]+256*r[o+1]);return n}function x(t,e,i){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>i)throw new RangeError("Trying to access beyond buffer length")}function D(t,e,i,r,n,o){if(!h.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>n||e<o)throw new RangeError('"value" argument is out of bounds');if(i+r>t.length)throw new RangeError("Index out of range")}function O(t,e,i,r){e<0&&(e=65535+e+1);for(var n=0,o=Math.min(t.length-i,2);n<o;++n)t[i+n]=(e&255<<8*(r?n:1-n))>>>8*(r?n:1-n)}function B(t,e,i,r){e<0&&(e=4294967295+e+1);for(var n=0,o=Math.min(t.length-i,4);n<o;++n)t[i+n]=e>>>8*(r?n:3-n)&255}function L(t,e,i,r,n,o){if(i+r>t.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("Index out of range")}function W(t,e,i,r,o){return o||L(t,0,i,4),n.write(t,e,i,r,23,4),i+4}function N(t,e,i,r,o){return o||L(t,0,i,8),n.write(t,e,i,r,52,8),i+8}h.prototype.slice=function(t,e){var i,r=this.length;if((t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t),h.TYPED_ARRAY_SUPPORT)(i=this.subarray(t,e)).__proto__=h.prototype;else{var n=e-t;i=new h(n,void 0);for(var o=0;o<n;++o)i[o]=this[o+t]}return i},h.prototype.readUIntLE=function(t,e,i){t|=0,e|=0,i||x(t,e,this.length);for(var r=this[t],n=1,o=0;++o<e&&(n*=256);)r+=this[t+o]*n;return r},h.prototype.readUIntBE=function(t,e,i){t|=0,e|=0,i||x(t,e,this.length);for(var r=this[t+--e],n=1;e>0&&(n*=256);)r+=this[t+--e]*n;return r},h.prototype.readUInt8=function(t,e){return e||x(t,1,this.length),this[t]},h.prototype.readUInt16LE=function(t,e){return e||x(t,2,this.length),this[t]|this[t+1]<<8},h.prototype.readUInt16BE=function(t,e){return e||x(t,2,this.length),this[t]<<8|this[t+1]},h.prototype.readUInt32LE=function(t,e){return e||x(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},h.prototype.readUInt32BE=function(t,e){return e||x(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},h.prototype.readIntLE=function(t,e,i){t|=0,e|=0,i||x(t,e,this.length);for(var r=this[t],n=1,o=0;++o<e&&(n*=256);)r+=this[t+o]*n;return r>=(n*=128)&&(r-=Math.pow(2,8*e)),r},h.prototype.readIntBE=function(t,e,i){t|=0,e|=0,i||x(t,e,this.length);for(var r=e,n=1,o=this[t+--r];r>0&&(n*=256);)o+=this[t+--r]*n;return o>=(n*=128)&&(o-=Math.pow(2,8*e)),o},h.prototype.readInt8=function(t,e){return e||x(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},h.prototype.readInt16LE=function(t,e){e||x(t,2,this.length);var i=this[t]|this[t+1]<<8;return 32768&i?4294901760|i:i},h.prototype.readInt16BE=function(t,e){e||x(t,2,this.length);var i=this[t+1]|this[t]<<8;return 32768&i?4294901760|i:i},h.prototype.readInt32LE=function(t,e){return e||x(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},h.prototype.readInt32BE=function(t,e){return e||x(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},h.prototype.readFloatLE=function(t,e){return e||x(t,4,this.length),n.read(this,t,!0,23,4)},h.prototype.readFloatBE=function(t,e){return e||x(t,4,this.length),n.read(this,t,!1,23,4)},h.prototype.readDoubleLE=function(t,e){return e||x(t,8,this.length),n.read(this,t,!0,52,8)},h.prototype.readDoubleBE=function(t,e){return e||x(t,8,this.length),n.read(this,t,!1,52,8)},h.prototype.writeUIntLE=function(t,e,i,r){(t=+t,e|=0,i|=0,r)||D(this,t,e,i,Math.pow(2,8*i)-1,0);var n=1,o=0;for(this[e]=255&t;++o<i&&(n*=256);)this[e+o]=t/n&255;return e+i},h.prototype.writeUIntBE=function(t,e,i,r){(t=+t,e|=0,i|=0,r)||D(this,t,e,i,Math.pow(2,8*i)-1,0);var n=i-1,o=1;for(this[e+n]=255&t;--n>=0&&(o*=256);)this[e+n]=t/o&255;return e+i},h.prototype.writeUInt8=function(t,e,i){return t=+t,e|=0,i||D(this,t,e,1,255,0),h.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},h.prototype.writeUInt16LE=function(t,e,i){return t=+t,e|=0,i||D(this,t,e,2,65535,0),h.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):O(this,t,e,!0),e+2},h.prototype.writeUInt16BE=function(t,e,i){return t=+t,e|=0,i||D(this,t,e,2,65535,0),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):O(this,t,e,!1),e+2},h.prototype.writeUInt32LE=function(t,e,i){return t=+t,e|=0,i||D(this,t,e,4,4294967295,0),h.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):B(this,t,e,!0),e+4},h.prototype.writeUInt32BE=function(t,e,i){return t=+t,e|=0,i||D(this,t,e,4,4294967295,0),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):B(this,t,e,!1),e+4},h.prototype.writeIntLE=function(t,e,i,r){if(t=+t,e|=0,!r){var n=Math.pow(2,8*i-1);D(this,t,e,i,n-1,-n)}var o=0,a=1,s=0;for(this[e]=255&t;++o<i&&(a*=256);)t<0&&0===s&&0!==this[e+o-1]&&(s=1),this[e+o]=(t/a>>0)-s&255;return e+i},h.prototype.writeIntBE=function(t,e,i,r){if(t=+t,e|=0,!r){var n=Math.pow(2,8*i-1);D(this,t,e,i,n-1,-n)}var o=i-1,a=1,s=0;for(this[e+o]=255&t;--o>=0&&(a*=256);)t<0&&0===s&&0!==this[e+o+1]&&(s=1),this[e+o]=(t/a>>0)-s&255;return e+i},h.prototype.writeInt8=function(t,e,i){return t=+t,e|=0,i||D(this,t,e,1,127,-128),h.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},h.prototype.writeInt16LE=function(t,e,i){return t=+t,e|=0,i||D(this,t,e,2,32767,-32768),h.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):O(this,t,e,!0),e+2},h.prototype.writeInt16BE=function(t,e,i){return t=+t,e|=0,i||D(this,t,e,2,32767,-32768),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):O(this,t,e,!1),e+2},h.prototype.writeInt32LE=function(t,e,i){return t=+t,e|=0,i||D(this,t,e,4,2147483647,-2147483648),h.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):B(this,t,e,!0),e+4},h.prototype.writeInt32BE=function(t,e,i){return t=+t,e|=0,i||D(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):B(this,t,e,!1),e+4},h.prototype.writeFloatLE=function(t,e,i){return W(this,t,e,!0,i)},h.prototype.writeFloatBE=function(t,e,i){return W(this,t,e,!1,i)},h.prototype.writeDoubleLE=function(t,e,i){return N(this,t,e,!0,i)},h.prototype.writeDoubleBE=function(t,e,i){return N(this,t,e,!1,i)},h.prototype.copy=function(t,e,i,r){if(i||(i=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<i&&(r=i),r===i)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(i<0||i>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),t.length-e<r-i&&(r=t.length-e+i);var n,o=r-i;if(this===t&&i<e&&e<r)for(n=o-1;n>=0;--n)t[n+e]=this[n+i];else if(o<1e3||!h.TYPED_ARRAY_SUPPORT)for(n=0;n<o;++n)t[n+e]=this[n+i];else Uint8Array.prototype.set.call(t,this.subarray(i,i+o),e);return o},h.prototype.fill=function(t,e,i,r){if("string"==typeof t){if("string"==typeof e?(r=e,e=0,i=this.length):"string"==typeof i&&(r=i,i=this.length),1===t.length){var n=t.charCodeAt(0);n<256&&(t=n)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!h.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<i)throw new RangeError("Out of range index");if(i<=e)return this;var o;if(e>>>=0,i=void 0===i?this.length:i>>>0,t||(t=0),"number"==typeof t)for(o=e;o<i;++o)this[o]=t;else{var a=h.isBuffer(t)?t:j(new h(t,r).toString()),s=a.length;for(o=0;o<i-e;++o)this[o+e]=a[o%s]}return this};var F=/[^+\/0-9A-Za-z-_]/g;function U(t){return t<16?"0"+t.toString(16):t.toString(16)}function j(t,e){var i;e=e||1/0;for(var r=t.length,n=null,o=[],a=0;a<r;++a){if((i=t.charCodeAt(a))>55295&&i<57344){if(!n){if(i>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(a+1===r){(e-=3)>-1&&o.push(239,191,189);continue}n=i;continue}if(i<56320){(e-=3)>-1&&o.push(239,191,189),n=i;continue}i=65536+(n-55296<<10|i-56320)}else n&&(e-=3)>-1&&o.push(239,191,189);if(n=null,i<128){if((e-=1)<0)break;o.push(i)}else if(i<2048){if((e-=2)<0)break;o.push(i>>6|192,63&i|128)}else if(i<65536){if((e-=3)<0)break;o.push(i>>12|224,i>>6&63|128,63&i|128)}else{if(!(i<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(i>>18|240,i>>12&63|128,i>>6&63|128,63&i|128)}}return o}function V(t){return r.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(F,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function H(t,e,i,r){for(var n=0;n<r&&!(n+i>=e.length||n>=t.length);++n)e[n+i]=t[n];return n}}).call(this,i(10))},function(t,e){var i;i=function(){return this}();try{i=i||new Function("return this")()}catch(t){"object"==typeof window&&(i=window)}t.exports=i},function(t,e,i){var r;t.exports=(r=i(5),i(21),void(r.lib.Cipher||function(t){var e=r,i=e.lib,n=i.Base,o=i.WordArray,a=i.BufferedBlockAlgorithm,s=e.enc,h=(s.Utf8,s.Base64),u=e.algo.EvpKDF,l=i.Cipher=a.extend({cfg:n.extend(),createEncryptor:function(t,e){return this.create(this._ENC_XFORM_MODE,t,e)},createDecryptor:function(t,e){return this.create(this._DEC_XFORM_MODE,t,e)},init:function(t,e,i){this.cfg=this.cfg.extend(i),this._xformMode=t,this._key=e,this.reset()},reset:function(){a.reset.call(this),this._doReset()},process:function(t){return this._append(t),this._process()},finalize:function(t){return t&&this._append(t),this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function t(t){return"string"==typeof t?b:v}return function(e){return{encrypt:function(i,r,n){return t(r).encrypt(e,i,r,n)},decrypt:function(i,r,n){return t(r).decrypt(e,i,r,n)}}}}()}),d=(i.StreamCipher=l.extend({_doFinalize:function(){return this._process(!0)},blockSize:1}),e.mode={}),f=i.BlockCipherMode=n.extend({createEncryptor:function(t,e){return this.Encryptor.create(t,e)},createDecryptor:function(t,e){return this.Decryptor.create(t,e)},init:function(t,e){this._cipher=t,this._iv=e}}),c=d.CBC=function(){var e=f.extend();function i(e,i,r){var n,o=this._iv;o?(n=o,this._iv=t):n=this._prevBlock;for(var a=0;a<r;a++)e[i+a]^=n[a]}return e.Encryptor=e.extend({processBlock:function(t,e){var r=this._cipher,n=r.blockSize;i.call(this,t,e,n),r.encryptBlock(t,e),this._prevBlock=t.slice(e,e+n)}}),e.Decryptor=e.extend({processBlock:function(t,e){var r=this._cipher,n=r.blockSize,o=t.slice(e,e+n);r.decryptBlock(t,e),i.call(this,t,e,n),this._prevBlock=o}}),e}(),p=(e.pad={}).Pkcs7={pad:function(t,e){for(var i=4*e,r=i-t.sigBytes%i,n=r<<24|r<<16|r<<8|r,a=[],s=0;s<r;s+=4)a.push(n);var h=o.create(a,r);t.concat(h)},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},m=(i.BlockCipher=l.extend({cfg:l.cfg.extend({mode:c,padding:p}),reset:function(){var t;l.reset.call(this);var e=this.cfg,i=e.iv,r=e.mode;this._xformMode==this._ENC_XFORM_MODE?t=r.createEncryptor:(t=r.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==t?this._mode.init(this,i&&i.words):(this._mode=t.call(r,this,i&&i.words),this._mode.__creator=t)},_doProcessBlock:function(t,e){this._mode.processBlock(t,e)},_doFinalize:function(){var t,e=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(e.pad(this._data,this.blockSize),t=this._process(!0)):(t=this._process(!0),e.unpad(t)),t},blockSize:4}),i.CipherParams=n.extend({init:function(t){this.mixIn(t)},toString:function(t){return(t||this.formatter).stringify(this)}})),g=(e.format={}).OpenSSL={stringify:function(t){var e=t.ciphertext,i=t.salt;return(i?o.create([1398893684,1701076831]).concat(i).concat(e):e).toString(h)},parse:function(t){var e,i=h.parse(t),r=i.words;return 1398893684==r[0]&&1701076831==r[1]&&(e=o.create(r.slice(2,4)),r.splice(0,4),i.sigBytes-=16),m.create({ciphertext:i,salt:e})}},v=i.SerializableCipher=n.extend({cfg:n.extend({format:g}),encrypt:function(t,e,i,r){r=this.cfg.extend(r);var n=t.createEncryptor(i,r),o=n.finalize(e),a=n.cfg;return m.create({ciphertext:o,key:i,iv:a.iv,algorithm:t,mode:a.mode,padding:a.padding,blockSize:t.blockSize,formatter:r.format})},decrypt:function(t,e,i,r){return r=this.cfg.extend(r),e=this._parse(e,r.format),t.createDecryptor(i,r).finalize(e.ciphertext)},_parse:function(t,e){return"string"==typeof t?e.parse(t,this):t}}),y=(e.kdf={}).OpenSSL={execute:function(t,e,i,r){r||(r=o.random(8));var n=u.create({keySize:e+i}).compute(t,r),a=o.create(n.words.slice(e),4*i);return n.sigBytes=4*e,m.create({key:n,iv:a,salt:r})}},b=i.PasswordBasedCipher=v.extend({cfg:v.cfg.extend({kdf:y}),encrypt:function(t,e,i,r){var n=(r=this.cfg.extend(r)).kdf.execute(i,t.keySize,t.ivSize);r.iv=n.iv;var o=v.encrypt.call(this,t,e,n.key,r);return o.mixIn(n),o},decrypt:function(t,e,i,r){r=this.cfg.extend(r),e=this._parse(e,r.format);var n=r.kdf.execute(i,t.keySize,t.ivSize,e.salt);return r.iv=n.iv,v.decrypt.call(this,t,e,n.key,r)}})}()))},function(t,e,i){"use strict";var r=function(){function t(){this.mimeType=null,this.duration=null,this.hasAudio=null,this.hasVideo=null,this.audioCodec=null,this.videoCodec=null,this.audioDataRate=null,this.videoDataRate=null,this.audioSampleRate=null,this.audioChannelCount=null,this.width=null,this.height=null,this.fps=null,this.profile=null,this.level=null,this.refFrames=null,this.chromaFormat=null,this.sarNum=null,this.sarDen=null,this.metadata=null,this.segments=null,this.segmentCount=null,this.hasKeyframesIndex=null,this.keyframesIndex=null}var e=t.prototype;return e.isComplete=function(){var t=!1===this.hasAudio||!0===this.hasAudio&&null!=this.audioCodec&&null!=this.audioSampleRate&&null!=this.audioChannelCount,e=!1===this.hasVideo||!0===this.hasVideo&&null!=this.videoCodec&&null!=this.width&&null!=this.height&&null!=this.fps&&null!=this.profile&&null!=this.level&&null!=this.refFrames&&null!=this.chromaFormat&&null!=this.sarNum&&null!=this.sarDen;return null!=this.mimeType&&null!=this.duration&&null!=this.metadata&&null!=this.hasKeyframesIndex&&t&&e},e.isSeekable=function(){return!0===this.hasKeyframesIndex},e.getNearestKeyframe=function(t){if(null==this.keyframesIndex)return null;var e=this.keyframesIndex,i=this._search(e.times,t);return{index:i,milliseconds:e.times[i],fileposition:e.filepositions[i]}},e._search=function(t,e){var i=0,r=t.length-1,n=0,o=0,a=r;for(e<t[0]&&(i=0,o=a+1);o<=a;){if((n=o+Math.floor((a-o)/2))===r||e>=t[n]&&e<t[n+1]){i=n;break}t[n]<e?o=n+1:a=n-1}return i},t}();e.a=r},function(t,e){function i(t,e){if(!t)throw new Error(e||"Assertion failed")}t.exports=i,i.equal=function(t,e,i){if(t!=e)throw new Error(i||"Assertion failed: "+t+" != "+e)}},function(t,e,i){"use strict";var r=e,n=i(16),o=i(13),a=i(116);r.assert=o,r.toArray=a.toArray,r.zero2=a.zero2,r.toHex=a.toHex,r.encode=a.encode,r.getNAF=function(t,e,i){var r=new Array(Math.max(t.bitLength(),i)+1);r.fill(0);for(var n=1<<e+1,o=t.clone(),a=0;a<r.length;a++){var s,h=o.andln(n-1);o.isOdd()?(s=h>(n>>1)-1?(n>>1)-h:h,o.isubn(s)):s=0,r[a]=s,o.iushrn(1)}return r},r.getJSF=function(t,e){var i=[[],[]];t=t.clone(),e=e.clone();for(var r,n=0,o=0;t.cmpn(-n)>0||e.cmpn(-o)>0;){var a,s,h=t.andln(3)+n&3,u=e.andln(3)+o&3;3===h&&(h=-1),3===u&&(u=-1),a=0==(1&h)?0:3!==(r=t.andln(7)+n&7)&&5!==r||2!==u?h:-h,i[0].push(a),s=0==(1&u)?0:3!==(r=e.andln(7)+o&7)&&5!==r||2!==h?u:-u,i[1].push(s),2*n===a+1&&(n=1-n),2*o===s+1&&(o=1-o),t.iushrn(1),e.iushrn(1)}return i},r.cachedProperty=function(t,e,i){var r="_"+e;t.prototype[e]=function(){return void 0!==this[r]?this[r]:this[r]=i.call(this)}},r.parseBytes=function(t){return"string"==typeof t?r.toArray(t,"hex"):t},r.intFromLE=function(t){return new n(t,"hex","le")}},function(t,e,i){"use strict";var r=i(13),n=i(3);function o(t,e){return 55296==(64512&t.charCodeAt(e))&&(!(e<0||e+1>=t.length)&&56320==(64512&t.charCodeAt(e+1)))}function a(t){return(t>>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24)>>>0}function s(t){return 1===t.length?"0"+t:t}function h(t){return 7===t.length?"0"+t:6===t.length?"00"+t:5===t.length?"000"+t:4===t.length?"0000"+t:3===t.length?"00000"+t:2===t.length?"000000"+t:1===t.length?"0000000"+t:t}e.inherits=n,e.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var i=[];if("string"==typeof t)if(e){if("hex"===e)for((t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t),n=0;n<t.length;n+=2)i.push(parseInt(t[n]+t[n+1],16))}else for(var r=0,n=0;n<t.length;n++){var a=t.charCodeAt(n);a<128?i[r++]=a:a<2048?(i[r++]=a>>6|192,i[r++]=63&a|128):o(t,n)?(a=65536+((1023&a)<<10)+(1023&t.charCodeAt(++n)),i[r++]=a>>18|240,i[r++]=a>>12&63|128,i[r++]=a>>6&63|128,i[r++]=63&a|128):(i[r++]=a>>12|224,i[r++]=a>>6&63|128,i[r++]=63&a|128)}else for(n=0;n<t.length;n++)i[n]=0|t[n];return i},e.toHex=function(t){for(var e="",i=0;i<t.length;i++)e+=s(t[i].toString(16));return e},e.htonl=a,e.toHex32=function(t,e){for(var i="",r=0;r<t.length;r++){var n=t[r];"little"===e&&(n=a(n)),i+=h(n.toString(16))}return i},e.zero2=s,e.zero8=h,e.join32=function(t,e,i,n){var o=i-e;r(o%4==0);for(var a=new Array(o/4),s=0,h=e;s<a.length;s++,h+=4){var u;u="big"===n?t[h]<<24|t[h+1]<<16|t[h+2]<<8|t[h+3]:t[h+3]<<24|t[h+2]<<16|t[h+1]<<8|t[h],a[s]=u>>>0}return a},e.split32=function(t,e){for(var i=new Array(4*t.length),r=0,n=0;r<t.length;r++,n+=4){var o=t[r];"big"===e?(i[n]=o>>>24,i[n+1]=o>>>16&255,i[n+2]=o>>>8&255,i[n+3]=255&o):(i[n+3]=o>>>24,i[n+2]=o>>>16&255,i[n+1]=o>>>8&255,i[n]=255&o)}return i},e.rotr32=function(t,e){return t>>>e|t<<32-e},e.rotl32=function(t,e){return t<<e|t>>>32-e},e.sum32=function(t,e){return t+e>>>0},e.sum32_3=function(t,e,i){return t+e+i>>>0},e.sum32_4=function(t,e,i,r){return t+e+i+r>>>0},e.sum32_5=function(t,e,i,r,n){return t+e+i+r+n>>>0},e.sum64=function(t,e,i,r){var n=t[e],o=r+t[e+1]>>>0,a=(o<r?1:0)+i+n;t[e]=a>>>0,t[e+1]=o},e.sum64_hi=function(t,e,i,r){return(e+r>>>0<e?1:0)+t+i>>>0},e.sum64_lo=function(t,e,i,r){return e+r>>>0},e.sum64_4_hi=function(t,e,i,r,n,o,a,s){var h=0,u=e;return h+=(u=u+r>>>0)<e?1:0,h+=(u=u+o>>>0)<o?1:0,t+i+n+a+(h+=(u=u+s>>>0)<s?1:0)>>>0},e.sum64_4_lo=function(t,e,i,r,n,o,a,s){return e+r+o+s>>>0},e.sum64_5_hi=function(t,e,i,r,n,o,a,s,h,u){var l=0,d=e;return l+=(d=d+r>>>0)<e?1:0,l+=(d=d+o>>>0)<o?1:0,l+=(d=d+s>>>0)<s?1:0,t+i+n+a+h+(l+=(d=d+u>>>0)<u?1:0)>>>0},e.sum64_5_lo=function(t,e,i,r,n,o,a,s,h,u){return e+r+o+s+u>>>0},e.rotr64_hi=function(t,e,i){return(e<<32-i|t>>>i)>>>0},e.rotr64_lo=function(t,e,i){return(t<<32-i|e>>>i)>>>0},e.shr64_hi=function(t,e,i){return t>>>i},e.shr64_lo=function(t,e,i){return(t<<32-i|e>>>i)>>>0}},function(t,e,i){(function(t){!function(t,e){"use strict";function r(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var i=function(){};i.prototype=e.prototype,t.prototype=new i,t.prototype.constructor=t}function o(t,e,i){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(i=e,e=10),this._init(t||0,e||10,i||"be"))}var a;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{a="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:i(209).Buffer}catch(t){}function s(t,e){var i=t.charCodeAt(e);return i>=65&&i<=70?i-55:i>=97&&i<=102?i-87:i-48&15}function h(t,e,i){var r=s(t,i);return i-1>=e&&(r|=s(t,i-1)<<4),r}function u(t,e,i,r){for(var n=0,o=Math.min(t.length,i),a=e;a<o;a++){var s=t.charCodeAt(a)-48;n*=r,n+=s>=49?s-49+10:s>=17?s-17+10:s}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,i){if("number"==typeof t)return this._initNumber(t,e,i);if("object"==typeof t)return this._initArray(t,e,i);"hex"===e&&(e=16),r(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n<t.length&&(16===e?this._parseHex(t,n,i):(this._parseBase(t,e,n),"le"===i&&this._initArray(this.toArray(),e,i)))},o.prototype._initNumber=function(t,e,i){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(r(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===i&&this._initArray(this.toArray(),e,i)},o.prototype._initArray=function(t,e,i){if(r("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var n=0;n<this.length;n++)this.words[n]=0;var o,a,s=0;if("be"===i)for(n=t.length-1,o=0;n>=0;n-=3)a=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=a<<s&67108863,this.words[o+1]=a>>>26-s&67108863,(s+=24)>=26&&(s-=26,o++);else if("le"===i)for(n=0,o=0;n<t.length;n+=3)a=t[n]|t[n+1]<<8|t[n+2]<<16,this.words[o]|=a<<s&67108863,this.words[o+1]=a>>>26-s&67108863,(s+=24)>=26&&(s-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,i){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r<this.length;r++)this.words[r]=0;var n,o=0,a=0;if("be"===i)for(r=t.length-1;r>=e;r-=2)n=h(t,e,r)<<o,this.words[a]|=67108863&n,o>=18?(o-=18,a+=1,this.words[a]|=n>>>26):o+=8;else for(r=(t.length-e)%2==0?e+1:e;r<t.length;r+=2)n=h(t,e,r)<<o,this.words[a]|=67108863&n,o>=18?(o-=18,a+=1,this.words[a]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,i){this.words=[0],this.length=1;for(var r=0,n=1;n<=67108863;n*=e)r++;r--,n=n/e|0;for(var o=t.length-i,a=o%r,s=Math.min(o,o-a)+i,h=0,l=i;l<s;l+=r)h=u(t,l,l+r,e),this.imuln(n),this.words[0]+h<67108864?this.words[0]+=h:this._iaddn(h);if(0!==a){var d=1;for(h=u(t,l,t.length,e),l=0;l<a;l++)d*=e;this.imuln(d),this.words[0]+h<67108864?this.words[0]+=h:this._iaddn(h)}this.strip()},o.prototype.copy=function(t){t.words=new Array(this.length);for(var e=0;e<this.length;e++)t.words[e]=this.words[e];t.length=this.length,t.negative=this.negative,t.red=this.red},o.prototype.clone=function(){var t=new o(null);return this.copy(t),t},o.prototype._expand=function(t){for(;this.length<t;)this.words[this.length++]=0;return this},o.prototype.strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],d=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function c(t,e,i){i.negative=e.negative^t.negative;var r=t.length+e.length|0;i.length=r,r=r-1|0;var n=0|t.words[0],o=0|e.words[0],a=n*o,s=67108863&a,h=a/67108864|0;i.words[0]=s;for(var u=1;u<r;u++){for(var l=h>>>26,d=67108863&h,f=Math.min(u,e.length-1),c=Math.max(0,u-t.length+1);c<=f;c++){var p=u-c|0;l+=(a=(n=0|t.words[p])*(o=0|e.words[c])+d)/67108864|0,d=67108863&a}i.words[u]=0|d,h=0|l}return 0!==h?i.words[u]=0|h:i.length--,i.strip()}o.prototype.toString=function(t,e){var i;if(e=0|e||1,16===(t=t||10)||"hex"===t){i="";for(var n=0,o=0,a=0;a<this.length;a++){var s=this.words[a],h=(16777215&(s<<n|o)).toString(16);i=0!==(o=s>>>24-n&16777215)||a!==this.length-1?l[6-h.length]+h+i:h+i,(n+=2)>=26&&(n-=26,a--)}for(0!==o&&(i=o.toString(16)+i);i.length%e!=0;)i="0"+i;return 0!==this.negative&&(i="-"+i),i}if(t===(0|t)&&t>=2&&t<=36){var u=d[t],c=f[t];i="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modn(c).toString(t);i=(p=p.idivn(c)).isZero()?m+i:l[u-m.length]+m+i}for(this.isZero()&&(i="0"+i);i.length%e!=0;)i="0"+i;return 0!==this.negative&&(i="-"+i),i}r(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return r(void 0!==a),this.toArrayLike(a,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,i){var n=this.byteLength(),o=i||Math.max(1,n);r(n<=o,"byte array longer than desired length"),r(o>0,"Requested array length <= 0"),this.strip();var a,s,h="le"===e,u=new t(o),l=this.clone();if(h){for(s=0;!l.isZero();s++)a=l.andln(255),l.iushrn(8),u[s]=a;for(;s<o;s++)u[s]=0}else{for(s=0;s<o-n;s++)u[s]=0;for(s=0;!l.isZero();s++)a=l.andln(255),l.iushrn(8),u[o-s-1]=a}return u},Math.clz32?o.prototype._countBits=function(t){return 32-Math.clz32(t)}:o.prototype._countBits=function(t){var e=t,i=0;return e>=4096&&(i+=13,e>>>=13),e>=64&&(i+=7,e>>>=7),e>=8&&(i+=4,e>>>=4),e>=2&&(i+=2,e>>>=2),i+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,i=0;return 0==(8191&e)&&(i+=13,e>>>=13),0==(127&e)&&(i+=7,e>>>=7),0==(15&e)&&(i+=4,e>>>=4),0==(3&e)&&(i+=2,e>>>=2),0==(1&e)&&i++,i},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;e<this.length;e++){var i=this._zeroBits(this.words[e]);if(t+=i,26!==i)break}return t},o.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},o.prototype.toTwos=function(t){return 0!==this.negative?this.abs().inotn(t).iaddn(1):this.clone()},o.prototype.fromTwos=function(t){return this.testn(t-1)?this.notn(t).iaddn(1).ineg():this.clone()},o.prototype.isNeg=function(){return 0!==this.negative},o.prototype.neg=function(){return this.clone().ineg()},o.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},o.prototype.iuor=function(t){for(;this.length<t.length;)this.words[this.length++]=0;for(var e=0;e<t.length;e++)this.words[e]=this.words[e]|t.words[e];return this.strip()},o.prototype.ior=function(t){return r(0==(this.negative|t.negative)),this.iuor(t)},o.prototype.or=function(t){return this.length>t.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var i=0;i<e.length;i++)this.words[i]=this.words[i]&t.words[i];return this.length=e.length,this.strip()},o.prototype.iand=function(t){return r(0==(this.negative|t.negative)),this.iuand(t)},o.prototype.and=function(t){return this.length>t.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,i;this.length>t.length?(e=this,i=t):(e=t,i=this);for(var r=0;r<i.length;r++)this.words[r]=e.words[r]^i.words[r];if(this!==e)for(;r<e.length;r++)this.words[r]=e.words[r];return this.length=e.length,this.strip()},o.prototype.ixor=function(t){return r(0==(this.negative|t.negative)),this.iuxor(t)},o.prototype.xor=function(t){return this.length>t.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){r("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),i=t%26;this._expand(e),i>0&&e--;for(var n=0;n<e;n++)this.words[n]=67108863&~this.words[n];return i>0&&(this.words[n]=~this.words[n]&67108863>>26-i),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){r("number"==typeof t&&t>=0);var i=t/26|0,n=t%26;return this._expand(i+1),this.words[i]=e?this.words[i]|1<<n:this.words[i]&~(1<<n),this.strip()},o.prototype.iadd=function(t){var e,i,r;if(0!==this.negative&&0===t.negative)return this.negative=0,e=this.isub(t),this.negative^=1,this._normSign();if(0===this.negative&&0!==t.negative)return t.negative=0,e=this.isub(t),t.negative=1,e._normSign();this.length>t.length?(i=this,r=t):(i=t,r=this);for(var n=0,o=0;o<r.length;o++)e=(0|i.words[o])+(0|r.words[o])+n,this.words[o]=67108863&e,n=e>>>26;for(;0!==n&&o<i.length;o++)e=(0|i.words[o])+n,this.words[o]=67108863&e,n=e>>>26;if(this.length=i.length,0!==n)this.words[this.length]=n,this.length++;else if(i!==this)for(;o<i.length;o++)this.words[o]=i.words[o];return this},o.prototype.add=function(t){var e;return 0!==t.negative&&0===this.negative?(t.negative=0,e=this.sub(t),t.negative^=1,e):0===t.negative&&0!==this.negative?(this.negative=0,e=t.sub(this),this.negative=1,e):this.length>t.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var i,r,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(i=this,r=t):(i=t,r=this);for(var o=0,a=0;a<r.length;a++)o=(e=(0|i.words[a])-(0|r.words[a])+o)>>26,this.words[a]=67108863&e;for(;0!==o&&a<i.length;a++)o=(e=(0|i.words[a])+o)>>26,this.words[a]=67108863&e;if(0===o&&a<i.length&&i!==this)for(;a<i.length;a++)this.words[a]=i.words[a];return this.length=Math.max(this.length,a),i!==this&&(this.negative=1),this.strip()},o.prototype.sub=function(t){return this.clone().isub(t)};var p=function(t,e,i){var r,n,o,a=t.words,s=e.words,h=i.words,u=0,l=0|a[0],d=8191&l,f=l>>>13,c=0|a[1],p=8191&c,m=c>>>13,g=0|a[2],v=8191&g,y=g>>>13,b=0|a[3],_=8191&b,w=b>>>13,A=0|a[4],M=8191&A,E=A>>>13,S=0|a[5],k=8191&S,T=S>>>13,R=0|a[6],I=8191&R,C=R>>>13,P=0|a[7],x=8191&P,D=P>>>13,O=0|a[8],B=8191&O,L=O>>>13,W=0|a[9],N=8191&W,F=W>>>13,U=0|s[0],j=8191&U,V=U>>>13,H=0|s[1],z=8191&H,G=H>>>13,q=0|s[2],X=8191&q,Z=q>>>13,K=0|s[3],Q=8191&K,Y=K>>>13,J=0|s[4],$=8191&J,tt=J>>>13,et=0|s[5],it=8191&et,rt=et>>>13,nt=0|s[6],ot=8191&nt,at=nt>>>13,st=0|s[7],ht=8191&st,ut=st>>>13,lt=0|s[8],dt=8191<,ft=lt>>>13,ct=0|s[9],pt=8191&ct,mt=ct>>>13;i.negative=t.negative^e.negative,i.length=19;var gt=(u+(r=Math.imul(d,j))|0)+((8191&(n=(n=Math.imul(d,V))+Math.imul(f,j)|0))<<13)|0;u=((o=Math.imul(f,V))+(n>>>13)|0)+(gt>>>26)|0,gt&=67108863,r=Math.imul(p,j),n=(n=Math.imul(p,V))+Math.imul(m,j)|0,o=Math.imul(m,V);var vt=(u+(r=r+Math.imul(d,z)|0)|0)+((8191&(n=(n=n+Math.imul(d,G)|0)+Math.imul(f,z)|0))<<13)|0;u=((o=o+Math.imul(f,G)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,r=Math.imul(v,j),n=(n=Math.imul(v,V))+Math.imul(y,j)|0,o=Math.imul(y,V),r=r+Math.imul(p,z)|0,n=(n=n+Math.imul(p,G)|0)+Math.imul(m,z)|0,o=o+Math.imul(m,G)|0;var yt=(u+(r=r+Math.imul(d,X)|0)|0)+((8191&(n=(n=n+Math.imul(d,Z)|0)+Math.imul(f,X)|0))<<13)|0;u=((o=o+Math.imul(f,Z)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,r=Math.imul(_,j),n=(n=Math.imul(_,V))+Math.imul(w,j)|0,o=Math.imul(w,V),r=r+Math.imul(v,z)|0,n=(n=n+Math.imul(v,G)|0)+Math.imul(y,z)|0,o=o+Math.imul(y,G)|0,r=r+Math.imul(p,X)|0,n=(n=n+Math.imul(p,Z)|0)+Math.imul(m,X)|0,o=o+Math.imul(m,Z)|0;var bt=(u+(r=r+Math.imul(d,Q)|0)|0)+((8191&(n=(n=n+Math.imul(d,Y)|0)+Math.imul(f,Q)|0))<<13)|0;u=((o=o+Math.imul(f,Y)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,r=Math.imul(M,j),n=(n=Math.imul(M,V))+Math.imul(E,j)|0,o=Math.imul(E,V),r=r+Math.imul(_,z)|0,n=(n=n+Math.imul(_,G)|0)+Math.imul(w,z)|0,o=o+Math.imul(w,G)|0,r=r+Math.imul(v,X)|0,n=(n=n+Math.imul(v,Z)|0)+Math.imul(y,X)|0,o=o+Math.imul(y,Z)|0,r=r+Math.imul(p,Q)|0,n=(n=n+Math.imul(p,Y)|0)+Math.imul(m,Q)|0,o=o+Math.imul(m,Y)|0;var _t=(u+(r=r+Math.imul(d,$)|0)|0)+((8191&(n=(n=n+Math.imul(d,tt)|0)+Math.imul(f,$)|0))<<13)|0;u=((o=o+Math.imul(f,tt)|0)+(n>>>13)|0)+(_t>>>26)|0,_t&=67108863,r=Math.imul(k,j),n=(n=Math.imul(k,V))+Math.imul(T,j)|0,o=Math.imul(T,V),r=r+Math.imul(M,z)|0,n=(n=n+Math.imul(M,G)|0)+Math.imul(E,z)|0,o=o+Math.imul(E,G)|0,r=r+Math.imul(_,X)|0,n=(n=n+Math.imul(_,Z)|0)+Math.imul(w,X)|0,o=o+Math.imul(w,Z)|0,r=r+Math.imul(v,Q)|0,n=(n=n+Math.imul(v,Y)|0)+Math.imul(y,Q)|0,o=o+Math.imul(y,Y)|0,r=r+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,$)|0,o=o+Math.imul(m,tt)|0;var wt=(u+(r=r+Math.imul(d,it)|0)|0)+((8191&(n=(n=n+Math.imul(d,rt)|0)+Math.imul(f,it)|0))<<13)|0;u=((o=o+Math.imul(f,rt)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,r=Math.imul(I,j),n=(n=Math.imul(I,V))+Math.imul(C,j)|0,o=Math.imul(C,V),r=r+Math.imul(k,z)|0,n=(n=n+Math.imul(k,G)|0)+Math.imul(T,z)|0,o=o+Math.imul(T,G)|0,r=r+Math.imul(M,X)|0,n=(n=n+Math.imul(M,Z)|0)+Math.imul(E,X)|0,o=o+Math.imul(E,Z)|0,r=r+Math.imul(_,Q)|0,n=(n=n+Math.imul(_,Y)|0)+Math.imul(w,Q)|0,o=o+Math.imul(w,Y)|0,r=r+Math.imul(v,$)|0,n=(n=n+Math.imul(v,tt)|0)+Math.imul(y,$)|0,o=o+Math.imul(y,tt)|0,r=r+Math.imul(p,it)|0,n=(n=n+Math.imul(p,rt)|0)+Math.imul(m,it)|0,o=o+Math.imul(m,rt)|0;var At=(u+(r=r+Math.imul(d,ot)|0)|0)+((8191&(n=(n=n+Math.imul(d,at)|0)+Math.imul(f,ot)|0))<<13)|0;u=((o=o+Math.imul(f,at)|0)+(n>>>13)|0)+(At>>>26)|0,At&=67108863,r=Math.imul(x,j),n=(n=Math.imul(x,V))+Math.imul(D,j)|0,o=Math.imul(D,V),r=r+Math.imul(I,z)|0,n=(n=n+Math.imul(I,G)|0)+Math.imul(C,z)|0,o=o+Math.imul(C,G)|0,r=r+Math.imul(k,X)|0,n=(n=n+Math.imul(k,Z)|0)+Math.imul(T,X)|0,o=o+Math.imul(T,Z)|0,r=r+Math.imul(M,Q)|0,n=(n=n+Math.imul(M,Y)|0)+Math.imul(E,Q)|0,o=o+Math.imul(E,Y)|0,r=r+Math.imul(_,$)|0,n=(n=n+Math.imul(_,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,r=r+Math.imul(v,it)|0,n=(n=n+Math.imul(v,rt)|0)+Math.imul(y,it)|0,o=o+Math.imul(y,rt)|0,r=r+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,at)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,at)|0;var Mt=(u+(r=r+Math.imul(d,ht)|0)|0)+((8191&(n=(n=n+Math.imul(d,ut)|0)+Math.imul(f,ht)|0))<<13)|0;u=((o=o+Math.imul(f,ut)|0)+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,r=Math.imul(B,j),n=(n=Math.imul(B,V))+Math.imul(L,j)|0,o=Math.imul(L,V),r=r+Math.imul(x,z)|0,n=(n=n+Math.imul(x,G)|0)+Math.imul(D,z)|0,o=o+Math.imul(D,G)|0,r=r+Math.imul(I,X)|0,n=(n=n+Math.imul(I,Z)|0)+Math.imul(C,X)|0,o=o+Math.imul(C,Z)|0,r=r+Math.imul(k,Q)|0,n=(n=n+Math.imul(k,Y)|0)+Math.imul(T,Q)|0,o=o+Math.imul(T,Y)|0,r=r+Math.imul(M,$)|0,n=(n=n+Math.imul(M,tt)|0)+Math.imul(E,$)|0,o=o+Math.imul(E,tt)|0,r=r+Math.imul(_,it)|0,n=(n=n+Math.imul(_,rt)|0)+Math.imul(w,it)|0,o=o+Math.imul(w,rt)|0,r=r+Math.imul(v,ot)|0,n=(n=n+Math.imul(v,at)|0)+Math.imul(y,ot)|0,o=o+Math.imul(y,at)|0,r=r+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0;var Et=(u+(r=r+Math.imul(d,dt)|0)|0)+((8191&(n=(n=n+Math.imul(d,ft)|0)+Math.imul(f,dt)|0))<<13)|0;u=((o=o+Math.imul(f,ft)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,r=Math.imul(N,j),n=(n=Math.imul(N,V))+Math.imul(F,j)|0,o=Math.imul(F,V),r=r+Math.imul(B,z)|0,n=(n=n+Math.imul(B,G)|0)+Math.imul(L,z)|0,o=o+Math.imul(L,G)|0,r=r+Math.imul(x,X)|0,n=(n=n+Math.imul(x,Z)|0)+Math.imul(D,X)|0,o=o+Math.imul(D,Z)|0,r=r+Math.imul(I,Q)|0,n=(n=n+Math.imul(I,Y)|0)+Math.imul(C,Q)|0,o=o+Math.imul(C,Y)|0,r=r+Math.imul(k,$)|0,n=(n=n+Math.imul(k,tt)|0)+Math.imul(T,$)|0,o=o+Math.imul(T,tt)|0,r=r+Math.imul(M,it)|0,n=(n=n+Math.imul(M,rt)|0)+Math.imul(E,it)|0,o=o+Math.imul(E,rt)|0,r=r+Math.imul(_,ot)|0,n=(n=n+Math.imul(_,at)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,at)|0,r=r+Math.imul(v,ht)|0,n=(n=n+Math.imul(v,ut)|0)+Math.imul(y,ht)|0,o=o+Math.imul(y,ut)|0,r=r+Math.imul(p,dt)|0,n=(n=n+Math.imul(p,ft)|0)+Math.imul(m,dt)|0,o=o+Math.imul(m,ft)|0;var St=(u+(r=r+Math.imul(d,pt)|0)|0)+((8191&(n=(n=n+Math.imul(d,mt)|0)+Math.imul(f,pt)|0))<<13)|0;u=((o=o+Math.imul(f,mt)|0)+(n>>>13)|0)+(St>>>26)|0,St&=67108863,r=Math.imul(N,z),n=(n=Math.imul(N,G))+Math.imul(F,z)|0,o=Math.imul(F,G),r=r+Math.imul(B,X)|0,n=(n=n+Math.imul(B,Z)|0)+Math.imul(L,X)|0,o=o+Math.imul(L,Z)|0,r=r+Math.imul(x,Q)|0,n=(n=n+Math.imul(x,Y)|0)+Math.imul(D,Q)|0,o=o+Math.imul(D,Y)|0,r=r+Math.imul(I,$)|0,n=(n=n+Math.imul(I,tt)|0)+Math.imul(C,$)|0,o=o+Math.imul(C,tt)|0,r=r+Math.imul(k,it)|0,n=(n=n+Math.imul(k,rt)|0)+Math.imul(T,it)|0,o=o+Math.imul(T,rt)|0,r=r+Math.imul(M,ot)|0,n=(n=n+Math.imul(M,at)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,at)|0,r=r+Math.imul(_,ht)|0,n=(n=n+Math.imul(_,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,r=r+Math.imul(v,dt)|0,n=(n=n+Math.imul(v,ft)|0)+Math.imul(y,dt)|0,o=o+Math.imul(y,ft)|0;var kt=(u+(r=r+Math.imul(p,pt)|0)|0)+((8191&(n=(n=n+Math.imul(p,mt)|0)+Math.imul(m,pt)|0))<<13)|0;u=((o=o+Math.imul(m,mt)|0)+(n>>>13)|0)+(kt>>>26)|0,kt&=67108863,r=Math.imul(N,X),n=(n=Math.imul(N,Z))+Math.imul(F,X)|0,o=Math.imul(F,Z),r=r+Math.imul(B,Q)|0,n=(n=n+Math.imul(B,Y)|0)+Math.imul(L,Q)|0,o=o+Math.imul(L,Y)|0,r=r+Math.imul(x,$)|0,n=(n=n+Math.imul(x,tt)|0)+Math.imul(D,$)|0,o=o+Math.imul(D,tt)|0,r=r+Math.imul(I,it)|0,n=(n=n+Math.imul(I,rt)|0)+Math.imul(C,it)|0,o=o+Math.imul(C,rt)|0,r=r+Math.imul(k,ot)|0,n=(n=n+Math.imul(k,at)|0)+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,r=r+Math.imul(M,ht)|0,n=(n=n+Math.imul(M,ut)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,ut)|0,r=r+Math.imul(_,dt)|0,n=(n=n+Math.imul(_,ft)|0)+Math.imul(w,dt)|0,o=o+Math.imul(w,ft)|0;var Tt=(u+(r=r+Math.imul(v,pt)|0)|0)+((8191&(n=(n=n+Math.imul(v,mt)|0)+Math.imul(y,pt)|0))<<13)|0;u=((o=o+Math.imul(y,mt)|0)+(n>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,r=Math.imul(N,Q),n=(n=Math.imul(N,Y))+Math.imul(F,Q)|0,o=Math.imul(F,Y),r=r+Math.imul(B,$)|0,n=(n=n+Math.imul(B,tt)|0)+Math.imul(L,$)|0,o=o+Math.imul(L,tt)|0,r=r+Math.imul(x,it)|0,n=(n=n+Math.imul(x,rt)|0)+Math.imul(D,it)|0,o=o+Math.imul(D,rt)|0,r=r+Math.imul(I,ot)|0,n=(n=n+Math.imul(I,at)|0)+Math.imul(C,ot)|0,o=o+Math.imul(C,at)|0,r=r+Math.imul(k,ht)|0,n=(n=n+Math.imul(k,ut)|0)+Math.imul(T,ht)|0,o=o+Math.imul(T,ut)|0,r=r+Math.imul(M,dt)|0,n=(n=n+Math.imul(M,ft)|0)+Math.imul(E,dt)|0,o=o+Math.imul(E,ft)|0;var Rt=(u+(r=r+Math.imul(_,pt)|0)|0)+((8191&(n=(n=n+Math.imul(_,mt)|0)+Math.imul(w,pt)|0))<<13)|0;u=((o=o+Math.imul(w,mt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,r=Math.imul(N,$),n=(n=Math.imul(N,tt))+Math.imul(F,$)|0,o=Math.imul(F,tt),r=r+Math.imul(B,it)|0,n=(n=n+Math.imul(B,rt)|0)+Math.imul(L,it)|0,o=o+Math.imul(L,rt)|0,r=r+Math.imul(x,ot)|0,n=(n=n+Math.imul(x,at)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,at)|0,r=r+Math.imul(I,ht)|0,n=(n=n+Math.imul(I,ut)|0)+Math.imul(C,ht)|0,o=o+Math.imul(C,ut)|0,r=r+Math.imul(k,dt)|0,n=(n=n+Math.imul(k,ft)|0)+Math.imul(T,dt)|0,o=o+Math.imul(T,ft)|0;var It=(u+(r=r+Math.imul(M,pt)|0)|0)+((8191&(n=(n=n+Math.imul(M,mt)|0)+Math.imul(E,pt)|0))<<13)|0;u=((o=o+Math.imul(E,mt)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,r=Math.imul(N,it),n=(n=Math.imul(N,rt))+Math.imul(F,it)|0,o=Math.imul(F,rt),r=r+Math.imul(B,ot)|0,n=(n=n+Math.imul(B,at)|0)+Math.imul(L,ot)|0,o=o+Math.imul(L,at)|0,r=r+Math.imul(x,ht)|0,n=(n=n+Math.imul(x,ut)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,ut)|0,r=r+Math.imul(I,dt)|0,n=(n=n+Math.imul(I,ft)|0)+Math.imul(C,dt)|0,o=o+Math.imul(C,ft)|0;var Ct=(u+(r=r+Math.imul(k,pt)|0)|0)+((8191&(n=(n=n+Math.imul(k,mt)|0)+Math.imul(T,pt)|0))<<13)|0;u=((o=o+Math.imul(T,mt)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,r=Math.imul(N,ot),n=(n=Math.imul(N,at))+Math.imul(F,ot)|0,o=Math.imul(F,at),r=r+Math.imul(B,ht)|0,n=(n=n+Math.imul(B,ut)|0)+Math.imul(L,ht)|0,o=o+Math.imul(L,ut)|0,r=r+Math.imul(x,dt)|0,n=(n=n+Math.imul(x,ft)|0)+Math.imul(D,dt)|0,o=o+Math.imul(D,ft)|0;var Pt=(u+(r=r+Math.imul(I,pt)|0)|0)+((8191&(n=(n=n+Math.imul(I,mt)|0)+Math.imul(C,pt)|0))<<13)|0;u=((o=o+Math.imul(C,mt)|0)+(n>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,r=Math.imul(N,ht),n=(n=Math.imul(N,ut))+Math.imul(F,ht)|0,o=Math.imul(F,ut),r=r+Math.imul(B,dt)|0,n=(n=n+Math.imul(B,ft)|0)+Math.imul(L,dt)|0,o=o+Math.imul(L,ft)|0;var xt=(u+(r=r+Math.imul(x,pt)|0)|0)+((8191&(n=(n=n+Math.imul(x,mt)|0)+Math.imul(D,pt)|0))<<13)|0;u=((o=o+Math.imul(D,mt)|0)+(n>>>13)|0)+(xt>>>26)|0,xt&=67108863,r=Math.imul(N,dt),n=(n=Math.imul(N,ft))+Math.imul(F,dt)|0,o=Math.imul(F,ft);var Dt=(u+(r=r+Math.imul(B,pt)|0)|0)+((8191&(n=(n=n+Math.imul(B,mt)|0)+Math.imul(L,pt)|0))<<13)|0;u=((o=o+Math.imul(L,mt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863;var Ot=(u+(r=Math.imul(N,pt))|0)+((8191&(n=(n=Math.imul(N,mt))+Math.imul(F,pt)|0))<<13)|0;return u=((o=Math.imul(F,mt))+(n>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,h[0]=gt,h[1]=vt,h[2]=yt,h[3]=bt,h[4]=_t,h[5]=wt,h[6]=At,h[7]=Mt,h[8]=Et,h[9]=St,h[10]=kt,h[11]=Tt,h[12]=Rt,h[13]=It,h[14]=Ct,h[15]=Pt,h[16]=xt,h[17]=Dt,h[18]=Ot,0!==u&&(h[19]=u,i.length++),i};function m(t,e,i){return(new g).mulp(t,e,i)}function g(t,e){this.x=t,this.y=e}Math.imul||(p=c),o.prototype.mulTo=function(t,e){var i,r=this.length+t.length;return i=10===this.length&&10===t.length?p(this,t,e):r<63?c(this,t,e):r<1024?function(t,e,i){i.negative=e.negative^t.negative,i.length=t.length+e.length;for(var r=0,n=0,o=0;o<i.length-1;o++){var a=n;n=0;for(var s=67108863&r,h=Math.min(o,e.length-1),u=Math.max(0,o-t.length+1);u<=h;u++){var l=o-u,d=(0|t.words[l])*(0|e.words[u]),f=67108863&d;s=67108863&(f=f+s|0),n+=(a=(a=a+(d/67108864|0)|0)+(f>>>26)|0)>>>26,a&=67108863}i.words[o]=s,r=a,a=n}return 0!==r?i.words[o]=r:i.length--,i.strip()}(this,t,e):m(this,t,e),i},g.prototype.makeRBT=function(t){for(var e=new Array(t),i=o.prototype._countBits(t)-1,r=0;r<t;r++)e[r]=this.revBin(r,i,t);return e},g.prototype.revBin=function(t,e,i){if(0===t||t===i-1)return t;for(var r=0,n=0;n<e;n++)r|=(1&t)<<e-n-1,t>>=1;return r},g.prototype.permute=function(t,e,i,r,n,o){for(var a=0;a<o;a++)r[a]=e[t[a]],n[a]=i[t[a]]},g.prototype.transform=function(t,e,i,r,n,o){this.permute(o,t,e,i,r,n);for(var a=1;a<n;a<<=1)for(var s=a<<1,h=Math.cos(2*Math.PI/s),u=Math.sin(2*Math.PI/s),l=0;l<n;l+=s)for(var d=h,f=u,c=0;c<a;c++){var p=i[l+c],m=r[l+c],g=i[l+c+a],v=r[l+c+a],y=d*g-f*v;v=d*v+f*g,g=y,i[l+c]=p+g,r[l+c]=m+v,i[l+c+a]=p-g,r[l+c+a]=m-v,c!==s&&(y=h*d-u*f,f=h*f+u*d,d=y)}},g.prototype.guessLen13b=function(t,e){var i=1|Math.max(e,t),r=1&i,n=0;for(i=i/2|0;i;i>>>=1)n++;return 1<<n+1+r},g.prototype.conjugate=function(t,e,i){if(!(i<=1))for(var r=0;r<i/2;r++){var n=t[r];t[r]=t[i-r-1],t[i-r-1]=n,n=e[r],e[r]=-e[i-r-1],e[i-r-1]=-n}},g.prototype.normalize13b=function(t,e){for(var i=0,r=0;r<e/2;r++){var n=8192*Math.round(t[2*r+1]/e)+Math.round(t[2*r]/e)+i;t[r]=67108863&n,i=n<67108864?0:n/67108864|0}return t},g.prototype.convert13b=function(t,e,i,n){for(var o=0,a=0;a<e;a++)o+=0|t[a],i[2*a]=8191&o,o>>>=13,i[2*a+1]=8191&o,o>>>=13;for(a=2*e;a<n;++a)i[a]=0;r(0===o),r(0==(-8192&o))},g.prototype.stub=function(t){for(var e=new Array(t),i=0;i<t;i++)e[i]=0;return e},g.prototype.mulp=function(t,e,i){var r=2*this.guessLen13b(t.length,e.length),n=this.makeRBT(r),o=this.stub(r),a=new Array(r),s=new Array(r),h=new Array(r),u=new Array(r),l=new Array(r),d=new Array(r),f=i.words;f.length=r,this.convert13b(t.words,t.length,a,r),this.convert13b(e.words,e.length,u,r),this.transform(a,o,s,h,r,n),this.transform(u,o,l,d,r,n);for(var c=0;c<r;c++){var p=s[c]*l[c]-h[c]*d[c];h[c]=s[c]*d[c]+h[c]*l[c],s[c]=p}return this.conjugate(s,h,r),this.transform(s,h,f,o,r,n),this.conjugate(f,o,r),this.normalize13b(f,r),i.negative=t.negative^e.negative,i.length=t.length+e.length,i.strip()},o.prototype.mul=function(t){var e=new o(null);return e.words=new Array(this.length+t.length),this.mulTo(t,e)},o.prototype.mulf=function(t){var e=new o(null);return e.words=new Array(this.length+t.length),m(this,t,e)},o.prototype.imul=function(t){return this.clone().mulTo(t,this)},o.prototype.imuln=function(t){r("number"==typeof t),r(t<67108864);for(var e=0,i=0;i<this.length;i++){var n=(0|this.words[i])*t,o=(67108863&n)+(67108863&e);e>>=26,e+=n/67108864|0,e+=o>>>26,this.words[i]=67108863&o}return 0!==e&&(this.words[i]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),i=0;i<e.length;i++){var r=i/26|0,n=i%26;e[i]=(t.words[r]&1<<n)>>>n}return e}(t);if(0===e.length)return new o(1);for(var i=this,r=0;r<e.length&&0===e[r];r++,i=i.sqr());if(++r<e.length)for(var n=i.sqr();r<e.length;r++,n=n.sqr())0!==e[r]&&(i=i.mul(n));return i},o.prototype.iushln=function(t){r("number"==typeof t&&t>=0);var e,i=t%26,n=(t-i)/26,o=67108863>>>26-i<<26-i;if(0!==i){var a=0;for(e=0;e<this.length;e++){var s=this.words[e]&o,h=(0|this.words[e])-s<<i;this.words[e]=h|a,a=s>>>26-i}a&&(this.words[e]=a,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e<n;e++)this.words[e]=0;this.length+=n}return this.strip()},o.prototype.ishln=function(t){return r(0===this.negative),this.iushln(t)},o.prototype.iushrn=function(t,e,i){var n;r("number"==typeof t&&t>=0),n=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),s=67108863^67108863>>>o<<o,h=i;if(n-=a,n=Math.max(0,n),h){for(var u=0;u<a;u++)h.words[u]=this.words[u];h.length=a}if(0===a);else if(this.length>a)for(this.length-=a,u=0;u<this.length;u++)this.words[u]=this.words[u+a];else this.words[0]=0,this.length=1;var l=0;for(u=this.length-1;u>=0&&(0!==l||u>=n);u--){var d=0|this.words[u];this.words[u]=l<<26-o|d>>>o,l=d&s}return h&&0!==l&&(h.words[h.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,i){return r(0===this.negative),this.iushrn(t,e,i)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){r("number"==typeof t&&t>=0);var e=t%26,i=(t-e)/26,n=1<<e;return!(this.length<=i)&&!!(this.words[i]&n)},o.prototype.imaskn=function(t){r("number"==typeof t&&t>=0);var e=t%26,i=(t-e)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=i)return this;if(0!==e&&i++,this.length=Math.min(i,this.length),0!==e){var n=67108863^67108863>>>e<<e;this.words[this.length-1]&=n}return this.strip()},o.prototype.maskn=function(t){return this.clone().imaskn(t)},o.prototype.iaddn=function(t){return r("number"==typeof t),r(t<67108864),t<0?this.isubn(-t):0!==this.negative?1===this.length&&(0|this.words[0])<t?(this.words[0]=t-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(t),this.negative=1,this):this._iaddn(t)},o.prototype._iaddn=function(t){this.words[0]+=t;for(var e=0;e<this.length&&this.words[e]>=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(r("number"==typeof t),r(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e<this.length&&this.words[e]<0;e++)this.words[e]+=67108864,this.words[e+1]-=1;return this.strip()},o.prototype.addn=function(t){return this.clone().iaddn(t)},o.prototype.subn=function(t){return this.clone().isubn(t)},o.prototype.iabs=function(){return this.negative=0,this},o.prototype.abs=function(){return this.clone().iabs()},o.prototype._ishlnsubmul=function(t,e,i){var n,o,a=t.length+i;this._expand(a);var s=0;for(n=0;n<t.length;n++){o=(0|this.words[n+i])+s;var h=(0|t.words[n])*e;s=((o-=67108863&h)>>26)-(h/67108864|0),this.words[n+i]=67108863&o}for(;n<this.length-i;n++)s=(o=(0|this.words[n+i])+s)>>26,this.words[n+i]=67108863&o;if(0===s)return this.strip();for(r(-1===s),s=0,n=0;n<this.length;n++)s=(o=-(0|this.words[n])+s)>>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var i=(this.length,t.length),r=this.clone(),n=t,a=0|n.words[n.length-1];0!==(i=26-this._countBits(a))&&(n=n.ushln(i),r.iushln(i),a=0|n.words[n.length-1]);var s,h=r.length-n.length;if("mod"!==e){(s=new o(null)).length=h+1,s.words=new Array(s.length);for(var u=0;u<s.length;u++)s.words[u]=0}var l=r.clone()._ishlnsubmul(n,1,h);0===l.negative&&(r=l,s&&(s.words[h]=1));for(var d=h-1;d>=0;d--){var f=67108864*(0|r.words[n.length+d])+(0|r.words[n.length+d-1]);for(f=Math.min(f/a|0,67108863),r._ishlnsubmul(n,f,d);0!==r.negative;)f--,r.negative=0,r._ishlnsubmul(n,1,d),r.isZero()||(r.negative^=1);s&&(s.words[d]=f)}return s&&s.strip(),r.strip(),"div"!==e&&0!==i&&r.iushrn(i),{div:s||null,mod:r}},o.prototype.divmod=function(t,e,i){return r(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(s=this.neg().divmod(t,e),"mod"!==e&&(n=s.div.neg()),"div"!==e&&(a=s.mod.neg(),i&&0!==a.negative&&a.iadd(t)),{div:n,mod:a}):0===this.negative&&0!==t.negative?(s=this.divmod(t.neg(),e),"mod"!==e&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&t.negative)?(s=this.neg().divmod(t.neg(),e),"div"!==e&&(a=s.mod.neg(),i&&0!==a.negative&&a.isub(t)),{div:s.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,a,s},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var i=0!==e.div.negative?e.mod.isub(t):e.mod,r=t.ushrn(1),n=t.andln(1),o=i.cmp(r);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){r(t<=67108863);for(var e=(1<<26)%t,i=0,n=this.length-1;n>=0;n--)i=(e*i+(0|this.words[n]))%t;return i},o.prototype.idivn=function(t){r(t<=67108863);for(var e=0,i=this.length-1;i>=0;i--){var n=(0|this.words[i])+67108864*e;this.words[i]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){r(0===t.negative),r(!t.isZero());var e=this,i=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),a=new o(0),s=new o(0),h=new o(1),u=0;e.isEven()&&i.isEven();)e.iushrn(1),i.iushrn(1),++u;for(var l=i.clone(),d=e.clone();!e.isZero();){for(var f=0,c=1;0==(e.words[0]&c)&&f<26;++f,c<<=1);if(f>0)for(e.iushrn(f);f-- >0;)(n.isOdd()||a.isOdd())&&(n.iadd(l),a.isub(d)),n.iushrn(1),a.iushrn(1);for(var p=0,m=1;0==(i.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(i.iushrn(p);p-- >0;)(s.isOdd()||h.isOdd())&&(s.iadd(l),h.isub(d)),s.iushrn(1),h.iushrn(1);e.cmp(i)>=0?(e.isub(i),n.isub(s),a.isub(h)):(i.isub(e),s.isub(n),h.isub(a))}return{a:s,b:h,gcd:i.iushln(u)}},o.prototype._invmp=function(t){r(0===t.negative),r(!t.isZero());var e=this,i=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,a=new o(1),s=new o(0),h=i.clone();e.cmpn(1)>0&&i.cmpn(1)>0;){for(var u=0,l=1;0==(e.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(e.iushrn(u);u-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);for(var d=0,f=1;0==(i.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(i.iushrn(d);d-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);e.cmp(i)>=0?(e.isub(i),a.isub(s)):(i.isub(e),s.isub(a))}return(n=0===e.cmpn(1)?a:s).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),i=t.clone();e.negative=0,i.negative=0;for(var r=0;e.isEven()&&i.isEven();r++)e.iushrn(1),i.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;i.isEven();)i.iushrn(1);var n=e.cmp(i);if(n<0){var o=e;e=i,i=o}else if(0===n||0===i.cmpn(1))break;e.isub(i)}return i.iushln(r)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){r("number"==typeof t);var e=t%26,i=(t-e)/26,n=1<<e;if(this.length<=i)return this._expand(i+1),this.words[i]|=n,this;for(var o=n,a=i;0!==o&&a<this.length;a++){var s=0|this.words[a];o=(s+=o)>>>26,s&=67108863,this.words[a]=s}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,i=t<0;if(0!==this.negative&&!i)return-1;if(0===this.negative&&i)return 1;if(this.strip(),this.length>1)e=1;else{i&&(t=-t),r(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:n<t?-1:1}return 0!==this.negative?0|-e:e},o.prototype.cmp=function(t){if(0!==this.negative&&0===t.negative)return-1;if(0===this.negative&&0!==t.negative)return 1;var e=this.ucmp(t);return 0!==this.negative?0|-e:e},o.prototype.ucmp=function(t){if(this.length>t.length)return 1;if(this.length<t.length)return-1;for(var e=0,i=this.length-1;i>=0;i--){var r=0|this.words[i],n=0|t.words[i];if(r!==n){r<n?e=-1:r>n&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new M(t)},o.prototype.toRed=function(t){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return r(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return r(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var v={k256:null,p224:null,p192:null,p25519:null};function y(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function b(){y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function _(){y.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){y.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function A(){y.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function M(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else r(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function E(t){M.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}y.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},y.prototype.ireduce=function(t){var e,i=t;do{this.split(i,this.tmp),e=(i=(i=this.imulK(i)).iadd(this.tmp)).bitLength()}while(e>this.n);var r=e<this.n?-1:i.ucmp(this.p);return 0===r?(i.words[0]=0,i.length=1):r>0?i.isub(this.p):void 0!==i.strip?i.strip():i._strip(),i},y.prototype.split=function(t,e){t.iushrn(this.n,0,e)},y.prototype.imulK=function(t){return t.imul(this.k)},n(b,y),b.prototype.split=function(t,e){for(var i=4194303,r=Math.min(t.length,9),n=0;n<r;n++)e.words[n]=t.words[n];if(e.length=r,t.length<=9)return t.words[0]=0,void(t.length=1);var o=t.words[9];for(e.words[e.length++]=o&i,n=10;n<t.length;n++){var a=0|t.words[n];t.words[n-10]=(a&i)<<4|o>>>22,o=a}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},b.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,i=0;i<t.length;i++){var r=0|t.words[i];e+=977*r,t.words[i]=67108863&e,e=64*r+(e/67108864|0)}return 0===t.words[t.length-1]&&(t.length--,0===t.words[t.length-1]&&t.length--),t},n(_,y),n(w,y),n(A,y),A.prototype.imulK=function(t){for(var e=0,i=0;i<t.length;i++){var r=19*(0|t.words[i])+e,n=67108863&r;r>>>=26,t.words[i]=n,e=r}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(v[t])return v[t];var e;if("k256"===t)e=new b;else if("p224"===t)e=new _;else if("p192"===t)e=new w;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new A}return v[t]=e,e},M.prototype._verify1=function(t){r(0===t.negative,"red works only with positives"),r(t.red,"red works only with red numbers")},M.prototype._verify2=function(t,e){r(0==(t.negative|e.negative),"red works only with positives"),r(t.red&&t.red===e.red,"red works only with red numbers")},M.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},M.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},M.prototype.add=function(t,e){this._verify2(t,e);var i=t.add(e);return i.cmp(this.m)>=0&&i.isub(this.m),i._forceRed(this)},M.prototype.iadd=function(t,e){this._verify2(t,e);var i=t.iadd(e);return i.cmp(this.m)>=0&&i.isub(this.m),i},M.prototype.sub=function(t,e){this._verify2(t,e);var i=t.sub(e);return i.cmpn(0)<0&&i.iadd(this.m),i._forceRed(this)},M.prototype.isub=function(t,e){this._verify2(t,e);var i=t.isub(e);return i.cmpn(0)<0&&i.iadd(this.m),i},M.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},M.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},M.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},M.prototype.isqr=function(t){return this.imul(t,t.clone())},M.prototype.sqr=function(t){return this.mul(t,t)},M.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(r(e%2==1),3===e){var i=this.m.add(new o(1)).iushrn(2);return this.pow(t,i)}for(var n=this.m.subn(1),a=0;!n.isZero()&&0===n.andln(1);)a++,n.iushrn(1);r(!n.isZero());var s=new o(1).toRed(this),h=s.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);0!==this.pow(l,u).cmp(h);)l.redIAdd(h);for(var d=this.pow(l,n),f=this.pow(t,n.addn(1).iushrn(1)),c=this.pow(t,n),p=a;0!==c.cmp(s);){for(var m=c,g=0;0!==m.cmp(s);g++)m=m.redSqr();r(g<p);var v=this.pow(d,new o(1).iushln(p-g-1));f=f.redMul(v),d=v.redSqr(),c=c.redMul(d),p=g}return f},M.prototype.invm=function(t){var e=t._invmp(this.m);return 0!==e.negative?(e.negative=0,this.imod(e).redNeg()):this.imod(e)},M.prototype.pow=function(t,e){if(e.isZero())return new o(1).toRed(this);if(0===e.cmpn(1))return t.clone();var i=new Array(16);i[0]=new o(1).toRed(this),i[1]=t;for(var r=2;r<i.length;r++)i[r]=this.mul(i[r-1],t);var n=i[0],a=0,s=0,h=e.bitLength()%26;for(0===h&&(h=26),r=e.length-1;r>=0;r--){for(var u=e.words[r],l=h-1;l>=0;l--){var d=u>>l&1;n!==i[0]&&(n=this.sqr(n)),0!==d||0!==a?(a<<=1,a|=d,(4===++s||0===r&&0===l)&&(n=this.mul(n,i[a]),s=0,a=0)):s=0}h=26}return n},M.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},M.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new E(t)},n(E,M),E.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},E.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},E.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var i=t.imul(e),r=i.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=i.isub(r).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},E.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var i=t.mul(e),r=i.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=i.isub(r).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},E.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t,this)}).call(this,i(20)(t))},function(t,e,i){var r=i(4).Buffer,n=i(161).Transform,o=i(18).StringDecoder;function a(t){n.call(this),this.hashMode="string"==typeof t,this.hashMode?this[t]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}i(3)(a,n),a.prototype.update=function(t,e,i){"string"==typeof t&&(t=r.from(t,e));var n=this._update(t);return this.hashMode?this:(i&&(n=this._toString(n,i)),n)},a.prototype.setAutoPadding=function(){},a.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")},a.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")},a.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")},a.prototype._transform=function(t,e,i){var r;try{this.hashMode?this._update(t):this.push(this._update(t))}catch(t){r=t}finally{i(r)}},a.prototype._flush=function(t){var e;try{this.push(this.__final())}catch(t){e=t}t(e)},a.prototype._finalOrDigest=function(t){var e=this.__final()||r.alloc(0);return t&&(e=this._toString(e,t,!0)),e},a.prototype._toString=function(t,e,i){if(this._decoder||(this._decoder=new o(e),this._encoding=e),this._encoding!==e)throw new Error("can't switch encodings");var r=this._decoder.write(t);return i&&(r+=this._decoder.end()),r},t.exports=a},function(t,e,i){"use strict";var r=i(4).Buffer,n=r.isEncoding||function(t){switch((t=""+t)&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}(t);if("string"!=typeof e&&(r.isEncoding===n||!n(t)))throw new Error("Unknown encoding: "+t);return e||t}(t),this.encoding){case"utf16le":this.text=h,this.end=u,e=4;break;case"utf8":this.fillLast=s,e=4;break;case"base64":this.text=l,this.end=d,e=3;break;default:return this.write=f,void(this.end=c)}this.lastNeed=0,this.lastTotal=0,this.lastChar=r.allocUnsafe(e)}function a(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function s(t){var e=this.lastTotal-this.lastNeed,i=function(t,e,i){if(128!=(192&e[0]))return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�"}}(this,t);return void 0!==i?i:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function h(t,e){if((t.length-e)%2==0){var i=t.toString("utf16le",e);if(i){var r=i.charCodeAt(i.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],i.slice(0,-1)}return i}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function u(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var i=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,i)}return e}function l(t,e){var i=(t.length-e)%3;return 0===i?t.toString("base64",e):(this.lastNeed=3-i,this.lastTotal=3,1===i?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-i))}function d(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function f(t){return t.toString(this.encoding)}function c(t){return t&&t.length?this.write(t):""}e.StringDecoder=o,o.prototype.write=function(t){if(0===t.length)return"";var e,i;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";i=this.lastNeed,this.lastNeed=0}else i=0;return i<t.length?e?e+this.text(t,i):this.text(t,i):e||""},o.prototype.end=function(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"�":e},o.prototype.text=function(t,e){var i=function(t,e,i){var r=e.length-1;if(r<i)return 0;var n=a(e[r]);if(n>=0)return n>0&&(t.lastNeed=n-1),n;if(--r<i||-2===n)return 0;if((n=a(e[r]))>=0)return n>0&&(t.lastNeed=n-2),n;if(--r<i||-2===n)return 0;if((n=a(e[r]))>=0)return n>0&&(2===n?n=0:t.lastNeed=n-3),n;return 0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=i;var r=t.length-(i-this.lastNeed);return t.copy(this.lastChar,0,r),t.toString("utf8",e,r)},o.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},function(t,e,i){"use strict";var r=i(42),n=Object.keys||function(t){var e=[];for(var i in t)e.push(i);return e};t.exports=d;var o=Object.create(i(36));o.inherits=i(3);var a=i(88),s=i(59);o.inherits(d,a);for(var h=n(s.prototype),u=0;u<h.length;u++){var l=h[u];d.prototype[l]||(d.prototype[l]=s.prototype[l])}function d(t){if(!(this instanceof d))return new d(t);a.call(this,t),s.call(this,t),t&&!1===t.readable&&(this.readable=!1),t&&!1===t.writable&&(this.writable=!1),this.allowHalfOpen=!0,t&&!1===t.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",f)}function f(){this.allowHalfOpen||this._writableState.ended||r.nextTick(c,this)}function c(t){t.end()}Object.defineProperty(d.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(d.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(t){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=t,this._writableState.destroyed=t)}}),d.prototype._destroy=function(t,e){this.push(null),this.end(),r.nextTick(e,t)}},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,i){var r,n,o,a,s,h,u,l;t.exports=(l=i(5),i(75),i(76),n=(r=l).lib,o=n.Base,a=n.WordArray,s=r.algo,h=s.MD5,u=s.EvpKDF=o.extend({cfg:o.extend({keySize:4,hasher:h,iterations:1}),init:function(t){this.cfg=this.cfg.extend(t)},compute:function(t,e){for(var i,r=this.cfg,n=r.hasher.create(),o=a.create(),s=o.words,h=r.keySize,u=r.iterations;s.length<h;){i&&n.update(i),i=n.update(t).finalize(e),n.reset();for(var l=1;l<u;l++)i=n.finalize(i),n.reset();o.concat(i)}return o.sigBytes=4*h,o}}),r.EvpKDF=function(t,e,i){return u.create(i).compute(t,e)},l.EvpKDF)},function(t,e,i){function r(t){var e={};function i(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,i),n.l=!0,n.exports}i.m=t,i.c=e,i.i=function(t){return t},i.d=function(t,e,r){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},i.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="/",i.oe=function(t){throw t};var r=i(i.s=ENTRY_MODULE);return r.default||r}var n="[\\.|\\-|\\+|\\w|/|@]+",o="\\(\\s*(/\\*.*?\\*/)?\\s*.*?([\\.|\\-|\\+|\\w|/|@]+).*?\\)";function a(t){return(t+"").replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}function s(t,e,r){var s={};s[r]=[];var h=e.toString(),u=h.match(/^function\s?\w*\(\w+,\s*\w+,\s*(\w+)\)/);if(!u)return s;for(var l,d=u[1],f=new RegExp("(\\\\n|\\W)"+a(d)+o,"g");l=f.exec(h);)"dll-reference"!==l[3]&&s[r].push(l[3]);for(f=new RegExp("\\("+a(d)+'\\("(dll-reference\\s('+n+'))"\\)\\)'+o,"g");l=f.exec(h);)t[l[2]]||(s[r].push(l[1]),t[l[2]]=i(l[1]).m),s[l[2]]=s[l[2]]||[],s[l[2]].push(l[4]);for(var c,p=Object.keys(s),m=0;m<p.length;m++)for(var g=0;g<s[p[m]].length;g++)c=s[p[m]][g],isNaN(1*c)||(s[p[m]][g]=1*s[p[m]][g]);return s}function h(t){return Object.keys(t).reduce((function(e,i){return e||t[i].length>0}),!1)}t.exports=function(t,e){e=e||{};var n={main:i.m},o=e.all?{main:Object.keys(n.main)}:function(t,e){for(var i={main:[e]},r={main:[]},n={main:{}};h(i);)for(var o=Object.keys(i),a=0;a<o.length;a++){var u=o[a],l=i[u].pop();if(n[u]=n[u]||{},!n[u][l]&&t[u][l]){n[u][l]=!0,r[u]=r[u]||[],r[u].push(l);for(var d=s(t,t[u][l],u),f=Object.keys(d),c=0;c<f.length;c++)i[f[c]]=i[f[c]]||[],i[f[c]]=i[f[c]].concat(d[f[c]])}}return r}(n,t),a="";Object.keys(o).filter((function(t){return"main"!==t})).forEach((function(t){for(var e=0;o[t][e];)e++;o[t].push(e),n[t][e]="(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })",a=a+"var "+t+" = ("+r.toString().replace("ENTRY_MODULE",JSON.stringify(e))+")({"+o[t].map((function(e){return JSON.stringify(e)+": "+n[t][e].toString()})).join(",")+"});\n"})),a=a+"new (("+r.toString().replace("ENTRY_MODULE",JSON.stringify(t))+")({"+o.main.map((function(t){return JSON.stringify(t)+": "+n.main[t].toString()})).join(",")+"}))(self);";var u=new window.Blob([a],{type:"text/javascript"});if(e.bare)return u;var l=(window.URL||window.webkitURL||window.mozURL||window.msURL).createObjectURL(u),d=new window.Worker(l);return d.objectURL=l,d}},function(t,e,i){"use strict";var r=i(2),n=function(){function t(t){this.TAG="ExpGolomb",this._buffer=t,this._buffer_index=0,this._total_bytes=t.byteLength,this._total_bits=8*t.byteLength,this._current_word=0,this._current_word_bits_left=0}var e=t.prototype;return e.destroy=function(){this._buffer=null},e._fillCurrentWord=function(){var t=this._total_bytes-this._buffer_index;if(t<=0)throw new r.a("ExpGolomb: _fillCurrentWord() but no bytes available");var e=Math.min(4,t),i=new Uint8Array(4);i.set(this._buffer.subarray(this._buffer_index,this._buffer_index+e)),this._current_word=new DataView(i.buffer).getUint32(0,!1),this._buffer_index+=e,this._current_word_bits_left=8*e},e.readBits=function(t){if(t>32)throw new r.b("ExpGolomb: readBits() bits exceeded max 32bits!");if(t<=this._current_word_bits_left){var e=this._current_word>>>32-t;return this._current_word<<=t,this._current_word_bits_left-=t,e}var i=this._current_word_bits_left?this._current_word:0;i>>>=32-this._current_word_bits_left;var n=t-this._current_word_bits_left;this._fillCurrentWord();var o=Math.min(n,this._current_word_bits_left),a=this._current_word>>>32-o;return this._current_word<<=o,this._current_word_bits_left-=o,i=i<<o|a},e.readBool=function(){return 1===this.readBits(1)},e.readByte=function(){return this.readBits(8)},e._skipLeadingZero=function(){var t;for(t=0;t<this._current_word_bits_left;t++)if(0!=(this._current_word&2147483648>>>t))return this._current_word<<=t,this._current_word_bits_left-=t,t;return this._fillCurrentWord(),t+this._skipLeadingZero()},e.readUEG=function(){var t=this._skipLeadingZero();return this.readBits(t+1)-1},e.readSEG=function(){var t=this.readUEG();return 1&t?t+1>>>1:-1*(t>>>1)},t}(),o=function(){function t(){}return t._ebsp2rbsp=function(t){for(var e=t,i=e.byteLength,r=new Uint8Array(i),n=0,o=0;o<i;o++)o>=2&&3===e[o]&&0===e[o-1]&&0===e[o-2]||(r[n]=e[o],n++);return new Uint8Array(r.buffer,0,n)},t.parseSPS=function(e){var i=t._ebsp2rbsp(e),r=new n(i);r.readByte();var o=r.readByte();r.readByte();var a=r.readByte();r.readUEG();var s=t.getProfileString(o),h=t.getLevelString(a),u=1,l=420,d=8;if((100===o||110===o||122===o||244===o||44===o||83===o||86===o||118===o||128===o||138===o||144===o)&&(3===(u=r.readUEG())&&r.readBits(1),u<=3&&(l=[0,420,422,444][u]),d=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool()))for(var f=3!==u?8:12,c=0;c<f;c++)r.readBool()&&(c<6?t._skipScalingList(r,16):t._skipScalingList(r,64));r.readUEG();var p=r.readUEG();if(0===p)r.readUEG();else if(1===p){r.readBits(1),r.readSEG(),r.readSEG();for(var m=r.readUEG(),g=0;g<m;g++)r.readSEG()}var v=r.readUEG();r.readBits(1);var y=r.readUEG(),b=r.readUEG(),_=r.readBits(1);0===_&&r.readBits(1),r.readBits(1);var w=0,A=0,M=0,E=0;r.readBool()&&(w=r.readUEG(),A=r.readUEG(),M=r.readUEG(),E=r.readUEG());var S=1,k=1,T=0,R=!0,I=0,C=0;if(r.readBool()){if(r.readBool()){var P=r.readByte();P>0&&P<16?(S=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][P-1],k=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][P-1]):255===P&&(S=r.readByte()<<8|r.readByte(),k=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){var x=r.readBits(32),D=r.readBits(32);R=r.readBool(),T=(I=D)/(C=2*x)}}var O=1;1===S&&1===k||(O=S/k);var B=0,L=0;0===u?(B=1,L=2-_):(B=3===u?1:2,L=(1===u?2:1)*(2-_));var W=16*(y+1),N=16*(b+1)*(2-_);W-=(w+A)*B,N-=(M+E)*L;var F=Math.ceil(W*O);return r.destroy(),r=null,{avc_profile:o,profile_string:s,avc_level:a,level_string:h,bit_depth:d,ref_frames:v,chroma_format:l,chroma_format_string:t.getChromaFormatString(l),frame_rate:{fixed:R,fps:T,fps_den:C,fps_num:I},sar_ratio:{width:S,height:k},codec_size:{width:W,height:N},present_size:{width:F,height:N}}},t._skipScalingList=function(t,e){for(var i=8,r=8,n=0;n<e;n++)0!==r&&(r=(i+t.readSEG()+256)%256),i=0===r?i:r},t.getProfileString=function(t){switch(t){case 66:return"Baseline";case 77:return"Main";case 88:return"Extended";case 100:return"High";case 110:return"High10";case 122:return"High422";case 244:return"High444";default:return"Unknown"}},t.getLevelString=function(t){return(t/10).toFixed(1)},t.getChromaFormatString=function(t){switch(t){case 420:return"4:2:0";case 422:return"4:2:2";case 444:return"4:4:4";default:return"Unknown"}},t}();e.a=o},function(t,e,i){var r;t.exports=(r=i(5),i(49),i(259),i(260),i(31),i(261),i(32),i(75),i(131),i(262),i(132),i(263),i(264),i(265),i(76),i(266),i(21),i(11),i(267),i(268),i(269),i(270),i(271),i(272),i(273),i(274),i(275),i(276),i(277),i(278),i(279),i(280),i(281),i(282),r)},function(t,e,i){"use strict";(function(e,r){var n=65536,o=4294967295;var a=i(4).Buffer,s=e.crypto||e.msCrypto;s&&s.getRandomValues?t.exports=function(t,e){if(t>o)throw new RangeError("requested too many random bytes");var i=a.allocUnsafe(t);if(t>0)if(t>n)for(var h=0;h<t;h+=n)s.getRandomValues(i.slice(h,h+n));else s.getRandomValues(i);if("function"==typeof e)return r.nextTick((function(){e(null,i)}));return i}:t.exports=function(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")}}).call(this,i(10),i(8))},function(t,e,i){"use strict";var r={};function n(t,e,i){i||(i=Error);var n=function(t){var i,r;function n(i,r,n){return t.call(this,function(t,i,r){return"string"==typeof e?e:e(t,i,r)}(i,r,n))||this}return r=t,(i=n).prototype=Object.create(r.prototype),i.prototype.constructor=i,i.__proto__=r,n}(i);n.prototype.name=i.name,n.prototype.code=t,r[t]=n}function o(t,e){if(Array.isArray(t)){var i=t.length;return t=t.map((function(t){return String(t)})),i>2?"one of ".concat(e," ").concat(t.slice(0,i-1).join(", "),", or ")+t[i-1]:2===i?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}n("ERR_INVALID_OPT_VALUE",(function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'}),TypeError),n("ERR_INVALID_ARG_TYPE",(function(t,e,i){var r,n,a,s;if("string"==typeof e&&(n="not ",e.substr(!a||a<0?0:+a,n.length)===n)?(r="must not be",e=e.replace(/^not /,"")):r="must be",function(t,e,i){return(void 0===i||i>t.length)&&(i=t.length),t.substring(i-e.length,i)===e}(t," argument"))s="The ".concat(t," ").concat(r," ").concat(o(e,"type"));else{var h=function(t,e,i){return"number"!=typeof i&&(i=0),!(i+e.length>t.length)&&-1!==t.indexOf(e,i)}(t,".")?"property":"argument";s='The "'.concat(t,'" ').concat(h," ").concat(r," ").concat(o(e,"type"))}return s+=". Received type ".concat(typeof i)}),TypeError),n("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),n("ERR_METHOD_NOT_IMPLEMENTED",(function(t){return"The "+t+" method is not implemented"})),n("ERR_STREAM_PREMATURE_CLOSE","Premature close"),n("ERR_STREAM_DESTROYED",(function(t){return"Cannot call "+t+" after a stream was destroyed"})),n("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),n("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),n("ERR_STREAM_WRITE_AFTER_END","write after end"),n("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),n("ERR_UNKNOWN_ENCODING",(function(t){return"Unknown encoding: "+t}),TypeError),n("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.codes=r},function(t,e,i){"use strict";(function(e){var r=Object.keys||function(t){var e=[];for(var i in t)e.push(i);return e};t.exports=u;var n=i(80),o=i(84);i(3)(u,n);for(var a=r(o.prototype),s=0;s<a.length;s++){var h=a[s];u.prototype[h]||(u.prototype[h]=o.prototype[h])}function u(t){if(!(this instanceof u))return new u(t);n.call(this,t),o.call(this,t),this.allowHalfOpen=!0,t&&(!1===t.readable&&(this.readable=!1),!1===t.writable&&(this.writable=!1),!1===t.allowHalfOpen&&(this.allowHalfOpen=!1,this.once("end",l)))}function l(){this._writableState.ended||e.nextTick(d,this)}function d(t){t.end()}Object.defineProperty(u.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(u.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(u.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(u.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(t){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=t,this._writableState.destroyed=t)}})}).call(this,i(8))},function(t,e,i){var r=i(4).Buffer;function n(t,e){this._block=r.alloc(t),this._finalSize=e,this._blockSize=t,this._len=0}n.prototype.update=function(t,e){"string"==typeof t&&(e=e||"utf8",t=r.from(t,e));for(var i=this._block,n=this._blockSize,o=t.length,a=this._len,s=0;s<o;){for(var h=a%n,u=Math.min(o-s,n-h),l=0;l<u;l++)i[h+l]=t[s+l];s+=u,(a+=u)%n==0&&this._update(i)}return this._len+=o,this},n.prototype.digest=function(t){var e=this._len%this._blockSize;this._block[e]=128,this._block.fill(0,e+1),e>=this._finalSize&&(this._update(this._block),this._block.fill(0));var i=8*this._len;if(i<=4294967295)this._block.writeUInt32BE(i,this._blockSize-4);else{var r=(4294967295&i)>>>0,n=(i-r)/4294967296;this._block.writeUInt32BE(n,this._blockSize-8),this._block.writeUInt32BE(r,this._blockSize-4)}this._update(this._block);var o=this._hash();return t?o.toString(t):o},n.prototype._update=function(){throw new Error("_update must be implemented by subclass")},t.exports=n},function(t,e,i){"use strict";var r={};function n(t,e,i){i||(i=Error);var n=function(t){var i,r;function n(i,r,n){return t.call(this,function(t,i,r){return"string"==typeof e?e:e(t,i,r)}(i,r,n))||this}return r=t,(i=n).prototype=Object.create(r.prototype),i.prototype.constructor=i,i.__proto__=r,n}(i);n.prototype.name=i.name,n.prototype.code=t,r[t]=n}function o(t,e){if(Array.isArray(t)){var i=t.length;return t=t.map((function(t){return String(t)})),i>2?"one of ".concat(e," ").concat(t.slice(0,i-1).join(", "),", or ")+t[i-1]:2===i?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}n("ERR_INVALID_OPT_VALUE",(function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'}),TypeError),n("ERR_INVALID_ARG_TYPE",(function(t,e,i){var r,n,a,s;if("string"==typeof e&&(n="not ",e.substr(!a||a<0?0:+a,n.length)===n)?(r="must not be",e=e.replace(/^not /,"")):r="must be",function(t,e,i){return(void 0===i||i>t.length)&&(i=t.length),t.substring(i-e.length,i)===e}(t," argument"))s="The ".concat(t," ").concat(r," ").concat(o(e,"type"));else{var h=function(t,e,i){return"number"!=typeof i&&(i=0),!(i+e.length>t.length)&&-1!==t.indexOf(e,i)}(t,".")?"property":"argument";s='The "'.concat(t,'" ').concat(h," ").concat(r," ").concat(o(e,"type"))}return s+=". Received type ".concat(typeof i)}),TypeError),n("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),n("ERR_METHOD_NOT_IMPLEMENTED",(function(t){return"The "+t+" method is not implemented"})),n("ERR_STREAM_PREMATURE_CLOSE","Premature close"),n("ERR_STREAM_DESTROYED",(function(t){return"Cannot call "+t+" after a stream was destroyed"})),n("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),n("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),n("ERR_STREAM_WRITE_AFTER_END","write after end"),n("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),n("ERR_UNKNOWN_ENCODING",(function(t){return"Unknown encoding: "+t}),TypeError),n("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.codes=r},function(t,e,i){"use strict";(function(e){var r=Object.keys||function(t){var e=[];for(var i in t)e.push(i);return e};t.exports=u;var n=i(110),o=i(114);i(3)(u,n);for(var a=r(o.prototype),s=0;s<a.length;s++){var h=a[s];u.prototype[h]||(u.prototype[h]=o.prototype[h])}function u(t){if(!(this instanceof u))return new u(t);n.call(this,t),o.call(this,t),this.allowHalfOpen=!0,t&&(!1===t.readable&&(this.readable=!1),!1===t.writable&&(this.writable=!1),!1===t.allowHalfOpen&&(this.allowHalfOpen=!1,this.once("end",l)))}function l(){this._writableState.ended||e.nextTick(d,this)}function d(t){t.end()}Object.defineProperty(u.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(u.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(u.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(u.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(t){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=t,this._writableState.destroyed=t)}})}).call(this,i(8))},function(t,e,i){var r;t.exports=(r=i(5),function(){var t=r,e=t.lib.WordArray;function i(t,i,r){for(var n=[],o=0,a=0;a<i;a++)if(a%4){var s=r[t.charCodeAt(a-1)]<<a%4*2|r[t.charCodeAt(a)]>>>6-a%4*2;n[o>>>2]|=s<<24-o%4*8,o++}return e.create(n,o)}t.enc.Base64={stringify:function(t){var e=t.words,i=t.sigBytes,r=this._map;t.clamp();for(var n=[],o=0;o<i;o+=3)for(var a=(e[o>>>2]>>>24-o%4*8&255)<<16|(e[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|e[o+2>>>2]>>>24-(o+2)%4*8&255,s=0;s<4&&o+.75*s<i;s++)n.push(r.charAt(a>>>6*(3-s)&63));var h=r.charAt(64);if(h)for(;n.length%4;)n.push(h);return n.join("")},parse:function(t){var e=t.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var o=0;o<r.length;o++)n[r.charCodeAt(o)]=o}var a=r.charAt(64);if(a){var s=t.indexOf(a);-1!==s&&(e=s)}return i(t,e,n)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),r.enc.Base64)},function(t,e,i){var r;t.exports=(r=i(5),function(t){var e=r,i=e.lib,n=i.WordArray,o=i.Hasher,a=e.algo,s=[];!function(){for(var e=0;e<64;e++)s[e]=4294967296*t.abs(t.sin(e+1))|0}();var h=a.MD5=o.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(t,e){for(var i=0;i<16;i++){var r=e+i,n=t[r];t[r]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var o=this._hash.words,a=t[e+0],h=t[e+1],c=t[e+2],p=t[e+3],m=t[e+4],g=t[e+5],v=t[e+6],y=t[e+7],b=t[e+8],_=t[e+9],w=t[e+10],A=t[e+11],M=t[e+12],E=t[e+13],S=t[e+14],k=t[e+15],T=o[0],R=o[1],I=o[2],C=o[3];T=u(T,R,I,C,a,7,s[0]),C=u(C,T,R,I,h,12,s[1]),I=u(I,C,T,R,c,17,s[2]),R=u(R,I,C,T,p,22,s[3]),T=u(T,R,I,C,m,7,s[4]),C=u(C,T,R,I,g,12,s[5]),I=u(I,C,T,R,v,17,s[6]),R=u(R,I,C,T,y,22,s[7]),T=u(T,R,I,C,b,7,s[8]),C=u(C,T,R,I,_,12,s[9]),I=u(I,C,T,R,w,17,s[10]),R=u(R,I,C,T,A,22,s[11]),T=u(T,R,I,C,M,7,s[12]),C=u(C,T,R,I,E,12,s[13]),I=u(I,C,T,R,S,17,s[14]),T=l(T,R=u(R,I,C,T,k,22,s[15]),I,C,h,5,s[16]),C=l(C,T,R,I,v,9,s[17]),I=l(I,C,T,R,A,14,s[18]),R=l(R,I,C,T,a,20,s[19]),T=l(T,R,I,C,g,5,s[20]),C=l(C,T,R,I,w,9,s[21]),I=l(I,C,T,R,k,14,s[22]),R=l(R,I,C,T,m,20,s[23]),T=l(T,R,I,C,_,5,s[24]),C=l(C,T,R,I,S,9,s[25]),I=l(I,C,T,R,p,14,s[26]),R=l(R,I,C,T,b,20,s[27]),T=l(T,R,I,C,E,5,s[28]),C=l(C,T,R,I,c,9,s[29]),I=l(I,C,T,R,y,14,s[30]),T=d(T,R=l(R,I,C,T,M,20,s[31]),I,C,g,4,s[32]),C=d(C,T,R,I,b,11,s[33]),I=d(I,C,T,R,A,16,s[34]),R=d(R,I,C,T,S,23,s[35]),T=d(T,R,I,C,h,4,s[36]),C=d(C,T,R,I,m,11,s[37]),I=d(I,C,T,R,y,16,s[38]),R=d(R,I,C,T,w,23,s[39]),T=d(T,R,I,C,E,4,s[40]),C=d(C,T,R,I,a,11,s[41]),I=d(I,C,T,R,p,16,s[42]),R=d(R,I,C,T,v,23,s[43]),T=d(T,R,I,C,_,4,s[44]),C=d(C,T,R,I,M,11,s[45]),I=d(I,C,T,R,k,16,s[46]),T=f(T,R=d(R,I,C,T,c,23,s[47]),I,C,a,6,s[48]),C=f(C,T,R,I,y,10,s[49]),I=f(I,C,T,R,S,15,s[50]),R=f(R,I,C,T,g,21,s[51]),T=f(T,R,I,C,M,6,s[52]),C=f(C,T,R,I,p,10,s[53]),I=f(I,C,T,R,w,15,s[54]),R=f(R,I,C,T,h,21,s[55]),T=f(T,R,I,C,b,6,s[56]),C=f(C,T,R,I,k,10,s[57]),I=f(I,C,T,R,v,15,s[58]),R=f(R,I,C,T,E,21,s[59]),T=f(T,R,I,C,m,6,s[60]),C=f(C,T,R,I,A,10,s[61]),I=f(I,C,T,R,c,15,s[62]),R=f(R,I,C,T,_,21,s[63]),o[0]=o[0]+T|0,o[1]=o[1]+R|0,o[2]=o[2]+I|0,o[3]=o[3]+C|0},_doFinalize:function(){var e=this._data,i=e.words,r=8*this._nDataBytes,n=8*e.sigBytes;i[n>>>5]|=128<<24-n%32;var o=t.floor(r/4294967296),a=r;i[15+(n+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),i[14+(n+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),e.sigBytes=4*(i.length+1),this._process();for(var s=this._hash,h=s.words,u=0;u<4;u++){var l=h[u];h[u]=16711935&(l<<8|l>>>24)|4278255360&(l<<24|l>>>8)}return s},clone:function(){var t=o.clone.call(this);return t._hash=this._hash.clone(),t}});function u(t,e,i,r,n,o,a){var s=t+(e&i|~e&r)+n+a;return(s<<o|s>>>32-o)+e}function l(t,e,i,r,n,o,a){var s=t+(e&r|i&~r)+n+a;return(s<<o|s>>>32-o)+e}function d(t,e,i,r,n,o,a){var s=t+(e^i^r)+n+a;return(s<<o|s>>>32-o)+e}function f(t,e,i,r,n,o,a){var s=t+(i^(e|~r))+n+a;return(s<<o|s>>>32-o)+e}e.MD5=o._createHelper(h),e.HmacMD5=o._createHmacHelper(h)}(Math),r.MD5)},function(t,e,i){"use strict";var r=function(){function t(){this.listeners={}}var e=t.prototype;return e.on=function(t,e){this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(e)},e.off=function(t,e){if(!this.listeners[t])return!1;var i=this.listeners[t].indexOf(e);return this.listeners[t]=this.listeners[t].slice(0),this.listeners[t].splice(i,1),i>-1},e.trigger=function(t){var e=this.listeners[t];if(e)if(2===arguments.length)for(var i=e.length,r=0;r<i;++r)e[r].call(this,arguments[1]);else for(var n=Array.prototype.slice.call(arguments,1),o=e.length,a=0;a<o;++a)e[a].apply(this,n)},e.dispose=function(){this.listeners={}},e.pipe=function(t){this.on("data",(function(e){t.push(e)}))},t}();t.exports=r},function(t,e){var i,r=((i={validateDimension:function(t){if(t<=0||t!==(0|t))throw"YUV plane dimensions must be a positive integer"},validateOffset:function(t){if(t<0||t!==(0|t))throw"YUV plane offsets must be a non-negative integer"},format:function(t){var e=t.width,i=t.height,r=t.chromaWidth||e,n=t.chromaHeight||i,o=t.cropLeft||0,a=t.cropTop||0,s=t.cropWidth||e-o,h=t.cropHeight||i-a,u=t.displayWidth||s,l=t.displayHeight||h;return this.validateDimension(e),this.validateDimension(i),this.validateDimension(r),this.validateDimension(n),this.validateOffset(o),this.validateOffset(a),this.validateDimension(s),this.validateDimension(h),this.validateDimension(u),this.validateDimension(l),{width:e,height:i,chromaWidth:r,chromaHeight:n,cropLeft:o,cropTop:a,cropWidth:s,cropHeight:h,displayWidth:u,displayHeight:l}},allocPlane:function(t,e){return r.validateDimension(t),r.validateDimension(e),{bytes:new Uint8Array(t*e),stride:t}},suitableStride:function(t){r.validateDimension(t);var e=t%4;return 0==e?t:t+(4-e)}}).allocPlane=function(t,e,i,r,n){var o,a;if(this.validateDimension(t),this.validateDimension(e),n=n||0,r=r||this.suitableStride(t),this.validateDimension(r),r<t)throw"Invalid input stride for YUV plane; must be larger than width";if(o=r*e,i){if(i.length-n<o)throw"Invalid input buffer for YUV plane; must be large enough for stride times height";a=i.slice(n,n+o)}else a=new Uint8Array(o),r=r||this.suitableStride(t);return{bytes:a,stride:r}},i.lumaPlane=function(t,e,i,r){return this.allocPlane(t.width,t.height,e,i,r)},i.chromaPlane=function(t,e,i,r){return this.allocPlane(t.chromaWidth,t.chromaHeight,e,i,r)},i.frame=function(t,e,i,r){return{format:t,y:e=e||this.lumaPlane(t),u:i=i||this.chromaPlane(t),v:r=r||this.chromaPlane(t)}},i.copyPlane=function(t){return{bytes:t.bytes.slice(),stride:t.stride}},i.copyFrame=function(t){return{format:t.format,y:this.copyPlane(t.y),u:this.copyPlane(t.u),v:this.copyPlane(t.v)}},i.transferables=function(t){return[t.y.bytes.buffer,t.u.bytes.buffer,t.v.bytes.buffer]},i);t.exports=r},function(t,e,i){"use strict";var r=i(3),n=i(52),o=i(55),a=i(56),s=i(17);function h(t){s.call(this,"digest"),this._hash=t}r(h,s),h.prototype._update=function(t){this._hash.update(t)},h.prototype._final=function(){return this._hash.digest()},t.exports=function(t){return"md5"===(t=t.toLowerCase())?new n:"rmd160"===t||"ripemd160"===t?new o:new h(a(t))}},function(t,e,i){function r(t){return Object.prototype.toString.call(t)}e.isArray=function(t){return Array.isArray?Array.isArray(t):"[object Array]"===r(t)},e.isBoolean=function(t){return"boolean"==typeof t},e.isNull=function(t){return null===t},e.isNullOrUndefined=function(t){return null==t},e.isNumber=function(t){return"number"==typeof t},e.isString=function(t){return"string"==typeof t},e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=function(t){return void 0===t},e.isRegExp=function(t){return"[object RegExp]"===r(t)},e.isObject=function(t){return"object"==typeof t&&null!==t},e.isDate=function(t){return"[object Date]"===r(t)},e.isError=function(t){return"[object Error]"===r(t)||t instanceof Error},e.isFunction=function(t){return"function"==typeof t},e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=i(9).Buffer.isBuffer},function(t,e,i){(function(e){t.exports=function(t,i){for(var r=Math.min(t.length,i.length),n=new e(r),o=0;o<r;++o)n[o]=t[o]^i[o];return n}}).call(this,i(9).Buffer)},function(t,e,i){"use strict";var r=i(15),n=i(13);function o(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}e.BlockHash=o,o.prototype.update=function(t,e){if(t=r.toArray(t,e),this.pending?this.pending=this.pending.concat(t):this.pending=t,this.pendingTotal+=t.length,this.pending.length>=this._delta8){var i=(t=this.pending).length%this._delta8;this.pending=t.slice(t.length-i,t.length),0===this.pending.length&&(this.pending=null),t=r.join32(t,0,t.length-i,this.endian);for(var n=0;n<t.length;n+=this._delta32)this._update(t,n,n+this._delta32)}return this},o.prototype.digest=function(t){return this.update(this._pad()),n(null===this.pending),this._digest(t)},o.prototype._pad=function(){var t=this.pendingTotal,e=this._delta8,i=e-(t+this.padLength)%e,r=new Array(i+this.padLength);r[0]=128;for(var n=1;n<i;n++)r[n]=0;if(t<<=3,"big"===this.endian){for(var o=8;o<this.padLength;o++)r[n++]=0;r[n++]=0,r[n++]=0,r[n++]=0,r[n++]=0,r[n++]=t>>>24&255,r[n++]=t>>>16&255,r[n++]=t>>>8&255,r[n++]=255&t}else for(r[n++]=255&t,r[n++]=t>>>8&255,r[n++]=t>>>16&255,r[n++]=t>>>24&255,r[n++]=0,r[n++]=0,r[n++]=0,r[n++]=0,o=8;o<this.padLength;o++)r[n++]=0;return r}},function(t,e,i){"use strict";var r=i(3),n=i(72).Reporter,o=i(70).Buffer;function a(t,e){n.call(this,e),o.isBuffer(t)?(this.base=t,this.offset=0,this.length=t.length):this.error("Input not Buffer")}function s(t,e){if(Array.isArray(t))this.length=0,this.value=t.map((function(t){return s.isEncoderBuffer(t)||(t=new s(t,e)),this.length+=t.length,t}),this);else if("number"==typeof t){if(!(0<=t&&t<=255))return e.error("non-byte EncoderBuffer value");this.value=t,this.length=1}else if("string"==typeof t)this.value=t,this.length=o.byteLength(t);else{if(!o.isBuffer(t))return e.error("Unsupported type: "+typeof t);this.value=t,this.length=t.length}}r(a,n),e.DecoderBuffer=a,a.isDecoderBuffer=function(t){return t instanceof a||"object"==typeof t&&o.isBuffer(t.base)&&"DecoderBuffer"===t.constructor.name&&"number"==typeof t.offset&&"number"==typeof t.length&&"function"==typeof t.save&&"function"==typeof t.restore&&"function"==typeof t.isEmpty&&"function"==typeof t.readUInt8&&"function"==typeof t.skip&&"function"==typeof t.raw},a.prototype.save=function(){return{offset:this.offset,reporter:n.prototype.save.call(this)}},a.prototype.restore=function(t){var e=new a(this.base);return e.offset=t.offset,e.length=this.offset,this.offset=t.offset,n.prototype.restore.call(this,t.reporter),e},a.prototype.isEmpty=function(){return this.offset===this.length},a.prototype.readUInt8=function(t){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(t||"DecoderBuffer overrun")},a.prototype.skip=function(t,e){if(!(this.offset+t<=this.length))return this.error(e||"DecoderBuffer overrun");var i=new a(this.base);return i._reporterState=this._reporterState,i.offset=this.offset,i.length=this.offset+t,this.offset+=t,i},a.prototype.raw=function(t){return this.base.slice(t?t.offset:this.offset,this.length)},e.EncoderBuffer=s,s.isEncoderBuffer=function(t){return t instanceof s||"object"==typeof t&&"EncoderBuffer"===t.constructor.name&&"number"==typeof t.length&&"function"==typeof t.join},s.prototype.join=function(t,e){return t||(t=o.alloc(this.length)),e||(e=0),0===this.length||(Array.isArray(this.value)?this.value.forEach((function(i){i.join(t,e),e+=i.length})):("number"==typeof this.value?t[e]=this.value:"string"==typeof this.value?t.write(this.value,e):o.isBuffer(this.value)&&this.value.copy(t,e),e+=this.length)),t}},function(t,e,i){"use strict";var r=function(){function t(){this.stopFlag=!1,this.bufferSourcePtr=null}var e=t.prototype;return e.destroy=function(){this.interval&&clearInterval(this.interval),this.samples=null,this.audioCtx.close(),this.audioCtx=null},e.init=function(t){this.option=Object.assign({},{encoding:"16bitInt",channels:1,sampleRate:8e3,flushingTime:1e3},t),this.samples=new Float32Array,this.flush=this.flush.bind(this),this.interval=setInterval(this.flush,this.option.flushingTime),this.maxValue=this.getMaxValue(),this.typedArray=this.getTypedArray(),this.createContext()},e.getMaxValue=function(){var t={"8bitInt":128,"16bitInt":32768,"32bitInt":2147483648,"32bitFloat":1};return t[this.option.encoding]?t[this.option.encoding]:t["16bitInt"]},e.getTypedArray=function(){var t={"8bitInt":Int8Array,"16bitInt":Int16Array,"32bitInt":Int32Array,"32bitFloat":Float32Array};return t[this.option.encoding]?t[this.option.encoding]:t["16bitInt"]},e.createContext=function(){this.audioCtx=new(window.AudioContext||window.webkitAudioContext),this.gainNode=this.audioCtx.createGain(),this.gainNode.gain.value=1,this.gainNode.connect(this.audioCtx.destination),this.startTime=this.audioCtx.currentTime},e.isTypedArray=function(t){return t.byteLength&&t.buffer&&t.buffer.constructor==ArrayBuffer},e.feed=function(t){if(this.isTypedArray(t)){t=this.getFormatedValue(t);var e=new Float32Array(this.samples.length+t.length);e.set(this.samples,0),e.set(t,this.samples.length),this.samples=e}},e.getFormatedValue=function(t){t=new this.typedArray(t.buffer);var e,i=new Float32Array(t.length);for(e=0;e<t.length;e++)i[e]=t[e]/this.maxValue;return i},e.volume=function(t){this.gainNode.gain.value=t},e.flush=function(){if(null!=this.samples&&this.samples.length){var t,e,i,r,n,o=this.audioCtx.createBufferSource(),a=this.samples.length/this.option.channels,s=this.audioCtx.createBuffer(this.option.channels,a,this.option.sampleRate);for(e=0;e<this.option.channels;e++)for(t=s.getChannelData(e),i=e,n=50,r=0;r<a;r++)t[r]=this.samples[i],r<50&&(t[r]=t[r]*r/50),r>=a-51&&(t[r]=t[r]*n--/50),i+=this.option.channels;this.startTime<this.audioCtx.currentTime&&(this.startTime=this.audioCtx.currentTime),o.buffer=s,o.connect(this.gainNode),o.start(this.startTime),this.startTime+=s.duration,this.samples=new Float32Array}},e.getTimestamp=function(){return this.audioCtx?this.audioCtx.currentTime:0},e.play=function(t){if(null!=this.audioCtx)if("running"===this.audioCtx.state){if(this.isTypedArray(t)&&(t=this.getFormatedValue(t)).length){this.stopFlag=!1;var e,i,r,n,o,a,s=this.audioCtx.createBufferSource(),h=t.length/this.option.channels;try{e=this.audioCtx.createBuffer(this.option.channels,h,this.option.sampleRate)}catch(t){}for(r=0;r<this.option.channels;r++)for(i=e.getChannelData(r),n=r,a=50,o=0;o<h;o++)i[o]=t[n],o<50&&(i[o]=i[o]*o/50),o>=h-51&&(i[o]=i[o]*a--/50),n+=this.option.channels;this.startTime<this.audioCtx.currentTime&&(this.startTime=this.audioCtx.currentTime),s.buffer=e,s.connect(this.gainNode),s.start(this.startTime),this.startTime+=e.duration,this.bufferSourcePtr=s}}else this.audioCtx.resume()},e.clearAudioBuffer=function(){this.stopFlag=!0,this.bufferSourcePtr&&this.bufferSourcePtr.stop(0)},e.pause=function(){null!=this.audioCtx&&"running"===this.audioCtx.state&&this.audioCtx.suspend()},e.resume=function(){null!=this.audioCtx&&"suspended"===this.audioCtx.state&&this.audioCtx.resume()},t}();e.a=r},function(t,e,i){"use strict";i.r(e),function(t,r,n,o){i.d(e,"VSSModule",(function(){return d})),i.d(e,"VSSLoadWasmModule",(function(){return f})),i.d(e,"VSSModuleInitialized",(function(){return c}));var a=i(0),s=!1,h="",u=void 0!==u?u:{};function l(){if(!s){var e,a=function(t){return u.locateFile?u.locateFile(t,Ut):Ut+t},l=function t(e){t.shown||(t.shown={}),t.shown[e]||(t.shown[e]=1,Vt(e))},d=function(t,e){var i=[1,0,1,96],r=e.slice(0,1),n=e.slice(1),o={i:127,j:126,f:125,d:124};i.push(n.length);for(var a=0;a<n.length;++a)i.push(o[n[a]]);"v"==r?i.push(0):i=i.concat([1,o[r]]),i[1]=i.length-2;var s=new Uint8Array([0,97,115,109,1,0,0,0].concat(i,[2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0])),h=new WebAssembly.Module(s);return new WebAssembly.Instance(h,{e:{f:t}}).exports.f},f=function(t,e){var i=$t,r=i.length;try{i.grow(1)}catch(t){if(!t instanceof RangeError)throw t;throw"Unable to grow wasm table. Use a higher value for RESERVED_FUNCTION_POINTERS or set ALLOW_TABLE_GROWTH."}try{i.set(r,t)}catch(o){if(!o instanceof TypeError)throw o;p(void 0!==e,"Missing signature argument to addFunction");var n=d(t,e);i.set(r,n)}return r},c=function(t,e){return p(void 0!==t),f(t,e)},p=function(t,e){t||j("Assertion failed: "+e)},m=function(t){var e=u["_"+t];return p(e,"Cannot call unknown function "+t+", make sure it is exported"),e},g=function(t,e,i,r,n){var o={string:function(t){var e=0;if(null!=t&&0!==t){var i=1+(t.length<<2);e=er(i),w(t,e,i)}return e},array:function(t){var e=er(t.length);return M(t,e),e}};var a=m(t),s=[],h=0;if(p("array"!==e,'Return type should not be "array".'),r)for(var u=0;u<r.length;u++){var l=o[i[u]];l?(0===h&&(h=tr()),s[u]=l(r[u])):s[u]=r[u]}var d=a.apply(null,s);return d=function(t){return"string"===e?b(t):"boolean"===e?Boolean(t):t}(d),0!==h&&ir(h),d},v=function(t,e,i,r){return function(){return g(t,e,i,arguments,r)}},y=function(t,e,i){for(var r=e+i,n=e;t[n]&&!(n>=r);)++n;if(n-e>16&&t.subarray&&ee)return ee.decode(t.subarray(e,n));for(var o="";e<n;){var a=t[e++];if(128&a){var s=63&t[e++];if(192!=(224&a)){var h=63&t[e++];if(224==(240&a)?a=(15&a)<<12|s<<6|h:(240!=(248&a)&&l("Invalid UTF-8 leading byte 0x"+a.toString(16)+" encountered when deserializing a UTF-8 string on the asm.js/wasm heap to a JS string!"),a=(7&a)<<18|s<<12|h<<6|63&t[e++]),a<65536)o+=String.fromCharCode(a);else{var u=a-65536;o+=String.fromCharCode(55296|u>>10,56320|1023&u)}}else o+=String.fromCharCode((31&a)<<6|s)}else o+=String.fromCharCode(a)}return o},b=function(t,e){return t?y(Kt,t,e):""},_=function(t,e,i,r){if(!(r>0))return 0;for(var n=i,o=i+r-1,a=0;a<t.length;++a){var s=t.charCodeAt(a);if(s>=55296&&s<=57343)s=65536+((1023&s)<<10)|1023&t.charCodeAt(++a);if(s<=127){if(i>=o)break;e[i++]=s}else if(s<=2047){if(i+1>=o)break;e[i++]=192|s>>6,e[i++]=128|63&s}else if(s<=65535){if(i+2>=o)break;e[i++]=224|s>>12,e[i++]=128|s>>6&63,e[i++]=128|63&s}else{if(i+3>=o)break;s>=2097152&&l("Invalid Unicode code point 0x"+s.toString(16)+" encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF)."),e[i++]=240|s>>18,e[i++]=128|s>>12&63,e[i++]=128|s>>6&63,e[i++]=128|63&s}}return e[i]=0,i-n},w=function(t,e,i){return p("number"==typeof i,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),_(t,Kt,e,i)},A=function(t){for(var e=0,i=0;i<t.length;++i){var r=t.charCodeAt(i);r>=55296&&r<=57343&&(r=65536+((1023&r)<<10)|1023&t.charCodeAt(++i)),r<=127?++e:e+=r<=2047?2:r<=65535?3:4}return e},M=function(t,e){p(t.length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)"),Zt.set(t,e)},E=function(t,e,i){for(var r=0;r<t.length;++r)p(t.charCodeAt(r)==t.charCodeAt(r)&255),Zt[e++>>0]=t.charCodeAt(r);i||(Zt[e>>0]=0)},S=function(t,e){return t%e>0&&(t+=e-t%e),t},k=function(t){Xt=t,u.HEAP8=Zt=new Int8Array(t),u.HEAP16=Qt=new Int16Array(t),u.HEAP32=Yt=new Int32Array(t),u.HEAPU8=Kt=new Uint8Array(t),u.HEAPU16=new Uint16Array(t),u.HEAPU32=Jt=new Uint32Array(t),u.HEAPF32=new Float32Array(t),u.HEAPF64=new Float64Array(t)},T=function(){p(0==(3&ne)),Jt[1+(ne>>2)]=34821223,Jt[2+(ne>>2)]=2310721022,Yt[0]=1668509029},R=function(){var t=Jt[1+(ne>>2)],e=Jt[2+(ne>>2)];34821223==t&&2310721022==e||j("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x"+e.toString(16)+" "+t.toString(16)),1668509029!==Yt[0]&&j("Runtime error: The application has corrupted its heap memory area (address zero)!")},I=function(t){j("Stack overflow! Attempted to allocate "+t+" bytes on the stack, but stack has only "+(ne-tr()+t)+" bytes available!")},C=function(t){for(;t.length>0;){var e=t.shift();if("function"!=typeof e){var i=e.func;"number"==typeof i?void 0===e.arg?u.dynCall_v(i):u.dynCall_vi(i,e.arg):i(void 0===e.arg?null:e.arg)}else e()}},P=function(){if(u.preRun)for("function"==typeof u.preRun&&(u.preRun=[u.preRun]);u.preRun.length;)L(u.preRun.shift());C(ue)},x=function(){R(),p(!ce),ce=!0,u.noFSInit||Oe.init.initialized||Oe.init(),Ce.init(),C(le)},D=function(){R(),Oe.ignorePermissions=!1,C(de)},O=function(){R(),pe=!0},B=function(){if(R(),u.postRun)for("function"==typeof u.postRun&&(u.postRun=[u.postRun]);u.postRun.length;)W(u.postRun.shift());C(fe)},L=function(t){ue.unshift(t)},W=function(t){fe.unshift(t)},N=function(t){for(var e=t;;){if(!Ae[t])return t;t=e+Math.random()}return t},F=function(t){be++,u.monitorRunDependencies&&u.monitorRunDependencies(be),t?(p(!Ae[t]),Ae[t]=1,null===_e&&"undefined"!=typeof setInterval&&(_e=setInterval((function(){if(te)return clearInterval(_e),void(_e=null);var t=!1;for(var e in Ae)t||(t=!0,Vt("still waiting on run dependencies:")),Vt("dependency: "+e);t&&Vt("(end of list)")}),1e4))):Vt("warning: run dependency added without ID")},U=function(t){if(be--,u.monitorRunDependencies&&u.monitorRunDependencies(be),t?(p(Ae[t]),delete Ae[t]):Vt("warning: run dependency removed without ID"),0==be&&(null!==_e&&(clearInterval(_e),_e=null),we)){var e=we;we=null,e()}},j=function(t){throw u.onAbort&&u.onAbort(t),jt(t+=""),Vt(t),te=!0,1,t="abort("+t+") at "+K(),new WebAssembly.RuntimeError(t)},V=function(t){return String.prototype.startsWith?t.startsWith(Se):0===t.indexOf(Se)},H=function(){try{if(Ht)return new Uint8Array(Ht);if(Wt)return Wt(ke);throw"both async and sync fetching of the wasm failed"}catch(t){j(t)}},z=function(){return Ht||!Pt&&!xt||"function"!=typeof fetch?new Promise((function(t,e){t(H())})):fetch(ke,{credentials:"same-origin"}).then((function(t){if(!t.ok)throw"failed to load wasm binary file at '"+ke+"'";return t.arrayBuffer()})).catch((function(){return H()}))},G=function(){var t={env:We,wasi_unstable:We};function e(t,e){var i=t.exports;u.asm=i,U("wasm-instantiate")}F("wasm-instantiate");var i=u;function r(t){p(u===i,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),i=null,e(t.instance)}function n(e){return z().then((function(e){return WebAssembly.instantiate(e,t)})).then(e,(function(t){Vt("failed to asynchronously prepare wasm: "+t),j(t)}))}if(u.instantiateWasm)try{return u.instantiateWasm(t,e)}catch(t){return Vt("Module.instantiateWasm callback failed with error: "+t),!1}return function(){if(Ht||"function"!=typeof WebAssembly.instantiateStreaming||V(ke)||"function"!=typeof fetch)return n(r);fetch(ke,{credentials:"same-origin"}).then((function(e){return WebAssembly.instantiateStreaming(e,t).then(r,(function(t){Vt("wasm streaming compile failed: "+t),Vt("falling back to ArrayBuffer instantiation"),n(r)}))}))}(),{}},q=function(t){return l("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),t},X=function(t){return t.replace(/\b_Z[\w\d_]+/g,(function(t){var e=q(t);return t===e?t:e+" ["+t+"]"}))},Z=function(){var t=new Error;if(!t.stack){try{throw new Error(0)}catch(e){t=e}if(!t.stack)return"(no stack trace available)"}return t.stack.toString()},K=function(){var t=Z();return u.extraStackTrace&&(t+="\n"+u.extraStackTrace()),X(t)},Q=function(t){return Ji(t)},Y=function(t,e,i){throw Te[t]={ptr:t,adjusted:[t],type:e,destructor:i,refcount:0,caught:!1,rethrown:!1},t,"uncaught_exception"in $i?$i.uncaught_exceptions++:$i.uncaught_exceptions=1,t+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."},J=function(){},$=function(t){return u.___errno_location?Yt[u.___errno_location()>>2]=t:Vt("failed to set errno from JS"),t},tt=function(t,e){Be.varargs=e;try{var i=Be.getStreamFromFD();switch(Be.get()){case 0:return(r=Be.get())<0?-28:Oe.open(i.path,i.flags,0,r).fd;case 1:case 2:case 13:case 14:return 0;case 3:return i.flags;case 4:var r=Be.get();return i.flags|=r,0;case 12:r=Be.get();return Qt[r+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return $(28),-1}}catch(t){return void 0!==Oe&&t instanceof Oe.ErrnoError||j(t),-t.errno}},et=function(t,e){Be.varargs=e;try{var i=Be.getStreamFromFD(),r=Be.get(),n=Be.get();return Oe.read(i,Zt,r,n)}catch(t){return void 0!==Oe&&t instanceof Oe.ErrnoError||j(t),-t.errno}},it=function(t,e){Be.varargs=e;try{var i=Be.getStr(),r=Be.get(),n=Be.get();return Oe.open(i,r,n).fd}catch(t){return void 0!==Oe&&t instanceof Oe.ErrnoError||j(t),-t.errno}},rt=function(){},nt=function(){j()},ot=function t(){return void 0===t.start&&(t.start=Date.now()),1e3*(Date.now()-t.start)|0},at=function(){return Zt.length},st=function(t,e,i){Kt.set(Kt.subarray(e,e+i),t)},ht=function(t){try{return Gt.grow(t-Xt.byteLength+65535>>16),k(Gt.buffer),1}catch(t){}},ut=function(t){var e=at();p(t>e);var i=65536,r=2147418112;if(t>r)return Vt("Cannot enlarge memory, asked to go up to "+t+" bytes, but the limit is "+r+" bytes!"),!1;for(var n=Math.max(e,16777216);n<t;)(n=n<=536870912?S(2*n,i):Math.min(S((3*n+2147483648)/4,i),r))===e&&l("Cannot ask for more memory since we reached the practical limit in browsers (which is just below 2GB), so the request would have failed. Requesting only "+Zt.length);return!!ht(n)||(Vt("Failed to grow the heap from "+e+" bytes to "+n+" bytes, not enough memory!"),!1)},lt=function t(){if(!t.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:It};for(var i in Le)e[i]=Le[i];var r=[];for(var i in e)r.push(i+"="+e[i]);t.strings=r}return t.strings},dt=function(t,e){var i=lt(),r=0;return i.forEach((function(i,n){var o=e+r;Yt[t+4*n>>2]=o,E(i,o),r+=i.length+1})),0},ft=function(t,e){var i=lt();Yt[t>>2]=i.length;var r=0;return i.forEach((function(t){r+=t.length+1})),Yt[e>>2]=r,0},ct=function(t){try{var e=Be.getStreamFromFD(t);return Oe.close(e),0}catch(t){return void 0!==Oe&&t instanceof Oe.ErrnoError||j(t),t.errno}},pt=function(t,e){try{var i=Be.getStreamFromFD(t),r=i.tty?2:Oe.isDir(i.mode)?3:Oe.isLink(i.mode)?7:4;return Zt[e>>0]=r,0}catch(t){return void 0!==Oe&&t instanceof Oe.ErrnoError||j(t),t.errno}},mt=function(t,e,i,r,n){try{var o=Be.getStreamFromFD(t),a=4294967296*i+(e>>>0),s=9007199254740992;return a<=-s||a>=s?-61:(Oe.llseek(o,a,r),Ee=[o.position>>>0,(Me=o.position,+me(Me)>=1?Me>0?(0|ye(+ve(Me/4294967296),4294967295))>>>0:~~+ge((Me-+(~~Me>>>0))/4294967296)>>>0:0)],Yt[n>>2]=Ee[0],Yt[n+4>>2]=Ee[1],o.getdents&&0===a&&0===r&&(o.getdents=null),0)}catch(t){return void 0!==Oe&&t instanceof Oe.ErrnoError||j(t),t.errno}},gt=function(t,e,i,r){try{var n=Be.getStreamFromFD(t),o=Be.doWritev(n,e,i);return Yt[r>>2]=o,0}catch(t){return void 0!==Oe&&t instanceof Oe.ErrnoError||j(t),t.errno}},vt=function(t){var e=Date.now();return Yt[t>>2]=e/1e3|0,Yt[t+4>>2]=e%1e3*1e3|0,0},yt=function(t){return(t=+t)>=0?+ve(t+.5):+ge(t-.5)},bt=function(t){qt(0|t)},_t=function(t){var e=Date.now()/1e3|0;return t&&(Yt[t>>2]=e),e},wt=function(t,e,i){var r=i>0?i:A(t)+1,n=new Array(r),o=_(t,n,0,n.length);return e&&(n.length=o),n},At=function(t){this.name="ExitStatus",this.message="Program terminated with exit("+t+")",this.status=t},Mt=function(t){p(0==be,'cannot call main when async dependencies remain! (listen on Module["onRuntimeInitialized"])'),p(0==ue.length,"cannot call main when preRun functions remain to be called");var e=u._main;try{var i=e(0,0);kt(i,!0)}catch(t){if(t instanceof At)return;if("SimulateInfiniteLoop"==t)return void(zt=!0);var r=t;t&&"object"==typeof t&&t.stack&&(r=[t,t.stack]),Vt("exception thrown: "+r),Ct(1,t)}finally{!0}},Et=function(t){function e(){Qi||(Qi=!0,te||(x(),D(),u.onRuntimeInitialized&&u.onRuntimeInitialized(),rr&&Mt(t),B()))}t=t||Rt,be>0||(T(),P(),be>0||(u.setStatus?(u.setStatus("Running..."),setTimeout((function(){setTimeout((function(){u.setStatus("")}),1),e()}),1)):e(),R()))},St=function(){var t=jt,e=Vt,i=!1;jt=Vt=function(t){i=!0};try{var r=u._fflush;r&&r(0),["stdout","stderr"].forEach((function(t){var e=Oe.analyzePath("/dev/"+t);if(e){var r=e.object.rdev,n=Ce.ttys[r];n&&n.output&&n.output.length&&(i=!0)}}))}catch(t){}jt=t,Vt=e,i&&l("stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.")},kt=function(t,e){St(),e&&zt&&0===t||(zt?e||Vt("program exited (with status: "+t+"), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)"):(te=!0,t,O(),u.onExit&&u.onExit(t)),Ct(t,new At(t)))},Tt={};for(e in u)u.hasOwnProperty(e)&&(Tt[e]=u[e]);var Rt=[],It="./this.program",Ct=function(t,e){throw e},Pt=!1,xt=!1,Dt=!1,Ot=!1,Bt=!1;if(Pt="object"==typeof window,xt="function"==typeof importScripts,Ot="object"==typeof t&&"object"==typeof t.versions&&"string"==typeof t.versions.node,Dt=Ot&&!Pt&&!xt,Bt=!Pt&&!Dt&&!xt,u.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)");var Lt,Wt,Nt,Ft,Ut="";if(Dt)Ut=r+"/",Lt=function(t,e){var r;return Nt||(Nt=i(146)),Ft||(Ft=i(147)),t=Ft.normalize(t),r=Nt.readFileSync(t),e?r:r.toString()},Wt=function(t){var e=Lt(t,!0);return e.buffer||(e=new Uint8Array(e)),p(e.buffer),e},t.argv.length>1&&(It=t.argv[1].replace(/\\/g,"/")),Rt=t.argv.slice(2),n.exports=u,t.on("uncaughtException",(function(t){if(!(t instanceof At))throw t})),t.on("unhandledRejection",j),Ct=function(e){t.exit(e)},u.inspect=function(){return"[Emscripten Module object]"};else if(Bt)"undefined"!=typeof read&&(Lt=function(t){return read(t)}),Wt=function(t){var e;return"function"==typeof readbuffer?new Uint8Array(readbuffer(t)):(e=read(t,"binary"),p("object"==typeof e),e)},"undefined"!=typeof scriptArgs?Rt=scriptArgs:void 0!==arguments&&(Rt=arguments),"function"==typeof quit&&(Ct=function(t){quit(t)}),"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print);else{if(!Pt&&!xt)throw new Error("environment detection error");xt?Ut=self.location.href:document.currentScript&&(Ut=document.currentScript.src),Ut=0!==Ut.indexOf("blob:")?Ut.substr(0,Ut.lastIndexOf("/")+1):"",Lt=function(t){var e=new XMLHttpRequest;return e.open("GET",t,!1),e.send(null),e.responseText},xt&&(Wt=function(t){var e=new XMLHttpRequest;return e.open("GET",t,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)}),function(t,e,i){var r=new XMLHttpRequest;r.open("GET",t,!0),r.responseType="arraybuffer",r.onload=function(){200==r.status||0==r.status&&r.response?e(r.response):i()},r.onerror=i,r.send(null)},function(t){document.title=t}}var jt=u.print||void 0,Vt=u.printErr||void 0;for(e in Tt)Tt.hasOwnProperty(e)&&(u[e]=Tt[e]);Tt=null,u.arguments&&(Rt=u.arguments),Object.getOwnPropertyDescriptor(u,"arguments")||Object.defineProperty(u,"arguments",{configurable:!0,get:function(){j("Module.arguments has been replaced with plain arguments_")}}),u.thisProgram&&(It=u.thisProgram),Object.getOwnPropertyDescriptor(u,"thisProgram")||Object.defineProperty(u,"thisProgram",{configurable:!0,get:function(){j("Module.thisProgram has been replaced with plain thisProgram")}}),u.quit&&(Ct=u.quit),Object.getOwnPropertyDescriptor(u,"quit")||Object.defineProperty(u,"quit",{configurable:!0,get:function(){j("Module.quit has been replaced with plain quit_")}}),p(void 0===u.memoryInitializerPrefixURL,"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),p(void 0===u.pthreadMainPrefixURL,"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),p(void 0===u.cdInitializerPrefixURL,"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),p(void 0===u.filePackagePrefixURL,"Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),p(void 0===u.read,"Module.read option was removed (modify read_ in JS)"),p(void 0===u.readAsync,"Module.readAsync option was removed (modify readAsync in JS)"),p(void 0===u.readBinary,"Module.readBinary option was removed (modify readBinary in JS)"),p(void 0===u.setWindowTitle,"Module.setWindowTitle option was removed (modify setWindowTitle in JS)"),Object.getOwnPropertyDescriptor(u,"read")||Object.defineProperty(u,"read",{configurable:!0,get:function(){j("Module.read has been replaced with plain read_")}}),Object.getOwnPropertyDescriptor(u,"readAsync")||Object.defineProperty(u,"readAsync",{configurable:!0,get:function(){j("Module.readAsync has been replaced with plain readAsync")}}),Object.getOwnPropertyDescriptor(u,"readBinary")||Object.defineProperty(u,"readBinary",{configurable:!0,get:function(){j("Module.readBinary has been replaced with plain readBinary")}}),tr=ir=er=function(){j("cannot use the stack before compiled code is ready to run, and has provided stack access")};var Ht,zt,Gt,qt=function(t){t};u.wasmBinary&&(Ht=u.wasmBinary),Object.getOwnPropertyDescriptor(u,"wasmBinary")||Object.defineProperty(u,"wasmBinary",{configurable:!0,get:function(){j("Module.wasmBinary has been replaced with plain wasmBinary")}}),u.noExitRuntime&&(zt=u.noExitRuntime),Object.getOwnPropertyDescriptor(u,"noExitRuntime")||Object.defineProperty(u,"noExitRuntime",{configurable:!0,get:function(){j("Module.noExitRuntime has been replaced with plain noExitRuntime")}}),"object"!=typeof WebAssembly&&j("No WebAssembly support found. Build with -s WASM=0 to target JavaScript instead.");var Xt,Zt,Kt,Qt,Yt,Jt,$t=new WebAssembly.Table({initial:2542,maximum:2552,element:"anyfunc"}),te=!1,ee="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,ie=("undefined"!=typeof TextDecoder&&new TextDecoder("utf-16le"),65536),re=6583696,ne=1340816,oe=6583696,ae=1340656;p(re%16==0,"stack must start aligned"),p(oe%16==0,"heap must start aligned");var se=5242880;u.TOTAL_STACK&&p(se===u.TOTAL_STACK,"the stack size can no longer be determined at runtime");var he=u.TOTAL_MEMORY||67108864;Object.getOwnPropertyDescriptor(u,"TOTAL_MEMORY")||Object.defineProperty(u,"TOTAL_MEMORY",{configurable:!0,get:function(){j("Module.TOTAL_MEMORY has been replaced with plain INITIAL_TOTAL_MEMORY")}}),p(he>=se,"TOTAL_MEMORY should be larger than TOTAL_STACK, was "+he+"! (TOTAL_STACK="+se+")"),p("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&void 0!==Int32Array.prototype.subarray&&void 0!==Int32Array.prototype.set,"JS engine does not provide full typed array support"),(Gt=u.wasmMemory?u.wasmMemory:new WebAssembly.Memory({initial:he/ie}))&&(Xt=Gt.buffer),he=Xt.byteLength,p(he%ie==0),k(Xt),Yt[ae>>2]=oe,function(){var t=new Int16Array(1),e=new Int8Array(t.buffer);if(t[0]=25459,115!==e[0]||99!==e[1])throw"Runtime error: expected the system to be little-endian!"}();var ue=[],le=[],de=[],fe=[],ce=!1,pe=!1;p(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),p(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),p(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),p(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var me=Math.abs,ge=Math.ceil,ve=Math.floor,ye=Math.min,be=0,_e=null,we=null,Ae={};u.preloadedImages={},u.preloadedAudios={};var Me,Ee,Se="data:application/octet-stream;base64,",ke=h+"libVSS.wasm";V(ke)||(ke=a(ke)),le.push({func:function(){Yi()}});var Te={},Re={splitPath:function(t){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(t).slice(1)},normalizeArray:function(t,e){for(var i=0,r=t.length-1;r>=0;r--){var n=t[r];"."===n?t.splice(r,1):".."===n?(t.splice(r,1),i++):i&&(t.splice(r,1),i--)}if(e)for(;i;i--)t.unshift("..");return t},normalize:function(t){var e="/"===t.charAt(0),i="/"===t.substr(-1);return(t=Re.normalizeArray(t.split("/").filter((function(t){return!!t})),!e).join("/"))||e||(t="."),t&&i&&(t+="/"),(e?"/":"")+t},dirname:function(t){var e=Re.splitPath(t),i=e[0],r=e[1];return i||r?(r&&(r=r.substr(0,r.length-1)),i+r):"."},basename:function(t){if("/"===t)return"/";var e=t.lastIndexOf("/");return-1===e?t:t.substr(e+1)},extname:function(t){return Re.splitPath(t)[3]},join:function(){var t=Array.prototype.slice.call(arguments,0);return Re.normalize(t.join("/"))},join2:function(t,e){return Re.normalize(t+"/"+e)}},Ie={resolve:function(){for(var t="",e=!1,i=arguments.length-1;i>=-1&&!e;i--){var r=i>=0?arguments[i]:Oe.cwd();if("string"!=typeof r)throw new TypeError("Arguments to path.resolve must be strings");if(!r)return"";t=r+"/"+t,e="/"===r.charAt(0)}return(e?"/":"")+(t=Re.normalizeArray(t.split("/").filter((function(t){return!!t})),!e).join("/"))||"."},relative:function(t,e){function i(t){for(var e=0;e<t.length&&""===t[e];e++);for(var i=t.length-1;i>=0&&""===t[i];i--);return e>i?[]:t.slice(e,i-e+1)}t=Ie.resolve(t).substr(1),e=Ie.resolve(e).substr(1);for(var r=i(t.split("/")),n=i(e.split("/")),o=Math.min(r.length,n.length),a=o,s=0;s<o;s++)if(r[s]!==n[s]){a=s;break}var h=[];for(s=a;s<r.length;s++)h.push("..");return(h=h.concat(n.slice(a))).join("/")}},Ce={ttys:[],init:function(){},shutdown:function(){},register:function(t,e){Ce.ttys[t]={input:[],output:[],ops:e},Oe.registerDevice(t,Ce.stream_ops)},stream_ops:{open:function(t){var e=Ce.ttys[t.node.rdev];if(!e)throw new Oe.ErrnoError(43);t.tty=e,t.seekable=!1},close:function(t){t.tty.ops.flush(t.tty)},flush:function(t){t.tty.ops.flush(t.tty)},read:function(t,e,i,r,n){if(!t.tty||!t.tty.ops.get_char)throw new Oe.ErrnoError(60);for(var o=0,a=0;a<r;a++){var s;try{s=t.tty.ops.get_char(t.tty)}catch(t){throw new Oe.ErrnoError(29)}if(void 0===s&&0===o)throw new Oe.ErrnoError(6);if(null==s)break;o++,e[i+a]=s}return o&&(t.node.timestamp=Date.now()),o},write:function(t,e,i,r,n){if(!t.tty||!t.tty.ops.put_char)throw new Oe.ErrnoError(60);try{for(var o=0;o<r;o++)t.tty.ops.put_char(t.tty,e[i+o])}catch(t){throw new Oe.ErrnoError(29)}return r&&(t.node.timestamp=Date.now()),o}},default_tty_ops:{get_char:function(e){if(!e.input.length){var i=null;if(Dt){var r=o.alloc?o.alloc(256):new o(256),n=0;try{n=Nt.readSync(t.stdin.fd,r,0,256,null)}catch(t){if(-1==t.toString().indexOf("EOF"))throw t;n=0}i=n>0?r.slice(0,n).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(i=window.prompt("Input: "))&&(i+="\n"):"function"==typeof readline&&null!==(i=readline())&&(i+="\n");if(!i)return null;e.input=wt(i,!0)}return e.input.shift()},put_char:function(t,e){null===e||10===e?(jt(y(t.output,0)),t.output=[]):0!=e&&t.output.push(e)},flush:function(t){t.output&&t.output.length>0&&(jt(y(t.output,0)),t.output=[])}},default_tty1_ops:{put_char:function(t,e){null===e||10===e?(Vt(y(t.output,0)),t.output=[]):0!=e&&t.output.push(e)},flush:function(t){t.output&&t.output.length>0&&(Vt(y(t.output,0)),t.output=[])}}},Pe={ops_table:null,mount:function(t){return Pe.createNode(null,"/",16895,0)},createNode:function(t,e,i,r){if(Oe.isBlkdev(i)||Oe.isFIFO(i))throw new Oe.ErrnoError(63);Pe.ops_table||(Pe.ops_table={dir:{node:{getattr:Pe.node_ops.getattr,setattr:Pe.node_ops.setattr,lookup:Pe.node_ops.lookup,mknod:Pe.node_ops.mknod,rename:Pe.node_ops.rename,unlink:Pe.node_ops.unlink,rmdir:Pe.node_ops.rmdir,readdir:Pe.node_ops.readdir,symlink:Pe.node_ops.symlink},stream:{llseek:Pe.stream_ops.llseek}},file:{node:{getattr:Pe.node_ops.getattr,setattr:Pe.node_ops.setattr},stream:{llseek:Pe.stream_ops.llseek,read:Pe.stream_ops.read,write:Pe.stream_ops.write,allocate:Pe.stream_ops.allocate,mmap:Pe.stream_ops.mmap,msync:Pe.stream_ops.msync}},link:{node:{getattr:Pe.node_ops.getattr,setattr:Pe.node_ops.setattr,readlink:Pe.node_ops.readlink},stream:{}},chrdev:{node:{getattr:Pe.node_ops.getattr,setattr:Pe.node_ops.setattr},stream:Oe.chrdev_stream_ops}});var n=Oe.createNode(t,e,i,r);return Oe.isDir(n.mode)?(n.node_ops=Pe.ops_table.dir.node,n.stream_ops=Pe.ops_table.dir.stream,n.contents={}):Oe.isFile(n.mode)?(n.node_ops=Pe.ops_table.file.node,n.stream_ops=Pe.ops_table.file.stream,n.usedBytes=0,n.contents=null):Oe.isLink(n.mode)?(n.node_ops=Pe.ops_table.link.node,n.stream_ops=Pe.ops_table.link.stream):Oe.isChrdev(n.mode)&&(n.node_ops=Pe.ops_table.chrdev.node,n.stream_ops=Pe.ops_table.chrdev.stream),n.timestamp=Date.now(),t&&(t.contents[e]=n),n},getFileDataAsRegularArray:function(t){if(t.contents&&t.contents.subarray){for(var e=[],i=0;i<t.usedBytes;++i)e.push(t.contents[i]);return e}return t.contents},getFileDataAsTypedArray:function(t){return t.contents?t.contents.subarray?t.contents.subarray(0,t.usedBytes):new Uint8Array(t.contents):new Uint8Array},expandFileStorage:function(t,e){var i=t.contents?t.contents.length:0;if(!(i>=e)){e=Math.max(e,i*(i<1048576?2:1.125)|0),0!=i&&(e=Math.max(e,256));var r=t.contents;t.contents=new Uint8Array(e),t.usedBytes>0&&t.contents.set(r.subarray(0,t.usedBytes),0)}},resizeFileStorage:function(t,e){if(t.usedBytes!=e){if(0==e)return t.contents=null,void(t.usedBytes=0);if(!t.contents||t.contents.subarray){var i=t.contents;return t.contents=new Uint8Array(new ArrayBuffer(e)),i&&t.contents.set(i.subarray(0,Math.min(e,t.usedBytes))),void(t.usedBytes=e)}if(t.contents||(t.contents=[]),t.contents.length>e)t.contents.length=e;else for(;t.contents.length<e;)t.contents.push(0);t.usedBytes=e}},node_ops:{getattr:function(t){var e={};return e.dev=Oe.isChrdev(t.mode)?t.id:1,e.ino=t.id,e.mode=t.mode,e.nlink=1,e.uid=0,e.gid=0,e.rdev=t.rdev,Oe.isDir(t.mode)?e.size=4096:Oe.isFile(t.mode)?e.size=t.usedBytes:Oe.isLink(t.mode)?e.size=t.link.length:e.size=0,e.atime=new Date(t.timestamp),e.mtime=new Date(t.timestamp),e.ctime=new Date(t.timestamp),e.blksize=4096,e.blocks=Math.ceil(e.size/e.blksize),e},setattr:function(t,e){void 0!==e.mode&&(t.mode=e.mode),void 0!==e.timestamp&&(t.timestamp=e.timestamp),void 0!==e.size&&Pe.resizeFileStorage(t,e.size)},lookup:function(t,e){throw Oe.genericErrors[44]},mknod:function(t,e,i,r){return Pe.createNode(t,e,i,r)},rename:function(t,e,i){if(Oe.isDir(t.mode)){var r;try{r=Oe.lookupNode(e,i)}catch(t){}if(r)for(var n in r.contents)throw new Oe.ErrnoError(55)}delete t.parent.contents[t.name],t.name=i,e.contents[i]=t,t.parent=e},unlink:function(t,e){delete t.contents[e]},rmdir:function(t,e){var i=Oe.lookupNode(t,e);for(var r in i.contents)throw new Oe.ErrnoError(55);delete t.contents[e]},readdir:function(t){var e=[".",".."];for(var i in t.contents)t.contents.hasOwnProperty(i)&&e.push(i);return e},symlink:function(t,e,i){var r=Pe.createNode(t,e,41471,0);return r.link=i,r},readlink:function(t){if(!Oe.isLink(t.mode))throw new Oe.ErrnoError(28);return t.link}},stream_ops:{read:function(t,e,i,r,n){var o=t.node.contents;if(n>=t.node.usedBytes)return 0;var a=Math.min(t.node.usedBytes-n,r);if(p(a>=0),a>8&&o.subarray)e.set(o.subarray(n,n+a),i);else for(var s=0;s<a;s++)e[i+s]=o[n+s];return a},write:function(t,e,i,r,n,o){if(o&&l("file packager has copied file data into memory, but in memory growth we are forced to copy it again (see --no-heap-copy)"),o=!1,!r)return 0;var a=t.node;if(a.timestamp=Date.now(),e.subarray&&(!a.contents||a.contents.subarray)){if(o)return p(0===n,"canOwn must imply no weird position inside the file"),a.contents=e.subarray(i,i+r),a.usedBytes=r,r;if(0===a.usedBytes&&0===n)return a.contents=new Uint8Array(e.subarray(i,i+r)),a.usedBytes=r,r;if(n+r<=a.usedBytes)return a.contents.set(e.subarray(i,i+r),n),r}if(Pe.expandFileStorage(a,n+r),a.contents.subarray&&e.subarray)a.contents.set(e.subarray(i,i+r),n);else for(var s=0;s<r;s++)a.contents[n+s]=e[i+s];return a.usedBytes=Math.max(a.usedBytes,n+r),r},llseek:function(t,e,i){var r=e;if(1===i?r+=t.position:2===i&&Oe.isFile(t.node.mode)&&(r+=t.node.usedBytes),r<0)throw new Oe.ErrnoError(28);return r},allocate:function(t,e,i){Pe.expandFileStorage(t.node,e+i),t.node.usedBytes=Math.max(t.node.usedBytes,e+i)},mmap:function(t,e,i,r,n,o,a){if(!Oe.isFile(t.node.mode))throw new Oe.ErrnoError(43);var s,h,u=t.node.contents;if(2&a||u.buffer!==e&&u.buffer!==e.buffer){(n>0||n+r<t.node.usedBytes)&&(u=u.subarray?u.subarray(n,n+r):Array.prototype.slice.call(u,n,n+r)),h=!0;var l=e.buffer==Zt.buffer;if(!(s=Ji(r)))throw new Oe.ErrnoError(48);(l?Zt:e).set(u,s)}else h=!1,s=u.byteOffset;return{ptr:s,allocated:h}},msync:function(t,e,i,r,n){if(!Oe.isFile(t.node.mode))throw new Oe.ErrnoError(43);if(2&n)return 0;Pe.stream_ops.write(t,e,0,r,i,!1);return 0}}},xe={0:"Success",1:"Arg list too long",2:"Permission denied",3:"Address already in use",4:"Address not available",5:"Address family not supported by protocol family",6:"No more processes",7:"Socket already connected",8:"Bad file number",9:"Trying to read unreadable message",10:"Mount device busy",11:"Operation canceled",12:"No children",13:"Connection aborted",14:"Connection refused",15:"Connection reset by peer",16:"File locking deadlock error",17:"Destination address required",18:"Math arg out of domain of func",19:"Quota exceeded",20:"File exists",21:"Bad address",22:"File too large",23:"Host is unreachable",24:"Identifier removed",25:"Illegal byte sequence",26:"Connection already in progress",27:"Interrupted system call",28:"Invalid argument",29:"I/O error",30:"Socket is already connected",31:"Is a directory",32:"Too many symbolic links",33:"Too many open files",34:"Too many links",35:"Message too long",36:"Multihop attempted",37:"File or path name too long",38:"Network interface is not configured",39:"Connection reset by network",40:"Network is unreachable",41:"Too many open files in system",42:"No buffer space available",43:"No such device",44:"No such file or directory",45:"Exec format error",46:"No record locks available",47:"The link has been severed",48:"Not enough core",49:"No message of desired type",50:"Protocol not available",51:"No space left on device",52:"Function not implemented",53:"Socket is not connected",54:"Not a directory",55:"Directory not empty",56:"State not recoverable",57:"Socket operation on non-socket",59:"Not a typewriter",60:"No such device or address",61:"Value too large for defined data type",62:"Previous owner died",63:"Not super-user",64:"Broken pipe",65:"Protocol error",66:"Unknown protocol",67:"Protocol wrong type for socket",68:"Math result not representable",69:"Read only file system",70:"Illegal seek",71:"No such process",72:"Stale file handle",73:"Connection timed out",74:"Text file busy",75:"Cross-device link",100:"Device not a stream",101:"Bad font file fmt",102:"Invalid slot",103:"Invalid request code",104:"No anode",105:"Block device required",106:"Channel number out of range",107:"Level 3 halted",108:"Level 3 reset",109:"Link number out of range",110:"Protocol driver not attached",111:"No CSI structure available",112:"Level 2 halted",113:"Invalid exchange",114:"Invalid request descriptor",115:"Exchange full",116:"No data (for no delay io)",117:"Timer expired",118:"Out of streams resources",119:"Machine is not on the network",120:"Package not installed",121:"The object is remote",122:"Advertise error",123:"Srmount error",124:"Communication error on send",125:"Cross mount point (not really error)",126:"Given log. name not unique",127:"f.d. invalid for this operation",128:"Remote address changed",129:"Can access a needed shared lib",130:"Accessing a corrupted shared lib",131:".lib section in a.out corrupted",132:"Attempting to link in too many libs",133:"Attempting to exec a shared library",135:"Streams pipe error",136:"Too many users",137:"Socket type not supported",138:"Not supported",139:"Protocol family not supported",140:"Can't send after socket shutdown",141:"Too many references",142:"Host is down",148:"No medium (in tape drive)",156:"Level 2 not synchronized"},De={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},Oe={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:function(t){if(!(t instanceof Oe.ErrnoError))throw t+" : "+K();return $(t.errno)},lookupPath:function(t,e){if(e=e||{},!(t=Ie.resolve(Oe.cwd(),t)))return{path:"",node:null};var i={follow_mount:!0,recurse_count:0};for(var r in i)void 0===e[r]&&(e[r]=i[r]);if(e.recurse_count>8)throw new Oe.ErrnoError(32);for(var n=Re.normalizeArray(t.split("/").filter((function(t){return!!t})),!1),o=Oe.root,a="/",s=0;s<n.length;s++){var h=s===n.length-1;if(h&&e.parent)break;if(o=Oe.lookupNode(o,n[s]),a=Re.join2(a,n[s]),Oe.isMountpoint(o)&&(!h||h&&e.follow_mount)&&(o=o.mounted.root),!h||e.follow)for(var u=0;Oe.isLink(o.mode);){var l=Oe.readlink(a);if(a=Ie.resolve(Re.dirname(a),l),o=Oe.lookupPath(a,{recurse_count:e.recurse_count}).node,u++>40)throw new Oe.ErrnoError(32)}}return{path:a,node:o}},getPath:function(t){for(var e;;){if(Oe.isRoot(t)){var i=t.mount.mountpoint;return e?"/"!==i[i.length-1]?i+"/"+e:i+e:i}e=e?t.name+"/"+e:t.name,t=t.parent}},hashName:function(t,e){for(var i=0,r=0;r<e.length;r++)i=(i<<5)-i+e.charCodeAt(r)|0;return(t+i>>>0)%Oe.nameTable.length},hashAddNode:function(t){var e=Oe.hashName(t.parent.id,t.name);t.name_next=Oe.nameTable[e],Oe.nameTable[e]=t},hashRemoveNode:function(t){var e=Oe.hashName(t.parent.id,t.name);if(Oe.nameTable[e]===t)Oe.nameTable[e]=t.name_next;else for(var i=Oe.nameTable[e];i;){if(i.name_next===t){i.name_next=t.name_next;break}i=i.name_next}},lookupNode:function(t,e){var i=Oe.mayLookup(t);if(i)throw new Oe.ErrnoError(i,t);for(var r=Oe.hashName(t.id,e),n=Oe.nameTable[r];n;n=n.name_next){var o=n.name;if(n.parent.id===t.id&&o===e)return n}return Oe.lookup(t,e)},createNode:function(t,e,i,r){if(!Oe.FSNode){Oe.FSNode=function(t,e,i,r){t||(t=this),this.parent=t,this.mount=t.mount,this.mounted=null,this.id=Oe.nextInode++,this.name=e,this.mode=i,this.node_ops={},this.stream_ops={},this.rdev=r},Oe.FSNode.prototype={};var n=365,o=146;Object.defineProperties(Oe.FSNode.prototype,{read:{get:function(){return(this.mode&n)===n},set:function(t){t?this.mode|=n:this.mode&=-366}},write:{get:function(){return(this.mode&o)===o},set:function(t){t?this.mode|=o:this.mode&=-147}},isFolder:{get:function(){return Oe.isDir(this.mode)}},isDevice:{get:function(){return Oe.isChrdev(this.mode)}}})}var a=new Oe.FSNode(t,e,i,r);return Oe.hashAddNode(a),a},destroyNode:function(t){Oe.hashRemoveNode(t)},isRoot:function(t){return t===t.parent},isMountpoint:function(t){return!!t.mounted},isFile:function(t){return 32768==(61440&t)},isDir:function(t){return 16384==(61440&t)},isLink:function(t){return 40960==(61440&t)},isChrdev:function(t){return 8192==(61440&t)},isBlkdev:function(t){return 24576==(61440&t)},isFIFO:function(t){return 4096==(61440&t)},isSocket:function(t){return 49152==(49152&t)},flagModes:{r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(t){var e=Oe.flagModes[t];if(void 0===e)throw new Error("Unknown file open mode: "+t);return e},flagsToPermissionString:function(t){var e=["r","w","rw"][3&t];return 512&t&&(e+="w"),e},nodePermissions:function(t,e){return Oe.ignorePermissions||(-1===e.indexOf("r")||292&t.mode)&&(-1===e.indexOf("w")||146&t.mode)&&(-1===e.indexOf("x")||73&t.mode)?0:2},mayLookup:function(t){var e=Oe.nodePermissions(t,"x");return e||(t.node_ops.lookup?0:2)},mayCreate:function(t,e){try{Oe.lookupNode(t,e);return 20}catch(t){}return Oe.nodePermissions(t,"wx")},mayDelete:function(t,e,i){var r;try{r=Oe.lookupNode(t,e)}catch(t){return t.errno}var n=Oe.nodePermissions(t,"wx");if(n)return n;if(i){if(!Oe.isDir(r.mode))return 54;if(Oe.isRoot(r)||Oe.getPath(r)===Oe.cwd())return 10}else if(Oe.isDir(r.mode))return 31;return 0},mayOpen:function(t,e){return t?Oe.isLink(t.mode)?32:Oe.isDir(t.mode)&&("r"!==Oe.flagsToPermissionString(e)||512&e)?31:Oe.nodePermissions(t,Oe.flagsToPermissionString(e)):44},MAX_OPEN_FDS:4096,nextfd:function(t,e){t=t||0,e=e||Oe.MAX_OPEN_FDS;for(var i=t;i<=e;i++)if(!Oe.streams[i])return i;throw new Oe.ErrnoError(33)},getStream:function(t){return Oe.streams[t]},createStream:function(t,e,i){Oe.FSStream||(Oe.FSStream=function(){},Oe.FSStream.prototype={},Object.defineProperties(Oe.FSStream.prototype,{object:{get:function(){return this.node},set:function(t){this.node=t}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}}));var r=new Oe.FSStream;for(var n in t)r[n]=t[n];t=r;var o=Oe.nextfd(e,i);return t.fd=o,Oe.streams[o]=t,t},closeStream:function(t){Oe.streams[t]=null},chrdev_stream_ops:{open:function(t){var e=Oe.getDevice(t.node.rdev);t.stream_ops=e.stream_ops,t.stream_ops.open&&t.stream_ops.open(t)},llseek:function(){throw new Oe.ErrnoError(70)}},major:function(t){return t>>8},minor:function(t){return 255&t},makedev:function(t,e){return t<<8|e},registerDevice:function(t,e){Oe.devices[t]={stream_ops:e}},getDevice:function(t){return Oe.devices[t]},getMounts:function(t){for(var e=[],i=[t];i.length;){var r=i.pop();e.push(r),i.push.apply(i,r.mounts)}return e},syncfs:function(t,e){"function"==typeof t&&(e=t,t=!1),Oe.syncFSRequests++,Oe.syncFSRequests;var i=Oe.getMounts(Oe.root.mount),r=0;function n(t){return p(Oe.syncFSRequests>0),Oe.syncFSRequests--,e(t)}function o(t){if(t)return o.errored?void 0:(o.errored=!0,n(t));++r>=i.length&&n(null)}i.forEach((function(e){if(!e.type.syncfs)return o(null);e.type.syncfs(e,t,o)}))},mount:function(t,e,i){if("string"==typeof t)throw t;var r,n="/"===i,o=!i;if(n&&Oe.root)throw new Oe.ErrnoError(10);if(!n&&!o){var a=Oe.lookupPath(i,{follow_mount:!1});if(i=a.path,r=a.node,Oe.isMountpoint(r))throw new Oe.ErrnoError(10);if(!Oe.isDir(r.mode))throw new Oe.ErrnoError(54)}var s={type:t,opts:e,mountpoint:i,mounts:[]},h=t.mount(s);return h.mount=s,s.root=h,n?Oe.root=h:r&&(r.mounted=s,r.mount&&r.mount.mounts.push(s)),h},unmount:function(t){var e=Oe.lookupPath(t,{follow_mount:!1});if(!Oe.isMountpoint(e.node))throw new Oe.ErrnoError(28);var i=e.node,r=i.mounted,n=Oe.getMounts(r);Object.keys(Oe.nameTable).forEach((function(t){for(var e=Oe.nameTable[t];e;){var i=e.name_next;-1!==n.indexOf(e.mount)&&Oe.destroyNode(e),e=i}})),i.mounted=null;var o=i.mount.mounts.indexOf(r);p(-1!==o),i.mount.mounts.splice(o,1)},lookup:function(t,e){return t.node_ops.lookup(t,e)},mknod:function(t,e,i){var r=Oe.lookupPath(t,{parent:!0}).node,n=Re.basename(t);if(!n||"."===n||".."===n)throw new Oe.ErrnoError(28);var o=Oe.mayCreate(r,n);if(o)throw new Oe.ErrnoError(o);if(!r.node_ops.mknod)throw new Oe.ErrnoError(63);return r.node_ops.mknod(r,n,e,i)},create:function(t,e){return e=void 0!==e?e:438,e&=4095,e|=32768,Oe.mknod(t,e,0)},mkdir:function(t,e){return e=void 0!==e?e:511,e&=1023,e|=16384,Oe.mknod(t,e,0)},mkdirTree:function(t,e){for(var i=t.split("/"),r="",n=0;n<i.length;++n)if(i[n]){r+="/"+i[n];try{Oe.mkdir(r,e)}catch(t){if(20!=t.errno)throw t}}},mkdev:function(t,e,i){return void 0===i&&(i=e,e=438),e|=8192,Oe.mknod(t,e,i)},symlink:function(t,e){if(!Ie.resolve(t))throw new Oe.ErrnoError(44);var i=Oe.lookupPath(e,{parent:!0}).node;if(!i)throw new Oe.ErrnoError(44);var r=Re.basename(e),n=Oe.mayCreate(i,r);if(n)throw new Oe.ErrnoError(n);if(!i.node_ops.symlink)throw new Oe.ErrnoError(63);return i.node_ops.symlink(i,r,t)},rename:function(t,e){var i,r,n=Re.dirname(t),o=Re.dirname(e),a=Re.basename(t),s=Re.basename(e);try{i=Oe.lookupPath(t,{parent:!0}).node,r=Oe.lookupPath(e,{parent:!0}).node}catch(t){throw new Oe.ErrnoError(10)}if(!i||!r)throw new Oe.ErrnoError(44);if(i.mount!==r.mount)throw new Oe.ErrnoError(75);var h,u=Oe.lookupNode(i,a),l=Ie.relative(t,o);if("."!==l.charAt(0))throw new Oe.ErrnoError(28);if("."!==(l=Ie.relative(e,n)).charAt(0))throw new Oe.ErrnoError(55);try{h=Oe.lookupNode(r,s)}catch(t){}if(u!==h){var d=Oe.isDir(u.mode),f=Oe.mayDelete(i,a,d);if(f)throw new Oe.ErrnoError(f);if(f=h?Oe.mayDelete(r,s,d):Oe.mayCreate(r,s))throw new Oe.ErrnoError(f);if(!i.node_ops.rename)throw new Oe.ErrnoError(63);if(Oe.isMountpoint(u)||h&&Oe.isMountpoint(h))throw new Oe.ErrnoError(10);if(r!==i&&(f=Oe.nodePermissions(i,"w")))throw new Oe.ErrnoError(f);try{Oe.trackingDelegate.willMovePath&&Oe.trackingDelegate.willMovePath(t,e)}catch(t){}Oe.hashRemoveNode(u);try{i.node_ops.rename(u,r,s)}catch(t){throw t}finally{Oe.hashAddNode(u)}try{Oe.trackingDelegate.onMovePath&&Oe.trackingDelegate.onMovePath(t,e)}catch(t){}}},rmdir:function(t){var e=Oe.lookupPath(t,{parent:!0}).node,i=Re.basename(t),r=Oe.lookupNode(e,i),n=Oe.mayDelete(e,i,!0);if(n)throw new Oe.ErrnoError(n);if(!e.node_ops.rmdir)throw new Oe.ErrnoError(63);if(Oe.isMountpoint(r))throw new Oe.ErrnoError(10);try{Oe.trackingDelegate.willDeletePath&&Oe.trackingDelegate.willDeletePath(t)}catch(t){}e.node_ops.rmdir(e,i),Oe.destroyNode(r);try{Oe.trackingDelegate.onDeletePath&&Oe.trackingDelegate.onDeletePath(t)}catch(t){}},readdir:function(t){var e=Oe.lookupPath(t,{follow:!0}).node;if(!e.node_ops.readdir)throw new Oe.ErrnoError(54);return e.node_ops.readdir(e)},unlink:function(t){var e=Oe.lookupPath(t,{parent:!0}).node,i=Re.basename(t),r=Oe.lookupNode(e,i),n=Oe.mayDelete(e,i,!1);if(n)throw new Oe.ErrnoError(n);if(!e.node_ops.unlink)throw new Oe.ErrnoError(63);if(Oe.isMountpoint(r))throw new Oe.ErrnoError(10);try{Oe.trackingDelegate.willDeletePath&&Oe.trackingDelegate.willDeletePath(t)}catch(t){}e.node_ops.unlink(e,i),Oe.destroyNode(r);try{Oe.trackingDelegate.onDeletePath&&Oe.trackingDelegate.onDeletePath(t)}catch(t){}},readlink:function(t){var e=Oe.lookupPath(t).node;if(!e)throw new Oe.ErrnoError(44);if(!e.node_ops.readlink)throw new Oe.ErrnoError(28);return Ie.resolve(Oe.getPath(e.parent),e.node_ops.readlink(e))},stat:function(t,e){var i=Oe.lookupPath(t,{follow:!e}).node;if(!i)throw new Oe.ErrnoError(44);if(!i.node_ops.getattr)throw new Oe.ErrnoError(63);return i.node_ops.getattr(i)},lstat:function(t){return Oe.stat(t,!0)},chmod:function(t,e,i){var r;"string"==typeof t?r=Oe.lookupPath(t,{follow:!i}).node:r=t;if(!r.node_ops.setattr)throw new Oe.ErrnoError(63);r.node_ops.setattr(r,{mode:4095&e|-4096&r.mode,timestamp:Date.now()})},lchmod:function(t,e){Oe.chmod(t,e,!0)},fchmod:function(t,e){var i=Oe.getStream(t);if(!i)throw new Oe.ErrnoError(8);Oe.chmod(i.node,e)},chown:function(t,e,i,r){var n;"string"==typeof t?n=Oe.lookupPath(t,{follow:!r}).node:n=t;if(!n.node_ops.setattr)throw new Oe.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:function(t,e,i){Oe.chown(t,e,i,!0)},fchown:function(t,e,i){var r=Oe.getStream(t);if(!r)throw new Oe.ErrnoError(8);Oe.chown(r.node,e,i)},truncate:function(t,e){if(e<0)throw new Oe.ErrnoError(28);var i;"string"==typeof t?i=Oe.lookupPath(t,{follow:!0}).node:i=t;if(!i.node_ops.setattr)throw new Oe.ErrnoError(63);if(Oe.isDir(i.mode))throw new Oe.ErrnoError(31);if(!Oe.isFile(i.mode))throw new Oe.ErrnoError(28);var r=Oe.nodePermissions(i,"w");if(r)throw new Oe.ErrnoError(r);i.node_ops.setattr(i,{size:e,timestamp:Date.now()})},ftruncate:function(t,e){var i=Oe.getStream(t);if(!i)throw new Oe.ErrnoError(8);if(0==(2097155&i.flags))throw new Oe.ErrnoError(28);Oe.truncate(i.node,e)},utime:function(t,e,i){var r=Oe.lookupPath(t,{follow:!0}).node;r.node_ops.setattr(r,{timestamp:Math.max(e,i)})},open:function(t,e,i,r,n){if(""===t)throw new Oe.ErrnoError(44);var o;if(i=void 0===i?438:i,i=64&(e="string"==typeof e?Oe.modeStringToFlags(e):e)?4095&i|32768:0,"object"==typeof t)o=t;else{t=Re.normalize(t);try{o=Oe.lookupPath(t,{follow:!(131072&e)}).node}catch(t){}}var a=!1;if(64&e)if(o){if(128&e)throw new Oe.ErrnoError(20)}else o=Oe.mknod(t,i,0),a=!0;if(!o)throw new Oe.ErrnoError(44);if(Oe.isChrdev(o.mode)&&(e&=-513),65536&e&&!Oe.isDir(o.mode))throw new Oe.ErrnoError(54);if(!a){var s=Oe.mayOpen(o,e);if(s)throw new Oe.ErrnoError(s)}512&e&&Oe.truncate(o,0),e&=-641;var h=Oe.createStream({node:o,path:Oe.getPath(o),flags:e,seekable:!0,position:0,stream_ops:o.stream_ops,ungotten:[],error:!1},r,n);h.stream_ops.open&&h.stream_ops.open(h),!u.logReadFiles||1&e||(Oe.readFiles||(Oe.readFiles={}),t in Oe.readFiles||(Oe.readFiles[t]=1));try{if(Oe.trackingDelegate.onOpenFile){var l=0;1!=(2097155&e)&&(l|=Oe.tracking.openFlags.READ),0!=(2097155&e)&&(l|=Oe.tracking.openFlags.WRITE),Oe.trackingDelegate.onOpenFile(t,l)}}catch(t){}return h},close:function(t){if(Oe.isClosed(t))throw new Oe.ErrnoError(8);t.getdents&&(t.getdents=null);try{t.stream_ops.close&&t.stream_ops.close(t)}catch(t){throw t}finally{Oe.closeStream(t.fd)}t.fd=null},isClosed:function(t){return null===t.fd},llseek:function(t,e,i){if(Oe.isClosed(t))throw new Oe.ErrnoError(8);if(!t.seekable||!t.stream_ops.llseek)throw new Oe.ErrnoError(70);if(0!=i&&1!=i&&2!=i)throw new Oe.ErrnoError(28);return t.position=t.stream_ops.llseek(t,e,i),t.ungotten=[],t.position},read:function(t,e,i,r,n){if(r<0||n<0)throw new Oe.ErrnoError(28);if(Oe.isClosed(t))throw new Oe.ErrnoError(8);if(1==(2097155&t.flags))throw new Oe.ErrnoError(8);if(Oe.isDir(t.node.mode))throw new Oe.ErrnoError(31);if(!t.stream_ops.read)throw new Oe.ErrnoError(28);var o=void 0!==n;if(o){if(!t.seekable)throw new Oe.ErrnoError(70)}else n=t.position;var a=t.stream_ops.read(t,e,i,r,n);return o||(t.position+=a),a},write:function(t,e,i,r,n,o){if(r<0||n<0)throw new Oe.ErrnoError(28);if(Oe.isClosed(t))throw new Oe.ErrnoError(8);if(0==(2097155&t.flags))throw new Oe.ErrnoError(8);if(Oe.isDir(t.node.mode))throw new Oe.ErrnoError(31);if(!t.stream_ops.write)throw new Oe.ErrnoError(28);1024&t.flags&&Oe.llseek(t,0,2);var a=void 0!==n;if(a){if(!t.seekable)throw new Oe.ErrnoError(70)}else n=t.position;var s=t.stream_ops.write(t,e,i,r,n,o);a||(t.position+=s);try{t.path&&Oe.trackingDelegate.onWriteToFile&&Oe.trackingDelegate.onWriteToFile(t.path)}catch(t){}return s},allocate:function(t,e,i){if(Oe.isClosed(t))throw new Oe.ErrnoError(8);if(e<0||i<=0)throw new Oe.ErrnoError(28);if(0==(2097155&t.flags))throw new Oe.ErrnoError(8);if(!Oe.isFile(t.node.mode)&&!Oe.isDir(t.node.mode))throw new Oe.ErrnoError(43);if(!t.stream_ops.allocate)throw new Oe.ErrnoError(138);t.stream_ops.allocate(t,e,i)},mmap:function(t,e,i,r,n,o,a){if(0!=(2&o)&&0==(2&a)&&2!=(2097155&t.flags))throw new Oe.ErrnoError(2);if(1==(2097155&t.flags))throw new Oe.ErrnoError(2);if(!t.stream_ops.mmap)throw new Oe.ErrnoError(43);return t.stream_ops.mmap(t,e,i,r,n,o,a)},msync:function(t,e,i,r,n){return t&&t.stream_ops.msync?t.stream_ops.msync(t,e,i,r,n):0},munmap:function(t){return 0},ioctl:function(t,e,i){if(!t.stream_ops.ioctl)throw new Oe.ErrnoError(59);return t.stream_ops.ioctl(t,e,i)},readFile:function(t,e){if((e=e||{}).flags=e.flags||"r",e.encoding=e.encoding||"binary","utf8"!==e.encoding&&"binary"!==e.encoding)throw new Error('Invalid encoding type "'+e.encoding+'"');var i,r=Oe.open(t,e.flags),n=Oe.stat(t).size,o=new Uint8Array(n);return Oe.read(r,o,0,n,0),"utf8"===e.encoding?i=y(o,0):"binary"===e.encoding&&(i=o),Oe.close(r),i},writeFile:function(t,e,i){(i=i||{}).flags=i.flags||"w";var r=Oe.open(t,i.flags,i.mode);if("string"==typeof e){var n=new Uint8Array(A(e)+1),o=_(e,n,0,n.length);Oe.write(r,n,0,o,void 0,i.canOwn)}else{if(!ArrayBuffer.isView(e))throw new Error("Unsupported data type");Oe.write(r,e,0,e.byteLength,void 0,i.canOwn)}Oe.close(r)},cwd:function(){return Oe.currentPath},chdir:function(t){var e=Oe.lookupPath(t,{follow:!0});if(null===e.node)throw new Oe.ErrnoError(44);if(!Oe.isDir(e.node.mode))throw new Oe.ErrnoError(54);var i=Oe.nodePermissions(e.node,"x");if(i)throw new Oe.ErrnoError(i);Oe.currentPath=e.path},createDefaultDirectories:function(){Oe.mkdir("/tmp"),Oe.mkdir("/home"),Oe.mkdir("/home/web_user")},createDefaultDevices:function(){var t;if(Oe.mkdir("/dev"),Oe.registerDevice(Oe.makedev(1,3),{read:function(){return 0},write:function(t,e,i,r,n){return r}}),Oe.mkdev("/dev/null",Oe.makedev(1,3)),Ce.register(Oe.makedev(5,0),Ce.default_tty_ops),Ce.register(Oe.makedev(6,0),Ce.default_tty1_ops),Oe.mkdev("/dev/tty",Oe.makedev(5,0)),Oe.mkdev("/dev/tty1",Oe.makedev(6,0)),"object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);t=function(){return crypto.getRandomValues(e),e[0]}}else if(Dt)try{var r=i(148);t=function(){return r.randomBytes(1)[0]}}catch(t){}t||(t=function(){j("no cryptographic support found for random_device. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")}),Oe.createDevice("/dev","random",t),Oe.createDevice("/dev","urandom",t),Oe.mkdir("/dev/shm"),Oe.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){Oe.mkdir("/proc"),Oe.mkdir("/proc/self"),Oe.mkdir("/proc/self/fd"),Oe.mount({mount:function(){var t=Oe.createNode("/proc/self","fd",16895,73);return t.node_ops={lookup:function(t,e){var i=+e,r=Oe.getStream(i);if(!r)throw new Oe.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return r.path}}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams:function(){u.stdin?Oe.createDevice("/dev","stdin",u.stdin):Oe.symlink("/dev/tty","/dev/stdin"),u.stdout?Oe.createDevice("/dev","stdout",null,u.stdout):Oe.symlink("/dev/tty","/dev/stdout"),u.stderr?Oe.createDevice("/dev","stderr",null,u.stderr):Oe.symlink("/dev/tty1","/dev/stderr");var t=Oe.open("/dev/stdin","r"),e=Oe.open("/dev/stdout","w"),i=Oe.open("/dev/stderr","w");p(0===t.fd,"invalid handle for stdin ("+t.fd+")"),p(1===e.fd,"invalid handle for stdout ("+e.fd+")"),p(2===i.fd,"invalid handle for stderr ("+i.fd+")")},ensureErrnoError:function(){Oe.ErrnoError||(Oe.ErrnoError=function(t,e){this.node=e,this.setErrno=function(t){for(var e in this.errno=t,De)if(De[e]===t){this.code=e;break}},this.setErrno(t),this.message=xe[t],this.stack&&(Object.defineProperty(this,"stack",{value:(new Error).stack,writable:!0}),this.stack=X(this.stack))},Oe.ErrnoError.prototype=new Error,Oe.ErrnoError.prototype.constructor=Oe.ErrnoError,[44].forEach((function(t){Oe.genericErrors[t]=new Oe.ErrnoError(t),Oe.genericErrors[t].stack="<generic error, no stack>"})))},staticInit:function(){Oe.ensureErrnoError(),Oe.nameTable=new Array(4096),Oe.mount(Pe,{},"/"),Oe.createDefaultDirectories(),Oe.createDefaultDevices(),Oe.createSpecialDirectories(),Oe.filesystems={MEMFS:Pe}},init:function(t,e,i){p(!Oe.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"),Oe.init.initialized=!0,Oe.ensureErrnoError(),u.stdin=t||u.stdin,u.stdout=e||u.stdout,u.stderr=i||u.stderr,Oe.createStandardStreams()},quit:function(){Oe.init.initialized=!1;var t=u._fflush;t&&t(0);for(var e=0;e<Oe.streams.length;e++){var i=Oe.streams[e];i&&Oe.close(i)}},getMode:function(t,e){var i=0;return t&&(i|=365),e&&(i|=146),i},joinPath:function(t,e){var i=Re.join.apply(null,t);return e&&"/"==i[0]&&(i=i.substr(1)),i},absolutePath:function(t,e){return Ie.resolve(e,t)},standardizePath:function(t){return Re.normalize(t)},findObject:function(t,e){var i=Oe.analyzePath(t,e);return i.exists?i.object:($(i.error),null)},analyzePath:function(t,e){try{t=(r=Oe.lookupPath(t,{follow:!e})).path}catch(t){}var i={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var r=Oe.lookupPath(t,{parent:!0});i.parentExists=!0,i.parentPath=r.path,i.parentObject=r.node,i.name=Re.basename(t),r=Oe.lookupPath(t,{follow:!e}),i.exists=!0,i.path=r.path,i.object=r.node,i.name=r.node.name,i.isRoot="/"===r.path}catch(t){i.error=t.errno}return i},createFolder:function(t,e,i,r){var n=Re.join2("string"==typeof t?t:Oe.getPath(t),e),o=Oe.getMode(i,r);return Oe.mkdir(n,o)},createPath:function(t,e,i,r){t="string"==typeof t?t:Oe.getPath(t);for(var n=e.split("/").reverse();n.length;){var o=n.pop();if(o){var a=Re.join2(t,o);try{Oe.mkdir(a)}catch(t){}t=a}}return a},createFile:function(t,e,i,r,n){var o=Re.join2("string"==typeof t?t:Oe.getPath(t),e),a=Oe.getMode(r,n);return Oe.create(o,a)},createDataFile:function(t,e,i,r,n,o){var a=e?Re.join2("string"==typeof t?t:Oe.getPath(t),e):t,s=Oe.getMode(r,n),h=Oe.create(a,s);if(i){if("string"==typeof i){for(var u=new Array(i.length),l=0,d=i.length;l<d;++l)u[l]=i.charCodeAt(l);i=u}Oe.chmod(h,146|s);var f=Oe.open(h,"w");Oe.write(f,i,0,i.length,0,o),Oe.close(f),Oe.chmod(h,s)}return h},createDevice:function(t,e,i,r){var n=Re.join2("string"==typeof t?t:Oe.getPath(t),e),o=Oe.getMode(!!i,!!r);Oe.createDevice.major||(Oe.createDevice.major=64);var a=Oe.makedev(Oe.createDevice.major++,0);return Oe.registerDevice(a,{open:function(t){t.seekable=!1},close:function(t){r&&r.buffer&&r.buffer.length&&r(10)},read:function(t,e,r,n,o){for(var a=0,s=0;s<n;s++){var h;try{h=i()}catch(t){throw new Oe.ErrnoError(29)}if(void 0===h&&0===a)throw new Oe.ErrnoError(6);if(null==h)break;a++,e[r+s]=h}return a&&(t.node.timestamp=Date.now()),a},write:function(t,e,i,n,o){for(var a=0;a<n;a++)try{r(e[i+a])}catch(t){throw new Oe.ErrnoError(29)}return n&&(t.node.timestamp=Date.now()),a}}),Oe.mkdev(n,o,a)},createLink:function(t,e,i,r,n){var o=Re.join2("string"==typeof t?t:Oe.getPath(t),e);return Oe.symlink(i,o)},forceLoadFile:function(t){if(t.isDevice||t.isFolder||t.link||t.contents)return!0;var e=!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!Lt)throw new Error("Cannot load without read() or XMLHttpRequest.");try{t.contents=wt(Lt(t.url),!0),t.usedBytes=t.contents.length}catch(t){e=!1}return e||$(29),e},createLazyFile:function(t,e,i,r,n){function o(){this.lengthKnown=!1,this.chunks=[]}if(o.prototype.get=function(t){if(!(t>this.length-1||t<0)){var e=t%this.chunkSize,i=t/this.chunkSize|0;return this.getter(i)[e]}},o.prototype.setDataGetter=function(t){this.getter=t},o.prototype.cacheLength=function(){var t=new XMLHttpRequest;if(t.open("HEAD",i,!1),t.send(null),!(t.status>=200&&t.status<300||304===t.status))throw new Error("Couldn't load "+i+". Status: "+t.status);var e,r=Number(t.getResponseHeader("Content-length")),n=(e=t.getResponseHeader("Accept-Ranges"))&&"bytes"===e,o=(e=t.getResponseHeader("Content-Encoding"))&&"gzip"===e,a=1048576;n||(a=r);var s=this;s.setDataGetter((function(t){var e=t*a,n=(t+1)*a-1;if(n=Math.min(n,r-1),void 0===s.chunks[t]&&(s.chunks[t]=function(t,e){if(t>e)throw new Error("invalid range ("+t+", "+e+") or no bytes requested!");if(e>r-1)throw new Error("only "+r+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",i,!1),r!==a&&n.setRequestHeader("Range","bytes="+t+"-"+e),"undefined"!=typeof Uint8Array&&(n.responseType="arraybuffer"),n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+i+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):wt(n.responseText||"",!0)}(e,n)),void 0===s.chunks[t])throw new Error("doXHR failed!");return s.chunks[t]})),!o&&r||(a=r=1,r=this.getter(0).length,a=r),this._length=r,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!xt)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new o;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:a}}else s={isDevice:!1,url:i};var h=Oe.createFile(t,e,s,r,n);s.contents?h.contents=s.contents:s.url&&(h.contents=null,h.url=s.url),Object.defineProperties(h,{usedBytes:{get:function(){return this.contents.length}}});var u={};return Object.keys(h.stream_ops).forEach((function(t){var e=h.stream_ops[t];u[t]=function(){if(!Oe.forceLoadFile(h))throw new Oe.ErrnoError(29);return e.apply(null,arguments)}})),u.read=function(t,e,i,r,n){if(!Oe.forceLoadFile(h))throw new Oe.ErrnoError(29);var o=t.node.contents;if(n>=o.length)return 0;var a=Math.min(o.length-n,r);if(p(a>=0),o.slice)for(var s=0;s<a;s++)e[i+s]=o[n+s];else for(s=0;s<a;s++)e[i+s]=o.get(n+s);return a},h.stream_ops=u,h},createPreloadedFile:function(t,e,i,r,n,o,a,s,h,l){Browser.init();var d=e?Ie.resolve(Re.join2(t,e)):t,f=N("cp "+d);function c(i){function c(i){l&&l(),s||Oe.createDataFile(t,e,i,r,n,h),o&&o(),U(f)}var p=!1;u.preloadPlugins.forEach((function(t){p||t.canHandle(d)&&(t.handle(i,d,c,(function(){a&&a(),U(f)})),p=!0)})),p||c(i)}F(f),"string"==typeof i?Browser.asyncLoad(i,(function(t){c(t)}),a):c(i)},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(t,e,i){e=e||function(){},i=i||function(){};var r=Oe.indexedDB();try{var n=r.open(Oe.DB_NAME(),Oe.DB_VERSION)}catch(t){return i(t)}n.onupgradeneeded=function(){n.result.createObjectStore(Oe.DB_STORE_NAME)},n.onsuccess=function(){var r=n.result.transaction([Oe.DB_STORE_NAME],"readwrite"),o=r.objectStore(Oe.DB_STORE_NAME),a=0,s=0,h=t.length;function u(){0==s?e():i()}t.forEach((function(t){var e=o.put(Oe.analyzePath(t).object.contents,t);e.onsuccess=function(){++a+s==h&&u()},e.onerror=function(){s++,a+s==h&&u()}})),r.onerror=i},n.onerror=i},loadFilesFromDB:function(t,e,i){e=e||function(){},i=i||function(){};var r=Oe.indexedDB();try{var n=r.open(Oe.DB_NAME(),Oe.DB_VERSION)}catch(t){return i(t)}n.onupgradeneeded=i,n.onsuccess=function(){var r=n.result;try{var o=r.transaction([Oe.DB_STORE_NAME],"readonly")}catch(t){return void i(t)}var a=o.objectStore(Oe.DB_STORE_NAME),s=0,h=0,u=t.length;function l(){0==h?e():i()}t.forEach((function(t){var e=a.get(t);e.onsuccess=function(){Oe.analyzePath(t).exists&&Oe.unlink(t),Oe.createDataFile(Re.dirname(t),Re.basename(t),e.result,!0,!0,!0),++s+h==u&&l()},e.onerror=function(){h++,s+h==u&&l()}})),o.onerror=i},n.onerror=i}},Be={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:function(t,e){if("/"!==e[0]){var i;if(-100===t)i=Oe.cwd();else{var r=Oe.getStream(t);if(!r)throw new Oe.ErrnoError(8);i=r.path}e=Re.join2(i,e)}return e},doStat:function(t,e,i){try{var r=t(e)}catch(t){if(t&&t.node&&Re.normalize(e)!==Re.normalize(Oe.getPath(t.node)))return-54;throw t}return Yt[i>>2]=r.dev,Yt[i+4>>2]=0,Yt[i+8>>2]=r.ino,Yt[i+12>>2]=r.mode,Yt[i+16>>2]=r.nlink,Yt[i+20>>2]=r.uid,Yt[i+24>>2]=r.gid,Yt[i+28>>2]=r.rdev,Yt[i+32>>2]=0,Ee=[r.size>>>0,(Me=r.size,+me(Me)>=1?Me>0?(0|ye(+ve(Me/4294967296),4294967295))>>>0:~~+ge((Me-+(~~Me>>>0))/4294967296)>>>0:0)],Yt[i+40>>2]=Ee[0],Yt[i+44>>2]=Ee[1],Yt[i+48>>2]=4096,Yt[i+52>>2]=r.blocks,Yt[i+56>>2]=r.atime.getTime()/1e3|0,Yt[i+60>>2]=0,Yt[i+64>>2]=r.mtime.getTime()/1e3|0,Yt[i+68>>2]=0,Yt[i+72>>2]=r.ctime.getTime()/1e3|0,Yt[i+76>>2]=0,Ee=[r.ino>>>0,(Me=r.ino,+me(Me)>=1?Me>0?(0|ye(+ve(Me/4294967296),4294967295))>>>0:~~+ge((Me-+(~~Me>>>0))/4294967296)>>>0:0)],Yt[i+80>>2]=Ee[0],Yt[i+84>>2]=Ee[1],0},doMsync:function(t,e,i,r){var n=new Uint8Array(Kt.subarray(t,t+i));Oe.msync(e,n,0,i,r)},doMkdir:function(t,e){return"/"===(t=Re.normalize(t))[t.length-1]&&(t=t.substr(0,t.length-1)),Oe.mkdir(t,e,0),0},doMknod:function(t,e,i){switch(61440&e){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return Oe.mknod(t,e,i),0},doReadlink:function(t,e,i){if(i<=0)return-28;var r=Oe.readlink(t),n=Math.min(i,A(r)),o=Zt[e+n];return w(r,e,i+1),Zt[e+n]=o,n},doAccess:function(t,e){if(-8&e)return-28;var i;if(!(i=Oe.lookupPath(t,{follow:!0}).node))return-44;var r="";return 4&e&&(r+="r"),2&e&&(r+="w"),1&e&&(r+="x"),r&&Oe.nodePermissions(i,r)?-2:0},doDup:function(t,e,i){var r=Oe.getStream(i);return r&&Oe.close(r),Oe.open(t,e,0,i,i).fd},doReadv:function(t,e,i,r){for(var n=0,o=0;o<i;o++){var a=Yt[e+8*o>>2],s=Yt[e+(8*o+4)>>2],h=Oe.read(t,Zt,a,s,r);if(h<0)return-1;if(n+=h,h<s)break}return n},doWritev:function(t,e,i,r){for(var n=0,o=0;o<i;o++){var a=Yt[e+8*o>>2],s=Yt[e+(8*o+4)>>2],h=Oe.write(t,Zt,a,s,r);if(h<0)return-1;n+=h}return n},varargs:0,get:function(t){return Be.varargs+=4,Yt[Be.varargs-4>>2]},getStr:function(){return b(Be.get())},getStreamFromFD:function(t){void 0===t&&(t=Be.get());var e=Oe.getStream(t);if(!e)throw new Oe.ErrnoError(8);return e},get64:function(){var t=Be.get(),e=Be.get();return p(t>=0?0===e:-1===e),t},getZero:function(){p(0===Be.get())}},Le={};w("GMT",1340720,4);Oe.staticInit();var We={__cxa_allocate_exception:Q,__cxa_throw:Y,__lock:J,__syscall221:tt,__syscall3:et,__syscall5:it,__unlock:rt,abort:nt,clock:ot,emscripten_memcpy_big:st,emscripten_resize_heap:ut,environ_get:dt,environ_sizes_get:ft,fd_close:ct,fd_fdstat_get:pt,fd_seek:mt,fd_write:gt,gettimeofday:vt,memory:Gt,round:yt,setTempRet0:bt,table:$t,time:_t},Ne=G(),Fe=Ne.__wasm_call_ctors;Ne.__wasm_call_ctors=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Fe.apply(null,arguments)};var Ue=Ne.WasmDecoder_Check;Ne.WasmDecoder_Check=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ue.apply(null,arguments)};var je=Ne.WasmDecoder_Init;Ne.WasmDecoder_Init=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),je.apply(null,arguments)};var Ve=Ne.WasmDecoder_Deinit;Ne.WasmDecoder_Deinit=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ve.apply(null,arguments)};var He=Ne.WasmDecoder_OpenChannel;Ne.WasmDecoder_OpenChannel=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),He.apply(null,arguments)};var ze=Ne.WasmDecoder_InputFlvStream;Ne.WasmDecoder_InputFlvStream=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ze.apply(null,arguments)};var Ge=Ne.WasmDecoder_GetFlvDecodeData;Ne.WasmDecoder_GetFlvDecodeData=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ge.apply(null,arguments)};var qe=Ne.WasmDecoder_InputFlvStreamAndDecode;Ne.WasmDecoder_InputFlvStreamAndDecode=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),qe.apply(null,arguments)};var Xe=Ne.WasmDecoder_OpenVideoDecoder;Ne.WasmDecoder_OpenVideoDecoder=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Xe.apply(null,arguments)};var Ze=Ne.WasmDecoder_OpenAudioDecoder;Ne.WasmDecoder_OpenAudioDecoder=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ze.apply(null,arguments)};var Ke=Ne.WasmDecoder_DecodeVideoFrame;Ne.WasmDecoder_DecodeVideoFrame=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ke.apply(null,arguments)};var Qe=Ne.WasmDecoder_DecodeAudioFrame;Ne.WasmDecoder_DecodeAudioFrame=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Qe.apply(null,arguments)};var Ye=Ne.WasmDecoder_CloseChannel;Ne.WasmDecoder_CloseChannel=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ye.apply(null,arguments)};var Je=Ne.WasmDecoder_ConvertFrame2Image;Ne.WasmDecoder_ConvertFrame2Image=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Je.apply(null,arguments)};var $e=Ne.WasmDecoder_ReleaseImageData;Ne.WasmDecoder_ReleaseImageData=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),$e.apply(null,arguments)};var ti=Ne.main;Ne.main=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ti.apply(null,arguments)};var ei=Ne.free;Ne.free=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ei.apply(null,arguments)};var ii=Ne.malloc;Ne.malloc=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ii.apply(null,arguments)};var ri=Ne.__errno_location;Ne.__errno_location=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ri.apply(null,arguments)};var ni=Ne.fflush;Ne.fflush=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ni.apply(null,arguments)};var oi=Ne._get_tzname;Ne._get_tzname=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),oi.apply(null,arguments)};var ai=Ne._get_daylight;Ne._get_daylight=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ai.apply(null,arguments)};var si=Ne._get_timezone;Ne._get_timezone=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),si.apply(null,arguments)};var hi=Ne.setThrew;Ne.setThrew=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),hi.apply(null,arguments)};var ui=Ne._ZSt18uncaught_exceptionv;Ne._ZSt18uncaught_exceptionv=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ui.apply(null,arguments)};var li=Ne.stackSave;Ne.stackSave=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),li.apply(null,arguments)};var di=Ne.stackAlloc;Ne.stackAlloc=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),di.apply(null,arguments)};var fi=Ne.stackRestore;Ne.stackRestore=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),fi.apply(null,arguments)};var ci=Ne.__growWasmMemory;Ne.__growWasmMemory=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ci.apply(null,arguments)};var pi=Ne.dynCall_ii;Ne.dynCall_ii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),pi.apply(null,arguments)};var mi=Ne.dynCall_viiiii;Ne.dynCall_viiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),mi.apply(null,arguments)};var gi=Ne.dynCall_viiiiiifi;Ne.dynCall_viiiiiifi=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),gi.apply(null,arguments)};var vi=Ne.dynCall_viiii;Ne.dynCall_viiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),vi.apply(null,arguments)};var yi=Ne.dynCall_viii;Ne.dynCall_viii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),yi.apply(null,arguments)};var bi=Ne.dynCall_iiiiiii;Ne.dynCall_iiiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),bi.apply(null,arguments)};var _i=Ne.dynCall_iiiiii;Ne.dynCall_iiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),_i.apply(null,arguments)};var wi=Ne.dynCall_vii;Ne.dynCall_vii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),wi.apply(null,arguments)};var Ai=Ne.dynCall_iii;Ne.dynCall_iii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ai.apply(null,arguments)};var Mi=Ne.dynCall_iiii;Ne.dynCall_iiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Mi.apply(null,arguments)};var Ei=Ne.dynCall_viiiiii;Ne.dynCall_viiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ei.apply(null,arguments)};var Si=Ne.dynCall_viiiiiiiii;Ne.dynCall_viiiiiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Si.apply(null,arguments)};var ki=Ne.dynCall_viiiiiiii;Ne.dynCall_viiiiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ki.apply(null,arguments)};var Ti=Ne.dynCall_iiiii;Ne.dynCall_iiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ti.apply(null,arguments)};var Ri=Ne.dynCall_viiiiiiiiiiiiii;Ne.dynCall_viiiiiiiiiiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ri.apply(null,arguments)};var Ii=Ne.dynCall_viiiiiiiiiii;Ne.dynCall_viiiiiiiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ii.apply(null,arguments)};var Ci=Ne.dynCall_viiiiiii;Ne.dynCall_viiiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ci.apply(null,arguments)};var Pi=Ne.dynCall_viiiiiiiiiiii;Ne.dynCall_viiiiiiiiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Pi.apply(null,arguments)};var xi=Ne.dynCall_vi;Ne.dynCall_vi=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),xi.apply(null,arguments)};var Di=Ne.dynCall_iiiiiiiii;Ne.dynCall_iiiiiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Di.apply(null,arguments)};var Oi=Ne.dynCall_viiiifii;Ne.dynCall_viiiifii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Oi.apply(null,arguments)};var Bi=Ne.dynCall_fii;Ne.dynCall_fii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Bi.apply(null,arguments)};var Li=Ne.dynCall_viiiiiiiiii;Ne.dynCall_viiiiiiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Li.apply(null,arguments)};var Wi=Ne.dynCall_dd;Ne.dynCall_dd=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Wi.apply(null,arguments)};var Ni=Ne.dynCall_viifi;Ne.dynCall_viifi=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ni.apply(null,arguments)};var Fi=Ne.dynCall_fiii;Ne.dynCall_fiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Fi.apply(null,arguments)};var Ui=Ne.dynCall_viidi;Ne.dynCall_viidi=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ui.apply(null,arguments)};var ji=Ne.dynCall_iiiiiiii;Ne.dynCall_iiiiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ji.apply(null,arguments)};var Vi=Ne.dynCall_did;Ne.dynCall_did=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Vi.apply(null,arguments)};var Hi=Ne.dynCall_v;Ne.dynCall_v=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Hi.apply(null,arguments)};var zi=Ne.dynCall_viiijj;Ne.dynCall_viiijj=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),zi.apply(null,arguments)};var Gi=Ne.dynCall_iiiiiiidiiddii;Ne.dynCall_iiiiiiidiiddii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Gi.apply(null,arguments)};var qi=Ne.dynCall_jij;Ne.dynCall_jij=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),qi.apply(null,arguments)};var Xi=Ne.dynCall_jii;Ne.dynCall_jii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Xi.apply(null,arguments)};var Zi=Ne.dynCall_iidiiii;Ne.dynCall_iidiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Zi.apply(null,arguments)};var Ki=Ne.dynCall_jiji;Ne.dynCall_jiji=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ki.apply(null,arguments)},u.asm=Ne;var Qi,Yi=u.___wasm_call_ctors=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.__wasm_call_ctors.apply(null,arguments)},Ji=(u._WasmDecoder_Check=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.WasmDecoder_Check.apply(null,arguments)},u._WasmDecoder_Init=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.WasmDecoder_Init.apply(null,arguments)},u._WasmDecoder_Deinit=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.WasmDecoder_Deinit.apply(null,arguments)},u._WasmDecoder_OpenChannel=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.WasmDecoder_OpenChannel.apply(null,arguments)},u._WasmDecoder_InputFlvStream=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.WasmDecoder_InputFlvStream.apply(null,arguments)},u._WasmDecoder_GetFlvDecodeData=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.WasmDecoder_GetFlvDecodeData.apply(null,arguments)},u._WasmDecoder_InputFlvStreamAndDecode=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.WasmDecoder_InputFlvStreamAndDecode.apply(null,arguments)},u._WasmDecoder_OpenVideoDecoder=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.WasmDecoder_OpenVideoDecoder.apply(null,arguments)},u._WasmDecoder_OpenAudioDecoder=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.WasmDecoder_OpenAudioDecoder.apply(null,arguments)},u._WasmDecoder_DecodeVideoFrame=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.WasmDecoder_DecodeVideoFrame.apply(null,arguments)},u._WasmDecoder_DecodeAudioFrame=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.WasmDecoder_DecodeAudioFrame.apply(null,arguments)},u._WasmDecoder_CloseChannel=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.WasmDecoder_CloseChannel.apply(null,arguments)},u._WasmDecoder_ConvertFrame2Image=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.WasmDecoder_ConvertFrame2Image.apply(null,arguments)},u._WasmDecoder_ReleaseImageData=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.WasmDecoder_ReleaseImageData.apply(null,arguments)},u._main=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.main.apply(null,arguments)},u._free=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.free.apply(null,arguments)},u._malloc=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.malloc.apply(null,arguments)}),$i=(u.___errno_location=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.__errno_location.apply(null,arguments)},u._fflush=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.fflush.apply(null,arguments)},u.__get_tzname=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm._get_tzname.apply(null,arguments)},u.__get_daylight=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm._get_daylight.apply(null,arguments)},u.__get_timezone=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm._get_timezone.apply(null,arguments)},u._setThrew=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.setThrew.apply(null,arguments)},u.__ZSt18uncaught_exceptionv=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm._ZSt18uncaught_exceptionv.apply(null,arguments)}),tr=u.stackSave=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.stackSave.apply(null,arguments)},er=u.stackAlloc=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.stackAlloc.apply(null,arguments)},ir=u.stackRestore=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.stackRestore.apply(null,arguments)};u.__growWasmMemory=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.__growWasmMemory.apply(null,arguments)},u.dynCall_ii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_ii.apply(null,arguments)},u.dynCall_viiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_viiiii.apply(null,arguments)},u.dynCall_viiiiiifi=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_viiiiiifi.apply(null,arguments)},u.dynCall_viiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_viiii.apply(null,arguments)},u.dynCall_viii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_viii.apply(null,arguments)},u.dynCall_iiiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_iiiiiii.apply(null,arguments)},u.dynCall_iiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_iiiiii.apply(null,arguments)},u.dynCall_vii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_vii.apply(null,arguments)},u.dynCall_iii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_iii.apply(null,arguments)},u.dynCall_iiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_iiii.apply(null,arguments)},u.dynCall_viiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_viiiiii.apply(null,arguments)},u.dynCall_viiiiiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_viiiiiiiii.apply(null,arguments)},u.dynCall_viiiiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_viiiiiiii.apply(null,arguments)},u.dynCall_iiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_iiiii.apply(null,arguments)},u.dynCall_viiiiiiiiiiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_viiiiiiiiiiiiii.apply(null,arguments)},u.dynCall_viiiiiiiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_viiiiiiiiiii.apply(null,arguments)},u.dynCall_viiiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_viiiiiii.apply(null,arguments)},u.dynCall_viiiiiiiiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_viiiiiiiiiiii.apply(null,arguments)},u.dynCall_vi=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_vi.apply(null,arguments)},u.dynCall_iiiiiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_iiiiiiiii.apply(null,arguments)},u.dynCall_viiiifii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_viiiifii.apply(null,arguments)},u.dynCall_fii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_fii.apply(null,arguments)},u.dynCall_viiiiiiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_viiiiiiiiii.apply(null,arguments)},u.dynCall_dd=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_dd.apply(null,arguments)},u.dynCall_viifi=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_viifi.apply(null,arguments)},u.dynCall_fiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_fiii.apply(null,arguments)},u.dynCall_viidi=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_viidi.apply(null,arguments)},u.dynCall_iiiiiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_iiiiiiii.apply(null,arguments)},u.dynCall_did=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_did.apply(null,arguments)},u.dynCall_v=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_v.apply(null,arguments)},u.dynCall_viiijj=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_viiijj.apply(null,arguments)},u.dynCall_iiiiiiidiiddii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_iiiiiiidiiddii.apply(null,arguments)},u.dynCall_jij=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_jij.apply(null,arguments)},u.dynCall_jii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_jii.apply(null,arguments)},u.dynCall_iidiiii=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_iidiiii.apply(null,arguments)},u.dynCall_jiji=function(){return p(ce,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),p(!pe,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),u.asm.dynCall_jiji.apply(null,arguments)};u.asm=Ne,Object.getOwnPropertyDescriptor(u,"intArrayFromString")||(u.intArrayFromString=function(){j("'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"intArrayToString")||(u.intArrayToString=function(){j("'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),u.ccall=g,u.cwrap=v,Object.getOwnPropertyDescriptor(u,"setValue")||(u.setValue=function(){j("'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"getValue")||(u.getValue=function(){j("'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"allocate")||(u.allocate=function(){j("'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"getMemory")||(u.getMemory=function(){j("'getMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(u,"AsciiToString")||(u.AsciiToString=function(){j("'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"stringToAscii")||(u.stringToAscii=function(){j("'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"UTF8ArrayToString")||(u.UTF8ArrayToString=function(){j("'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"UTF8ToString")||(u.UTF8ToString=function(){j("'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"stringToUTF8Array")||(u.stringToUTF8Array=function(){j("'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"stringToUTF8")||(u.stringToUTF8=function(){j("'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"lengthBytesUTF8")||(u.lengthBytesUTF8=function(){j("'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"UTF16ToString")||(u.UTF16ToString=function(){j("'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"stringToUTF16")||(u.stringToUTF16=function(){j("'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"lengthBytesUTF16")||(u.lengthBytesUTF16=function(){j("'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"UTF32ToString")||(u.UTF32ToString=function(){j("'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"stringToUTF32")||(u.stringToUTF32=function(){j("'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"lengthBytesUTF32")||(u.lengthBytesUTF32=function(){j("'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"allocateUTF8")||(u.allocateUTF8=function(){j("'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"stackTrace")||(u.stackTrace=function(){j("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"addOnPreRun")||(u.addOnPreRun=function(){j("'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"addOnInit")||(u.addOnInit=function(){j("'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"addOnPreMain")||(u.addOnPreMain=function(){j("'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"addOnExit")||(u.addOnExit=function(){j("'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"addOnPostRun")||(u.addOnPostRun=function(){j("'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"writeStringToMemory")||(u.writeStringToMemory=function(){j("'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"writeArrayToMemory")||(u.writeArrayToMemory=function(){j("'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"writeAsciiToMemory")||(u.writeAsciiToMemory=function(){j("'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"addRunDependency")||(u.addRunDependency=function(){j("'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(u,"removeRunDependency")||(u.removeRunDependency=function(){j("'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(u,"ENV")||(u.ENV=function(){j("'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"FS")||(u.FS=function(){j("'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"FS_createFolder")||(u.FS_createFolder=function(){j("'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(u,"FS_createPath")||(u.FS_createPath=function(){j("'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(u,"FS_createDataFile")||(u.FS_createDataFile=function(){j("'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(u,"FS_createPreloadedFile")||(u.FS_createPreloadedFile=function(){j("'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(u,"FS_createLazyFile")||(u.FS_createLazyFile=function(){j("'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(u,"FS_createLink")||(u.FS_createLink=function(){j("'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(u,"FS_createDevice")||(u.FS_createDevice=function(){j("'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(u,"FS_unlink")||(u.FS_unlink=function(){j("'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(u,"GL")||(u.GL=function(){j("'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"dynamicAlloc")||(u.dynamicAlloc=function(){j("'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"loadDynamicLibrary")||(u.loadDynamicLibrary=function(){j("'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"loadWebAssemblyModule")||(u.loadWebAssemblyModule=function(){j("'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"getLEB")||(u.getLEB=function(){j("'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"getFunctionTables")||(u.getFunctionTables=function(){j("'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"alignFunctionTables")||(u.alignFunctionTables=function(){j("'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"registerFunctions")||(u.registerFunctions=function(){j("'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),u.addFunction=c,Object.getOwnPropertyDescriptor(u,"removeFunction")||(u.removeFunction=function(){j("'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"getFuncWrapper")||(u.getFuncWrapper=function(){j("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"prettyPrint")||(u.prettyPrint=function(){j("'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"makeBigInt")||(u.makeBigInt=function(){j("'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"dynCall")||(u.dynCall=function(){j("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"getCompilerSetting")||(u.getCompilerSetting=function(){j("'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"stackSave")||(u.stackSave=function(){j("'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"stackRestore")||(u.stackRestore=function(){j("'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"stackAlloc")||(u.stackAlloc=function(){j("'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"establishStackSpace")||(u.establishStackSpace=function(){j("'establishStackSpace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"print")||(u.print=function(){j("'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"printErr")||(u.printErr=function(){j("'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"getTempRet0")||(u.getTempRet0=function(){j("'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"setTempRet0")||(u.setTempRet0=function(){j("'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"callMain")||(u.callMain=function(){j("'callMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"abort")||(u.abort=function(){j("'abort' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"Pointer_stringify")||(u.Pointer_stringify=function(){j("'Pointer_stringify' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(u,"warnOnce")||(u.warnOnce=function(){j("'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),u.writeStackCookie=T,u.checkStackCookie=R,u.abortStackOverflow=I,Object.getOwnPropertyDescriptor(u,"ALLOC_NORMAL")||Object.defineProperty(u,"ALLOC_NORMAL",{configurable:!0,get:function(){j("'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(u,"ALLOC_STACK")||Object.defineProperty(u,"ALLOC_STACK",{configurable:!0,get:function(){j("'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(u,"ALLOC_DYNAMIC")||Object.defineProperty(u,"ALLOC_DYNAMIC",{configurable:!0,get:function(){j("'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(u,"ALLOC_NONE")||Object.defineProperty(u,"ALLOC_NONE",{configurable:!0,get:function(){j("'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(u,"calledRun")||Object.defineProperty(u,"calledRun",{configurable:!0,get:function(){j("'calledRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}});if(we=function t(){Qi||Et(),Qi||(we=t)},u.run=Et,u.preInit)for("function"==typeof u.preInit&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();var rr=!0;u.noInitialRun&&(rr=!1),zt=!0,Et()}}e.default=function(t){t.isFlvStream=!0,t.enableAudio=!1,t.pause=!1,t.exitFlag=!1,t.needMoreData=!1,t.wasmDecoderId=-1,t.wasmInitVideoDecoder=!1,t.wasmInitAudioDecoder=!1,t.videoQueue=[],t.audioQueue=[],t.videoFrameNum=0,t.videoRawData=null,t.audioRawData=null,t.videoPacketData=null,t.audioPacketData=null,t.findKeyFrame=!0,t.videoIntervalHandle=-1,t.videoIntervalValue=40,t.audioIntervalHandle=-1,t.audioIntervalValue=80,t.lastPTS=0,t.ptsCount=0,t.maxCacheFrameNum=0,t.calcDelayFlag=!0,t.procVideoFlag=!1,t.procAudioFlag=!1;var e=function(){null==t.videoRawData&&(t.videoRawData=u._malloc(8294400)),null==t.audioRawData&&(t.audioRawData=u._malloc(16384)),null==t.videoPacketData&&(t.videoPacketData=u._malloc(1048576)),null==t.audioPacketData&&(t.audioPacketData=u._malloc(2048)),t.wasmDecoderId<0&&(t.wasmDecoderId=u._WasmDecoder_OpenChannel())},i=function(e,i,r,n,o,s,h,l,d){if(t.procVideoFlag)return-1;t.procVideoFlag=!0,u.HEAPU8.set(l,t.videoPacketData);var f,c=a.tVideoRenderYV12,p=0;if(c==a.tVideoRenderYV12?p=0:c==a.tVideoRenderRGB?p=2:c==a.tVideoRenderRGBA&&(p=26),1==e&&t.videoFrameNum>0&&(t.videoFrameNum-=1),1==e&&!t.wasmInitVideoDecoder&&r)0==u._WasmDecoder_OpenVideoDecoder(t.wasmDecoderId,i,0,0,p)&&(t.wasmInitVideoDecoder=!0);else if(2==e&&!t.wasmInitAudioDecoder){0==u._WasmDecoder_OpenAudioDecoder(t.wasmDecoderId,i,o,h,s)&&(t.wasmInitAudioDecoder=!0)}var m=null;if(1==e&&t.wasmInitVideoDecoder?m=u._WasmDecoder_DecodeVideoFrame(t.wasmDecoderId,t.videoPacketData,d,0,0,t.videoRawData,0):2==e&&t.wasmInitAudioDecoder&&t.enableAudio&&(m=u._WasmDecoder_DecodeAudioFrame(t.wasmDecoderId,t.videoPacketData,d,t.audioRawData,0)),0!=m&&null!=m){var g=u.HEAPU32[m/4],v=(u.HEAPU32[m/4+1],u.HEAPU32[m/4+2]),y=(u.HEAPU32[m/4+3],u.HEAPU32[m/4+4]),b=u.HEAPU32[m/4+5],_=(u.HEAPU32[m/4+6],u.HEAPU32[m/4+7]),w=u.HEAPU32[m/4+8],A=u.HEAPU32[m/4+9],M=u.HEAPU32[m/4+10],E=u.HEAPU32[m/4+11],S=(u.HEAPU32[m/4+12],u.HEAPU32[m/4+13]);if(v<1)return void(t.procVideoFlag=!1);if(1==g){0==p?f=y*b*3/2:2==p?f=y*b*3:(25==p||26==p)&&(f=y*b*4);var k=u.HEAPU8.subarray(t.videoRawData,t.videoRawData+f),T=new Uint8Array(k),R={cmd:a.tFrameData,workerId:a.DECODE_WORKER_ID,mediaType:1,ts:S,width:y,height:b,framesize:d,rawsize:f,fps:_,interval:w,playTimeSec:n,frameNum:t.videoFrameNum,dat:T};if(t.postMessage(R,[R.dat.buffer]),y>=1920&&b>=720)return t.procVideoFlag=!1,1}else if(2==g){k=u.HEAPU8.subarray(t.audioRawData,t.audioRawData+v),T=new Uint8Array(k);var I=0;8==E?I=0:16==E?I=1:32==E&&(I=2);R={cmd:a.tFrameData,workerId:a.DECODE_WORKER_ID,mediaType:2,fmt:I,ch:A,samplerate:M,ts:S,framesize:v,dat:T};t.postMessage(R,[R.dat.buffer])}}return t.procVideoFlag=!1,0},r=function(e,i,r,n,o,s){(u.HEAPU8.set(o,t.audioPacketData),t.wasmInitAudioDecoder)||0==u._WasmDecoder_OpenAudioDecoder(t.wasmDecoderId,e,i,n,r)&&(t.wasmInitAudioDecoder=!0);var h=null;if(t.wasmInitAudioDecoder&&t.enableAudio&&(h=u._WasmDecoder_DecodeAudioFrame(t.wasmDecoderId,t.audioPacketData,s,t.audioRawData,0)),0!=h&&null!=h){u.HEAPU32[h/4],u.HEAPU32[h/4+1];var l=u.HEAPU32[h/4+2],d=(u.HEAPU32[h/4+3],u.HEAPU32[h/4+4],u.HEAPU32[h/4+5],u.HEAPU32[h/4+6],u.HEAPU32[h/4+7],u.HEAPU32[h/4+8],u.HEAPU32[h/4+9]),f=u.HEAPU32[h/4+10],c=u.HEAPU32[h/4+11],p=(u.HEAPU32[h/4+12],u.HEAPU32[h/4+13]);if(l<1)return;var m=u.HEAPU8.subarray(t.audioRawData,t.audioRawData+l),g=new Uint8Array(m),v=0;8==c?v=0:16==c?v=1:32==c&&(v=2);var y={cmd:a.tFrameData,workerId:a.DECODE_WORKER_ID,mediaType:2,fmt:v,ch:d,samplerate:f,ts:p,framesize:l,dat:g};t.postMessage(y,[y.dat.buffer])}},n=function(){if(t.wasmDecoderId<0&&e(),t.wasmDecoderId>0&&t.videoQueue.length>0&&!t.pause){var r=null,n=-1;if(t.isFlvStream){if(t.findKeyFrame)for(;t.videoQueue.length>0;){if((r=t.videoQueue[0]).frameType&&t.videoQueue.length<60){t.findKeyFrame=!1;break}t.videoQueue.shift()}else t.videoQueue.length>60&&(t.findKeyFrame=!0);t.videoQueue.length>0&&(null==r&&(r=t.videoQueue[0]),n=i(r.mediaType,r.codecId,r.frameType,r.playTimeSec,r.samplerate,r.channelNum,r.bitPerSample,r.dat,r.dat.length))}else r=t.videoQueue[0],n=i(r.mediaType,r.codecId,r.frameType,r.playTimeSec,r.samplerate,r.channelNum,r.bitPerSample,r.dat,r.dat.length);n>=0&&t.videoQueue.shift(),t.videoQueue.length>t.maxCacheFrameNum&&t.videoQueue.length}},o=function(){if(!(t.wasmDecoderId<0)&&t.wasmDecoderId>0)for(;t.audioQueue.length>0&&!t.pause;)if(!t.pause){var e=t.audioQueue[0];t.enableAudio&&r(e.codecId,e.samplerate,e.channelNum,e.bitPerSample,e.dat,e.dat.length),t.audioQueue.shift()}};u.onRuntimeInitialized=function(){t.videoIntervalHandle=setInterval(n,t.videoIntervalValue),t.audioIntervalHandle=setInterval(o,t.audioIntervalValue);var e={cmd:a.tDecoderWorkerStartup};t.postMessage(e),s=!0};var d=function(e){if(e>t.lastPTS)if(t.lastPTS>0){if(t.videoQueue.length%5==0){var i=t.ptsCount/5;t.videoQueue.length<=t.maxCacheFrameNum&&function(e){if(s){var i=e;(i<5||i>500)&&(i=40),i!=t.videoIntervalValue&&(t.videoIntervalHandle>=0&&(clearInterval(t.videoIntervalHandle),t.videoIntervalHandle=-1),t.videoIntervalValue=Math.floor(i),t.videoIntervalHandle=setInterval(n,t.videoIntervalValue))}}(i),t.ptsCount=e-t.lastPTS}else t.ptsCount+=e-t.lastPTS;t.lastPTS=e}else t.lastPTS=e,t.ptsCount=40;else t.lastPTS=e,t.ptsCount=40};t.addEventListener("message",(function(i){var r=i.data;switch(r.cmd){case a.tOpenStream:if(h=r.url,t.isFlvStream=r.isFlv,s){var n={cmd:a.tDecoderWorkerStartup};t.postMessage(n)}else l();break;case a.tCloseStream:t.exitFlag=!0,t.wasmDecoderId>0&&(u._WasmDecoder_CloseChannel(t.wasmDecoderId),t.wasmDecoderId=-1),null!=t.videoRawData&&(u._free(t.videoRawData),t.videoRawData=null),null!=t.audioRawData&&(u._free(t.audioRawData),t.audioRawData=null),null!=t.videoPacketData&&(u._free(t.videoPacketData),t.videoPacketData=null),null!=t.audioPacketData&&(u._free(t.audioPacketData),t.audioPacketData=null),t.videoIntervalHandle>=0&&(clearInterval(t.videoIntervalHandle),t.videoIntervalHandle=-1),t.audioIntervalHandle>=0&&(clearInterval(t.audioIntervalHandle),t.audioIntervalHandle=-1),t.videoQueue.clear,t.videoQueue.length=0,t.videoFrameNum=0,t.audioQueue.clear,t.audioQueue.length=0;n={cmd:a.tCloseStream,workerId:a.DECODE_WORKER_ID};t.postMessage(n);break;case a.tOpenAudio:t.enableAudio=!0;break;case a.tCloseAudio:t.enableAudio=!1;break;case a.tPauseStream:t.pause=!0;break;case a.tResumeStream:t.pause=!1;break;case a.tSeekStream:t.videoQueue.clear,t.videoQueue.length=0,t.videoFrameNum=0,t.audioQueue.clear,t.audioQueue.length=0;break;case a.tVidInterval:t.updateIntervalTime(r.interval);break;case a.tFrameData:if(t.exitFlag)break;s?t.isFlvStream?(t.wasmDecoderId<0&&e(),t.wasmDecoderId>0?1==r.mediaType?t.videoIntervalHandle>=0&&(t.videoQueue.push(r),t.maxCacheFrameNum=5):2==r.mediaType&&t.audioIntervalHandle>=0&&!t.findKeyFrame&&t.audioQueue.push(r):t.videoQueue.length<100&&1==r.mediaType&&r.frameType&&t.videoIntervalHandle>=0&&(t.videoQueue.push(r),t.videoQueue.length>=5&&t.videoQueue.shift())):(1==r.mediaType?t.videoIntervalHandle>=0&&(t.videoQueue.push(r),d(r.samplerate),t.videoFrameNum+=1,t.calcDelayFlag&&t.maxCacheFrameNum<t.videoQueue.length?t.maxCacheFrameNum=t.videoQueue.length:t.calcDelayFlag&&(t.calcDelayFlag=!1)):2==r.mediaType&&t.audioIntervalHandle>=0&&t.audioQueue.push(r),t.needMoreData=!1):t.isFlvStream&&t.videoQueue.length<5?1==r.mediaType&&r.frameType&&t.videoIntervalHandle>=0&&(t.videoQueue.push(r),t.videoQueue.length>=5&&t.videoQueue.shift()):!t.isFlvStream&&t.videoQueue.length<1e3&&(1==r.mediaType?t.videoIntervalHandle>=0&&(t.videoQueue.push(r),d(r.samplerate),t.videoFrameNum+=1,t.calcDelayFlag&&t.maxCacheFrameNum<t.videoQueue.length?t.maxCacheFrameNum=t.videoQueue.length:t.calcDelayFlag&&(t.calcDelayFlag=!1)):2==r.mediaType&&t.audioIntervalHandle>=0&&t.audioQueue.push(r))}}))};var d=u,f=l,c=s}.call(this,i(8),"/",i(145)(t),i(9).Buffer)},function(t,e,i){"use strict";(function(e){void 0===e||!e.version||0===e.version.indexOf("v0.")||0===e.version.indexOf("v1.")&&0!==e.version.indexOf("v1.8.")?t.exports={nextTick:function(t,i,r,n){if("function"!=typeof t)throw new TypeError('"callback" argument must be a function');var o,a,s=arguments.length;switch(s){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick((function(){t.call(null,i)}));case 3:return e.nextTick((function(){t.call(null,i,r)}));case 4:return e.nextTick((function(){t.call(null,i,r,n)}));default:for(o=new Array(s-1),a=0;a<o.length;)o[a++]=arguments[a];return e.nextTick((function(){t.apply(null,o)}))}}}:t.exports=e}).call(this,i(8))},function(t,e,i){var r=i(4).Buffer;function n(t){r.isBuffer(t)||(t=r.from(t));for(var e=t.length/4|0,i=new Array(e),n=0;n<e;n++)i[n]=t.readUInt32BE(4*n);return i}function o(t){for(;0<t.length;t++)t[0]=0}function a(t,e,i,r,n){for(var o,a,s,h,u=i[0],l=i[1],d=i[2],f=i[3],c=t[0]^e[0],p=t[1]^e[1],m=t[2]^e[2],g=t[3]^e[3],v=4,y=1;y<n;y++)o=u[c>>>24]^l[p>>>16&255]^d[m>>>8&255]^f[255&g]^e[v++],a=u[p>>>24]^l[m>>>16&255]^d[g>>>8&255]^f[255&c]^e[v++],s=u[m>>>24]^l[g>>>16&255]^d[c>>>8&255]^f[255&p]^e[v++],h=u[g>>>24]^l[c>>>16&255]^d[p>>>8&255]^f[255&m]^e[v++],c=o,p=a,m=s,g=h;return o=(r[c>>>24]<<24|r[p>>>16&255]<<16|r[m>>>8&255]<<8|r[255&g])^e[v++],a=(r[p>>>24]<<24|r[m>>>16&255]<<16|r[g>>>8&255]<<8|r[255&c])^e[v++],s=(r[m>>>24]<<24|r[g>>>16&255]<<16|r[c>>>8&255]<<8|r[255&p])^e[v++],h=(r[g>>>24]<<24|r[c>>>16&255]<<16|r[p>>>8&255]<<8|r[255&m])^e[v++],[o>>>=0,a>>>=0,s>>>=0,h>>>=0]}var s=[0,1,2,4,8,16,32,64,128,27,54],h=function(){for(var t=new Array(256),e=0;e<256;e++)t[e]=e<128?e<<1:e<<1^283;for(var i=[],r=[],n=[[],[],[],[]],o=[[],[],[],[]],a=0,s=0,h=0;h<256;++h){var u=s^s<<1^s<<2^s<<3^s<<4;u=u>>>8^255&u^99,i[a]=u,r[u]=a;var l=t[a],d=t[l],f=t[d],c=257*t[u]^16843008*u;n[0][a]=c<<24|c>>>8,n[1][a]=c<<16|c>>>16,n[2][a]=c<<8|c>>>24,n[3][a]=c,c=16843009*f^65537*d^257*l^16843008*a,o[0][u]=c<<24|c>>>8,o[1][u]=c<<16|c>>>16,o[2][u]=c<<8|c>>>24,o[3][u]=c,0===a?a=s=1:(a=l^t[t[t[f^l]]],s^=t[t[s]])}return{SBOX:i,INV_SBOX:r,SUB_MIX:n,INV_SUB_MIX:o}}();function u(t){this._key=n(t),this._reset()}u.blockSize=16,u.keySize=32,u.prototype.blockSize=u.blockSize,u.prototype.keySize=u.keySize,u.prototype._reset=function(){for(var t=this._key,e=t.length,i=e+6,r=4*(i+1),n=[],o=0;o<e;o++)n[o]=t[o];for(o=e;o<r;o++){var a=n[o-1];o%e==0?(a=a<<8|a>>>24,a=h.SBOX[a>>>24]<<24|h.SBOX[a>>>16&255]<<16|h.SBOX[a>>>8&255]<<8|h.SBOX[255&a],a^=s[o/e|0]<<24):e>6&&o%e==4&&(a=h.SBOX[a>>>24]<<24|h.SBOX[a>>>16&255]<<16|h.SBOX[a>>>8&255]<<8|h.SBOX[255&a]),n[o]=n[o-e]^a}for(var u=[],l=0;l<r;l++){var d=r-l,f=n[d-(l%4?0:4)];u[l]=l<4||d<=4?f:h.INV_SUB_MIX[0][h.SBOX[f>>>24]]^h.INV_SUB_MIX[1][h.SBOX[f>>>16&255]]^h.INV_SUB_MIX[2][h.SBOX[f>>>8&255]]^h.INV_SUB_MIX[3][h.SBOX[255&f]]}this._nRounds=i,this._keySchedule=n,this._invKeySchedule=u},u.prototype.encryptBlockRaw=function(t){return a(t=n(t),this._keySchedule,h.SUB_MIX,h.SBOX,this._nRounds)},u.prototype.encryptBlock=function(t){var e=this.encryptBlockRaw(t),i=r.allocUnsafe(16);return i.writeUInt32BE(e[0],0),i.writeUInt32BE(e[1],4),i.writeUInt32BE(e[2],8),i.writeUInt32BE(e[3],12),i},u.prototype.decryptBlock=function(t){var e=(t=n(t))[1];t[1]=t[3],t[3]=e;var i=a(t,this._invKeySchedule,h.INV_SUB_MIX,h.INV_SBOX,this._nRounds),o=r.allocUnsafe(16);return o.writeUInt32BE(i[0],0),o.writeUInt32BE(i[3],4),o.writeUInt32BE(i[2],8),o.writeUInt32BE(i[1],12),o},u.prototype.scrub=function(){o(this._keySchedule),o(this._invKeySchedule),o(this._key)},t.exports.AES=u},function(t,e,i){var r=i(4).Buffer,n=i(52);t.exports=function(t,e,i,o){if(r.isBuffer(t)||(t=r.from(t,"binary")),e&&(r.isBuffer(e)||(e=r.from(e,"binary")),8!==e.length))throw new RangeError("salt should be Buffer with 8 byte length");for(var a=i/8,s=r.alloc(a),h=r.alloc(o||0),u=r.alloc(0);a>0||o>0;){var l=new n;l.update(u),l.update(t),e&&l.update(e),u=l.digest();var d=0;if(a>0){var f=s.length-a;d=Math.min(a,u.length),u.copy(s,f,0,d),a-=d}if(d<u.length&&o>0){var c=h.length-o,p=Math.min(o,u.length-d);u.copy(h,c,d,d+p),o-=p}}return u.fill(0),{key:s,iv:h}}},function(t,e,i){"use strict";var r=i(16),n=i(14),o=n.getNAF,a=n.getJSF,s=n.assert;function h(t,e){this.type=t,this.p=new r(e.p,16),this.red=e.prime?r.red(e.prime):r.mont(this.p),this.zero=new r(0).toRed(this.red),this.one=new r(1).toRed(this.red),this.two=new r(2).toRed(this.red),this.n=e.n&&new r(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var i=this.n&&this.p.div(this.n);!i||i.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function u(t,e){this.curve=t,this.type=e,this.precomputed=null}t.exports=h,h.prototype.point=function(){throw new Error("Not implemented")},h.prototype.validate=function(){throw new Error("Not implemented")},h.prototype._fixedNafMul=function(t,e){s(t.precomputed);var i=t._getDoubles(),r=o(e,1,this._bitLength),n=(1<<i.step+1)-(i.step%2==0?2:1);n/=3;var a,h,u=[];for(a=0;a<r.length;a+=i.step){h=0;for(var l=a+i.step-1;l>=a;l--)h=(h<<1)+r[l];u.push(h)}for(var d=this.jpoint(null,null,null),f=this.jpoint(null,null,null),c=n;c>0;c--){for(a=0;a<u.length;a++)(h=u[a])===c?f=f.mixedAdd(i.points[a]):h===-c&&(f=f.mixedAdd(i.points[a].neg()));d=d.add(f)}return d.toP()},h.prototype._wnafMul=function(t,e){var i=4,r=t._getNAFPoints(i);i=r.wnd;for(var n=r.points,a=o(e,i,this._bitLength),h=this.jpoint(null,null,null),u=a.length-1;u>=0;u--){for(var l=0;u>=0&&0===a[u];u--)l++;if(u>=0&&l++,h=h.dblp(l),u<0)break;var d=a[u];s(0!==d),h="affine"===t.type?d>0?h.mixedAdd(n[d-1>>1]):h.mixedAdd(n[-d-1>>1].neg()):d>0?h.add(n[d-1>>1]):h.add(n[-d-1>>1].neg())}return"affine"===t.type?h.toP():h},h.prototype._wnafMulAdd=function(t,e,i,r,n){var s,h,u,l=this._wnafT1,d=this._wnafT2,f=this._wnafT3,c=0;for(s=0;s<r;s++){var p=(u=e[s])._getNAFPoints(t);l[s]=p.wnd,d[s]=p.points}for(s=r-1;s>=1;s-=2){var m=s-1,g=s;if(1===l[m]&&1===l[g]){var v=[e[m],null,null,e[g]];0===e[m].y.cmp(e[g].y)?(v[1]=e[m].add(e[g]),v[2]=e[m].toJ().mixedAdd(e[g].neg())):0===e[m].y.cmp(e[g].y.redNeg())?(v[1]=e[m].toJ().mixedAdd(e[g]),v[2]=e[m].add(e[g].neg())):(v[1]=e[m].toJ().mixedAdd(e[g]),v[2]=e[m].toJ().mixedAdd(e[g].neg()));var y=[-3,-1,-5,-7,0,7,5,1,3],b=a(i[m],i[g]);for(c=Math.max(b[0].length,c),f[m]=new Array(c),f[g]=new Array(c),h=0;h<c;h++){var _=0|b[0][h],w=0|b[1][h];f[m][h]=y[3*(_+1)+(w+1)],f[g][h]=0,d[m]=v}}else f[m]=o(i[m],l[m],this._bitLength),f[g]=o(i[g],l[g],this._bitLength),c=Math.max(f[m].length,c),c=Math.max(f[g].length,c)}var A=this.jpoint(null,null,null),M=this._wnafT4;for(s=c;s>=0;s--){for(var E=0;s>=0;){var S=!0;for(h=0;h<r;h++)M[h]=0|f[h][s],0!==M[h]&&(S=!1);if(!S)break;E++,s--}if(s>=0&&E++,A=A.dblp(E),s<0)break;for(h=0;h<r;h++){var k=M[h];0!==k&&(k>0?u=d[h][k-1>>1]:k<0&&(u=d[h][-k-1>>1].neg()),A="affine"===u.type?A.mixedAdd(u):A.add(u))}}for(s=0;s<r;s++)d[s]=null;return n?A:A.toP()},h.BasePoint=u,u.prototype.eq=function(){throw new Error("Not implemented")},u.prototype.validate=function(){return this.curve.validate(this)},h.prototype.decodePoint=function(t,e){t=n.toArray(t,e);var i=this.p.byteLength();if((4===t[0]||6===t[0]||7===t[0])&&t.length-1==2*i)return 6===t[0]?s(t[t.length-1]%2==0):7===t[0]&&s(t[t.length-1]%2==1),this.point(t.slice(1,1+i),t.slice(1+i,1+2*i));if((2===t[0]||3===t[0])&&t.length-1===i)return this.pointFromX(t.slice(1,1+i),3===t[0]);throw new Error("Unknown point format")},u.prototype.encodeCompressed=function(t){return this.encode(t,!0)},u.prototype._encode=function(t){var e=this.curve.p.byteLength(),i=this.getX().toArray("be",e);return t?[this.getY().isEven()?2:3].concat(i):[4].concat(i,this.getY().toArray("be",e))},u.prototype.encode=function(t,e){return n.encode(this._encode(e),t)},u.prototype.precompute=function(t){if(this.precomputed)return this;var e={doubles:null,naf:null,beta:null};return e.naf=this._getNAFPoints(8),e.doubles=this._getDoubles(4,t),e.beta=this._getBeta(),this.precomputed=e,this},u.prototype._hasDoubles=function(t){if(!this.precomputed)return!1;var e=this.precomputed.doubles;return!!e&&e.points.length>=Math.ceil((t.bitLength()+1)/e.step)},u.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var i=[this],r=this,n=0;n<e;n+=t){for(var o=0;o<t;o++)r=r.dbl();i.push(r)}return{step:t,points:i}},u.prototype._getNAFPoints=function(t){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;for(var e=[this],i=(1<<t)-1,r=1===i?null:this.dbl(),n=1;n<i;n++)e[n]=e[n-1].add(r);return{wnd:t,points:e}},u.prototype._getBeta=function(){return null},u.prototype.dblp=function(t){for(var e=this,i=0;i<t;i++)e=e.dbl();return e}},function(t,e,i){var r=i(227),n=i(235),o=i(236),a=i(61),s=i(95),h=i(4).Buffer;function u(t){var e;"object"!=typeof t||h.isBuffer(t)||(e=t.passphrase,t=t.key),"string"==typeof t&&(t=h.from(t));var i,u,l=o(t,e),d=l.tag,f=l.data;switch(d){case"CERTIFICATE":u=r.certificate.decode(f,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(u||(u=r.PublicKey.decode(f,"der")),i=u.algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return r.RSAPublicKey.decode(u.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return u.subjectPrivateKey=u.subjectPublicKey,{type:"ec",data:u};case"1.2.840.10040.4.1":return u.algorithm.params.pub_key=r.DSAparam.decode(u.subjectPublicKey.data,"der"),{type:"dsa",data:u.algorithm.params};default:throw new Error("unknown key id "+i)}case"ENCRYPTED PRIVATE KEY":f=function(t,e){var i=t.algorithm.decrypt.kde.kdeparams.salt,r=parseInt(t.algorithm.decrypt.kde.kdeparams.iters.toString(),10),o=n[t.algorithm.decrypt.cipher.algo.join(".")],u=t.algorithm.decrypt.cipher.iv,l=t.subjectPrivateKey,d=parseInt(o.split("-")[1],10)/8,f=s.pbkdf2Sync(e,i,r,d,"sha1"),c=a.createDecipheriv(o,f,u),p=[];return p.push(c.update(l)),p.push(c.final()),h.concat(p)}(f=r.EncryptedPrivateKey.decode(f,"der"),e);case"PRIVATE KEY":switch(i=(u=r.PrivateKey.decode(f,"der")).algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return r.RSAPrivateKey.decode(u.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:u.algorithm.curve,privateKey:r.ECPrivateKey.decode(u.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return u.algorithm.params.priv_key=r.DSAparam.decode(u.subjectPrivateKey,"der"),{type:"dsa",params:u.algorithm.params};default:throw new Error("unknown key id "+i)}case"RSA PUBLIC KEY":return r.RSAPublicKey.decode(f,"der");case"RSA PRIVATE KEY":return r.RSAPrivateKey.decode(f,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:r.DSAPrivateKey.decode(f,"der")};case"EC PRIVATE KEY":return{curve:(f=r.ECPrivateKey.decode(f,"der")).parameters.value,privateKey:f.privateKey};default:throw new Error("unknown key type "+d)}}t.exports=u,u.signature=r.signature},function(t,e,i){"use strict";var r,n=function(){return void 0===r&&(r=Boolean(window&&document&&document.all&&!window.atob)),r},o=function(){var t={};return function(e){if(void 0===t[e]){var i=document.querySelector(e);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(t){i=null}t[e]=i}return t[e]}}(),a=[];function s(t){for(var e=-1,i=0;i<a.length;i++)if(a[i].identifier===t){e=i;break}return e}function h(t,e){for(var i={},r=[],n=0;n<t.length;n++){var o=t[n],h=e.base?o[0]+e.base:o[0],u=i[h]||0,l="".concat(h," ").concat(u);i[h]=u+1;var d=s(l),f={css:o[1],media:o[2],sourceMap:o[3]};-1!==d?(a[d].references++,a[d].updater(f)):a.push({identifier:l,updater:g(f,e),references:1}),r.push(l)}return r}function u(t){var e=document.createElement("style"),r=t.attributes||{};if(void 0===r.nonce){var n=i.nc;n&&(r.nonce=n)}if(Object.keys(r).forEach((function(t){e.setAttribute(t,r[t])})),"function"==typeof t.insert)t.insert(e);else{var a=o(t.insert||"head");if(!a)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");a.appendChild(e)}return e}var l,d=(l=[],function(t,e){return l[t]=e,l.filter(Boolean).join("\n")});function f(t,e,i,r){var n=i?"":r.media?"@media ".concat(r.media," {").concat(r.css,"}"):r.css;if(t.styleSheet)t.styleSheet.cssText=d(e,n);else{var o=document.createTextNode(n),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(o,a[e]):t.appendChild(o)}}function c(t,e,i){var r=i.css,n=i.media,o=i.sourceMap;if(n?t.setAttribute("media",n):t.removeAttribute("media"),o&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),t.styleSheet)t.styleSheet.cssText=r;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(r))}}var p=null,m=0;function g(t,e){var i,r,n;if(e.singleton){var o=m++;i=p||(p=u(e)),r=f.bind(null,i,o,!1),n=f.bind(null,i,o,!0)}else i=u(e),r=c.bind(null,i,e),n=function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(i)};return r(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;r(t=e)}else n()}}t.exports=function(t,e){(e=e||{}).singleton||"boolean"==typeof e.singleton||(e.singleton=n());var i=h(t=t||[],e);return function(t){if(t=t||[],"[object Array]"===Object.prototype.toString.call(t)){for(var r=0;r<i.length;r++){var n=s(i[r]);a[n].references--}for(var o=h(t,e),u=0;u<i.length;u++){var l=s(i[u]);0===a[l].references&&(a[l].updater(),a.splice(l,1))}i=o}}}},function(t,e,i){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i=function(t,e){var i=t[1]||"",r=t[3];if(!r)return i;if(e&&"function"==typeof btoa){var n=(a=r,s=btoa(unescape(encodeURIComponent(JSON.stringify(a)))),h="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(s),"/*# ".concat(h," */")),o=r.sources.map((function(t){return"/*# sourceURL=".concat(r.sourceRoot||"").concat(t," */")}));return[i].concat(o).concat([n]).join("\n")}var a,s,h;return[i].join("\n")}(e,t);return e[2]?"@media ".concat(e[2]," {").concat(i,"}"):i})).join("")},e.i=function(t,i,r){"string"==typeof t&&(t=[[null,t,""]]);var n={};if(r)for(var o=0;o<this.length;o++){var a=this[o][0];null!=a&&(n[a]=!0)}for(var s=0;s<t.length;s++){var h=[].concat(t[s]);r&&n[h[0]]||(i&&(h[2]?h[2]="".concat(i," and ").concat(h[2]):h[2]=i),e.push(h))}},e}},function(t,e,i){var r;t.exports=(r=i(5),function(t){var e=r,i=e.lib,n=i.Base,o=i.WordArray,a=e.x64={};a.Word=n.extend({init:function(t,e){this.high=t,this.low=e}}),a.WordArray=n.extend({init:function(e,i){e=this.words=e||[],this.sigBytes=i!=t?i:8*e.length},toX32:function(){for(var t=this.words,e=t.length,i=[],r=0;r<e;r++){var n=t[r];i.push(n.high),i.push(n.low)}return o.create(i,this.sigBytes)},clone:function(){for(var t=n.clone.call(this),e=t.words=this.words.slice(0),i=e.length,r=0;r<i;r++)e[r]=e[r].clone();return t}})}(),r)},function(t,e,i){"use strict";var r=i(1);function n(t,e,i){var r=t;if(e+i<r.length){for(;i--;)if(128!=(192&r[++e]))return!1;return!0}return!1}var o,a=function(t){for(var e=[],i=t,r=0,o=t.length;r<o;)if(i[r]<128)e.push(String.fromCharCode(i[r])),++r;else{if(i[r]<192);else if(i[r]<224){if(n(i,r,1)){var a=(31&i[r])<<6|63&i[r+1];if(a>=128){e.push(String.fromCharCode(65535&a)),r+=2;continue}}}else if(i[r]<240){if(n(i,r,2)){var s=(15&i[r])<<12|(63&i[r+1])<<6|63&i[r+2];if(s>=2048&&55296!=(63488&s)){e.push(String.fromCharCode(65535&s)),r+=3;continue}}}else if(i[r]<248&&n(i,r,3)){var h=(7&i[r])<<18|(63&i[r+1])<<12|(63&i[r+2])<<6|63&i[r+3];if(h>65536&&h<1114112){h-=65536,e.push(String.fromCharCode(h>>>10|55296)),e.push(String.fromCharCode(1023&h|56320)),r+=4;continue}}e.push(String.fromCharCode(65533)),++r}return e.join("")},s=i(2),h=(o=new ArrayBuffer(2),new DataView(o).setInt16(0,256,!0),256===new Int16Array(o)[0]),u=function(){function t(){}return t.parseScriptData=function(e,i,n){var o={};try{var a=t.parseValue(e,i,n);if(n-a.size<1)return o;var s=t.parseValue(e,i+a.size,n-a.size);o[a.data]=s.data}catch(t){r.a.e("AMF",t.toString())}return o},t.parseObject=function(e,i,r){if(r<3)throw new s.a("Data not enough when parse ScriptDataObject");var n=t.parseString(e,i,r),o=t.parseValue(e,i+n.size,r-n.size),a=o.objectEnd;return{data:{name:n.data,value:o.data},size:n.size+o.size,objectEnd:a}},t.parseVariable=function(e,i,r){return t.parseObject(e,i,r)},t.parseString=function(t,e,i){if(i<2)throw new s.a("Data not enough when parse String");var r=new DataView(t,e,i).getUint16(0,!h);return{data:r>0?a(new Uint8Array(t,e+2,r)):"",size:2+r}},t.parseLongString=function(t,e,i){if(i<4)throw new s.a("Data not enough when parse LongString");var r=new DataView(t,e,i).getUint32(0,!h);return{data:r>0?a(new Uint8Array(t,e+4,r)):"",size:4+r}},t.parseDate=function(t,e,i){if(i<10)throw new s.a("Data size invalid when parse Date");var r=new DataView(t,e,i),n=r.getFloat64(0,!h),o=r.getInt16(8,!h);return{data:new Date(n+=60*o*1e3),size:10}},t.parseValue=function(e,i,n){if(n<1)throw new s.a("Data not enough when parse Value");var o,a=new DataView(e,i,n),u=1,l=a.getUint8(0),d=!1;try{switch(l){case 0:o=a.getFloat64(1,!h),u+=8;break;case 1:o=!!a.getUint8(1),u+=1;break;case 2:var f=t.parseString(e,i+1,n-1);o=f.data,u+=f.size;break;case 3:o={};var c=0;for(9==(16777215&a.getUint32(n-4,!h))&&(c=3);u<n-4;){var p=t.parseObject(e,i+u,n-u-c);if(p.objectEnd)break;o[p.data.name]=p.data.value,u+=p.size}if(u<=n-3)9===(16777215&a.getUint32(u-1,!h))&&(u+=3);break;case 8:o={},u+=4;var m=0;for(9==(16777215&a.getUint32(n-4,!h))&&(m=3);u<n-8;){var g=t.parseVariable(e,i+u,n-u-m);if(g.objectEnd)break;o[g.data.name]=g.data.value,u+=g.size}if(u<=n-3)9===(16777215&a.getUint32(u-1,!h))&&(u+=3);break;case 9:o=void 0,u=1,d=!0;break;case 10:o=[];var v=a.getUint32(1,!h);u+=4;for(var y=0;y<v;y++){var b=t.parseValue(e,i+u,n-u);o.push(b.data),u+=b.size}break;case 11:var _=t.parseDate(e,i+1,n-1);o=_.data,u+=_.size;break;case 12:var w=t.parseString(e,i+1,n-1);o=w.data,u+=w.size;break;default:u=n}}catch(t){r.a.e("AMF",t.toString())}return{data:o,size:u,objectEnd:d}},t}(),l=i(23),d=i(7),f=i(12),c=i(0);function p(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var m=function(){function t(t,e,i,r,n,o){this.TAG="FLVDemuxer",this._config=e,this._onError=null,this._onMediaInfo=null,this._onMetaDataArrived=null,this._onScriptDataArrived=null,this._onTrackMetadata=null,this._onDataAvailable=null,this._dataOffset=t.dataOffset,this._firstParse=!0,this._dispatch=!1,this._hasAudio=t.hasAudioTrack,this._hasVideo=t.hasVideoTrack,this._hasAudioFlagOverrided=!1,this._hasVideoFlagOverrided=!1,this._audioInitialMetadataDispatched=!1,this._videoInitialMetadataDispatched=!1,this._mediaInfo=new f.a,this._mediaInfo.hasAudio=this._hasAudio,this._mediaInfo.hasVideo=this._hasVideo,this._metadata=null,this._audioMetadata=null,this._videoMetadata=null,this._naluLengthSize=4,this._timestampBase=0,this._timescale=1e3,this._duration=0,this._durationOverrided=!1,this._referenceFrameRate={fixed:!0,fps:23.976,fps_num:23976,fps_den:1e3},this._flvSoundRateTable=[5500,11025,22050,44100,48e3],this._mpegSamplingRates=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],this._mpegAudioV10SampleRateTable=[44100,48e3,32e3,0],this._mpegAudioV20SampleRateTable=[22050,24e3,16e3,0],this._mpegAudioV25SampleRateTable=[11025,12e3,8e3,0],this._mpegAudioL1BitRateTable=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],this._mpegAudioL2BitRateTable=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],this._mpegAudioL3BitRateTable=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1],this._videoTrack={type:"video",id:1,sequenceNumber:0,samples:[],length:0},this._audioTrack={type:"audio",id:2,sequenceNumber:0,samples:[],length:0},this._littleEndian=function(){var t=new ArrayBuffer(2);return new DataView(t).setInt16(0,256,!0),256===new Int16Array(t)[0]}(),this.videoCodecId=0,this.audioCodecId=0,this._AVC_SPS=null,this._AVC_PPS=null,this._HEVC_VPS=null,this._HEVC_SPS=null,this._HEVC_PPS=null,this._StartCode=[0,0,0,1],this._SampleRate=8e3,this._ChannelNum=1,this._pause=!1,this._callbackInitFlag=!1,this._callbackMediaDataFunc=i,this._callbackMediaDataUserPtr=r,this._callbackPlaybackTimeUserPtr=n,this.getVideoInfoCallbackFunc=o,this._debugProcCount=0,this._AudioMaxFrameSize=0,this._lastVideoPts=0,this._lastAudioPts=0,this.snapshotCount=0,this.fullFrameData=new Uint8Array(2097152),this.fullFramePos=0,this._DebugBuf=null,this._DebugBufPos=0}var e,i,n,o=t.prototype;return o.destroy=function(){this._mediaInfo=null,this._metadata=null,this._audioMetadata=null,this._videoMetadata=null,this._videoTrack=null,this._audioTrack=null,this._onError=null,this._onMediaInfo=null,this._onMetaDataArrived=null,this._onScriptDataArrived=null,this._onTrackMetadata=null,this._onDataAvailable=null},t.probe=function(t){var e=new Uint8Array(t),i={match:!1};if(70!==e[0]||76!==e[1]||86!==e[2]||1!==e[3])return i;var r,n,o=(4&e[4])>>>2!=0,a=0!=(1&e[4]),s=(r=e)[n=5]<<24|r[n+1]<<16|r[n+2]<<8|r[n+3];return s<9?i:{match:!0,consumed:s,dataOffset:s,hasAudioTrack:o,hasVideoTrack:a}},o.bindDataSource=function(t){return t.onDataArrival=this.parseChunks.bind(this),this},o.resetMediaInfo=function(){this._mediaInfo=new f.a},o.pause=function(){this._pause=!0},o.resume=function(){this._pause=!1},o._onDataAvailableToSoftwareDecodeVideo=function(t,e){var i=e.samples,r=-1;for(i.length>1&&(r=0);i.length;){for(var n=i.shift(),o=0,a=0;a<n.units.length;a++)o+=n.units[a].data.length;for(var s=0,h=new Uint8Array(o);n.units.length;){var u=n.units.shift();27==t&&(u.data[0]=0,u.data[1]=0,u.data[2]=0,u.data[3]=1),h.set(u.data,s),s+=u.data.length}this._callbackMediaDataFunc&&(r>=0&&r++,this._callbackMediaDataFunc(this._callbackMediaDataUserPtr,!0,1,t,n.isKeyframe,h,o,n.pts,0,0))}},o._onDataAvailableToSoftwareDecodeAudio=function(t,e){var i=e.samples,r=-1;for(i.length>1&&(r=0);i.length;){var n=i.shift();this._callbackMediaDataFunc&&(r>=0&&r++,this._callbackMediaDataFunc(this._callbackMediaDataUserPtr,!0,2,t,0,n.unit,n.length,this._SampleRate,this._ChannelNum,this._SampleRate>=44100?32:16))}},o._isInitialMetadataDispatched=function(){return this._hasAudio&&this._hasVideo?this._audioInitialMetadataDispatched&&this._videoInitialMetadataDispatched:this._hasAudio&&!this._hasVideo?this._audioInitialMetadataDispatched:!(this._hasAudio||!this._hasVideo)&&this._videoInitialMetadataDispatched},o.parseChunks=function(e,i){if(null!==e){if(!(this._onError&&this._onMediaInfo&&this._onTrackMetadata&&this._onDataAvailable))throw new s.a("Flv: onError & onMediaInfo & onTrackMetadata & onDataAvailable callback must be specified");var n=0,o=this._littleEndian;if(0===i){if(!(e.byteLength>13))return 0;n=t.probe(e).dataOffset}if(this._firstParse)this._firstParse=!1,i+n!==this._dataOffset&&r.a.w(this.TAG,"First time parsing but chunk byteStart invalid!"),0!==new DataView(e,n).getUint32(0,!o)&&r.a.w(this.TAG,"PrevTagSize0 !== 0 !!!"),n+=4;for(;n<e.byteLength;){this._dispatch=!0;var a=new DataView(e,n);if(n+11+4>e.byteLength)break;var h=a.getUint8(0),u=16777215&a.getUint32(0,!o);if(n+11+u+4>e.byteLength)break;if(8===h||9===h||18===h){var l=a.getUint8(4),d=a.getUint8(5),f=a.getUint8(6)|d<<8|l<<16|a.getUint8(7)<<24;0!==(16777215&a.getUint32(7,!o))&&r.a.w(this.TAG,"Meet tag which has StreamID != 0!");var c=n+11;if(!this._pause)switch(h){case 8:if(this._lastAudioPts>0)this._lastAudioPts;this._lastAudioPts=f,this.audioCodecId=this._parseAudioData(e,c,u,f);break;case 9:if(this._lastVideoPts>0)this._lastVideoPts;this._lastVideoPts=f,this.videoCodecId=this._parseVideoData(e,c,u,f,i+n);break;case 18:this._parseScriptData(e,c,u)}var p=a.getUint32(11+u,!o);p!==11+u&&r.a.w(this.TAG,"Invalid PrevTagSize "+p),n+=11+u+4}else r.a.w(this.TAG,"Unsupported tag type "+h+", skipped"),n+=11+u+4}return this._isInitialMetadataDispatched()?this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&(7==this.videoCodecId||0==this.videoCodecId?"auto"===this._config.decodeType||"hard"===this._config.decodeType?(this._onDataAvailable(this._audioTrack,this._videoTrack),this._callbackInitFlag||(this._callbackInitFlag=!0,this._callbackMediaDataFunc&&this._callbackMediaDataFunc(this._callbackMediaDataUserPtr,!1,1,0,0,null,0,0,0,0))):(this._videoTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeVideo(27,this._videoTrack),this._audioTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeAudio(10==this.audioCodecId?86018:0,this._audioTrack)):12==this.videoCodecId&&(this._videoTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeVideo(173,this._videoTrack),this._audioTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeAudio(10==this.audioCodecId?86018:0,this._audioTrack))):(this._debugProcCount++,this._debugProcCount>=60&&(this._debugProcCount=0,this._hasAudio=!1,this._mediaInfo.hasAudio=!1)),n}},o._parseScriptData=function(t,e,i){var n=u.parseScriptData(t,e,i);if(n.hasOwnProperty("onMetaData")){if(null==n.onMetaData||"object"!=typeof n.onMetaData)return void r.a.w(this.TAG,"Invalid onMetaData structure!");this._metadata&&r.a.w(this.TAG,"Found another onMetaData tag!"),this._metadata=n;var o=this._metadata.onMetaData;if(this._onMetaDataArrived&&this._onMetaDataArrived(Object.assign({},o)),"boolean"==typeof o.hasAudio&&!1===this._hasAudioFlagOverrided&&(this._hasAudio=o.hasAudio,this._mediaInfo.hasAudio=this._hasAudio),"boolean"==typeof o.hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=o.hasVideo,this._mediaInfo.hasVideo=this._hasVideo),"number"==typeof o.audiodatarate&&(this._mediaInfo.audioDataRate=o.audiodatarate),"number"==typeof o.videodatarate&&(this._mediaInfo.videoDataRate=o.videodatarate),"number"==typeof o.width&&(this._mediaInfo.width=o.width),"number"==typeof o.height&&(this._mediaInfo.height=o.height),"number"==typeof o.duration){if(!this._durationOverrided){var a=Math.floor(o.duration*this._timescale);this._duration=a,this._mediaInfo.duration=a}}else this._mediaInfo.duration=0;if("number"==typeof o.framerate){var s=Math.floor(1e3*o.framerate);if(s>0){var h=s/1e3;this._referenceFrameRate.fixed=!0,this._referenceFrameRate.fps=h,this._referenceFrameRate.fps_num=s,this._referenceFrameRate.fps_den=1e3,this._mediaInfo.fps=h}}if("object"==typeof o.keyframes){this._mediaInfo.hasKeyframesIndex=!0;var l=o.keyframes;this._mediaInfo.keyframesIndex=this._parseKeyframesIndex(l),o.keyframes=null}else this._mediaInfo.hasKeyframesIndex=!1;this._dispatch=!1,this._mediaInfo.metadata=o,r.a.v(this.TAG,"Parsed onMetaData"),this._mediaInfo.isComplete()&&this._onMediaInfo(this._mediaInfo)}Object.keys(n).length>0&&this._onScriptDataArrived&&this._onScriptDataArrived(Object.assign({},n))},o._parseKeyframesIndex=function(t){for(var e=[],i=[],r=1;r<t.times.length;r++){var n=this._timestampBase+Math.floor(1e3*t.times[r]);e.push(n),i.push(t.filepositions[r])}return{times:e,filepositions:i}},o._parseAudioData=function(t,e,i,n){if(i<=1)return r.a.w(this.TAG,"Flv: Invalid audio packet, missing SoundData payload!"),0;if(!0===this._hasAudioFlagOverrided&&!1===this._hasAudio)return 0;this._littleEndian;var o=new DataView(t,e,i).getUint8(0),a=o>>>4;if(2!==a&&10!==a)return this._onError(d.a.CODEC_UNSUPPORTED,"Flv: Unsupported audio codec idx: "+a),0;var s=0,h=(12&o)>>>2;if(!(h>=0&&h<=4))return this._onError(d.a.FORMAT_ERROR,"Flv: Invalid audio sample rate idx: "+h),0;s=this._flvSoundRateTable[h];var u=1&o,l=this._audioMetadata,f=this._audioTrack;if(l||(!1===this._hasAudio&&!1===this._hasAudioFlagOverrided&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),(l=this._audioMetadata={}).type="audio",l.id=f.id,l.timescale=this._timescale,l.duration=this._duration,l.audioSampleRate=s,l.channelCount=0===u?1:2),10===a){var c=this._parseAACAudioData(t,e+1,i-1);if(null==c)return 0;if(0===c.packetType){l.config&&r.a.w(this.TAG,"Found another AudioSpecificConfig!");var p=c.data;l.audioSampleRate=p.samplingRate,l.channelCount=p.channelCount,l.codec=p.codec,l.originalCodec=p.originalCodec,l.config=p.config,l.refSampleDuration=1024/l.audioSampleRate*l.timescale,this._SampleRate=p.samplingRate,this._ChannelNum=p.channelCount,this._isInitialMetadataDispatched()?this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack):this._audioInitialMetadataDispatched=!0,this._dispatch=!1,this._onTrackMetadata("audio",l);var m=this._mediaInfo;m.audioCodec=l.originalCodec,m.audioSampleRate=l.audioSampleRate,m.audioChannelCount=l.channelCount,m.hasVideo?null!=m.videoCodec&&(m.mimeType='video/x-flv; codecs="'+m.videoCodec+","+m.audioCodec+'"'):m.mimeType='video/x-flv; codecs="'+m.audioCodec+'"',m.isComplete()&&this._onMediaInfo(m)}else if(1===c.packetType){var g=this._timestampBase+n,v={unit:c.data,length:c.data.byteLength,dts:g,pts:g};f.samples.push(v),f.length+=c.data.length,c.data.length>this._AudioMaxFrameSize&&(this._AudioMaxFrameSize=c.data.length)}else r.a.e(this.TAG,"Flv: Unsupported AAC data type "+c.packetType)}else if(2===a){if(!l.codec){var y=this._parseMP3AudioData(t,e+1,i-1,!0);if(null==y)return 0;l.audioSampleRate=y.samplingRate,l.channelCount=y.channelCount,l.codec=y.codec,l.originalCodec=y.originalCodec,l.refSampleDuration=1152/l.audioSampleRate*l.timescale,r.a.v(this.TAG,"Parsed MPEG Audio Frame Header"),this._audioInitialMetadataDispatched=!0,this._onTrackMetadata("audio",l);var b=this._mediaInfo;b.audioCodec=l.codec,b.audioSampleRate=l.audioSampleRate,b.audioChannelCount=l.channelCount,b.audioDataRate=y.bitRate,b.hasVideo?null!=b.videoCodec&&(b.mimeType='video/x-flv; codecs="'+b.videoCodec+","+b.audioCodec+'"'):b.mimeType='video/x-flv; codecs="'+b.audioCodec+'"',b.isComplete()&&this._onMediaInfo(b)}var _=this._parseMP3AudioData(t,e+1,i-1,!1);if(null==_)return 0;var w=this._timestampBase+n,A={unit:_,length:_.byteLength,dts:w,pts:w};f.samples.push(A),f.length+=_.length}return a},o._parseAACAudioData=function(t,e,i){if(!(i<=1)){var n={},o=new Uint8Array(t,e,i);return n.packetType=o[0],0===o[0]?n.data=this._parseAACAudioSpecificConfig(t,e+1,i-1):n.data=o.subarray(1),n}r.a.w(this.TAG,"Flv: Invalid AAC packet, missing AACPacketType or/and Data!")},o._parseAACAudioSpecificConfig=function(t,e,i){var r,n,o=new Uint8Array(t,e,i),a=null,s=0,h=null;if(s=r=o[0]>>>3,(n=(7&o[0])<<1|o[1]>>>7)<0||n>=this._mpegSamplingRates.length)this._onError(d.a.FORMAT_ERROR,"Flv: AAC invalid sampling frequency index!");else{var u=this._mpegSamplingRates[n],l=(120&o[1])>>>3;if(!(l<0||l>=8)){5===s&&(h=(7&o[1])<<1|o[2]>>>7,(124&o[2])>>>2);var f=self.navigator.userAgent.toLowerCase();return-1!==f.indexOf("firefox")?n>=6?(s=5,a=new Array(4),h=n-3):(s=2,a=new Array(2),h=n):-1!==f.indexOf("android")?(s=2,a=new Array(2),h=n):(s=5,h=n,a=new Array(4),n>=6?h=n-3:1===l&&(s=2,a=new Array(2),h=n)),a[0]=s<<3,a[0]|=(15&n)>>>1,a[1]=(15&n)<<7,a[1]|=(15&l)<<3,5===s&&(a[1]|=(15&h)>>>1,a[2]=(1&h)<<7,a[2]|=8,a[3]=0),{config:a,samplingRate:u,channelCount:l,codec:"mp4a.40."+s,originalCodec:"mp4a.40."+r}}this._onError(d.a.FORMAT_ERROR,"Flv: AAC invalid channel configuration")}},o._parseMP3AudioData=function(t,e,i,n){if(!(i<4)){this._littleEndian;var o=new Uint8Array(t,e,i),a=null;if(n){if(255!==o[0])return;var s=o[1]>>>3&3,h=(6&o[1])>>1,u=(240&o[2])>>>4,l=(12&o[2])>>>2,d=3!==(o[3]>>>6&3)?2:1,f=0,c=0;switch(s){case 0:f=this._mpegAudioV25SampleRateTable[l];break;case 2:f=this._mpegAudioV20SampleRateTable[l];break;case 3:f=this._mpegAudioV10SampleRateTable[l]}switch(h){case 1:34,u<this._mpegAudioL3BitRateTable.length&&(c=this._mpegAudioL3BitRateTable[u]);break;case 2:33,u<this._mpegAudioL2BitRateTable.length&&(c=this._mpegAudioL2BitRateTable[u]);break;case 3:32,u<this._mpegAudioL1BitRateTable.length&&(c=this._mpegAudioL1BitRateTable[u])}a={bitRate:c,samplingRate:f,channelCount:d,codec:"mp3",originalCodec:"mp3"}}else a=o;return a}r.a.w(this.TAG,"Flv: Invalid MP3 packet, header missing!")},o._parseVideoData=function(t,e,i,n,o){if(i<=1)r.a.w(this.TAG,"Flv: Invalid video packet, missing VideoData payload!");else if(!0!==this._hasVideoFlagOverrided||!1!==this._hasVideo){var a=new Uint8Array(t,e,i)[0],s=(240&a)>>>4,h=15&a;if(7===h||12===h)return this._parseAVCAndHEVCVideoPacket(h,t,e+1,i-1,n,o,s),h;this._onError(d.a.CODEC_UNSUPPORTED,"Flv: Unsupported codec in video frame: "+h)}},o._parseAVCAndHEVCVideoPacket=function(t,e,i,n,o,a,s){if(n<4)r.a.w(this.TAG,"Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime");else{var h=this._littleEndian,u=new DataView(e,i,n),l=u.getUint8(0),f=(16777215&u.getUint32(0,!h))<<8>>8;if(0===l)7==t?(c.setCodecTypeStr("H264"),this._parseAVCDecoderConfigurationRecord(e,i+4,n-4)):(c.setCodecTypeStr("H265"),this._parseHEVCDecoderConfigurationRecord(e,i+4,n-4));else if(1===l)7==t?this._parseAVCVideoData(e,i+4,n-4,o,a,s,f):this._parseHEVCVideoData(e,i+4,n-4,o,a,s,f);else if(2!==l)return void this._onError(d.a.FORMAT_ERROR,"Flv: Invalid video packet type "+l)}},o._parseAVCDecoderConfigurationRecord=function(t,e,i){if(i<7)r.a.w(this.TAG,"Flv: Invalid AVCDecoderConfigurationRecord, lack of data!");else{var n=this._videoMetadata,o=this._videoTrack,a=this._littleEndian,s=new DataView(t,e,i);n?void 0!==n.avcc&&r.a.w(this.TAG,"Found another AVCDecoderConfigurationRecord!"):(!1===this._hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),(n=this._videoMetadata={}).type="video",n.id=o.id,n.timescale=this._timescale,n.duration=this._duration);var h=s.getUint8(0),u=s.getUint8(1);s.getUint8(2),s.getUint8(3);if(1===h&&0!==u)if(this._naluLengthSize=1+(3&s.getUint8(4)),3===this._naluLengthSize||4===this._naluLengthSize){var f=31&s.getUint8(5);if(0!==f){f>1&&r.a.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: SPS Count = "+f);for(var c=6,p=0;p<f;p++){var m=s.getUint16(c,!a);if(c+=2,0!==m){var g=new Uint8Array(t,e+c,m);this._AVC_SPS=new Uint8Array(m+4),c+=m,this._AVC_SPS.set(this._StartCode,0),this._AVC_SPS.set(g,4);var v=l.a.parseSPS(g);if(0===p){n.codecWidth=v.codec_size.width,n.codecHeight=v.codec_size.height,n.presentWidth=v.present_size.width,n.presentHeight=v.present_size.height,n.profile=v.profile_string,n.level=v.level_string,n.bitDepth=v.bit_depth,n.chromaFormat=v.chroma_format,n.sarRatio=v.sar_ratio,n.frameRate=v.frame_rate,!1!==v.frame_rate.fixed&&0!==v.frame_rate.fps_num&&0!==v.frame_rate.fps_den||(n.frameRate=this._referenceFrameRate);var y=n.frameRate.fps_den,b=n.frameRate.fps_num;n.refSampleDuration=n.timescale*(y/b);for(var _=g.subarray(1,4),w="avc1.",A=0;A<3;A++){var M=_[A].toString(16);M.length<2&&(M="0"+M),w+=M}n.codec=w;var E=this._mediaInfo;E.width=n.codecWidth,E.height=n.codecHeight,E.fps=n.frameRate.fps,E.profile=n.profile,E.level=n.level,E.refFrames=v.ref_frames,E.chromaFormat=v.chroma_format_string,E.sarNum=n.sarRatio.width,E.sarDen=n.sarRatio.height,E.videoCodec=w,E.hasAudio?null!=E.audioCodec&&(E.mimeType='video/x-flv; codecs="'+E.videoCodec+","+E.audioCodec+'"'):E.mimeType='video/x-flv; codecs="'+E.videoCodec+'"',E.isComplete()&&this._onMediaInfo(E)}}}var S=s.getUint8(c);if(0!==S){S>1&&r.a.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: PPS Count = "+S),c++;for(var k=0;k<S;k++){var T=s.getUint16(c,!a);if(c+=2,0!==T){var R=new Uint8Array(t,e+c,T);this._AVC_PPS=new Uint8Array(T+4),this._AVC_PPS.set(this._StartCode,0),this._AVC_PPS.set(R,4),c+=T}}n.avcc=new Uint8Array(i),n.avcc.set(new Uint8Array(t,e,i),0),this._isInitialMetadataDispatched()?this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack):this._videoInitialMetadataDispatched=!0,this._dispatch=!1,this._onTrackMetadata("video",n),this.getVideoInfoCallbackFunc&&null!=this.getVideoInfoCallbackFunc&&this.getVideoInfoCallbackFunc(this._callbackPlaybackTimeUserPtr,"H264",n.codecWidth,n.codecHeight)}else this._onError(d.a.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord: No PPS")}else this._onError(d.a.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord: No SPS")}else this._onError(d.a.FORMAT_ERROR,"Flv: Strange NaluLengthSizeMinusOne: "+(this._naluLengthSize-1));else this._onError(d.a.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord")}},o.uint8arrayToBase64=function(t){for(var e,i=0,r=t.length,n="";i<r;)e=t.subarray(i,Math.min(i+32768,r)),n+=String.fromCharCode.apply(null,e),i+=32768;return btoa(n)},o._parseAVCVideoData=function(t,e,i,n,o,a,s){var h=this._littleEndian,u=new DataView(t,e,i),l=[],d=0,f=0,c=this._naluLengthSize,p=this._timestampBase+n,m=1===a,g=!0;for(7==this.videoCodecId&&("auto"!==this._config.decodeType&&"hard"!==this._config.decodeType||(g=!1));f<i;){if(f+4>=i){r.a.w(this.TAG,"Malformed Nalu near timestamp "+p+", offset = "+f+", dataSize = "+i);break}var v=u.getUint32(f,!h);if(3===c&&(v>>>=8),v>i-c)return void r.a.w(this.TAG,"Malformed Nalus near timestamp "+p+", NaluSize > DataSize!");var y=31&u.getUint8(f+c);if(5===y&&(m=!0,l.length<1&&this._AVC_SPS&&this._AVC_SPS.length>0)){if(g){var b={type:7,data:this._AVC_SPS};l.push(b),d+=b.data.length;var _={type:8,data:this._AVC_PPS};l.push(_),d+=_.data.length}else{var w=this._AVC_SPS.subarray(0,this._AVC_SPS.length),A=w.length-4;w[0]=A>>24,w[1]=A>>16,w[2]=A>>8,w[3]=255&A;var M={type:7,data:w};l.push(M),d+=M.data.length;var E=this._AVC_PPS.subarray(0,this._AVC_PPS.length),S=E.length-4;E[0]=S>>24,E[1]=S>>16,E[2]=S>>8,E[3]=255&S;var k={type:8,data:E};l.push(k),d+=k.data.length}this.snapshotCount>0&&this.fullFrameData&&null!=this.fullFrameData&&(this.fullFrameData.set(this._AVC_SPS,0),this.fullFrameData[0]=0,this.fullFrameData[1]=0,this.fullFrameData[2]=0,this.fullFrameData[3]=1,this.fullFramePos=this._AVC_SPS.length,this.fullFrameData.set(this._AVC_PPS,this.fullFramePos),this.fullFramePos+=this._AVC_PPS.length,this.fullFrameData[this._AVC_SPS.length+0]=0,this.fullFrameData[this._AVC_SPS.length+1]=0,this.fullFrameData[this._AVC_SPS.length+2]=0,this.fullFrameData[this._AVC_SPS.length+3]=1)}var T=new Uint8Array(t,e+f,c+v),R={type:y,data:T};if(l.push(R),d+=T.byteLength,f+=c+v,m&&this.snapshotCount>0&&this.fullFrameData&&null!=this.fullFrameData&&this.fullFramePos>0&&window.vssModuleInitialized){this.snapshotCount--,this.fullFrameData.set(T,this.fullFramePos),this.fullFrameData[this.fullFramePos]=0,this.fullFrameData[this.fullFramePos+1]=0,this.fullFrameData[this.fullFramePos+2]=0,this.fullFrameData[this.fullFramePos+3]=1,this.fullFramePos+=T.length;var I=window.vssPlayerModule,C=window.VssPlayerWasmKits;if(I&&null!=I&&C&&null!=C){var P=new Uint8Array(this.fullFrameData);if(P.length>0){var x=I._malloc(P.length);I.HEAP8.set(P,x);var D=C.convertFrame2Image(0,x,this.fullFramePos,C.yuvData,0);if(D<1);else{var O=I.HEAPU8.subarray(C.yuvData,C.yuvData+D),B=this.uint8arrayToBase64(O),L=document.createElement("a");document.body.append(L),L.href="data:image/jpeg;base64,"+B,L.download="snapshot.jpg",L.rel="noopener noreferrer",L.click(),document.body.removeChild(L)}I._free(x)}}this.fullFramePos=0}}if(l.length){var W=this._videoTrack,N={units:l,length:d,isKeyframe:m,dts:p,cts:s,pts:p+s};m&&(N.fileposition=o),W.samples.push(N),W.length+=d}},o._parseHEVCDecoderConfigurationRecord=function(t,e,i){if(i<7)r.a.w(this.TAG,"Flv: Invalid AVCDecoderConfigurationRecord, lack of data!");else{var n=this._videoMetadata,o=this._videoTrack,a=this._littleEndian,s=new DataView(t,e,i);n?void 0!==n.avcc&&r.a.w(this.TAG,"Found another AVCDecoderConfigurationRecord!"):(!1===this._hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),(n=this._videoMetadata={}).type="video",n.id=o.id,n.timescale=this._timescale,n.duration=this._duration);var h=s.getUint8(0),u=s.getUint8(1),l=s.getUint8(2),d=s.getUint8(3);if(0===h&&0===u&&0===l&&1===d);else{var f=22,c=s.getUint8(f);f+=1;for(var p=0;p<c;p++){var m=s.getUint8(f);f+=1;s.getUint16(f,!a);f+=2;var g=s.getUint16(f,!a);if(f+=2,32===m||160==m){var v=new Uint8Array(t,e+f,g);this._HEVC_VPS=new Uint8Array(g+4),this._HEVC_VPS.set(this._StartCode,0),this._HEVC_VPS.set(v,4)}else if(33===m||161==m){var y=new Uint8Array(t,e+f,g);this._HEVC_SPS=new Uint8Array(g+4),this._HEVC_SPS.set(this._StartCode,0),this._HEVC_SPS.set(y,4)}else if(34===m||162==m){var b=new Uint8Array(t,e+f,g);this._HEVC_PPS=new Uint8Array(g+4),this._HEVC_PPS.set(this._StartCode,0),this._HEVC_PPS.set(b,4)}f+=g}}this._isInitialMetadataDispatched()?this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack):this._videoInitialMetadataDispatched=!0,this._dispatch=!1}},o.snapshot=function(){this.snapshotCount++},o._makeH265Header=function(t){var e=2;switch(t){case 78:case 80:case 64:case 66:case 32:case 34:case 36:case 38:case 40:case 42:e=1}return e},o._parseHEVCVideoData=function(t,e,i,n,o,a,s){for(var h=this._littleEndian,u=new DataView(t,e,i),l=this._timestampBase+n,d=1===a,f=[],c=0,p=0;p<i;){if(p+4>=i){r.a.w(this.TAG,"Malformed Nalu near timestamp "+l+", offset = "+p+", dataSize = "+i);break}var m=u.getUint8(p),g=u.getUint8(p+1),v=u.getUint8(p+2),y=u.getUint8(p+3);if(0===m&&0===g&&0===v&&1===y);else{var b=u.getUint32(p,!h);p+=4;u.getUint8(p);if(p+=1,b>i-4)return void r.a.w(this.TAG,"Malformed Nalus near timestamp "+l+", NaluSize > DataSize!");if(b+p-1>i)break;var _=u.getUint8(p-1),w=this._makeH265Header(_);if(78==_){if(f.length<1){if(this._HEVC_VPS){var A={type:5,data:this._HEVC_VPS};f.push(A),c+=this._HEVC_VPS.length}if(this._HEVC_SPS){var M={type:6,data:this._HEVC_SPS};f.push(M),c+=this._HEVC_SPS.length}if(this._HEVC_PPS){var E={type:7,data:this._HEVC_PPS};f.push(E),c+=this._HEVC_PPS.length}}if(e+p-1-4>=0&&b>0){var S=new Uint8Array(t,e+p-1-4,b+4);S[0]=0,S[1]=0,S[2]=0,S[3]=1;var k={type:5,data:S};f.push(k),c+=S.length}p+=b-1;continue}if((32===_||34===_||36===_||38===_||40===_||42===_)&&f.length<1){if(this._HEVC_VPS){var T={type:5,data:this._HEVC_VPS};f.push(T),c+=this._HEVC_VPS.length}if(this._HEVC_SPS){var R={type:6,data:this._HEVC_SPS};f.push(R),c+=this._HEVC_SPS.length}if(this._HEVC_PPS){var I={type:7,data:this._HEVC_PPS};f.push(I),c+=this._HEVC_PPS.length}}if(1===w&&this._HEVC_VPS&&this._HEVC_VPS[0],e+p-1-4>=0&&b>0){var C=new Uint8Array(t,e+p-1-4,b+4);C[0]=0,C[1]=0,C[2]=0,C[3]=1;var P={type:5,data:C};f.push(P),c+=C.length}p+=b-1}}if(this._DebugBuf&&(this._DebugBufPos<1048576?(this._DebugBuf.set(data2,this._DebugBufPos),this._DebugBufPos+=data2.length):this._DebugBufPos=0),f.length){var x=this._videoTrack,D={units:f,length:c,isKeyframe:d,dts:l,cts:s,pts:l+s};d&&(D.fileposition=o),x.samples.push(D),x.length+=c}},e=t,(i=[{key:"onTrackMetadata",get:function(){return this._onTrackMetadata},set:function(t){this._onTrackMetadata=t}},{key:"onMediaInfo",get:function(){return this._onMediaInfo},set:function(t){this._onMediaInfo=t}},{key:"onMetaDataArrived",get:function(){return this._onMetaDataArrived},set:function(t){this._onMetaDataArrived=t}},{key:"onScriptDataArrived",get:function(){return this._onScriptDataArrived},set:function(t){this._onScriptDataArrived=t}},{key:"onError",get:function(){return this._onError},set:function(t){this._onError=t}},{key:"onDataAvailable",get:function(){return this._onDataAvailable},set:function(t){this._onDataAvailable=t}},{key:"timestampBase",get:function(){return this._timestampBase},set:function(t){this._timestampBase=t}},{key:"overridedDuration",get:function(){return this._duration},set:function(t){this._durationOverrided=!0,this._duration=t,this._mediaInfo.duration=t}},{key:"overridedHasAudio",set:function(t){this._hasAudioFlagOverrided=!0,this._hasAudio=t,this._mediaInfo.hasAudio=t}},{key:"overridedHasVideo",set:function(t){this._hasVideoFlagOverrided=!0,this._hasVideo=t,this._mediaInfo.hasVideo=t}}])&&p(e.prototype,i),n&&p(e,n),Object.defineProperty(e,"prototype",{writable:!1}),t}();e.a=m},function(t,e){!function(){"use strict";function e(t,e){throw new Error("abstract")}e.prototype.drawFrame=function(t){throw new Error("abstract")},e.prototype.clear=function(){throw new Error("abstract")},t.exports=e}()},function(t,e,i){"use strict";var r=i(3),n=i(79),o=i(4).Buffer,a=new Array(16);function s(){n.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function h(t,e){return t<<e|t>>>32-e}function u(t,e,i,r,n,o,a){return h(t+(e&i|~e&r)+n+o|0,a)+e|0}function l(t,e,i,r,n,o,a){return h(t+(e&r|i&~r)+n+o|0,a)+e|0}function d(t,e,i,r,n,o,a){return h(t+(e^i^r)+n+o|0,a)+e|0}function f(t,e,i,r,n,o,a){return h(t+(i^(e|~r))+n+o|0,a)+e|0}r(s,n),s.prototype._update=function(){for(var t=a,e=0;e<16;++e)t[e]=this._block.readInt32LE(4*e);var i=this._a,r=this._b,n=this._c,o=this._d;i=u(i,r,n,o,t[0],3614090360,7),o=u(o,i,r,n,t[1],3905402710,12),n=u(n,o,i,r,t[2],606105819,17),r=u(r,n,o,i,t[3],3250441966,22),i=u(i,r,n,o,t[4],4118548399,7),o=u(o,i,r,n,t[5],1200080426,12),n=u(n,o,i,r,t[6],2821735955,17),r=u(r,n,o,i,t[7],4249261313,22),i=u(i,r,n,o,t[8],1770035416,7),o=u(o,i,r,n,t[9],2336552879,12),n=u(n,o,i,r,t[10],4294925233,17),r=u(r,n,o,i,t[11],2304563134,22),i=u(i,r,n,o,t[12],1804603682,7),o=u(o,i,r,n,t[13],4254626195,12),n=u(n,o,i,r,t[14],2792965006,17),i=l(i,r=u(r,n,o,i,t[15],1236535329,22),n,o,t[1],4129170786,5),o=l(o,i,r,n,t[6],3225465664,9),n=l(n,o,i,r,t[11],643717713,14),r=l(r,n,o,i,t[0],3921069994,20),i=l(i,r,n,o,t[5],3593408605,5),o=l(o,i,r,n,t[10],38016083,9),n=l(n,o,i,r,t[15],3634488961,14),r=l(r,n,o,i,t[4],3889429448,20),i=l(i,r,n,o,t[9],568446438,5),o=l(o,i,r,n,t[14],3275163606,9),n=l(n,o,i,r,t[3],4107603335,14),r=l(r,n,o,i,t[8],1163531501,20),i=l(i,r,n,o,t[13],2850285829,5),o=l(o,i,r,n,t[2],4243563512,9),n=l(n,o,i,r,t[7],1735328473,14),i=d(i,r=l(r,n,o,i,t[12],2368359562,20),n,o,t[5],4294588738,4),o=d(o,i,r,n,t[8],2272392833,11),n=d(n,o,i,r,t[11],1839030562,16),r=d(r,n,o,i,t[14],4259657740,23),i=d(i,r,n,o,t[1],2763975236,4),o=d(o,i,r,n,t[4],1272893353,11),n=d(n,o,i,r,t[7],4139469664,16),r=d(r,n,o,i,t[10],3200236656,23),i=d(i,r,n,o,t[13],681279174,4),o=d(o,i,r,n,t[0],3936430074,11),n=d(n,o,i,r,t[3],3572445317,16),r=d(r,n,o,i,t[6],76029189,23),i=d(i,r,n,o,t[9],3654602809,4),o=d(o,i,r,n,t[12],3873151461,11),n=d(n,o,i,r,t[15],530742520,16),i=f(i,r=d(r,n,o,i,t[2],3299628645,23),n,o,t[0],4096336452,6),o=f(o,i,r,n,t[7],1126891415,10),n=f(n,o,i,r,t[14],2878612391,15),r=f(r,n,o,i,t[5],4237533241,21),i=f(i,r,n,o,t[12],1700485571,6),o=f(o,i,r,n,t[3],2399980690,10),n=f(n,o,i,r,t[10],4293915773,15),r=f(r,n,o,i,t[1],2240044497,21),i=f(i,r,n,o,t[8],1873313359,6),o=f(o,i,r,n,t[15],4264355552,10),n=f(n,o,i,r,t[6],2734768916,15),r=f(r,n,o,i,t[13],1309151649,21),i=f(i,r,n,o,t[4],4149444226,6),o=f(o,i,r,n,t[11],3174756917,10),n=f(n,o,i,r,t[2],718787259,15),r=f(r,n,o,i,t[9],3951481745,21),this._a=this._a+i|0,this._b=this._b+r|0,this._c=this._c+n|0,this._d=this._d+o|0},s.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=o.allocUnsafe(16);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t},t.exports=s},function(t,e,i){(function(e){function i(t){try{if(!e.localStorage)return!1}catch(t){return!1}var i=e.localStorage[t];return null!=i&&"true"===String(i).toLowerCase()}t.exports=function(t,e){if(i("noDeprecation"))return t;var r=!1;return function(){if(!r){if(i("throwDeprecation"))throw new Error(e);i("traceDeprecation"),r=!0}return t.apply(this,arguments)}}}).call(this,i(10))},function(t,e,i){"use strict";var r=i(26).codes.ERR_STREAM_PREMATURE_CLOSE;function n(){}t.exports=function t(e,i,o){if("function"==typeof i)return t(e,null,i);i||(i={}),o=function(t){var e=!1;return function(){if(!e){e=!0;for(var i=arguments.length,r=new Array(i),n=0;n<i;n++)r[n]=arguments[n];t.apply(this,r)}}}(o||n);var a=i.readable||!1!==i.readable&&e.readable,s=i.writable||!1!==i.writable&&e.writable,h=function(){e.writable||l()},u=e._writableState&&e._writableState.finished,l=function(){s=!1,u=!0,a||o.call(e)},d=e._readableState&&e._readableState.endEmitted,f=function(){a=!1,d=!0,s||o.call(e)},c=function(t){o.call(e,t)},p=function(){var t;return a&&!d?(e._readableState&&e._readableState.ended||(t=new r),o.call(e,t)):s&&!u?(e._writableState&&e._writableState.ended||(t=new r),o.call(e,t)):void 0},m=function(){e.req.on("finish",l)};return!function(t){return t.setHeader&&"function"==typeof t.abort}(e)?s&&!e._writableState&&(e.on("end",h),e.on("close",h)):(e.on("complete",l),e.on("abort",p),e.req?m():e.on("request",m)),e.on("end",f),e.on("finish",l),!1!==i.error&&e.on("error",c),e.on("close",p),function(){e.removeListener("complete",l),e.removeListener("abort",p),e.removeListener("request",m),e.req&&e.req.removeListener("finish",l),e.removeListener("end",h),e.removeListener("close",h),e.removeListener("finish",l),e.removeListener("end",f),e.removeListener("error",c),e.removeListener("close",p)}}},function(t,e,i){"use strict";var r=i(9).Buffer,n=i(3),o=i(79),a=new Array(16),s=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],h=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],u=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],l=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],d=[0,1518500249,1859775393,2400959708,2840853838],f=[1352829926,1548603684,1836072691,2053994217,0];function c(){o.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}function p(t,e){return t<<e|t>>>32-e}function m(t,e,i,r,n,o,a,s){return p(t+(e^i^r)+o+a|0,s)+n|0}function g(t,e,i,r,n,o,a,s){return p(t+(e&i|~e&r)+o+a|0,s)+n|0}function v(t,e,i,r,n,o,a,s){return p(t+((e|~i)^r)+o+a|0,s)+n|0}function y(t,e,i,r,n,o,a,s){return p(t+(e&r|i&~r)+o+a|0,s)+n|0}function b(t,e,i,r,n,o,a,s){return p(t+(e^(i|~r))+o+a|0,s)+n|0}n(c,o),c.prototype._update=function(){for(var t=a,e=0;e<16;++e)t[e]=this._block.readInt32LE(4*e);for(var i=0|this._a,r=0|this._b,n=0|this._c,o=0|this._d,c=0|this._e,_=0|this._a,w=0|this._b,A=0|this._c,M=0|this._d,E=0|this._e,S=0;S<80;S+=1){var k,T;S<16?(k=m(i,r,n,o,c,t[s[S]],d[0],u[S]),T=b(_,w,A,M,E,t[h[S]],f[0],l[S])):S<32?(k=g(i,r,n,o,c,t[s[S]],d[1],u[S]),T=y(_,w,A,M,E,t[h[S]],f[1],l[S])):S<48?(k=v(i,r,n,o,c,t[s[S]],d[2],u[S]),T=v(_,w,A,M,E,t[h[S]],f[2],l[S])):S<64?(k=y(i,r,n,o,c,t[s[S]],d[3],u[S]),T=g(_,w,A,M,E,t[h[S]],f[3],l[S])):(k=b(i,r,n,o,c,t[s[S]],d[4],u[S]),T=m(_,w,A,M,E,t[h[S]],f[4],l[S])),i=c,c=o,o=p(n,10),n=r,r=k,_=E,E=M,M=p(A,10),A=w,w=T}var R=this._b+n+M|0;this._b=this._c+o+E|0,this._c=this._d+c+_|0,this._d=this._e+i+w|0,this._e=this._a+r+A|0,this._a=R},c.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=r.alloc?r.alloc(20):new r(20);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t.writeInt32LE(this._e,16),t},t.exports=c},function(t,e,i){(e=t.exports=function(t){t=t.toLowerCase();var i=e[t];if(!i)throw new Error(t+" is not supported (we accept pull requests)");return new i}).sha=i(157),e.sha1=i(158),e.sha224=i(159),e.sha256=i(86),e.sha384=i(160),e.sha512=i(87)},function(t,e,i){(e=t.exports=i(88)).Stream=e,e.Readable=e,e.Writable=i(59),e.Duplex=i(19),e.Transform=i(91),e.PassThrough=i(167)},function(t,e,i){var r=i(9),n=r.Buffer;function o(t,e){for(var i in t)e[i]=t[i]}function a(t,e,i){return n(t,e,i)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?t.exports=r:(o(r,e),e.Buffer=a),o(n,a),a.from=function(t,e,i){if("number"==typeof t)throw new TypeError("Argument must not be a number");return n(t,e,i)},a.alloc=function(t,e,i){if("number"!=typeof t)throw new TypeError("Argument must be a number");var r=n(t);return void 0!==e?"string"==typeof i?r.fill(e,i):r.fill(e):r.fill(0),r},a.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return n(t)},a.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return r.SlowBuffer(t)}},function(t,e,i){"use strict";(function(e,r,n){var o=i(42);function a(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,i){var r=t.entry;t.entry=null;for(;r;){var n=r.callback;e.pendingcb--,n(i),r=r.next}e.corkedRequestsFree?e.corkedRequestsFree.next=t:e.corkedRequestsFree=t}(e,t)}}t.exports=y;var s,h=!e.browser&&["v0.10","v0.9."].indexOf(e.version.slice(0,5))>-1?r:o.nextTick;y.WritableState=v;var u=Object.create(i(36));u.inherits=i(3);var l={deprecate:i(53)},d=i(89),f=i(58).Buffer,c=n.Uint8Array||function(){};var p,m=i(90);function g(){}function v(t,e){s=s||i(19),t=t||{};var r=e instanceof s;this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var n=t.highWaterMark,u=t.writableHighWaterMark,l=this.objectMode?16:16384;this.highWaterMark=n||0===n?n:r&&(u||0===u)?u:l,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var d=!1===t.decodeStrings;this.decodeStrings=!d,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var i=t._writableState,r=i.sync,n=i.writecb;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(i),e)!function(t,e,i,r,n){--e.pendingcb,i?(o.nextTick(n,r),o.nextTick(E,t,e),t._writableState.errorEmitted=!0,t.emit("error",r)):(n(r),t._writableState.errorEmitted=!0,t.emit("error",r),E(t,e))}(t,i,r,e,n);else{var a=A(i);a||i.corked||i.bufferProcessing||!i.bufferedRequest||w(t,i),r?h(_,t,i,a,n):_(t,i,a,n)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new a(this)}function y(t){if(s=s||i(19),!(p.call(y,this)||this instanceof s))return new y(t);this._writableState=new v(t,this),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),d.call(this)}function b(t,e,i,r,n,o,a){e.writelen=r,e.writecb=a,e.writing=!0,e.sync=!0,i?t._writev(n,e.onwrite):t._write(n,o,e.onwrite),e.sync=!1}function _(t,e,i,r){i||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}(t,e),e.pendingcb--,r(),E(t,e)}function w(t,e){e.bufferProcessing=!0;var i=e.bufferedRequest;if(t._writev&&i&&i.next){var r=e.bufferedRequestCount,n=new Array(r),o=e.corkedRequestsFree;o.entry=i;for(var s=0,h=!0;i;)n[s]=i,i.isBuf||(h=!1),i=i.next,s+=1;n.allBuffers=h,b(t,e,!0,e.length,n,"",o.finish),e.pendingcb++,e.lastBufferedRequest=null,o.next?(e.corkedRequestsFree=o.next,o.next=null):e.corkedRequestsFree=new a(e),e.bufferedRequestCount=0}else{for(;i;){var u=i.chunk,l=i.encoding,d=i.callback;if(b(t,e,!1,e.objectMode?1:u.length,u,l,d),i=i.next,e.bufferedRequestCount--,e.writing)break}null===i&&(e.lastBufferedRequest=null)}e.bufferedRequest=i,e.bufferProcessing=!1}function A(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function M(t,e){t._final((function(i){e.pendingcb--,i&&t.emit("error",i),e.prefinished=!0,t.emit("prefinish"),E(t,e)}))}function E(t,e){var i=A(e);return i&&(!function(t,e){e.prefinished||e.finalCalled||("function"==typeof t._final?(e.pendingcb++,e.finalCalled=!0,o.nextTick(M,t,e)):(e.prefinished=!0,t.emit("prefinish")))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"))),i}u.inherits(y,d),v.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(v.prototype,"buffer",{get:l.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(p=Function.prototype[Symbol.hasInstance],Object.defineProperty(y,Symbol.hasInstance,{value:function(t){return!!p.call(this,t)||this===y&&(t&&t._writableState instanceof v)}})):p=function(t){return t instanceof this},y.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},y.prototype.write=function(t,e,i){var r,n=this._writableState,a=!1,s=!n.objectMode&&(r=t,f.isBuffer(r)||r instanceof c);return s&&!f.isBuffer(t)&&(t=function(t){return f.from(t)}(t)),"function"==typeof e&&(i=e,e=null),s?e="buffer":e||(e=n.defaultEncoding),"function"!=typeof i&&(i=g),n.ended?function(t,e){var i=new Error("write after end");t.emit("error",i),o.nextTick(e,i)}(this,i):(s||function(t,e,i,r){var n=!0,a=!1;return null===i?a=new TypeError("May not write null values to stream"):"string"==typeof i||void 0===i||e.objectMode||(a=new TypeError("Invalid non-string/buffer chunk")),a&&(t.emit("error",a),o.nextTick(r,a),n=!1),n}(this,n,t,i))&&(n.pendingcb++,a=function(t,e,i,r,n,o){if(!i){var a=function(t,e,i){t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=f.from(e,i));return e}(e,r,n);r!==a&&(i=!0,n="buffer",r=a)}var s=e.objectMode?1:r.length;e.length+=s;var h=e.length<e.highWaterMark;h||(e.needDrain=!0);if(e.writing||e.corked){var u=e.lastBufferedRequest;e.lastBufferedRequest={chunk:r,encoding:n,isBuf:i,callback:o,next:null},u?u.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else b(t,e,!1,s,r,n,o);return h}(this,n,s,t,e,i)),a},y.prototype.cork=function(){this._writableState.corked++},y.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.finished||t.bufferProcessing||!t.bufferedRequest||w(this,t))},y.prototype.setDefaultEncoding=function(t){if("string"==typeof t&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(y.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),y.prototype._write=function(t,e,i){i(new Error("_write() is not implemented"))},y.prototype._writev=null,y.prototype.end=function(t,e,i){var r=this._writableState;"function"==typeof t?(i=t,t=null,e=null):"function"==typeof e&&(i=e,e=null),null!=t&&this.write(t,e),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||function(t,e,i){e.ending=!0,E(t,e),i&&(e.finished?o.nextTick(i):t.once("finish",i));e.ended=!0,t.writable=!1}(this,r,i)},Object.defineProperty(y.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),y.prototype.destroy=m.destroy,y.prototype._undestroy=m.undestroy,y.prototype._destroy=function(t,e){this.end(),e(t)}}).call(this,i(8),i(165).setImmediate,i(10))},function(t,e,i){"use strict";var r=i(13);function n(t){this.options=t,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0}t.exports=n,n.prototype._init=function(){},n.prototype.update=function(t){return 0===t.length?[]:"decrypt"===this.type?this._updateDecrypt(t):this._updateEncrypt(t)},n.prototype._buffer=function(t,e){for(var i=Math.min(this.buffer.length-this.bufferOff,t.length-e),r=0;r<i;r++)this.buffer[this.bufferOff+r]=t[e+r];return this.bufferOff+=i,i},n.prototype._flushBuffer=function(t,e){return this._update(this.buffer,0,t,e),this.bufferOff=0,this.blockSize},n.prototype._updateEncrypt=function(t){var e=0,i=0,r=(this.bufferOff+t.length)/this.blockSize|0,n=new Array(r*this.blockSize);0!==this.bufferOff&&(e+=this._buffer(t,e),this.bufferOff===this.buffer.length&&(i+=this._flushBuffer(n,i)));for(var o=t.length-(t.length-e)%this.blockSize;e<o;e+=this.blockSize)this._update(t,e,n,i),i+=this.blockSize;for(;e<t.length;e++,this.bufferOff++)this.buffer[this.bufferOff]=t[e];return n},n.prototype._updateDecrypt=function(t){for(var e=0,i=0,r=Math.ceil((this.bufferOff+t.length)/this.blockSize)-1,n=new Array(r*this.blockSize);r>0;r--)e+=this._buffer(t,e),i+=this._flushBuffer(n,i);return e+=this._buffer(t,e),n},n.prototype.final=function(t){var e,i;return t&&(e=this.update(t)),i="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),e?e.concat(i):i},n.prototype._pad=function(t,e){if(0===e)return!1;for(;e<t.length;)t[e++]=0;return!0},n.prototype._finalEncrypt=function(){if(!this._pad(this.buffer,this.bufferOff))return[];var t=new Array(this.blockSize);return this._update(this.buffer,0,t,0),t},n.prototype._unpad=function(t){return t},n.prototype._finalDecrypt=function(){r.equal(this.bufferOff,this.blockSize,"Not enough data to decrypt");var t=new Array(this.blockSize);return this._flushBuffer(t,0),this._unpad(t)}},function(t,e,i){var r=i(180),n=i(188),o=i(104);e.createCipher=e.Cipher=r.createCipher,e.createCipheriv=e.Cipheriv=r.createCipheriv,e.createDecipher=e.Decipher=n.createDecipher,e.createDecipheriv=e.Decipheriv=n.createDecipheriv,e.listCiphers=e.getCiphers=function(){return Object.keys(o)}},function(t,e,i){var r={ECB:i(181),CBC:i(182),CFB:i(183),CFB8:i(184),CFB1:i(185),OFB:i(186),CTR:i(102),GCM:i(102)},n=i(104);for(var o in n)n[o].module=r[n[o].mode];t.exports=n},function(t,e,i){var r;function n(t){this.rand=t}if(t.exports=function(t){return r||(r=new n(null)),r.generate(t)},t.exports.Rand=n,n.prototype.generate=function(t){return this._rand(t)},n.prototype._rand=function(t){if(this.rand.getBytes)return this.rand.getBytes(t);for(var e=new Uint8Array(t),i=0;i<e.length;i++)e[i]=this.rand.getByte();return e},"object"==typeof self)self.crypto&&self.crypto.getRandomValues?n.prototype._rand=function(t){var e=new Uint8Array(t);return self.crypto.getRandomValues(e),e}:self.msCrypto&&self.msCrypto.getRandomValues?n.prototype._rand=function(t){var e=new Uint8Array(t);return self.msCrypto.getRandomValues(e),e}:"object"==typeof window&&(n.prototype._rand=function(){throw new Error("Not implemented yet")});else try{var o=i(194);if("function"!=typeof o.randomBytes)throw new Error("Not supported");n.prototype._rand=function(t){return o.randomBytes(t)}}catch(t){}},function(t,e,i){"use strict";var r=i(29).codes.ERR_STREAM_PREMATURE_CLOSE;function n(){}t.exports=function t(e,i,o){if("function"==typeof i)return t(e,null,i);i||(i={}),o=function(t){var e=!1;return function(){if(!e){e=!0;for(var i=arguments.length,r=new Array(i),n=0;n<i;n++)r[n]=arguments[n];t.apply(this,r)}}}(o||n);var a=i.readable||!1!==i.readable&&e.readable,s=i.writable||!1!==i.writable&&e.writable,h=function(){e.writable||l()},u=e._writableState&&e._writableState.finished,l=function(){s=!1,u=!0,a||o.call(e)},d=e._readableState&&e._readableState.endEmitted,f=function(){a=!1,d=!0,s||o.call(e)},c=function(t){o.call(e,t)},p=function(){var t;return a&&!d?(e._readableState&&e._readableState.ended||(t=new r),o.call(e,t)):s&&!u?(e._writableState&&e._writableState.ended||(t=new r),o.call(e,t)):void 0},m=function(){e.req.on("finish",l)};return!function(t){return t.setHeader&&"function"==typeof t.abort}(e)?s&&!e._writableState&&(e.on("end",h),e.on("close",h)):(e.on("complete",l),e.on("abort",p),e.req?m():e.on("request",m)),e.on("end",f),e.on("finish",l),!1!==i.error&&e.on("error",c),e.on("close",p),function(){e.removeListener("complete",l),e.removeListener("abort",p),e.removeListener("request",m),e.req&&e.req.removeListener("finish",l),e.removeListener("end",h),e.removeListener("close",h),e.removeListener("finish",l),e.removeListener("end",f),e.removeListener("error",c),e.removeListener("close",p)}}},function(t,e,i){(function(e){var r=i(66),n=i(25);function o(t){var e,i=t.modulus.byteLength();do{e=new r(n(i))}while(e.cmp(t.modulus)>=0||!e.umod(t.prime1)||!e.umod(t.prime2));return e}function a(t,i){var n=function(t){var e=o(t);return{blinder:e.toRed(r.mont(t.modulus)).redPow(new r(t.publicExponent)).fromRed(),unblinder:e.invm(t.modulus)}}(i),a=i.modulus.byteLength(),s=new r(t).mul(n.blinder).umod(i.modulus),h=s.toRed(r.mont(i.prime1)),u=s.toRed(r.mont(i.prime2)),l=i.coefficient,d=i.prime1,f=i.prime2,c=h.redPow(i.exponent1).fromRed(),p=u.redPow(i.exponent2).fromRed(),m=c.isub(p).imul(l).umod(d).imul(f);return p.iadd(m).imul(n.unblinder).umod(i.modulus).toArrayLike(e,"be",a)}a.getr=o,t.exports=a}).call(this,i(9).Buffer)},function(t,e,i){(function(t){!function(t,e){"use strict";function r(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var i=function(){};i.prototype=e.prototype,t.prototype=new i,t.prototype.constructor=t}function o(t,e,i){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(i=e,e=10),this._init(t||0,e||10,i||"be"))}var a;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{a="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:i(207).Buffer}catch(t){}function s(t,e){var i=t.charCodeAt(e);return i>=48&&i<=57?i-48:i>=65&&i<=70?i-55:i>=97&&i<=102?i-87:void r(!1,"Invalid character in "+t)}function h(t,e,i){var r=s(t,i);return i-1>=e&&(r|=s(t,i-1)<<4),r}function u(t,e,i,n){for(var o=0,a=0,s=Math.min(t.length,i),h=e;h<s;h++){var u=t.charCodeAt(h)-48;o*=n,a=u>=49?u-49+10:u>=17?u-17+10:u,r(u>=0&&a<n,"Invalid character"),o+=a}return o}function l(t,e){t.words=e.words,t.length=e.length,t.negative=e.negative,t.red=e.red}if(o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,i){if("number"==typeof t)return this._initNumber(t,e,i);if("object"==typeof t)return this._initArray(t,e,i);"hex"===e&&(e=16),r(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n<t.length&&(16===e?this._parseHex(t,n,i):(this._parseBase(t,e,n),"le"===i&&this._initArray(this.toArray(),e,i)))},o.prototype._initNumber=function(t,e,i){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(r(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===i&&this._initArray(this.toArray(),e,i)},o.prototype._initArray=function(t,e,i){if(r("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var n=0;n<this.length;n++)this.words[n]=0;var o,a,s=0;if("be"===i)for(n=t.length-1,o=0;n>=0;n-=3)a=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=a<<s&67108863,this.words[o+1]=a>>>26-s&67108863,(s+=24)>=26&&(s-=26,o++);else if("le"===i)for(n=0,o=0;n<t.length;n+=3)a=t[n]|t[n+1]<<8|t[n+2]<<16,this.words[o]|=a<<s&67108863,this.words[o+1]=a>>>26-s&67108863,(s+=24)>=26&&(s-=26,o++);return this._strip()},o.prototype._parseHex=function(t,e,i){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r<this.length;r++)this.words[r]=0;var n,o=0,a=0;if("be"===i)for(r=t.length-1;r>=e;r-=2)n=h(t,e,r)<<o,this.words[a]|=67108863&n,o>=18?(o-=18,a+=1,this.words[a]|=n>>>26):o+=8;else for(r=(t.length-e)%2==0?e+1:e;r<t.length;r+=2)n=h(t,e,r)<<o,this.words[a]|=67108863&n,o>=18?(o-=18,a+=1,this.words[a]|=n>>>26):o+=8;this._strip()},o.prototype._parseBase=function(t,e,i){this.words=[0],this.length=1;for(var r=0,n=1;n<=67108863;n*=e)r++;r--,n=n/e|0;for(var o=t.length-i,a=o%r,s=Math.min(o,o-a)+i,h=0,l=i;l<s;l+=r)h=u(t,l,l+r,e),this.imuln(n),this.words[0]+h<67108864?this.words[0]+=h:this._iaddn(h);if(0!==a){var d=1;for(h=u(t,l,t.length,e),l=0;l<a;l++)d*=e;this.imuln(d),this.words[0]+h<67108864?this.words[0]+=h:this._iaddn(h)}this._strip()},o.prototype.copy=function(t){t.words=new Array(this.length);for(var e=0;e<this.length;e++)t.words[e]=this.words[e];t.length=this.length,t.negative=this.negative,t.red=this.red},o.prototype._move=function(t){l(t,this)},o.prototype.clone=function(){var t=new o(null);return this.copy(t),t},o.prototype._expand=function(t){for(;this.length<t;)this.words[this.length++]=0;return this},o.prototype._strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{o.prototype[Symbol.for("nodejs.util.inspect.custom")]=d}catch(t){o.prototype.inspect=d}else o.prototype.inspect=d;function d(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var f=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],c=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(t,e){var i;if(e=0|e||1,16===(t=t||10)||"hex"===t){i="";for(var n=0,o=0,a=0;a<this.length;a++){var s=this.words[a],h=(16777215&(s<<n|o)).toString(16);i=0!==(o=s>>>24-n&16777215)||a!==this.length-1?f[6-h.length]+h+i:h+i,(n+=2)>=26&&(n-=26,a--)}for(0!==o&&(i=o.toString(16)+i);i.length%e!=0;)i="0"+i;return 0!==this.negative&&(i="-"+i),i}if(t===(0|t)&&t>=2&&t<=36){var u=c[t],l=p[t];i="";var d=this.clone();for(d.negative=0;!d.isZero();){var m=d.modrn(l).toString(t);i=(d=d.idivn(l)).isZero()?m+i:f[u-m.length]+m+i}for(this.isZero()&&(i="0"+i);i.length%e!=0;)i="0"+i;return 0!==this.negative&&(i="-"+i),i}r(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16,2)},a&&(o.prototype.toBuffer=function(t,e){return this.toArrayLike(a,t,e)}),o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)};function m(t,e,i){i.negative=e.negative^t.negative;var r=t.length+e.length|0;i.length=r,r=r-1|0;var n=0|t.words[0],o=0|e.words[0],a=n*o,s=67108863&a,h=a/67108864|0;i.words[0]=s;for(var u=1;u<r;u++){for(var l=h>>>26,d=67108863&h,f=Math.min(u,e.length-1),c=Math.max(0,u-t.length+1);c<=f;c++){var p=u-c|0;l+=(a=(n=0|t.words[p])*(o=0|e.words[c])+d)/67108864|0,d=67108863&a}i.words[u]=0|d,h=0|l}return 0!==h?i.words[u]=0|h:i.length--,i._strip()}o.prototype.toArrayLike=function(t,e,i){this._strip();var n=this.byteLength(),o=i||Math.max(1,n);r(n<=o,"byte array longer than desired length"),r(o>0,"Requested array length <= 0");var a=function(t,e){return t.allocUnsafe?t.allocUnsafe(e):new t(e)}(t,o);return this["_toArrayLike"+("le"===e?"LE":"BE")](a,n),a},o.prototype._toArrayLikeLE=function(t,e){for(var i=0,r=0,n=0,o=0;n<this.length;n++){var a=this.words[n]<<o|r;t[i++]=255&a,i<t.length&&(t[i++]=a>>8&255),i<t.length&&(t[i++]=a>>16&255),6===o?(i<t.length&&(t[i++]=a>>24&255),r=0,o=0):(r=a>>>24,o+=2)}if(i<t.length)for(t[i++]=r;i<t.length;)t[i++]=0},o.prototype._toArrayLikeBE=function(t,e){for(var i=t.length-1,r=0,n=0,o=0;n<this.length;n++){var a=this.words[n]<<o|r;t[i--]=255&a,i>=0&&(t[i--]=a>>8&255),i>=0&&(t[i--]=a>>16&255),6===o?(i>=0&&(t[i--]=a>>24&255),r=0,o=0):(r=a>>>24,o+=2)}if(i>=0)for(t[i--]=r;i>=0;)t[i--]=0},Math.clz32?o.prototype._countBits=function(t){return 32-Math.clz32(t)}:o.prototype._countBits=function(t){var e=t,i=0;return e>=4096&&(i+=13,e>>>=13),e>=64&&(i+=7,e>>>=7),e>=8&&(i+=4,e>>>=4),e>=2&&(i+=2,e>>>=2),i+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,i=0;return 0==(8191&e)&&(i+=13,e>>>=13),0==(127&e)&&(i+=7,e>>>=7),0==(15&e)&&(i+=4,e>>>=4),0==(3&e)&&(i+=2,e>>>=2),0==(1&e)&&i++,i},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;e<this.length;e++){var i=this._zeroBits(this.words[e]);if(t+=i,26!==i)break}return t},o.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},o.prototype.toTwos=function(t){return 0!==this.negative?this.abs().inotn(t).iaddn(1):this.clone()},o.prototype.fromTwos=function(t){return this.testn(t-1)?this.notn(t).iaddn(1).ineg():this.clone()},o.prototype.isNeg=function(){return 0!==this.negative},o.prototype.neg=function(){return this.clone().ineg()},o.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},o.prototype.iuor=function(t){for(;this.length<t.length;)this.words[this.length++]=0;for(var e=0;e<t.length;e++)this.words[e]=this.words[e]|t.words[e];return this._strip()},o.prototype.ior=function(t){return r(0==(this.negative|t.negative)),this.iuor(t)},o.prototype.or=function(t){return this.length>t.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var i=0;i<e.length;i++)this.words[i]=this.words[i]&t.words[i];return this.length=e.length,this._strip()},o.prototype.iand=function(t){return r(0==(this.negative|t.negative)),this.iuand(t)},o.prototype.and=function(t){return this.length>t.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,i;this.length>t.length?(e=this,i=t):(e=t,i=this);for(var r=0;r<i.length;r++)this.words[r]=e.words[r]^i.words[r];if(this!==e)for(;r<e.length;r++)this.words[r]=e.words[r];return this.length=e.length,this._strip()},o.prototype.ixor=function(t){return r(0==(this.negative|t.negative)),this.iuxor(t)},o.prototype.xor=function(t){return this.length>t.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){r("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),i=t%26;this._expand(e),i>0&&e--;for(var n=0;n<e;n++)this.words[n]=67108863&~this.words[n];return i>0&&(this.words[n]=~this.words[n]&67108863>>26-i),this._strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){r("number"==typeof t&&t>=0);var i=t/26|0,n=t%26;return this._expand(i+1),this.words[i]=e?this.words[i]|1<<n:this.words[i]&~(1<<n),this._strip()},o.prototype.iadd=function(t){var e,i,r;if(0!==this.negative&&0===t.negative)return this.negative=0,e=this.isub(t),this.negative^=1,this._normSign();if(0===this.negative&&0!==t.negative)return t.negative=0,e=this.isub(t),t.negative=1,e._normSign();this.length>t.length?(i=this,r=t):(i=t,r=this);for(var n=0,o=0;o<r.length;o++)e=(0|i.words[o])+(0|r.words[o])+n,this.words[o]=67108863&e,n=e>>>26;for(;0!==n&&o<i.length;o++)e=(0|i.words[o])+n,this.words[o]=67108863&e,n=e>>>26;if(this.length=i.length,0!==n)this.words[this.length]=n,this.length++;else if(i!==this)for(;o<i.length;o++)this.words[o]=i.words[o];return this},o.prototype.add=function(t){var e;return 0!==t.negative&&0===this.negative?(t.negative=0,e=this.sub(t),t.negative^=1,e):0===t.negative&&0!==this.negative?(this.negative=0,e=t.sub(this),this.negative=1,e):this.length>t.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var i,r,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(i=this,r=t):(i=t,r=this);for(var o=0,a=0;a<r.length;a++)o=(e=(0|i.words[a])-(0|r.words[a])+o)>>26,this.words[a]=67108863&e;for(;0!==o&&a<i.length;a++)o=(e=(0|i.words[a])+o)>>26,this.words[a]=67108863&e;if(0===o&&a<i.length&&i!==this)for(;a<i.length;a++)this.words[a]=i.words[a];return this.length=Math.max(this.length,a),i!==this&&(this.negative=1),this._strip()},o.prototype.sub=function(t){return this.clone().isub(t)};var g=function(t,e,i){var r,n,o,a=t.words,s=e.words,h=i.words,u=0,l=0|a[0],d=8191&l,f=l>>>13,c=0|a[1],p=8191&c,m=c>>>13,g=0|a[2],v=8191&g,y=g>>>13,b=0|a[3],_=8191&b,w=b>>>13,A=0|a[4],M=8191&A,E=A>>>13,S=0|a[5],k=8191&S,T=S>>>13,R=0|a[6],I=8191&R,C=R>>>13,P=0|a[7],x=8191&P,D=P>>>13,O=0|a[8],B=8191&O,L=O>>>13,W=0|a[9],N=8191&W,F=W>>>13,U=0|s[0],j=8191&U,V=U>>>13,H=0|s[1],z=8191&H,G=H>>>13,q=0|s[2],X=8191&q,Z=q>>>13,K=0|s[3],Q=8191&K,Y=K>>>13,J=0|s[4],$=8191&J,tt=J>>>13,et=0|s[5],it=8191&et,rt=et>>>13,nt=0|s[6],ot=8191&nt,at=nt>>>13,st=0|s[7],ht=8191&st,ut=st>>>13,lt=0|s[8],dt=8191<,ft=lt>>>13,ct=0|s[9],pt=8191&ct,mt=ct>>>13;i.negative=t.negative^e.negative,i.length=19;var gt=(u+(r=Math.imul(d,j))|0)+((8191&(n=(n=Math.imul(d,V))+Math.imul(f,j)|0))<<13)|0;u=((o=Math.imul(f,V))+(n>>>13)|0)+(gt>>>26)|0,gt&=67108863,r=Math.imul(p,j),n=(n=Math.imul(p,V))+Math.imul(m,j)|0,o=Math.imul(m,V);var vt=(u+(r=r+Math.imul(d,z)|0)|0)+((8191&(n=(n=n+Math.imul(d,G)|0)+Math.imul(f,z)|0))<<13)|0;u=((o=o+Math.imul(f,G)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,r=Math.imul(v,j),n=(n=Math.imul(v,V))+Math.imul(y,j)|0,o=Math.imul(y,V),r=r+Math.imul(p,z)|0,n=(n=n+Math.imul(p,G)|0)+Math.imul(m,z)|0,o=o+Math.imul(m,G)|0;var yt=(u+(r=r+Math.imul(d,X)|0)|0)+((8191&(n=(n=n+Math.imul(d,Z)|0)+Math.imul(f,X)|0))<<13)|0;u=((o=o+Math.imul(f,Z)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,r=Math.imul(_,j),n=(n=Math.imul(_,V))+Math.imul(w,j)|0,o=Math.imul(w,V),r=r+Math.imul(v,z)|0,n=(n=n+Math.imul(v,G)|0)+Math.imul(y,z)|0,o=o+Math.imul(y,G)|0,r=r+Math.imul(p,X)|0,n=(n=n+Math.imul(p,Z)|0)+Math.imul(m,X)|0,o=o+Math.imul(m,Z)|0;var bt=(u+(r=r+Math.imul(d,Q)|0)|0)+((8191&(n=(n=n+Math.imul(d,Y)|0)+Math.imul(f,Q)|0))<<13)|0;u=((o=o+Math.imul(f,Y)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,r=Math.imul(M,j),n=(n=Math.imul(M,V))+Math.imul(E,j)|0,o=Math.imul(E,V),r=r+Math.imul(_,z)|0,n=(n=n+Math.imul(_,G)|0)+Math.imul(w,z)|0,o=o+Math.imul(w,G)|0,r=r+Math.imul(v,X)|0,n=(n=n+Math.imul(v,Z)|0)+Math.imul(y,X)|0,o=o+Math.imul(y,Z)|0,r=r+Math.imul(p,Q)|0,n=(n=n+Math.imul(p,Y)|0)+Math.imul(m,Q)|0,o=o+Math.imul(m,Y)|0;var _t=(u+(r=r+Math.imul(d,$)|0)|0)+((8191&(n=(n=n+Math.imul(d,tt)|0)+Math.imul(f,$)|0))<<13)|0;u=((o=o+Math.imul(f,tt)|0)+(n>>>13)|0)+(_t>>>26)|0,_t&=67108863,r=Math.imul(k,j),n=(n=Math.imul(k,V))+Math.imul(T,j)|0,o=Math.imul(T,V),r=r+Math.imul(M,z)|0,n=(n=n+Math.imul(M,G)|0)+Math.imul(E,z)|0,o=o+Math.imul(E,G)|0,r=r+Math.imul(_,X)|0,n=(n=n+Math.imul(_,Z)|0)+Math.imul(w,X)|0,o=o+Math.imul(w,Z)|0,r=r+Math.imul(v,Q)|0,n=(n=n+Math.imul(v,Y)|0)+Math.imul(y,Q)|0,o=o+Math.imul(y,Y)|0,r=r+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,$)|0,o=o+Math.imul(m,tt)|0;var wt=(u+(r=r+Math.imul(d,it)|0)|0)+((8191&(n=(n=n+Math.imul(d,rt)|0)+Math.imul(f,it)|0))<<13)|0;u=((o=o+Math.imul(f,rt)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,r=Math.imul(I,j),n=(n=Math.imul(I,V))+Math.imul(C,j)|0,o=Math.imul(C,V),r=r+Math.imul(k,z)|0,n=(n=n+Math.imul(k,G)|0)+Math.imul(T,z)|0,o=o+Math.imul(T,G)|0,r=r+Math.imul(M,X)|0,n=(n=n+Math.imul(M,Z)|0)+Math.imul(E,X)|0,o=o+Math.imul(E,Z)|0,r=r+Math.imul(_,Q)|0,n=(n=n+Math.imul(_,Y)|0)+Math.imul(w,Q)|0,o=o+Math.imul(w,Y)|0,r=r+Math.imul(v,$)|0,n=(n=n+Math.imul(v,tt)|0)+Math.imul(y,$)|0,o=o+Math.imul(y,tt)|0,r=r+Math.imul(p,it)|0,n=(n=n+Math.imul(p,rt)|0)+Math.imul(m,it)|0,o=o+Math.imul(m,rt)|0;var At=(u+(r=r+Math.imul(d,ot)|0)|0)+((8191&(n=(n=n+Math.imul(d,at)|0)+Math.imul(f,ot)|0))<<13)|0;u=((o=o+Math.imul(f,at)|0)+(n>>>13)|0)+(At>>>26)|0,At&=67108863,r=Math.imul(x,j),n=(n=Math.imul(x,V))+Math.imul(D,j)|0,o=Math.imul(D,V),r=r+Math.imul(I,z)|0,n=(n=n+Math.imul(I,G)|0)+Math.imul(C,z)|0,o=o+Math.imul(C,G)|0,r=r+Math.imul(k,X)|0,n=(n=n+Math.imul(k,Z)|0)+Math.imul(T,X)|0,o=o+Math.imul(T,Z)|0,r=r+Math.imul(M,Q)|0,n=(n=n+Math.imul(M,Y)|0)+Math.imul(E,Q)|0,o=o+Math.imul(E,Y)|0,r=r+Math.imul(_,$)|0,n=(n=n+Math.imul(_,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,r=r+Math.imul(v,it)|0,n=(n=n+Math.imul(v,rt)|0)+Math.imul(y,it)|0,o=o+Math.imul(y,rt)|0,r=r+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,at)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,at)|0;var Mt=(u+(r=r+Math.imul(d,ht)|0)|0)+((8191&(n=(n=n+Math.imul(d,ut)|0)+Math.imul(f,ht)|0))<<13)|0;u=((o=o+Math.imul(f,ut)|0)+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,r=Math.imul(B,j),n=(n=Math.imul(B,V))+Math.imul(L,j)|0,o=Math.imul(L,V),r=r+Math.imul(x,z)|0,n=(n=n+Math.imul(x,G)|0)+Math.imul(D,z)|0,o=o+Math.imul(D,G)|0,r=r+Math.imul(I,X)|0,n=(n=n+Math.imul(I,Z)|0)+Math.imul(C,X)|0,o=o+Math.imul(C,Z)|0,r=r+Math.imul(k,Q)|0,n=(n=n+Math.imul(k,Y)|0)+Math.imul(T,Q)|0,o=o+Math.imul(T,Y)|0,r=r+Math.imul(M,$)|0,n=(n=n+Math.imul(M,tt)|0)+Math.imul(E,$)|0,o=o+Math.imul(E,tt)|0,r=r+Math.imul(_,it)|0,n=(n=n+Math.imul(_,rt)|0)+Math.imul(w,it)|0,o=o+Math.imul(w,rt)|0,r=r+Math.imul(v,ot)|0,n=(n=n+Math.imul(v,at)|0)+Math.imul(y,ot)|0,o=o+Math.imul(y,at)|0,r=r+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0;var Et=(u+(r=r+Math.imul(d,dt)|0)|0)+((8191&(n=(n=n+Math.imul(d,ft)|0)+Math.imul(f,dt)|0))<<13)|0;u=((o=o+Math.imul(f,ft)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,r=Math.imul(N,j),n=(n=Math.imul(N,V))+Math.imul(F,j)|0,o=Math.imul(F,V),r=r+Math.imul(B,z)|0,n=(n=n+Math.imul(B,G)|0)+Math.imul(L,z)|0,o=o+Math.imul(L,G)|0,r=r+Math.imul(x,X)|0,n=(n=n+Math.imul(x,Z)|0)+Math.imul(D,X)|0,o=o+Math.imul(D,Z)|0,r=r+Math.imul(I,Q)|0,n=(n=n+Math.imul(I,Y)|0)+Math.imul(C,Q)|0,o=o+Math.imul(C,Y)|0,r=r+Math.imul(k,$)|0,n=(n=n+Math.imul(k,tt)|0)+Math.imul(T,$)|0,o=o+Math.imul(T,tt)|0,r=r+Math.imul(M,it)|0,n=(n=n+Math.imul(M,rt)|0)+Math.imul(E,it)|0,o=o+Math.imul(E,rt)|0,r=r+Math.imul(_,ot)|0,n=(n=n+Math.imul(_,at)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,at)|0,r=r+Math.imul(v,ht)|0,n=(n=n+Math.imul(v,ut)|0)+Math.imul(y,ht)|0,o=o+Math.imul(y,ut)|0,r=r+Math.imul(p,dt)|0,n=(n=n+Math.imul(p,ft)|0)+Math.imul(m,dt)|0,o=o+Math.imul(m,ft)|0;var St=(u+(r=r+Math.imul(d,pt)|0)|0)+((8191&(n=(n=n+Math.imul(d,mt)|0)+Math.imul(f,pt)|0))<<13)|0;u=((o=o+Math.imul(f,mt)|0)+(n>>>13)|0)+(St>>>26)|0,St&=67108863,r=Math.imul(N,z),n=(n=Math.imul(N,G))+Math.imul(F,z)|0,o=Math.imul(F,G),r=r+Math.imul(B,X)|0,n=(n=n+Math.imul(B,Z)|0)+Math.imul(L,X)|0,o=o+Math.imul(L,Z)|0,r=r+Math.imul(x,Q)|0,n=(n=n+Math.imul(x,Y)|0)+Math.imul(D,Q)|0,o=o+Math.imul(D,Y)|0,r=r+Math.imul(I,$)|0,n=(n=n+Math.imul(I,tt)|0)+Math.imul(C,$)|0,o=o+Math.imul(C,tt)|0,r=r+Math.imul(k,it)|0,n=(n=n+Math.imul(k,rt)|0)+Math.imul(T,it)|0,o=o+Math.imul(T,rt)|0,r=r+Math.imul(M,ot)|0,n=(n=n+Math.imul(M,at)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,at)|0,r=r+Math.imul(_,ht)|0,n=(n=n+Math.imul(_,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,r=r+Math.imul(v,dt)|0,n=(n=n+Math.imul(v,ft)|0)+Math.imul(y,dt)|0,o=o+Math.imul(y,ft)|0;var kt=(u+(r=r+Math.imul(p,pt)|0)|0)+((8191&(n=(n=n+Math.imul(p,mt)|0)+Math.imul(m,pt)|0))<<13)|0;u=((o=o+Math.imul(m,mt)|0)+(n>>>13)|0)+(kt>>>26)|0,kt&=67108863,r=Math.imul(N,X),n=(n=Math.imul(N,Z))+Math.imul(F,X)|0,o=Math.imul(F,Z),r=r+Math.imul(B,Q)|0,n=(n=n+Math.imul(B,Y)|0)+Math.imul(L,Q)|0,o=o+Math.imul(L,Y)|0,r=r+Math.imul(x,$)|0,n=(n=n+Math.imul(x,tt)|0)+Math.imul(D,$)|0,o=o+Math.imul(D,tt)|0,r=r+Math.imul(I,it)|0,n=(n=n+Math.imul(I,rt)|0)+Math.imul(C,it)|0,o=o+Math.imul(C,rt)|0,r=r+Math.imul(k,ot)|0,n=(n=n+Math.imul(k,at)|0)+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,r=r+Math.imul(M,ht)|0,n=(n=n+Math.imul(M,ut)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,ut)|0,r=r+Math.imul(_,dt)|0,n=(n=n+Math.imul(_,ft)|0)+Math.imul(w,dt)|0,o=o+Math.imul(w,ft)|0;var Tt=(u+(r=r+Math.imul(v,pt)|0)|0)+((8191&(n=(n=n+Math.imul(v,mt)|0)+Math.imul(y,pt)|0))<<13)|0;u=((o=o+Math.imul(y,mt)|0)+(n>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,r=Math.imul(N,Q),n=(n=Math.imul(N,Y))+Math.imul(F,Q)|0,o=Math.imul(F,Y),r=r+Math.imul(B,$)|0,n=(n=n+Math.imul(B,tt)|0)+Math.imul(L,$)|0,o=o+Math.imul(L,tt)|0,r=r+Math.imul(x,it)|0,n=(n=n+Math.imul(x,rt)|0)+Math.imul(D,it)|0,o=o+Math.imul(D,rt)|0,r=r+Math.imul(I,ot)|0,n=(n=n+Math.imul(I,at)|0)+Math.imul(C,ot)|0,o=o+Math.imul(C,at)|0,r=r+Math.imul(k,ht)|0,n=(n=n+Math.imul(k,ut)|0)+Math.imul(T,ht)|0,o=o+Math.imul(T,ut)|0,r=r+Math.imul(M,dt)|0,n=(n=n+Math.imul(M,ft)|0)+Math.imul(E,dt)|0,o=o+Math.imul(E,ft)|0;var Rt=(u+(r=r+Math.imul(_,pt)|0)|0)+((8191&(n=(n=n+Math.imul(_,mt)|0)+Math.imul(w,pt)|0))<<13)|0;u=((o=o+Math.imul(w,mt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,r=Math.imul(N,$),n=(n=Math.imul(N,tt))+Math.imul(F,$)|0,o=Math.imul(F,tt),r=r+Math.imul(B,it)|0,n=(n=n+Math.imul(B,rt)|0)+Math.imul(L,it)|0,o=o+Math.imul(L,rt)|0,r=r+Math.imul(x,ot)|0,n=(n=n+Math.imul(x,at)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,at)|0,r=r+Math.imul(I,ht)|0,n=(n=n+Math.imul(I,ut)|0)+Math.imul(C,ht)|0,o=o+Math.imul(C,ut)|0,r=r+Math.imul(k,dt)|0,n=(n=n+Math.imul(k,ft)|0)+Math.imul(T,dt)|0,o=o+Math.imul(T,ft)|0;var It=(u+(r=r+Math.imul(M,pt)|0)|0)+((8191&(n=(n=n+Math.imul(M,mt)|0)+Math.imul(E,pt)|0))<<13)|0;u=((o=o+Math.imul(E,mt)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,r=Math.imul(N,it),n=(n=Math.imul(N,rt))+Math.imul(F,it)|0,o=Math.imul(F,rt),r=r+Math.imul(B,ot)|0,n=(n=n+Math.imul(B,at)|0)+Math.imul(L,ot)|0,o=o+Math.imul(L,at)|0,r=r+Math.imul(x,ht)|0,n=(n=n+Math.imul(x,ut)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,ut)|0,r=r+Math.imul(I,dt)|0,n=(n=n+Math.imul(I,ft)|0)+Math.imul(C,dt)|0,o=o+Math.imul(C,ft)|0;var Ct=(u+(r=r+Math.imul(k,pt)|0)|0)+((8191&(n=(n=n+Math.imul(k,mt)|0)+Math.imul(T,pt)|0))<<13)|0;u=((o=o+Math.imul(T,mt)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,r=Math.imul(N,ot),n=(n=Math.imul(N,at))+Math.imul(F,ot)|0,o=Math.imul(F,at),r=r+Math.imul(B,ht)|0,n=(n=n+Math.imul(B,ut)|0)+Math.imul(L,ht)|0,o=o+Math.imul(L,ut)|0,r=r+Math.imul(x,dt)|0,n=(n=n+Math.imul(x,ft)|0)+Math.imul(D,dt)|0,o=o+Math.imul(D,ft)|0;var Pt=(u+(r=r+Math.imul(I,pt)|0)|0)+((8191&(n=(n=n+Math.imul(I,mt)|0)+Math.imul(C,pt)|0))<<13)|0;u=((o=o+Math.imul(C,mt)|0)+(n>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,r=Math.imul(N,ht),n=(n=Math.imul(N,ut))+Math.imul(F,ht)|0,o=Math.imul(F,ut),r=r+Math.imul(B,dt)|0,n=(n=n+Math.imul(B,ft)|0)+Math.imul(L,dt)|0,o=o+Math.imul(L,ft)|0;var xt=(u+(r=r+Math.imul(x,pt)|0)|0)+((8191&(n=(n=n+Math.imul(x,mt)|0)+Math.imul(D,pt)|0))<<13)|0;u=((o=o+Math.imul(D,mt)|0)+(n>>>13)|0)+(xt>>>26)|0,xt&=67108863,r=Math.imul(N,dt),n=(n=Math.imul(N,ft))+Math.imul(F,dt)|0,o=Math.imul(F,ft);var Dt=(u+(r=r+Math.imul(B,pt)|0)|0)+((8191&(n=(n=n+Math.imul(B,mt)|0)+Math.imul(L,pt)|0))<<13)|0;u=((o=o+Math.imul(L,mt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863;var Ot=(u+(r=Math.imul(N,pt))|0)+((8191&(n=(n=Math.imul(N,mt))+Math.imul(F,pt)|0))<<13)|0;return u=((o=Math.imul(F,mt))+(n>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,h[0]=gt,h[1]=vt,h[2]=yt,h[3]=bt,h[4]=_t,h[5]=wt,h[6]=At,h[7]=Mt,h[8]=Et,h[9]=St,h[10]=kt,h[11]=Tt,h[12]=Rt,h[13]=It,h[14]=Ct,h[15]=Pt,h[16]=xt,h[17]=Dt,h[18]=Ot,0!==u&&(h[19]=u,i.length++),i};function v(t,e,i){i.negative=e.negative^t.negative,i.length=t.length+e.length;for(var r=0,n=0,o=0;o<i.length-1;o++){var a=n;n=0;for(var s=67108863&r,h=Math.min(o,e.length-1),u=Math.max(0,o-t.length+1);u<=h;u++){var l=o-u,d=(0|t.words[l])*(0|e.words[u]),f=67108863&d;s=67108863&(f=f+s|0),n+=(a=(a=a+(d/67108864|0)|0)+(f>>>26)|0)>>>26,a&=67108863}i.words[o]=s,r=a,a=n}return 0!==r?i.words[o]=r:i.length--,i._strip()}function y(t,e,i){return v(t,e,i)}function b(t,e){this.x=t,this.y=e}Math.imul||(g=m),o.prototype.mulTo=function(t,e){var i=this.length+t.length;return 10===this.length&&10===t.length?g(this,t,e):i<63?m(this,t,e):i<1024?v(this,t,e):y(this,t,e)},b.prototype.makeRBT=function(t){for(var e=new Array(t),i=o.prototype._countBits(t)-1,r=0;r<t;r++)e[r]=this.revBin(r,i,t);return e},b.prototype.revBin=function(t,e,i){if(0===t||t===i-1)return t;for(var r=0,n=0;n<e;n++)r|=(1&t)<<e-n-1,t>>=1;return r},b.prototype.permute=function(t,e,i,r,n,o){for(var a=0;a<o;a++)r[a]=e[t[a]],n[a]=i[t[a]]},b.prototype.transform=function(t,e,i,r,n,o){this.permute(o,t,e,i,r,n);for(var a=1;a<n;a<<=1)for(var s=a<<1,h=Math.cos(2*Math.PI/s),u=Math.sin(2*Math.PI/s),l=0;l<n;l+=s)for(var d=h,f=u,c=0;c<a;c++){var p=i[l+c],m=r[l+c],g=i[l+c+a],v=r[l+c+a],y=d*g-f*v;v=d*v+f*g,g=y,i[l+c]=p+g,r[l+c]=m+v,i[l+c+a]=p-g,r[l+c+a]=m-v,c!==s&&(y=h*d-u*f,f=h*f+u*d,d=y)}},b.prototype.guessLen13b=function(t,e){var i=1|Math.max(e,t),r=1&i,n=0;for(i=i/2|0;i;i>>>=1)n++;return 1<<n+1+r},b.prototype.conjugate=function(t,e,i){if(!(i<=1))for(var r=0;r<i/2;r++){var n=t[r];t[r]=t[i-r-1],t[i-r-1]=n,n=e[r],e[r]=-e[i-r-1],e[i-r-1]=-n}},b.prototype.normalize13b=function(t,e){for(var i=0,r=0;r<e/2;r++){var n=8192*Math.round(t[2*r+1]/e)+Math.round(t[2*r]/e)+i;t[r]=67108863&n,i=n<67108864?0:n/67108864|0}return t},b.prototype.convert13b=function(t,e,i,n){for(var o=0,a=0;a<e;a++)o+=0|t[a],i[2*a]=8191&o,o>>>=13,i[2*a+1]=8191&o,o>>>=13;for(a=2*e;a<n;++a)i[a]=0;r(0===o),r(0==(-8192&o))},b.prototype.stub=function(t){for(var e=new Array(t),i=0;i<t;i++)e[i]=0;return e},b.prototype.mulp=function(t,e,i){var r=2*this.guessLen13b(t.length,e.length),n=this.makeRBT(r),o=this.stub(r),a=new Array(r),s=new Array(r),h=new Array(r),u=new Array(r),l=new Array(r),d=new Array(r),f=i.words;f.length=r,this.convert13b(t.words,t.length,a,r),this.convert13b(e.words,e.length,u,r),this.transform(a,o,s,h,r,n),this.transform(u,o,l,d,r,n);for(var c=0;c<r;c++){var p=s[c]*l[c]-h[c]*d[c];h[c]=s[c]*d[c]+h[c]*l[c],s[c]=p}return this.conjugate(s,h,r),this.transform(s,h,f,o,r,n),this.conjugate(f,o,r),this.normalize13b(f,r),i.negative=t.negative^e.negative,i.length=t.length+e.length,i._strip()},o.prototype.mul=function(t){var e=new o(null);return e.words=new Array(this.length+t.length),this.mulTo(t,e)},o.prototype.mulf=function(t){var e=new o(null);return e.words=new Array(this.length+t.length),y(this,t,e)},o.prototype.imul=function(t){return this.clone().mulTo(t,this)},o.prototype.imuln=function(t){var e=t<0;e&&(t=-t),r("number"==typeof t),r(t<67108864);for(var i=0,n=0;n<this.length;n++){var o=(0|this.words[n])*t,a=(67108863&o)+(67108863&i);i>>=26,i+=o/67108864|0,i+=a>>>26,this.words[n]=67108863&a}return 0!==i&&(this.words[n]=i,this.length++),e?this.ineg():this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),i=0;i<e.length;i++){var r=i/26|0,n=i%26;e[i]=t.words[r]>>>n&1}return e}(t);if(0===e.length)return new o(1);for(var i=this,r=0;r<e.length&&0===e[r];r++,i=i.sqr());if(++r<e.length)for(var n=i.sqr();r<e.length;r++,n=n.sqr())0!==e[r]&&(i=i.mul(n));return i},o.prototype.iushln=function(t){r("number"==typeof t&&t>=0);var e,i=t%26,n=(t-i)/26,o=67108863>>>26-i<<26-i;if(0!==i){var a=0;for(e=0;e<this.length;e++){var s=this.words[e]&o,h=(0|this.words[e])-s<<i;this.words[e]=h|a,a=s>>>26-i}a&&(this.words[e]=a,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e<n;e++)this.words[e]=0;this.length+=n}return this._strip()},o.prototype.ishln=function(t){return r(0===this.negative),this.iushln(t)},o.prototype.iushrn=function(t,e,i){var n;r("number"==typeof t&&t>=0),n=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),s=67108863^67108863>>>o<<o,h=i;if(n-=a,n=Math.max(0,n),h){for(var u=0;u<a;u++)h.words[u]=this.words[u];h.length=a}if(0===a);else if(this.length>a)for(this.length-=a,u=0;u<this.length;u++)this.words[u]=this.words[u+a];else this.words[0]=0,this.length=1;var l=0;for(u=this.length-1;u>=0&&(0!==l||u>=n);u--){var d=0|this.words[u];this.words[u]=l<<26-o|d>>>o,l=d&s}return h&&0!==l&&(h.words[h.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},o.prototype.ishrn=function(t,e,i){return r(0===this.negative),this.iushrn(t,e,i)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){r("number"==typeof t&&t>=0);var e=t%26,i=(t-e)/26,n=1<<e;return!(this.length<=i)&&!!(this.words[i]&n)},o.prototype.imaskn=function(t){r("number"==typeof t&&t>=0);var e=t%26,i=(t-e)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=i)return this;if(0!==e&&i++,this.length=Math.min(i,this.length),0!==e){var n=67108863^67108863>>>e<<e;this.words[this.length-1]&=n}return this._strip()},o.prototype.maskn=function(t){return this.clone().imaskn(t)},o.prototype.iaddn=function(t){return r("number"==typeof t),r(t<67108864),t<0?this.isubn(-t):0!==this.negative?1===this.length&&(0|this.words[0])<=t?(this.words[0]=t-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(t),this.negative=1,this):this._iaddn(t)},o.prototype._iaddn=function(t){this.words[0]+=t;for(var e=0;e<this.length&&this.words[e]>=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(r("number"==typeof t),r(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e<this.length&&this.words[e]<0;e++)this.words[e]+=67108864,this.words[e+1]-=1;return this._strip()},o.prototype.addn=function(t){return this.clone().iaddn(t)},o.prototype.subn=function(t){return this.clone().isubn(t)},o.prototype.iabs=function(){return this.negative=0,this},o.prototype.abs=function(){return this.clone().iabs()},o.prototype._ishlnsubmul=function(t,e,i){var n,o,a=t.length+i;this._expand(a);var s=0;for(n=0;n<t.length;n++){o=(0|this.words[n+i])+s;var h=(0|t.words[n])*e;s=((o-=67108863&h)>>26)-(h/67108864|0),this.words[n+i]=67108863&o}for(;n<this.length-i;n++)s=(o=(0|this.words[n+i])+s)>>26,this.words[n+i]=67108863&o;if(0===s)return this._strip();for(r(-1===s),s=0,n=0;n<this.length;n++)s=(o=-(0|this.words[n])+s)>>26,this.words[n]=67108863&o;return this.negative=1,this._strip()},o.prototype._wordDiv=function(t,e){var i=(this.length,t.length),r=this.clone(),n=t,a=0|n.words[n.length-1];0!==(i=26-this._countBits(a))&&(n=n.ushln(i),r.iushln(i),a=0|n.words[n.length-1]);var s,h=r.length-n.length;if("mod"!==e){(s=new o(null)).length=h+1,s.words=new Array(s.length);for(var u=0;u<s.length;u++)s.words[u]=0}var l=r.clone()._ishlnsubmul(n,1,h);0===l.negative&&(r=l,s&&(s.words[h]=1));for(var d=h-1;d>=0;d--){var f=67108864*(0|r.words[n.length+d])+(0|r.words[n.length+d-1]);for(f=Math.min(f/a|0,67108863),r._ishlnsubmul(n,f,d);0!==r.negative;)f--,r.negative=0,r._ishlnsubmul(n,1,d),r.isZero()||(r.negative^=1);s&&(s.words[d]=f)}return s&&s._strip(),r._strip(),"div"!==e&&0!==i&&r.iushrn(i),{div:s||null,mod:r}},o.prototype.divmod=function(t,e,i){return r(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(s=this.neg().divmod(t,e),"mod"!==e&&(n=s.div.neg()),"div"!==e&&(a=s.mod.neg(),i&&0!==a.negative&&a.iadd(t)),{div:n,mod:a}):0===this.negative&&0!==t.negative?(s=this.divmod(t.neg(),e),"mod"!==e&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&t.negative)?(s=this.neg().divmod(t.neg(),e),"div"!==e&&(a=s.mod.neg(),i&&0!==a.negative&&a.isub(t)),{div:s.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modrn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modrn(t.words[0]))}:this._wordDiv(t,e);var n,a,s},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var i=0!==e.div.negative?e.mod.isub(t):e.mod,r=t.ushrn(1),n=t.andln(1),o=i.cmp(r);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modrn=function(t){var e=t<0;e&&(t=-t),r(t<=67108863);for(var i=(1<<26)%t,n=0,o=this.length-1;o>=0;o--)n=(i*n+(0|this.words[o]))%t;return e?-n:n},o.prototype.modn=function(t){return this.modrn(t)},o.prototype.idivn=function(t){var e=t<0;e&&(t=-t),r(t<=67108863);for(var i=0,n=this.length-1;n>=0;n--){var o=(0|this.words[n])+67108864*i;this.words[n]=o/t|0,i=o%t}return this._strip(),e?this.ineg():this},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){r(0===t.negative),r(!t.isZero());var e=this,i=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),a=new o(0),s=new o(0),h=new o(1),u=0;e.isEven()&&i.isEven();)e.iushrn(1),i.iushrn(1),++u;for(var l=i.clone(),d=e.clone();!e.isZero();){for(var f=0,c=1;0==(e.words[0]&c)&&f<26;++f,c<<=1);if(f>0)for(e.iushrn(f);f-- >0;)(n.isOdd()||a.isOdd())&&(n.iadd(l),a.isub(d)),n.iushrn(1),a.iushrn(1);for(var p=0,m=1;0==(i.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(i.iushrn(p);p-- >0;)(s.isOdd()||h.isOdd())&&(s.iadd(l),h.isub(d)),s.iushrn(1),h.iushrn(1);e.cmp(i)>=0?(e.isub(i),n.isub(s),a.isub(h)):(i.isub(e),s.isub(n),h.isub(a))}return{a:s,b:h,gcd:i.iushln(u)}},o.prototype._invmp=function(t){r(0===t.negative),r(!t.isZero());var e=this,i=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,a=new o(1),s=new o(0),h=i.clone();e.cmpn(1)>0&&i.cmpn(1)>0;){for(var u=0,l=1;0==(e.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(e.iushrn(u);u-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);for(var d=0,f=1;0==(i.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(i.iushrn(d);d-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);e.cmp(i)>=0?(e.isub(i),a.isub(s)):(i.isub(e),s.isub(a))}return(n=0===e.cmpn(1)?a:s).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),i=t.clone();e.negative=0,i.negative=0;for(var r=0;e.isEven()&&i.isEven();r++)e.iushrn(1),i.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;i.isEven();)i.iushrn(1);var n=e.cmp(i);if(n<0){var o=e;e=i,i=o}else if(0===n||0===i.cmpn(1))break;e.isub(i)}return i.iushln(r)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){r("number"==typeof t);var e=t%26,i=(t-e)/26,n=1<<e;if(this.length<=i)return this._expand(i+1),this.words[i]|=n,this;for(var o=n,a=i;0!==o&&a<this.length;a++){var s=0|this.words[a];o=(s+=o)>>>26,s&=67108863,this.words[a]=s}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,i=t<0;if(0!==this.negative&&!i)return-1;if(0===this.negative&&i)return 1;if(this._strip(),this.length>1)e=1;else{i&&(t=-t),r(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:n<t?-1:1}return 0!==this.negative?0|-e:e},o.prototype.cmp=function(t){if(0!==this.negative&&0===t.negative)return-1;if(0===this.negative&&0!==t.negative)return 1;var e=this.ucmp(t);return 0!==this.negative?0|-e:e},o.prototype.ucmp=function(t){if(this.length>t.length)return 1;if(this.length<t.length)return-1;for(var e=0,i=this.length-1;i>=0;i--){var r=0|this.words[i],n=0|t.words[i];if(r!==n){r<n?e=-1:r>n&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new k(t)},o.prototype.toRed=function(t){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return r(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return r(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var _={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function A(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function M(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function E(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function S(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function k(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else r(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function T(t){k.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,i=t;do{this.split(i,this.tmp),e=(i=(i=this.imulK(i)).iadd(this.tmp)).bitLength()}while(e>this.n);var r=e<this.n?-1:i.ucmp(this.p);return 0===r?(i.words[0]=0,i.length=1):r>0?i.isub(this.p):void 0!==i.strip?i.strip():i._strip(),i},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(A,w),A.prototype.split=function(t,e){for(var i=4194303,r=Math.min(t.length,9),n=0;n<r;n++)e.words[n]=t.words[n];if(e.length=r,t.length<=9)return t.words[0]=0,void(t.length=1);var o=t.words[9];for(e.words[e.length++]=o&i,n=10;n<t.length;n++){var a=0|t.words[n];t.words[n-10]=(a&i)<<4|o>>>22,o=a}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},A.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,i=0;i<t.length;i++){var r=0|t.words[i];e+=977*r,t.words[i]=67108863&e,e=64*r+(e/67108864|0)}return 0===t.words[t.length-1]&&(t.length--,0===t.words[t.length-1]&&t.length--),t},n(M,w),n(E,w),n(S,w),S.prototype.imulK=function(t){for(var e=0,i=0;i<t.length;i++){var r=19*(0|t.words[i])+e,n=67108863&r;r>>>=26,t.words[i]=n,e=r}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(_[t])return _[t];var e;if("k256"===t)e=new A;else if("p224"===t)e=new M;else if("p192"===t)e=new E;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new S}return _[t]=e,e},k.prototype._verify1=function(t){r(0===t.negative,"red works only with positives"),r(t.red,"red works only with red numbers")},k.prototype._verify2=function(t,e){r(0==(t.negative|e.negative),"red works only with positives"),r(t.red&&t.red===e.red,"red works only with red numbers")},k.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):(l(t,t.umod(this.m)._forceRed(this)),t)},k.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},k.prototype.add=function(t,e){this._verify2(t,e);var i=t.add(e);return i.cmp(this.m)>=0&&i.isub(this.m),i._forceRed(this)},k.prototype.iadd=function(t,e){this._verify2(t,e);var i=t.iadd(e);return i.cmp(this.m)>=0&&i.isub(this.m),i},k.prototype.sub=function(t,e){this._verify2(t,e);var i=t.sub(e);return i.cmpn(0)<0&&i.iadd(this.m),i._forceRed(this)},k.prototype.isub=function(t,e){this._verify2(t,e);var i=t.isub(e);return i.cmpn(0)<0&&i.iadd(this.m),i},k.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},k.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},k.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},k.prototype.isqr=function(t){return this.imul(t,t.clone())},k.prototype.sqr=function(t){return this.mul(t,t)},k.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(r(e%2==1),3===e){var i=this.m.add(new o(1)).iushrn(2);return this.pow(t,i)}for(var n=this.m.subn(1),a=0;!n.isZero()&&0===n.andln(1);)a++,n.iushrn(1);r(!n.isZero());var s=new o(1).toRed(this),h=s.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);0!==this.pow(l,u).cmp(h);)l.redIAdd(h);for(var d=this.pow(l,n),f=this.pow(t,n.addn(1).iushrn(1)),c=this.pow(t,n),p=a;0!==c.cmp(s);){for(var m=c,g=0;0!==m.cmp(s);g++)m=m.redSqr();r(g<p);var v=this.pow(d,new o(1).iushln(p-g-1));f=f.redMul(v),d=v.redSqr(),c=c.redMul(d),p=g}return f},k.prototype.invm=function(t){var e=t._invmp(this.m);return 0!==e.negative?(e.negative=0,this.imod(e).redNeg()):this.imod(e)},k.prototype.pow=function(t,e){if(e.isZero())return new o(1).toRed(this);if(0===e.cmpn(1))return t.clone();var i=new Array(16);i[0]=new o(1).toRed(this),i[1]=t;for(var r=2;r<i.length;r++)i[r]=this.mul(i[r-1],t);var n=i[0],a=0,s=0,h=e.bitLength()%26;for(0===h&&(h=26),r=e.length-1;r>=0;r--){for(var u=e.words[r],l=h-1;l>=0;l--){var d=u>>l&1;n!==i[0]&&(n=this.sqr(n)),0!==d||0!==a?(a<<=1,a|=d,(4===++s||0===r&&0===l)&&(n=this.mul(n,i[a]),s=0,a=0)):s=0}h=26}return n},k.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},k.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new T(t)},n(T,k),T.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},T.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},T.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var i=t.imul(e),r=i.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=i.isub(r).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},T.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var i=t.mul(e),r=i.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=i.isub(r).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},T.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t,this)}).call(this,i(20)(t))},function(t,e,i){"use strict";var r=e;r.version=i(208).version,r.utils=i(14),r.rand=i(63),r.curve=i(117),r.curves=i(68),r.ec=i(220),r.eddsa=i(224)},function(t,e,i){"use strict";var r,n=e,o=i(69),a=i(117),s=i(14).assert;function h(t){"short"===t.type?this.curve=new a.short(t):"edwards"===t.type?this.curve=new a.edwards(t):this.curve=new a.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,s(this.g.validate(),"Invalid curve"),s(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function u(t,e){Object.defineProperty(n,t,{configurable:!0,enumerable:!0,get:function(){var i=new h(e);return Object.defineProperty(n,t,{configurable:!0,enumerable:!0,value:i}),i}})}n.PresetCurve=h,u("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:o.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),u("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:o.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),u("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:o.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),u("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:o.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),u("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:o.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),u("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["9"]}),u("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{r=i(219)}catch(t){r=void 0}u("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:o.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",r]})},function(t,e,i){var r=e;r.utils=i(15),r.common=i(38),r.sha=i(213),r.ripemd=i(217),r.hmac=i(218),r.sha1=r.sha.sha1,r.sha256=r.sha.sha256,r.sha224=r.sha.sha224,r.sha384=r.sha.sha384,r.sha512=r.sha.sha512,r.ripemd160=r.ripemd.ripemd160},function(t,e,i){"use strict";(function(e){var r,n=i(9),o=n.Buffer,a={};for(r in n)n.hasOwnProperty(r)&&"SlowBuffer"!==r&&"Buffer"!==r&&(a[r]=n[r]);var s=a.Buffer={};for(r in o)o.hasOwnProperty(r)&&"allocUnsafe"!==r&&"allocUnsafeSlow"!==r&&(s[r]=o[r]);if(a.Buffer.prototype=o.prototype,s.from&&s.from!==Uint8Array.from||(s.from=function(t,e,i){if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type '+typeof t);if(t&&void 0===t.length)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);return o(t,e,i)}),s.alloc||(s.alloc=function(t,e,i){if("number"!=typeof t)throw new TypeError('The "size" argument must be of type number. Received type '+typeof t);if(t<0||t>=2*(1<<30))throw new RangeError('The value "'+t+'" is invalid for option "size"');var r=o(t);return e&&0!==e.length?"string"==typeof i?r.fill(e,i):r.fill(e):r.fill(0),r}),!a.kStringMaxLength)try{a.kStringMaxLength=e.binding("buffer").kStringMaxLength}catch(t){}a.constants||(a.constants={MAX_LENGTH:a.kMaxLength},a.kStringMaxLength&&(a.constants.MAX_STRING_LENGTH=a.kStringMaxLength)),t.exports=a}).call(this,i(8))},function(t,e,i){"use strict";var r=i(72).Reporter,n=i(39).EncoderBuffer,o=i(39).DecoderBuffer,a=i(13),s=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],h=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(s);function u(t,e,i){var r={};this._baseState=r,r.name=i,r.enc=t,r.parent=e||null,r.children=null,r.tag=null,r.args=null,r.reverseArgs=null,r.choice=null,r.optional=!1,r.any=!1,r.obj=!1,r.use=null,r.useDecoder=null,r.key=null,r.default=null,r.explicit=null,r.implicit=null,r.contains=null,r.parent||(r.children=[],this._wrap())}t.exports=u;var l=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];u.prototype.clone=function(){var t=this._baseState,e={};l.forEach((function(i){e[i]=t[i]}));var i=new this.constructor(e.parent);return i._baseState=e,i},u.prototype._wrap=function(){var t=this._baseState;h.forEach((function(e){this[e]=function(){var i=new this.constructor(this);return t.children.push(i),i[e].apply(i,arguments)}}),this)},u.prototype._init=function(t){var e=this._baseState;a(null===e.parent),t.call(this),e.children=e.children.filter((function(t){return t._baseState.parent===this}),this),a.equal(e.children.length,1,"Root node can have only one child")},u.prototype._useArgs=function(t){var e=this._baseState,i=t.filter((function(t){return t instanceof this.constructor}),this);t=t.filter((function(t){return!(t instanceof this.constructor)}),this),0!==i.length&&(a(null===e.children),e.children=i,i.forEach((function(t){t._baseState.parent=this}),this)),0!==t.length&&(a(null===e.args),e.args=t,e.reverseArgs=t.map((function(t){if("object"!=typeof t||t.constructor!==Object)return t;var e={};return Object.keys(t).forEach((function(i){i==(0|i)&&(i|=0);var r=t[i];e[r]=i})),e})))},["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"].forEach((function(t){u.prototype[t]=function(){var e=this._baseState;throw new Error(t+" not implemented for encoding: "+e.enc)}})),s.forEach((function(t){u.prototype[t]=function(){var e=this._baseState,i=Array.prototype.slice.call(arguments);return a(null===e.tag),e.tag=t,this._useArgs(i),this}})),u.prototype.use=function(t){a(t);var e=this._baseState;return a(null===e.use),e.use=t,this},u.prototype.optional=function(){return this._baseState.optional=!0,this},u.prototype.def=function(t){var e=this._baseState;return a(null===e.default),e.default=t,e.optional=!0,this},u.prototype.explicit=function(t){var e=this._baseState;return a(null===e.explicit&&null===e.implicit),e.explicit=t,this},u.prototype.implicit=function(t){var e=this._baseState;return a(null===e.explicit&&null===e.implicit),e.implicit=t,this},u.prototype.obj=function(){var t=this._baseState,e=Array.prototype.slice.call(arguments);return t.obj=!0,0!==e.length&&this._useArgs(e),this},u.prototype.key=function(t){var e=this._baseState;return a(null===e.key),e.key=t,this},u.prototype.any=function(){return this._baseState.any=!0,this},u.prototype.choice=function(t){var e=this._baseState;return a(null===e.choice),e.choice=t,this._useArgs(Object.keys(t).map((function(e){return t[e]}))),this},u.prototype.contains=function(t){var e=this._baseState;return a(null===e.use),e.contains=t,this},u.prototype._decode=function(t,e){var i=this._baseState;if(null===i.parent)return t.wrapResult(i.children[0]._decode(t,e));var r,n=i.default,a=!0,s=null;if(null!==i.key&&(s=t.enterKey(i.key)),i.optional){var h=null;if(null!==i.explicit?h=i.explicit:null!==i.implicit?h=i.implicit:null!==i.tag&&(h=i.tag),null!==h||i.any){if(a=this._peekTag(t,h,i.any),t.isError(a))return a}else{var u=t.save();try{null===i.choice?this._decodeGeneric(i.tag,t,e):this._decodeChoice(t,e),a=!0}catch(t){a=!1}t.restore(u)}}if(i.obj&&a&&(r=t.enterObject()),a){if(null!==i.explicit){var l=this._decodeTag(t,i.explicit);if(t.isError(l))return l;t=l}var d=t.offset;if(null===i.use&&null===i.choice){var f;i.any&&(f=t.save());var c=this._decodeTag(t,null!==i.implicit?i.implicit:i.tag,i.any);if(t.isError(c))return c;i.any?n=t.raw(f):t=c}if(e&&e.track&&null!==i.tag&&e.track(t.path(),d,t.length,"tagged"),e&&e.track&&null!==i.tag&&e.track(t.path(),t.offset,t.length,"content"),i.any||(n=null===i.choice?this._decodeGeneric(i.tag,t,e):this._decodeChoice(t,e)),t.isError(n))return n;if(i.any||null!==i.choice||null===i.children||i.children.forEach((function(i){i._decode(t,e)})),i.contains&&("octstr"===i.tag||"bitstr"===i.tag)){var p=new o(n);n=this._getUse(i.contains,t._reporterState.obj)._decode(p,e)}}return i.obj&&a&&(n=t.leaveObject(r)),null===i.key||null===n&&!0!==a?null!==s&&t.exitKey(s):t.leaveKey(s,i.key,n),n},u.prototype._decodeGeneric=function(t,e,i){var r=this._baseState;return"seq"===t||"set"===t?null:"seqof"===t||"setof"===t?this._decodeList(e,t,r.args[0],i):/str$/.test(t)?this._decodeStr(e,t,i):"objid"===t&&r.args?this._decodeObjid(e,r.args[0],r.args[1],i):"objid"===t?this._decodeObjid(e,null,null,i):"gentime"===t||"utctime"===t?this._decodeTime(e,t,i):"null_"===t?this._decodeNull(e,i):"bool"===t?this._decodeBool(e,i):"objDesc"===t?this._decodeStr(e,t,i):"int"===t||"enum"===t?this._decodeInt(e,r.args&&r.args[0],i):null!==r.use?this._getUse(r.use,e._reporterState.obj)._decode(e,i):e.error("unknown tag: "+t)},u.prototype._getUse=function(t,e){var i=this._baseState;return i.useDecoder=this._use(t,e),a(null===i.useDecoder._baseState.parent),i.useDecoder=i.useDecoder._baseState.children[0],i.implicit!==i.useDecoder._baseState.implicit&&(i.useDecoder=i.useDecoder.clone(),i.useDecoder._baseState.implicit=i.implicit),i.useDecoder},u.prototype._decodeChoice=function(t,e){var i=this._baseState,r=null,n=!1;return Object.keys(i.choice).some((function(o){var a=t.save(),s=i.choice[o];try{var h=s._decode(t,e);if(t.isError(h))return!1;r={type:o,value:h},n=!0}catch(e){return t.restore(a),!1}return!0}),this),n?r:t.error("Choice not matched")},u.prototype._createEncoderBuffer=function(t){return new n(t,this.reporter)},u.prototype._encode=function(t,e,i){var r=this._baseState;if(null===r.default||r.default!==t){var n=this._encodeValue(t,e,i);if(void 0!==n&&!this._skipDefault(n,e,i))return n}},u.prototype._encodeValue=function(t,e,i){var n=this._baseState;if(null===n.parent)return n.children[0]._encode(t,e||new r);var o=null;if(this.reporter=e,n.optional&&void 0===t){if(null===n.default)return;t=n.default}var a=null,s=!1;if(n.any)o=this._createEncoderBuffer(t);else if(n.choice)o=this._encodeChoice(t,e);else if(n.contains)a=this._getUse(n.contains,i)._encode(t,e),s=!0;else if(n.children)a=n.children.map((function(i){if("null_"===i._baseState.tag)return i._encode(null,e,t);if(null===i._baseState.key)return e.error("Child should have a key");var r=e.enterKey(i._baseState.key);if("object"!=typeof t)return e.error("Child expected, but input is not object");var n=i._encode(t[i._baseState.key],e,t);return e.leaveKey(r),n}),this).filter((function(t){return t})),a=this._createEncoderBuffer(a);else if("seqof"===n.tag||"setof"===n.tag){if(!n.args||1!==n.args.length)return e.error("Too many args for : "+n.tag);if(!Array.isArray(t))return e.error("seqof/setof, but data is not Array");var h=this.clone();h._baseState.implicit=null,a=this._createEncoderBuffer(t.map((function(i){var r=this._baseState;return this._getUse(r.args[0],t)._encode(i,e)}),h))}else null!==n.use?o=this._getUse(n.use,i)._encode(t,e):(a=this._encodePrimitive(n.tag,t),s=!0);if(!n.any&&null===n.choice){var u=null!==n.implicit?n.implicit:n.tag,l=null===n.implicit?"universal":"context";null===u?null===n.use&&e.error("Tag could be omitted only for .use()"):null===n.use&&(o=this._encodeComposite(u,s,l,a))}return null!==n.explicit&&(o=this._encodeComposite(n.explicit,!1,"context",o)),o},u.prototype._encodeChoice=function(t,e){var i=this._baseState,r=i.choice[t.type];return r||a(!1,t.type+" not found in "+JSON.stringify(Object.keys(i.choice))),r._encode(t.value,e)},u.prototype._encodePrimitive=function(t,e){var i=this._baseState;if(/str$/.test(t))return this._encodeStr(e,t);if("objid"===t&&i.args)return this._encodeObjid(e,i.reverseArgs[0],i.args[1]);if("objid"===t)return this._encodeObjid(e,null,null);if("gentime"===t||"utctime"===t)return this._encodeTime(e,t);if("null_"===t)return this._encodeNull();if("int"===t||"enum"===t)return this._encodeInt(e,i.args&&i.reverseArgs[0]);if("bool"===t)return this._encodeBool(e);if("objDesc"===t)return this._encodeStr(e,t);throw new Error("Unsupported tag: "+t)},u.prototype._isNumstr=function(t){return/^[0-9 ]*$/.test(t)},u.prototype._isPrintstr=function(t){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(t)}},function(t,e,i){"use strict";var r=i(3);function n(t){this._reporterState={obj:null,path:[],options:t||{},errors:[]}}function o(t,e){this.path=t,this.rethrow(e)}e.Reporter=n,n.prototype.isError=function(t){return t instanceof o},n.prototype.save=function(){var t=this._reporterState;return{obj:t.obj,pathLen:t.path.length}},n.prototype.restore=function(t){var e=this._reporterState;e.obj=t.obj,e.path=e.path.slice(0,t.pathLen)},n.prototype.enterKey=function(t){return this._reporterState.path.push(t)},n.prototype.exitKey=function(t){var e=this._reporterState;e.path=e.path.slice(0,t-1)},n.prototype.leaveKey=function(t,e,i){var r=this._reporterState;this.exitKey(t),null!==r.obj&&(r.obj[e]=i)},n.prototype.path=function(){return this._reporterState.path.join("/")},n.prototype.enterObject=function(){var t=this._reporterState,e=t.obj;return t.obj={},e},n.prototype.leaveObject=function(t){var e=this._reporterState,i=e.obj;return e.obj=t,i},n.prototype.error=function(t){var e,i=this._reporterState,r=t instanceof o;if(e=r?t:new o(i.path.map((function(t){return"["+JSON.stringify(t)+"]"})).join(""),t.message||t,t.stack),!i.options.partial)throw e;return r||i.errors.push(e),e},n.prototype.wrapResult=function(t){var e=this._reporterState;return e.options.partial?{result:this.isError(t)?null:t,errors:e.errors}:t},r(o,Error),o.prototype.rethrow=function(t){if(this.message=t+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,o),!this.stack)try{throw new Error(this.message)}catch(t){this.stack=t.stack}return this}},function(t,e,i){"use strict";function r(t){var e={};return Object.keys(t).forEach((function(i){(0|i)==i&&(i|=0);var r=t[i];e[r]=i})),e}e.tagClass={0:"universal",1:"application",2:"context",3:"private"},e.tagClassByName=r(e.tagClass),e.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"},e.tagByName=r(e.tag)},function(t,e,i){(function(t){!function(t,e){"use strict";function r(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var i=function(){};i.prototype=e.prototype,t.prototype=new i,t.prototype.constructor=t}function o(t,e,i){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(i=e,e=10),this._init(t||0,e||10,i||"be"))}var a;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{a="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:i(243).Buffer}catch(t){}function s(t,e){var i=t.charCodeAt(e);return i>=65&&i<=70?i-55:i>=97&&i<=102?i-87:i-48&15}function h(t,e,i){var r=s(t,i);return i-1>=e&&(r|=s(t,i-1)<<4),r}function u(t,e,i,r){for(var n=0,o=Math.min(t.length,i),a=e;a<o;a++){var s=t.charCodeAt(a)-48;n*=r,n+=s>=49?s-49+10:s>=17?s-17+10:s}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,i){if("number"==typeof t)return this._initNumber(t,e,i);if("object"==typeof t)return this._initArray(t,e,i);"hex"===e&&(e=16),r(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n<t.length&&(16===e?this._parseHex(t,n,i):(this._parseBase(t,e,n),"le"===i&&this._initArray(this.toArray(),e,i)))},o.prototype._initNumber=function(t,e,i){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(r(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===i&&this._initArray(this.toArray(),e,i)},o.prototype._initArray=function(t,e,i){if(r("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var n=0;n<this.length;n++)this.words[n]=0;var o,a,s=0;if("be"===i)for(n=t.length-1,o=0;n>=0;n-=3)a=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=a<<s&67108863,this.words[o+1]=a>>>26-s&67108863,(s+=24)>=26&&(s-=26,o++);else if("le"===i)for(n=0,o=0;n<t.length;n+=3)a=t[n]|t[n+1]<<8|t[n+2]<<16,this.words[o]|=a<<s&67108863,this.words[o+1]=a>>>26-s&67108863,(s+=24)>=26&&(s-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,i){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r<this.length;r++)this.words[r]=0;var n,o=0,a=0;if("be"===i)for(r=t.length-1;r>=e;r-=2)n=h(t,e,r)<<o,this.words[a]|=67108863&n,o>=18?(o-=18,a+=1,this.words[a]|=n>>>26):o+=8;else for(r=(t.length-e)%2==0?e+1:e;r<t.length;r+=2)n=h(t,e,r)<<o,this.words[a]|=67108863&n,o>=18?(o-=18,a+=1,this.words[a]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,i){this.words=[0],this.length=1;for(var r=0,n=1;n<=67108863;n*=e)r++;r--,n=n/e|0;for(var o=t.length-i,a=o%r,s=Math.min(o,o-a)+i,h=0,l=i;l<s;l+=r)h=u(t,l,l+r,e),this.imuln(n),this.words[0]+h<67108864?this.words[0]+=h:this._iaddn(h);if(0!==a){var d=1;for(h=u(t,l,t.length,e),l=0;l<a;l++)d*=e;this.imuln(d),this.words[0]+h<67108864?this.words[0]+=h:this._iaddn(h)}this.strip()},o.prototype.copy=function(t){t.words=new Array(this.length);for(var e=0;e<this.length;e++)t.words[e]=this.words[e];t.length=this.length,t.negative=this.negative,t.red=this.red},o.prototype.clone=function(){var t=new o(null);return this.copy(t),t},o.prototype._expand=function(t){for(;this.length<t;)this.words[this.length++]=0;return this},o.prototype.strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],d=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function c(t,e,i){i.negative=e.negative^t.negative;var r=t.length+e.length|0;i.length=r,r=r-1|0;var n=0|t.words[0],o=0|e.words[0],a=n*o,s=67108863&a,h=a/67108864|0;i.words[0]=s;for(var u=1;u<r;u++){for(var l=h>>>26,d=67108863&h,f=Math.min(u,e.length-1),c=Math.max(0,u-t.length+1);c<=f;c++){var p=u-c|0;l+=(a=(n=0|t.words[p])*(o=0|e.words[c])+d)/67108864|0,d=67108863&a}i.words[u]=0|d,h=0|l}return 0!==h?i.words[u]=0|h:i.length--,i.strip()}o.prototype.toString=function(t,e){var i;if(e=0|e||1,16===(t=t||10)||"hex"===t){i="";for(var n=0,o=0,a=0;a<this.length;a++){var s=this.words[a],h=(16777215&(s<<n|o)).toString(16);i=0!==(o=s>>>24-n&16777215)||a!==this.length-1?l[6-h.length]+h+i:h+i,(n+=2)>=26&&(n-=26,a--)}for(0!==o&&(i=o.toString(16)+i);i.length%e!=0;)i="0"+i;return 0!==this.negative&&(i="-"+i),i}if(t===(0|t)&&t>=2&&t<=36){var u=d[t],c=f[t];i="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modn(c).toString(t);i=(p=p.idivn(c)).isZero()?m+i:l[u-m.length]+m+i}for(this.isZero()&&(i="0"+i);i.length%e!=0;)i="0"+i;return 0!==this.negative&&(i="-"+i),i}r(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return r(void 0!==a),this.toArrayLike(a,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,i){var n=this.byteLength(),o=i||Math.max(1,n);r(n<=o,"byte array longer than desired length"),r(o>0,"Requested array length <= 0"),this.strip();var a,s,h="le"===e,u=new t(o),l=this.clone();if(h){for(s=0;!l.isZero();s++)a=l.andln(255),l.iushrn(8),u[s]=a;for(;s<o;s++)u[s]=0}else{for(s=0;s<o-n;s++)u[s]=0;for(s=0;!l.isZero();s++)a=l.andln(255),l.iushrn(8),u[o-s-1]=a}return u},Math.clz32?o.prototype._countBits=function(t){return 32-Math.clz32(t)}:o.prototype._countBits=function(t){var e=t,i=0;return e>=4096&&(i+=13,e>>>=13),e>=64&&(i+=7,e>>>=7),e>=8&&(i+=4,e>>>=4),e>=2&&(i+=2,e>>>=2),i+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,i=0;return 0==(8191&e)&&(i+=13,e>>>=13),0==(127&e)&&(i+=7,e>>>=7),0==(15&e)&&(i+=4,e>>>=4),0==(3&e)&&(i+=2,e>>>=2),0==(1&e)&&i++,i},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;e<this.length;e++){var i=this._zeroBits(this.words[e]);if(t+=i,26!==i)break}return t},o.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},o.prototype.toTwos=function(t){return 0!==this.negative?this.abs().inotn(t).iaddn(1):this.clone()},o.prototype.fromTwos=function(t){return this.testn(t-1)?this.notn(t).iaddn(1).ineg():this.clone()},o.prototype.isNeg=function(){return 0!==this.negative},o.prototype.neg=function(){return this.clone().ineg()},o.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},o.prototype.iuor=function(t){for(;this.length<t.length;)this.words[this.length++]=0;for(var e=0;e<t.length;e++)this.words[e]=this.words[e]|t.words[e];return this.strip()},o.prototype.ior=function(t){return r(0==(this.negative|t.negative)),this.iuor(t)},o.prototype.or=function(t){return this.length>t.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var i=0;i<e.length;i++)this.words[i]=this.words[i]&t.words[i];return this.length=e.length,this.strip()},o.prototype.iand=function(t){return r(0==(this.negative|t.negative)),this.iuand(t)},o.prototype.and=function(t){return this.length>t.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,i;this.length>t.length?(e=this,i=t):(e=t,i=this);for(var r=0;r<i.length;r++)this.words[r]=e.words[r]^i.words[r];if(this!==e)for(;r<e.length;r++)this.words[r]=e.words[r];return this.length=e.length,this.strip()},o.prototype.ixor=function(t){return r(0==(this.negative|t.negative)),this.iuxor(t)},o.prototype.xor=function(t){return this.length>t.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){r("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),i=t%26;this._expand(e),i>0&&e--;for(var n=0;n<e;n++)this.words[n]=67108863&~this.words[n];return i>0&&(this.words[n]=~this.words[n]&67108863>>26-i),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){r("number"==typeof t&&t>=0);var i=t/26|0,n=t%26;return this._expand(i+1),this.words[i]=e?this.words[i]|1<<n:this.words[i]&~(1<<n),this.strip()},o.prototype.iadd=function(t){var e,i,r;if(0!==this.negative&&0===t.negative)return this.negative=0,e=this.isub(t),this.negative^=1,this._normSign();if(0===this.negative&&0!==t.negative)return t.negative=0,e=this.isub(t),t.negative=1,e._normSign();this.length>t.length?(i=this,r=t):(i=t,r=this);for(var n=0,o=0;o<r.length;o++)e=(0|i.words[o])+(0|r.words[o])+n,this.words[o]=67108863&e,n=e>>>26;for(;0!==n&&o<i.length;o++)e=(0|i.words[o])+n,this.words[o]=67108863&e,n=e>>>26;if(this.length=i.length,0!==n)this.words[this.length]=n,this.length++;else if(i!==this)for(;o<i.length;o++)this.words[o]=i.words[o];return this},o.prototype.add=function(t){var e;return 0!==t.negative&&0===this.negative?(t.negative=0,e=this.sub(t),t.negative^=1,e):0===t.negative&&0!==this.negative?(this.negative=0,e=t.sub(this),this.negative=1,e):this.length>t.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var i,r,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(i=this,r=t):(i=t,r=this);for(var o=0,a=0;a<r.length;a++)o=(e=(0|i.words[a])-(0|r.words[a])+o)>>26,this.words[a]=67108863&e;for(;0!==o&&a<i.length;a++)o=(e=(0|i.words[a])+o)>>26,this.words[a]=67108863&e;if(0===o&&a<i.length&&i!==this)for(;a<i.length;a++)this.words[a]=i.words[a];return this.length=Math.max(this.length,a),i!==this&&(this.negative=1),this.strip()},o.prototype.sub=function(t){return this.clone().isub(t)};var p=function(t,e,i){var r,n,o,a=t.words,s=e.words,h=i.words,u=0,l=0|a[0],d=8191&l,f=l>>>13,c=0|a[1],p=8191&c,m=c>>>13,g=0|a[2],v=8191&g,y=g>>>13,b=0|a[3],_=8191&b,w=b>>>13,A=0|a[4],M=8191&A,E=A>>>13,S=0|a[5],k=8191&S,T=S>>>13,R=0|a[6],I=8191&R,C=R>>>13,P=0|a[7],x=8191&P,D=P>>>13,O=0|a[8],B=8191&O,L=O>>>13,W=0|a[9],N=8191&W,F=W>>>13,U=0|s[0],j=8191&U,V=U>>>13,H=0|s[1],z=8191&H,G=H>>>13,q=0|s[2],X=8191&q,Z=q>>>13,K=0|s[3],Q=8191&K,Y=K>>>13,J=0|s[4],$=8191&J,tt=J>>>13,et=0|s[5],it=8191&et,rt=et>>>13,nt=0|s[6],ot=8191&nt,at=nt>>>13,st=0|s[7],ht=8191&st,ut=st>>>13,lt=0|s[8],dt=8191<,ft=lt>>>13,ct=0|s[9],pt=8191&ct,mt=ct>>>13;i.negative=t.negative^e.negative,i.length=19;var gt=(u+(r=Math.imul(d,j))|0)+((8191&(n=(n=Math.imul(d,V))+Math.imul(f,j)|0))<<13)|0;u=((o=Math.imul(f,V))+(n>>>13)|0)+(gt>>>26)|0,gt&=67108863,r=Math.imul(p,j),n=(n=Math.imul(p,V))+Math.imul(m,j)|0,o=Math.imul(m,V);var vt=(u+(r=r+Math.imul(d,z)|0)|0)+((8191&(n=(n=n+Math.imul(d,G)|0)+Math.imul(f,z)|0))<<13)|0;u=((o=o+Math.imul(f,G)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,r=Math.imul(v,j),n=(n=Math.imul(v,V))+Math.imul(y,j)|0,o=Math.imul(y,V),r=r+Math.imul(p,z)|0,n=(n=n+Math.imul(p,G)|0)+Math.imul(m,z)|0,o=o+Math.imul(m,G)|0;var yt=(u+(r=r+Math.imul(d,X)|0)|0)+((8191&(n=(n=n+Math.imul(d,Z)|0)+Math.imul(f,X)|0))<<13)|0;u=((o=o+Math.imul(f,Z)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,r=Math.imul(_,j),n=(n=Math.imul(_,V))+Math.imul(w,j)|0,o=Math.imul(w,V),r=r+Math.imul(v,z)|0,n=(n=n+Math.imul(v,G)|0)+Math.imul(y,z)|0,o=o+Math.imul(y,G)|0,r=r+Math.imul(p,X)|0,n=(n=n+Math.imul(p,Z)|0)+Math.imul(m,X)|0,o=o+Math.imul(m,Z)|0;var bt=(u+(r=r+Math.imul(d,Q)|0)|0)+((8191&(n=(n=n+Math.imul(d,Y)|0)+Math.imul(f,Q)|0))<<13)|0;u=((o=o+Math.imul(f,Y)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,r=Math.imul(M,j),n=(n=Math.imul(M,V))+Math.imul(E,j)|0,o=Math.imul(E,V),r=r+Math.imul(_,z)|0,n=(n=n+Math.imul(_,G)|0)+Math.imul(w,z)|0,o=o+Math.imul(w,G)|0,r=r+Math.imul(v,X)|0,n=(n=n+Math.imul(v,Z)|0)+Math.imul(y,X)|0,o=o+Math.imul(y,Z)|0,r=r+Math.imul(p,Q)|0,n=(n=n+Math.imul(p,Y)|0)+Math.imul(m,Q)|0,o=o+Math.imul(m,Y)|0;var _t=(u+(r=r+Math.imul(d,$)|0)|0)+((8191&(n=(n=n+Math.imul(d,tt)|0)+Math.imul(f,$)|0))<<13)|0;u=((o=o+Math.imul(f,tt)|0)+(n>>>13)|0)+(_t>>>26)|0,_t&=67108863,r=Math.imul(k,j),n=(n=Math.imul(k,V))+Math.imul(T,j)|0,o=Math.imul(T,V),r=r+Math.imul(M,z)|0,n=(n=n+Math.imul(M,G)|0)+Math.imul(E,z)|0,o=o+Math.imul(E,G)|0,r=r+Math.imul(_,X)|0,n=(n=n+Math.imul(_,Z)|0)+Math.imul(w,X)|0,o=o+Math.imul(w,Z)|0,r=r+Math.imul(v,Q)|0,n=(n=n+Math.imul(v,Y)|0)+Math.imul(y,Q)|0,o=o+Math.imul(y,Y)|0,r=r+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,$)|0,o=o+Math.imul(m,tt)|0;var wt=(u+(r=r+Math.imul(d,it)|0)|0)+((8191&(n=(n=n+Math.imul(d,rt)|0)+Math.imul(f,it)|0))<<13)|0;u=((o=o+Math.imul(f,rt)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,r=Math.imul(I,j),n=(n=Math.imul(I,V))+Math.imul(C,j)|0,o=Math.imul(C,V),r=r+Math.imul(k,z)|0,n=(n=n+Math.imul(k,G)|0)+Math.imul(T,z)|0,o=o+Math.imul(T,G)|0,r=r+Math.imul(M,X)|0,n=(n=n+Math.imul(M,Z)|0)+Math.imul(E,X)|0,o=o+Math.imul(E,Z)|0,r=r+Math.imul(_,Q)|0,n=(n=n+Math.imul(_,Y)|0)+Math.imul(w,Q)|0,o=o+Math.imul(w,Y)|0,r=r+Math.imul(v,$)|0,n=(n=n+Math.imul(v,tt)|0)+Math.imul(y,$)|0,o=o+Math.imul(y,tt)|0,r=r+Math.imul(p,it)|0,n=(n=n+Math.imul(p,rt)|0)+Math.imul(m,it)|0,o=o+Math.imul(m,rt)|0;var At=(u+(r=r+Math.imul(d,ot)|0)|0)+((8191&(n=(n=n+Math.imul(d,at)|0)+Math.imul(f,ot)|0))<<13)|0;u=((o=o+Math.imul(f,at)|0)+(n>>>13)|0)+(At>>>26)|0,At&=67108863,r=Math.imul(x,j),n=(n=Math.imul(x,V))+Math.imul(D,j)|0,o=Math.imul(D,V),r=r+Math.imul(I,z)|0,n=(n=n+Math.imul(I,G)|0)+Math.imul(C,z)|0,o=o+Math.imul(C,G)|0,r=r+Math.imul(k,X)|0,n=(n=n+Math.imul(k,Z)|0)+Math.imul(T,X)|0,o=o+Math.imul(T,Z)|0,r=r+Math.imul(M,Q)|0,n=(n=n+Math.imul(M,Y)|0)+Math.imul(E,Q)|0,o=o+Math.imul(E,Y)|0,r=r+Math.imul(_,$)|0,n=(n=n+Math.imul(_,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,r=r+Math.imul(v,it)|0,n=(n=n+Math.imul(v,rt)|0)+Math.imul(y,it)|0,o=o+Math.imul(y,rt)|0,r=r+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,at)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,at)|0;var Mt=(u+(r=r+Math.imul(d,ht)|0)|0)+((8191&(n=(n=n+Math.imul(d,ut)|0)+Math.imul(f,ht)|0))<<13)|0;u=((o=o+Math.imul(f,ut)|0)+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,r=Math.imul(B,j),n=(n=Math.imul(B,V))+Math.imul(L,j)|0,o=Math.imul(L,V),r=r+Math.imul(x,z)|0,n=(n=n+Math.imul(x,G)|0)+Math.imul(D,z)|0,o=o+Math.imul(D,G)|0,r=r+Math.imul(I,X)|0,n=(n=n+Math.imul(I,Z)|0)+Math.imul(C,X)|0,o=o+Math.imul(C,Z)|0,r=r+Math.imul(k,Q)|0,n=(n=n+Math.imul(k,Y)|0)+Math.imul(T,Q)|0,o=o+Math.imul(T,Y)|0,r=r+Math.imul(M,$)|0,n=(n=n+Math.imul(M,tt)|0)+Math.imul(E,$)|0,o=o+Math.imul(E,tt)|0,r=r+Math.imul(_,it)|0,n=(n=n+Math.imul(_,rt)|0)+Math.imul(w,it)|0,o=o+Math.imul(w,rt)|0,r=r+Math.imul(v,ot)|0,n=(n=n+Math.imul(v,at)|0)+Math.imul(y,ot)|0,o=o+Math.imul(y,at)|0,r=r+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0;var Et=(u+(r=r+Math.imul(d,dt)|0)|0)+((8191&(n=(n=n+Math.imul(d,ft)|0)+Math.imul(f,dt)|0))<<13)|0;u=((o=o+Math.imul(f,ft)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,r=Math.imul(N,j),n=(n=Math.imul(N,V))+Math.imul(F,j)|0,o=Math.imul(F,V),r=r+Math.imul(B,z)|0,n=(n=n+Math.imul(B,G)|0)+Math.imul(L,z)|0,o=o+Math.imul(L,G)|0,r=r+Math.imul(x,X)|0,n=(n=n+Math.imul(x,Z)|0)+Math.imul(D,X)|0,o=o+Math.imul(D,Z)|0,r=r+Math.imul(I,Q)|0,n=(n=n+Math.imul(I,Y)|0)+Math.imul(C,Q)|0,o=o+Math.imul(C,Y)|0,r=r+Math.imul(k,$)|0,n=(n=n+Math.imul(k,tt)|0)+Math.imul(T,$)|0,o=o+Math.imul(T,tt)|0,r=r+Math.imul(M,it)|0,n=(n=n+Math.imul(M,rt)|0)+Math.imul(E,it)|0,o=o+Math.imul(E,rt)|0,r=r+Math.imul(_,ot)|0,n=(n=n+Math.imul(_,at)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,at)|0,r=r+Math.imul(v,ht)|0,n=(n=n+Math.imul(v,ut)|0)+Math.imul(y,ht)|0,o=o+Math.imul(y,ut)|0,r=r+Math.imul(p,dt)|0,n=(n=n+Math.imul(p,ft)|0)+Math.imul(m,dt)|0,o=o+Math.imul(m,ft)|0;var St=(u+(r=r+Math.imul(d,pt)|0)|0)+((8191&(n=(n=n+Math.imul(d,mt)|0)+Math.imul(f,pt)|0))<<13)|0;u=((o=o+Math.imul(f,mt)|0)+(n>>>13)|0)+(St>>>26)|0,St&=67108863,r=Math.imul(N,z),n=(n=Math.imul(N,G))+Math.imul(F,z)|0,o=Math.imul(F,G),r=r+Math.imul(B,X)|0,n=(n=n+Math.imul(B,Z)|0)+Math.imul(L,X)|0,o=o+Math.imul(L,Z)|0,r=r+Math.imul(x,Q)|0,n=(n=n+Math.imul(x,Y)|0)+Math.imul(D,Q)|0,o=o+Math.imul(D,Y)|0,r=r+Math.imul(I,$)|0,n=(n=n+Math.imul(I,tt)|0)+Math.imul(C,$)|0,o=o+Math.imul(C,tt)|0,r=r+Math.imul(k,it)|0,n=(n=n+Math.imul(k,rt)|0)+Math.imul(T,it)|0,o=o+Math.imul(T,rt)|0,r=r+Math.imul(M,ot)|0,n=(n=n+Math.imul(M,at)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,at)|0,r=r+Math.imul(_,ht)|0,n=(n=n+Math.imul(_,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,r=r+Math.imul(v,dt)|0,n=(n=n+Math.imul(v,ft)|0)+Math.imul(y,dt)|0,o=o+Math.imul(y,ft)|0;var kt=(u+(r=r+Math.imul(p,pt)|0)|0)+((8191&(n=(n=n+Math.imul(p,mt)|0)+Math.imul(m,pt)|0))<<13)|0;u=((o=o+Math.imul(m,mt)|0)+(n>>>13)|0)+(kt>>>26)|0,kt&=67108863,r=Math.imul(N,X),n=(n=Math.imul(N,Z))+Math.imul(F,X)|0,o=Math.imul(F,Z),r=r+Math.imul(B,Q)|0,n=(n=n+Math.imul(B,Y)|0)+Math.imul(L,Q)|0,o=o+Math.imul(L,Y)|0,r=r+Math.imul(x,$)|0,n=(n=n+Math.imul(x,tt)|0)+Math.imul(D,$)|0,o=o+Math.imul(D,tt)|0,r=r+Math.imul(I,it)|0,n=(n=n+Math.imul(I,rt)|0)+Math.imul(C,it)|0,o=o+Math.imul(C,rt)|0,r=r+Math.imul(k,ot)|0,n=(n=n+Math.imul(k,at)|0)+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,r=r+Math.imul(M,ht)|0,n=(n=n+Math.imul(M,ut)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,ut)|0,r=r+Math.imul(_,dt)|0,n=(n=n+Math.imul(_,ft)|0)+Math.imul(w,dt)|0,o=o+Math.imul(w,ft)|0;var Tt=(u+(r=r+Math.imul(v,pt)|0)|0)+((8191&(n=(n=n+Math.imul(v,mt)|0)+Math.imul(y,pt)|0))<<13)|0;u=((o=o+Math.imul(y,mt)|0)+(n>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,r=Math.imul(N,Q),n=(n=Math.imul(N,Y))+Math.imul(F,Q)|0,o=Math.imul(F,Y),r=r+Math.imul(B,$)|0,n=(n=n+Math.imul(B,tt)|0)+Math.imul(L,$)|0,o=o+Math.imul(L,tt)|0,r=r+Math.imul(x,it)|0,n=(n=n+Math.imul(x,rt)|0)+Math.imul(D,it)|0,o=o+Math.imul(D,rt)|0,r=r+Math.imul(I,ot)|0,n=(n=n+Math.imul(I,at)|0)+Math.imul(C,ot)|0,o=o+Math.imul(C,at)|0,r=r+Math.imul(k,ht)|0,n=(n=n+Math.imul(k,ut)|0)+Math.imul(T,ht)|0,o=o+Math.imul(T,ut)|0,r=r+Math.imul(M,dt)|0,n=(n=n+Math.imul(M,ft)|0)+Math.imul(E,dt)|0,o=o+Math.imul(E,ft)|0;var Rt=(u+(r=r+Math.imul(_,pt)|0)|0)+((8191&(n=(n=n+Math.imul(_,mt)|0)+Math.imul(w,pt)|0))<<13)|0;u=((o=o+Math.imul(w,mt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,r=Math.imul(N,$),n=(n=Math.imul(N,tt))+Math.imul(F,$)|0,o=Math.imul(F,tt),r=r+Math.imul(B,it)|0,n=(n=n+Math.imul(B,rt)|0)+Math.imul(L,it)|0,o=o+Math.imul(L,rt)|0,r=r+Math.imul(x,ot)|0,n=(n=n+Math.imul(x,at)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,at)|0,r=r+Math.imul(I,ht)|0,n=(n=n+Math.imul(I,ut)|0)+Math.imul(C,ht)|0,o=o+Math.imul(C,ut)|0,r=r+Math.imul(k,dt)|0,n=(n=n+Math.imul(k,ft)|0)+Math.imul(T,dt)|0,o=o+Math.imul(T,ft)|0;var It=(u+(r=r+Math.imul(M,pt)|0)|0)+((8191&(n=(n=n+Math.imul(M,mt)|0)+Math.imul(E,pt)|0))<<13)|0;u=((o=o+Math.imul(E,mt)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,r=Math.imul(N,it),n=(n=Math.imul(N,rt))+Math.imul(F,it)|0,o=Math.imul(F,rt),r=r+Math.imul(B,ot)|0,n=(n=n+Math.imul(B,at)|0)+Math.imul(L,ot)|0,o=o+Math.imul(L,at)|0,r=r+Math.imul(x,ht)|0,n=(n=n+Math.imul(x,ut)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,ut)|0,r=r+Math.imul(I,dt)|0,n=(n=n+Math.imul(I,ft)|0)+Math.imul(C,dt)|0,o=o+Math.imul(C,ft)|0;var Ct=(u+(r=r+Math.imul(k,pt)|0)|0)+((8191&(n=(n=n+Math.imul(k,mt)|0)+Math.imul(T,pt)|0))<<13)|0;u=((o=o+Math.imul(T,mt)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,r=Math.imul(N,ot),n=(n=Math.imul(N,at))+Math.imul(F,ot)|0,o=Math.imul(F,at),r=r+Math.imul(B,ht)|0,n=(n=n+Math.imul(B,ut)|0)+Math.imul(L,ht)|0,o=o+Math.imul(L,ut)|0,r=r+Math.imul(x,dt)|0,n=(n=n+Math.imul(x,ft)|0)+Math.imul(D,dt)|0,o=o+Math.imul(D,ft)|0;var Pt=(u+(r=r+Math.imul(I,pt)|0)|0)+((8191&(n=(n=n+Math.imul(I,mt)|0)+Math.imul(C,pt)|0))<<13)|0;u=((o=o+Math.imul(C,mt)|0)+(n>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,r=Math.imul(N,ht),n=(n=Math.imul(N,ut))+Math.imul(F,ht)|0,o=Math.imul(F,ut),r=r+Math.imul(B,dt)|0,n=(n=n+Math.imul(B,ft)|0)+Math.imul(L,dt)|0,o=o+Math.imul(L,ft)|0;var xt=(u+(r=r+Math.imul(x,pt)|0)|0)+((8191&(n=(n=n+Math.imul(x,mt)|0)+Math.imul(D,pt)|0))<<13)|0;u=((o=o+Math.imul(D,mt)|0)+(n>>>13)|0)+(xt>>>26)|0,xt&=67108863,r=Math.imul(N,dt),n=(n=Math.imul(N,ft))+Math.imul(F,dt)|0,o=Math.imul(F,ft);var Dt=(u+(r=r+Math.imul(B,pt)|0)|0)+((8191&(n=(n=n+Math.imul(B,mt)|0)+Math.imul(L,pt)|0))<<13)|0;u=((o=o+Math.imul(L,mt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863;var Ot=(u+(r=Math.imul(N,pt))|0)+((8191&(n=(n=Math.imul(N,mt))+Math.imul(F,pt)|0))<<13)|0;return u=((o=Math.imul(F,mt))+(n>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,h[0]=gt,h[1]=vt,h[2]=yt,h[3]=bt,h[4]=_t,h[5]=wt,h[6]=At,h[7]=Mt,h[8]=Et,h[9]=St,h[10]=kt,h[11]=Tt,h[12]=Rt,h[13]=It,h[14]=Ct,h[15]=Pt,h[16]=xt,h[17]=Dt,h[18]=Ot,0!==u&&(h[19]=u,i.length++),i};function m(t,e,i){return(new g).mulp(t,e,i)}function g(t,e){this.x=t,this.y=e}Math.imul||(p=c),o.prototype.mulTo=function(t,e){var i,r=this.length+t.length;return i=10===this.length&&10===t.length?p(this,t,e):r<63?c(this,t,e):r<1024?function(t,e,i){i.negative=e.negative^t.negative,i.length=t.length+e.length;for(var r=0,n=0,o=0;o<i.length-1;o++){var a=n;n=0;for(var s=67108863&r,h=Math.min(o,e.length-1),u=Math.max(0,o-t.length+1);u<=h;u++){var l=o-u,d=(0|t.words[l])*(0|e.words[u]),f=67108863&d;s=67108863&(f=f+s|0),n+=(a=(a=a+(d/67108864|0)|0)+(f>>>26)|0)>>>26,a&=67108863}i.words[o]=s,r=a,a=n}return 0!==r?i.words[o]=r:i.length--,i.strip()}(this,t,e):m(this,t,e),i},g.prototype.makeRBT=function(t){for(var e=new Array(t),i=o.prototype._countBits(t)-1,r=0;r<t;r++)e[r]=this.revBin(r,i,t);return e},g.prototype.revBin=function(t,e,i){if(0===t||t===i-1)return t;for(var r=0,n=0;n<e;n++)r|=(1&t)<<e-n-1,t>>=1;return r},g.prototype.permute=function(t,e,i,r,n,o){for(var a=0;a<o;a++)r[a]=e[t[a]],n[a]=i[t[a]]},g.prototype.transform=function(t,e,i,r,n,o){this.permute(o,t,e,i,r,n);for(var a=1;a<n;a<<=1)for(var s=a<<1,h=Math.cos(2*Math.PI/s),u=Math.sin(2*Math.PI/s),l=0;l<n;l+=s)for(var d=h,f=u,c=0;c<a;c++){var p=i[l+c],m=r[l+c],g=i[l+c+a],v=r[l+c+a],y=d*g-f*v;v=d*v+f*g,g=y,i[l+c]=p+g,r[l+c]=m+v,i[l+c+a]=p-g,r[l+c+a]=m-v,c!==s&&(y=h*d-u*f,f=h*f+u*d,d=y)}},g.prototype.guessLen13b=function(t,e){var i=1|Math.max(e,t),r=1&i,n=0;for(i=i/2|0;i;i>>>=1)n++;return 1<<n+1+r},g.prototype.conjugate=function(t,e,i){if(!(i<=1))for(var r=0;r<i/2;r++){var n=t[r];t[r]=t[i-r-1],t[i-r-1]=n,n=e[r],e[r]=-e[i-r-1],e[i-r-1]=-n}},g.prototype.normalize13b=function(t,e){for(var i=0,r=0;r<e/2;r++){var n=8192*Math.round(t[2*r+1]/e)+Math.round(t[2*r]/e)+i;t[r]=67108863&n,i=n<67108864?0:n/67108864|0}return t},g.prototype.convert13b=function(t,e,i,n){for(var o=0,a=0;a<e;a++)o+=0|t[a],i[2*a]=8191&o,o>>>=13,i[2*a+1]=8191&o,o>>>=13;for(a=2*e;a<n;++a)i[a]=0;r(0===o),r(0==(-8192&o))},g.prototype.stub=function(t){for(var e=new Array(t),i=0;i<t;i++)e[i]=0;return e},g.prototype.mulp=function(t,e,i){var r=2*this.guessLen13b(t.length,e.length),n=this.makeRBT(r),o=this.stub(r),a=new Array(r),s=new Array(r),h=new Array(r),u=new Array(r),l=new Array(r),d=new Array(r),f=i.words;f.length=r,this.convert13b(t.words,t.length,a,r),this.convert13b(e.words,e.length,u,r),this.transform(a,o,s,h,r,n),this.transform(u,o,l,d,r,n);for(var c=0;c<r;c++){var p=s[c]*l[c]-h[c]*d[c];h[c]=s[c]*d[c]+h[c]*l[c],s[c]=p}return this.conjugate(s,h,r),this.transform(s,h,f,o,r,n),this.conjugate(f,o,r),this.normalize13b(f,r),i.negative=t.negative^e.negative,i.length=t.length+e.length,i.strip()},o.prototype.mul=function(t){var e=new o(null);return e.words=new Array(this.length+t.length),this.mulTo(t,e)},o.prototype.mulf=function(t){var e=new o(null);return e.words=new Array(this.length+t.length),m(this,t,e)},o.prototype.imul=function(t){return this.clone().mulTo(t,this)},o.prototype.imuln=function(t){r("number"==typeof t),r(t<67108864);for(var e=0,i=0;i<this.length;i++){var n=(0|this.words[i])*t,o=(67108863&n)+(67108863&e);e>>=26,e+=n/67108864|0,e+=o>>>26,this.words[i]=67108863&o}return 0!==e&&(this.words[i]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),i=0;i<e.length;i++){var r=i/26|0,n=i%26;e[i]=(t.words[r]&1<<n)>>>n}return e}(t);if(0===e.length)return new o(1);for(var i=this,r=0;r<e.length&&0===e[r];r++,i=i.sqr());if(++r<e.length)for(var n=i.sqr();r<e.length;r++,n=n.sqr())0!==e[r]&&(i=i.mul(n));return i},o.prototype.iushln=function(t){r("number"==typeof t&&t>=0);var e,i=t%26,n=(t-i)/26,o=67108863>>>26-i<<26-i;if(0!==i){var a=0;for(e=0;e<this.length;e++){var s=this.words[e]&o,h=(0|this.words[e])-s<<i;this.words[e]=h|a,a=s>>>26-i}a&&(this.words[e]=a,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e<n;e++)this.words[e]=0;this.length+=n}return this.strip()},o.prototype.ishln=function(t){return r(0===this.negative),this.iushln(t)},o.prototype.iushrn=function(t,e,i){var n;r("number"==typeof t&&t>=0),n=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),s=67108863^67108863>>>o<<o,h=i;if(n-=a,n=Math.max(0,n),h){for(var u=0;u<a;u++)h.words[u]=this.words[u];h.length=a}if(0===a);else if(this.length>a)for(this.length-=a,u=0;u<this.length;u++)this.words[u]=this.words[u+a];else this.words[0]=0,this.length=1;var l=0;for(u=this.length-1;u>=0&&(0!==l||u>=n);u--){var d=0|this.words[u];this.words[u]=l<<26-o|d>>>o,l=d&s}return h&&0!==l&&(h.words[h.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,i){return r(0===this.negative),this.iushrn(t,e,i)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){r("number"==typeof t&&t>=0);var e=t%26,i=(t-e)/26,n=1<<e;return!(this.length<=i)&&!!(this.words[i]&n)},o.prototype.imaskn=function(t){r("number"==typeof t&&t>=0);var e=t%26,i=(t-e)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=i)return this;if(0!==e&&i++,this.length=Math.min(i,this.length),0!==e){var n=67108863^67108863>>>e<<e;this.words[this.length-1]&=n}return this.strip()},o.prototype.maskn=function(t){return this.clone().imaskn(t)},o.prototype.iaddn=function(t){return r("number"==typeof t),r(t<67108864),t<0?this.isubn(-t):0!==this.negative?1===this.length&&(0|this.words[0])<t?(this.words[0]=t-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(t),this.negative=1,this):this._iaddn(t)},o.prototype._iaddn=function(t){this.words[0]+=t;for(var e=0;e<this.length&&this.words[e]>=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(r("number"==typeof t),r(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e<this.length&&this.words[e]<0;e++)this.words[e]+=67108864,this.words[e+1]-=1;return this.strip()},o.prototype.addn=function(t){return this.clone().iaddn(t)},o.prototype.subn=function(t){return this.clone().isubn(t)},o.prototype.iabs=function(){return this.negative=0,this},o.prototype.abs=function(){return this.clone().iabs()},o.prototype._ishlnsubmul=function(t,e,i){var n,o,a=t.length+i;this._expand(a);var s=0;for(n=0;n<t.length;n++){o=(0|this.words[n+i])+s;var h=(0|t.words[n])*e;s=((o-=67108863&h)>>26)-(h/67108864|0),this.words[n+i]=67108863&o}for(;n<this.length-i;n++)s=(o=(0|this.words[n+i])+s)>>26,this.words[n+i]=67108863&o;if(0===s)return this.strip();for(r(-1===s),s=0,n=0;n<this.length;n++)s=(o=-(0|this.words[n])+s)>>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var i=(this.length,t.length),r=this.clone(),n=t,a=0|n.words[n.length-1];0!==(i=26-this._countBits(a))&&(n=n.ushln(i),r.iushln(i),a=0|n.words[n.length-1]);var s,h=r.length-n.length;if("mod"!==e){(s=new o(null)).length=h+1,s.words=new Array(s.length);for(var u=0;u<s.length;u++)s.words[u]=0}var l=r.clone()._ishlnsubmul(n,1,h);0===l.negative&&(r=l,s&&(s.words[h]=1));for(var d=h-1;d>=0;d--){var f=67108864*(0|r.words[n.length+d])+(0|r.words[n.length+d-1]);for(f=Math.min(f/a|0,67108863),r._ishlnsubmul(n,f,d);0!==r.negative;)f--,r.negative=0,r._ishlnsubmul(n,1,d),r.isZero()||(r.negative^=1);s&&(s.words[d]=f)}return s&&s.strip(),r.strip(),"div"!==e&&0!==i&&r.iushrn(i),{div:s||null,mod:r}},o.prototype.divmod=function(t,e,i){return r(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(s=this.neg().divmod(t,e),"mod"!==e&&(n=s.div.neg()),"div"!==e&&(a=s.mod.neg(),i&&0!==a.negative&&a.iadd(t)),{div:n,mod:a}):0===this.negative&&0!==t.negative?(s=this.divmod(t.neg(),e),"mod"!==e&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&t.negative)?(s=this.neg().divmod(t.neg(),e),"div"!==e&&(a=s.mod.neg(),i&&0!==a.negative&&a.isub(t)),{div:s.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,a,s},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var i=0!==e.div.negative?e.mod.isub(t):e.mod,r=t.ushrn(1),n=t.andln(1),o=i.cmp(r);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){r(t<=67108863);for(var e=(1<<26)%t,i=0,n=this.length-1;n>=0;n--)i=(e*i+(0|this.words[n]))%t;return i},o.prototype.idivn=function(t){r(t<=67108863);for(var e=0,i=this.length-1;i>=0;i--){var n=(0|this.words[i])+67108864*e;this.words[i]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){r(0===t.negative),r(!t.isZero());var e=this,i=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),a=new o(0),s=new o(0),h=new o(1),u=0;e.isEven()&&i.isEven();)e.iushrn(1),i.iushrn(1),++u;for(var l=i.clone(),d=e.clone();!e.isZero();){for(var f=0,c=1;0==(e.words[0]&c)&&f<26;++f,c<<=1);if(f>0)for(e.iushrn(f);f-- >0;)(n.isOdd()||a.isOdd())&&(n.iadd(l),a.isub(d)),n.iushrn(1),a.iushrn(1);for(var p=0,m=1;0==(i.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(i.iushrn(p);p-- >0;)(s.isOdd()||h.isOdd())&&(s.iadd(l),h.isub(d)),s.iushrn(1),h.iushrn(1);e.cmp(i)>=0?(e.isub(i),n.isub(s),a.isub(h)):(i.isub(e),s.isub(n),h.isub(a))}return{a:s,b:h,gcd:i.iushln(u)}},o.prototype._invmp=function(t){r(0===t.negative),r(!t.isZero());var e=this,i=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,a=new o(1),s=new o(0),h=i.clone();e.cmpn(1)>0&&i.cmpn(1)>0;){for(var u=0,l=1;0==(e.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(e.iushrn(u);u-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);for(var d=0,f=1;0==(i.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(i.iushrn(d);d-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);e.cmp(i)>=0?(e.isub(i),a.isub(s)):(i.isub(e),s.isub(a))}return(n=0===e.cmpn(1)?a:s).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),i=t.clone();e.negative=0,i.negative=0;for(var r=0;e.isEven()&&i.isEven();r++)e.iushrn(1),i.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;i.isEven();)i.iushrn(1);var n=e.cmp(i);if(n<0){var o=e;e=i,i=o}else if(0===n||0===i.cmpn(1))break;e.isub(i)}return i.iushln(r)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){r("number"==typeof t);var e=t%26,i=(t-e)/26,n=1<<e;if(this.length<=i)return this._expand(i+1),this.words[i]|=n,this;for(var o=n,a=i;0!==o&&a<this.length;a++){var s=0|this.words[a];o=(s+=o)>>>26,s&=67108863,this.words[a]=s}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,i=t<0;if(0!==this.negative&&!i)return-1;if(0===this.negative&&i)return 1;if(this.strip(),this.length>1)e=1;else{i&&(t=-t),r(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:n<t?-1:1}return 0!==this.negative?0|-e:e},o.prototype.cmp=function(t){if(0!==this.negative&&0===t.negative)return-1;if(0===this.negative&&0!==t.negative)return 1;var e=this.ucmp(t);return 0!==this.negative?0|-e:e},o.prototype.ucmp=function(t){if(this.length>t.length)return 1;if(this.length<t.length)return-1;for(var e=0,i=this.length-1;i>=0;i--){var r=0|this.words[i],n=0|t.words[i];if(r!==n){r<n?e=-1:r>n&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new M(t)},o.prototype.toRed=function(t){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return r(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return r(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var v={k256:null,p224:null,p192:null,p25519:null};function y(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function b(){y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function _(){y.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){y.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function A(){y.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function M(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else r(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function E(t){M.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}y.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},y.prototype.ireduce=function(t){var e,i=t;do{this.split(i,this.tmp),e=(i=(i=this.imulK(i)).iadd(this.tmp)).bitLength()}while(e>this.n);var r=e<this.n?-1:i.ucmp(this.p);return 0===r?(i.words[0]=0,i.length=1):r>0?i.isub(this.p):void 0!==i.strip?i.strip():i._strip(),i},y.prototype.split=function(t,e){t.iushrn(this.n,0,e)},y.prototype.imulK=function(t){return t.imul(this.k)},n(b,y),b.prototype.split=function(t,e){for(var i=4194303,r=Math.min(t.length,9),n=0;n<r;n++)e.words[n]=t.words[n];if(e.length=r,t.length<=9)return t.words[0]=0,void(t.length=1);var o=t.words[9];for(e.words[e.length++]=o&i,n=10;n<t.length;n++){var a=0|t.words[n];t.words[n-10]=(a&i)<<4|o>>>22,o=a}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},b.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,i=0;i<t.length;i++){var r=0|t.words[i];e+=977*r,t.words[i]=67108863&e,e=64*r+(e/67108864|0)}return 0===t.words[t.length-1]&&(t.length--,0===t.words[t.length-1]&&t.length--),t},n(_,y),n(w,y),n(A,y),A.prototype.imulK=function(t){for(var e=0,i=0;i<t.length;i++){var r=19*(0|t.words[i])+e,n=67108863&r;r>>>=26,t.words[i]=n,e=r}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(v[t])return v[t];var e;if("k256"===t)e=new b;else if("p224"===t)e=new _;else if("p192"===t)e=new w;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new A}return v[t]=e,e},M.prototype._verify1=function(t){r(0===t.negative,"red works only with positives"),r(t.red,"red works only with red numbers")},M.prototype._verify2=function(t,e){r(0==(t.negative|e.negative),"red works only with positives"),r(t.red&&t.red===e.red,"red works only with red numbers")},M.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},M.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},M.prototype.add=function(t,e){this._verify2(t,e);var i=t.add(e);return i.cmp(this.m)>=0&&i.isub(this.m),i._forceRed(this)},M.prototype.iadd=function(t,e){this._verify2(t,e);var i=t.iadd(e);return i.cmp(this.m)>=0&&i.isub(this.m),i},M.prototype.sub=function(t,e){this._verify2(t,e);var i=t.sub(e);return i.cmpn(0)<0&&i.iadd(this.m),i._forceRed(this)},M.prototype.isub=function(t,e){this._verify2(t,e);var i=t.isub(e);return i.cmpn(0)<0&&i.iadd(this.m),i},M.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},M.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},M.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},M.prototype.isqr=function(t){return this.imul(t,t.clone())},M.prototype.sqr=function(t){return this.mul(t,t)},M.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(r(e%2==1),3===e){var i=this.m.add(new o(1)).iushrn(2);return this.pow(t,i)}for(var n=this.m.subn(1),a=0;!n.isZero()&&0===n.andln(1);)a++,n.iushrn(1);r(!n.isZero());var s=new o(1).toRed(this),h=s.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);0!==this.pow(l,u).cmp(h);)l.redIAdd(h);for(var d=this.pow(l,n),f=this.pow(t,n.addn(1).iushrn(1)),c=this.pow(t,n),p=a;0!==c.cmp(s);){for(var m=c,g=0;0!==m.cmp(s);g++)m=m.redSqr();r(g<p);var v=this.pow(d,new o(1).iushln(p-g-1));f=f.redMul(v),d=v.redSqr(),c=c.redMul(d),p=g}return f},M.prototype.invm=function(t){var e=t._invmp(this.m);return 0!==e.negative?(e.negative=0,this.imod(e).redNeg()):this.imod(e)},M.prototype.pow=function(t,e){if(e.isZero())return new o(1).toRed(this);if(0===e.cmpn(1))return t.clone();var i=new Array(16);i[0]=new o(1).toRed(this),i[1]=t;for(var r=2;r<i.length;r++)i[r]=this.mul(i[r-1],t);var n=i[0],a=0,s=0,h=e.bitLength()%26;for(0===h&&(h=26),r=e.length-1;r>=0;r--){for(var u=e.words[r],l=h-1;l>=0;l--){var d=u>>l&1;n!==i[0]&&(n=this.sqr(n)),0!==d||0!==a?(a<<=1,a|=d,(4===++s||0===r&&0===l)&&(n=this.mul(n,i[a]),s=0,a=0)):s=0}h=26}return n},M.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},M.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new E(t)},n(E,M),E.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},E.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},E.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var i=t.imul(e),r=i.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=i.isub(r).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},E.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var i=t.mul(e),r=i.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=i.isub(r).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},E.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t,this)}).call(this,i(20)(t))},function(t,e,i){var r,n,o,a,s,h,u,l;t.exports=(l=i(5),n=(r=l).lib,o=n.WordArray,a=n.Hasher,s=r.algo,h=[],u=s.SHA1=a.extend({_doReset:function(){this._hash=new o.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(t,e){for(var i=this._hash.words,r=i[0],n=i[1],o=i[2],a=i[3],s=i[4],u=0;u<80;u++){if(u<16)h[u]=0|t[e+u];else{var l=h[u-3]^h[u-8]^h[u-14]^h[u-16];h[u]=l<<1|l>>>31}var d=(r<<5|r>>>27)+s+h[u];d+=u<20?1518500249+(n&o|~n&a):u<40?1859775393+(n^o^a):u<60?(n&o|n&a|o&a)-1894007588:(n^o^a)-899497514,s=a,a=o,o=n<<30|n>>>2,n=r,r=d}i[0]=i[0]+r|0,i[1]=i[1]+n|0,i[2]=i[2]+o|0,i[3]=i[3]+a|0,i[4]=i[4]+s|0},_doFinalize:function(){var t=this._data,e=t.words,i=8*this._nDataBytes,r=8*t.sigBytes;return e[r>>>5]|=128<<24-r%32,e[14+(r+64>>>9<<4)]=Math.floor(i/4294967296),e[15+(r+64>>>9<<4)]=i,t.sigBytes=4*e.length,this._process(),this._hash},clone:function(){var t=a.clone.call(this);return t._hash=this._hash.clone(),t}}),r.SHA1=a._createHelper(u),r.HmacSHA1=a._createHmacHelper(u),l.SHA1)},function(t,e,i){var r,n,o,a;t.exports=(r=i(5),o=(n=r).lib.Base,a=n.enc.Utf8,void(n.algo.HMAC=o.extend({init:function(t,e){t=this._hasher=new t.init,"string"==typeof e&&(e=a.parse(e));var i=t.blockSize,r=4*i;e.sigBytes>r&&(e=t.finalize(e)),e.clamp();for(var n=this._oKey=e.clone(),o=this._iKey=e.clone(),s=n.words,h=o.words,u=0;u<i;u++)s[u]^=1549556828,h[u]^=909522486;n.sigBytes=o.sigBytes=r,this.reset()},reset:function(){var t=this._hasher;t.reset(),t.update(this._iKey)},update:function(t){return this._hasher.update(t),this},finalize:function(t){var e=this._hasher,i=e.finalize(t);return e.reset(),e.finalize(this._oKey.clone().concat(i))}})))},function(t,e,r){"use strict";var n=r(0);function o(t,e,i){var r,n,o,a,s,h=navigator.userAgent.toLowerCase(),u=i,l=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];if(r=1+((192&t[e+2])>>>6),!((n=(60&t[e+2])>>>2)>l.length-1))return a=(1&t[e+2])<<2,a|=(192&t[e+3])>>>6,/firefox/i.test(h)?n>=6?(r=5,s=new Array(4),o=n-3):(r=2,s=new Array(2),o=n):-1!==h.indexOf("android")?(r=2,s=new Array(2),o=n):(r=5,s=new Array(4),i&&(-1!==i.indexOf("mp4a.40.29")||-1!==i.indexOf("mp4a.40.5"))||!i&&n>=6?o=n-3:((i&&-1!==i.indexOf("mp4a.40.2")&&(n>=6&&1===a||/vivaldi/i.test(h))||!i&&1===a)&&(r=2,s=new Array(2)),o=n)),s[0]=r<<3,s[0]|=(14&n)>>1,s[1]|=(1&n)<<7,s[1]|=a<<3,5===r&&(s[1]|=(14&o)>>1,s[2]=(1&o)<<7,s[2]|=8,s[3]=0),{config:s,samplerate:l[n],channelCount:a,codec:"mp4a.40."+r,manifestCodec:u}}function a(t,e){return 255===t[e]&&240==(246&t[e+1])}function s(t,e){return 1&t[e+1]?7:9}function h(t,e){return(3&t[e+3])<<11|t[e+4]<<3|(224&t[e+5])>>>5}function u(t,e){return!!(e+1<t.length&&a(t,e))}function l(t,e,i){return o(t,e,i)}function d(t){return 9216e4/t}function f(t,e,i,r,n){var o=function(t,e,i,r,n){var o,a,u=t.length;if(o=s(t,e),a=h(t,e),(a-=o)>0&&e+o+a<=u)return{headerLength:o,frameLength:a,stamp:i+r*n}}(e,i,r,n,d(t));if(o){var a=o.stamp,u=o.headerLength,l=o.frameLength;return{sample:{unit:e.subarray(i+u,i+u+l),pts:a,dts:a},length:l+u}}}var c=function(){function t(t){this.data=t,this.bytesAvailable=t.byteLength,this.word=0,this.bitsAvailable=0}var e=t.prototype;return e.loadWord=function(){var t=this.data,e=this.bytesAvailable,i=t.byteLength-e,r=new Uint8Array(4),n=Math.min(4,e);if(0===n)throw new Error("no bytes available");r.set(t.subarray(i,i+n)),this.word=new DataView(r.buffer).getUint32(0),this.bitsAvailable=8*n,this.bytesAvailable-=n},e.skipBits=function(t){var e;this.bitsAvailable>t?(this.word<<=t,this.bitsAvailable-=t):(t-=this.bitsAvailable,t-=(e=t>>3)>>3,this.bytesAvailable-=e,this.loadWord(),this.word<<=t,this.bitsAvailable-=t)},e.readBits=function(t){var e=Math.min(this.bitsAvailable,t),i=this.word>>>32-e;return t>32&&logger.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=e,this.bitsAvailable>0?this.word<<=e:this.bytesAvailable>0&&this.loadWord(),(e=t-e)>0&&this.bitsAvailable?i<<e|this.readBits(e):i},e.skipLZ=function(){var t;for(t=0;t<this.bitsAvailable;++t)if(0!=(this.word&2147483648>>>t))return this.word<<=t,this.bitsAvailable-=t,t;return this.loadWord(),t+this.skipLZ()},e.skipUEG=function(){this.skipBits(1+this.skipLZ())},e.skipEG=function(){this.skipBits(1+this.skipLZ())},e.readUEG=function(){var t=this.skipLZ();return this.readBits(t+1)-1},e.readEG=function(){var t=this.readUEG();return 1&t?1+t>>>1:-1*(t>>>1)},e.readBoolean=function(){return 1===this.readBits(1)},e.readUByte=function(){return this.readBits(8)},e.readUShort=function(){return this.readBits(16)},e.readUInt=function(){return this.readBits(32)},e.skipScalingList=function(t){var e,i=8,r=8;for(e=0;e<t;e++)0!==r&&(r=(i+this.readEG()+256)%256),i=0===r?i:r},e.readSPS=function(){var t,e,i,r,n,o,a,s=0,h=0,u=0,l=0,d=this.readUByte.bind(this),f=this.readBits.bind(this),c=this.readUEG.bind(this),p=this.readBoolean.bind(this),m=this.skipBits.bind(this),g=this.skipEG.bind(this),v=this.skipUEG.bind(this),y=this.skipScalingList.bind(this);if(d(),t=d(),f(5),m(3),d(),v(),100===t||110===t||122===t||244===t||44===t||83===t||86===t||118===t||128===t){var b=c();if(3===b&&m(1),v(),v(),m(1),p())for(o=3!==b?8:12,a=0;a<o;a++)p()&&y(a<6?16:64)}v();var _=c();if(0===_)c();else if(1===_)for(m(1),g(),g(),e=c(),a=0;a<e;a++)g();v(),m(1),i=c(),r=c(),0===(n=f(1))&&m(1),m(1),p()&&(s=c(),h=c(),u=c(),l=c());var w=[1,1];if(p()&&p())switch(d()){case 1:w=[1,1];break;case 2:w=[12,11];break;case 3:w=[10,11];break;case 4:w=[16,11];break;case 5:w=[40,33];break;case 6:w=[24,11];break;case 7:w=[20,11];break;case 8:w=[32,11];break;case 9:w=[80,33];break;case 10:w=[18,11];break;case 11:w=[15,11];break;case 12:w=[64,33];break;case 13:w=[160,99];break;case 14:w=[4,3];break;case 15:w=[3,2];break;case 16:w=[2,1];break;case 255:w=[d()<<8|d(),d()<<8|d()]}return{width:Math.ceil(16*(i+1)-2*s-2*h),height:(2-n)*(r+1)*16-(n?2:4)*(u+l),pixelRatio:w}},e.readSliceType=function(){return this.readUByte(),this.readUEG(),this.readUEG()},t}(),p=r(23),m=r(12);r(50);function g(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var v=function(){function t(t,e,i){this.TAG="TSDemuxer",this._config=t,this._onError=null,this._onMediaInfo=null,this._onMetaDataArrived=null,this._onScriptDataArrived=null,this._onTrackMetadata=null,this._onDataAvailable=null,this._hasAudio=!1,this._hasVideo=!1,this._hasAudioFlagOverrided=!1,this._hasVideoFlagOverrided=!1,this._initVideoMetadata=!1,this._initAudioMetadata=!1,this._mediaInfo=new m.a,this._mediaInfo.hasAudio=!1,this._mediaInfo.hasVideo=!1,this._metadata=null,this._audioMetadata=null,this._videoMetadata=null,this.tagPosition=0,this.filePosition=0,this.isHEVC=0,this.isAAC=0,this.avcTrackPid=-1,this.audioTrackPid=-1,this.id3TrackPid=-1,this.audioSampleRate=0,this.audioChannel=2,this.audioBitPerSample=16,this.avcTrackPesData=null,this.audioTrackPesData=null,this.id3TrackPesData=null,this.findKeyframe=!0,this.syncVideoPts=0,this.syncAudioPts=0,this.startVideoPts=0,this.startAudioPts=0,this.accurateTimeOffset=0,this.lastVideoPts=0,this.currentVideoPts=0,this.seekVideoHistoryPts=0,this.currentAudioPts=0,this.audioFrameNum=0,this.reset=0,this._videoTrack={type:"video",id:1,sequenceNumber:0,samples:[],length:0},this._audioTrack={type:"audio",id:2,sequenceNumber:0,samples:[],length:0},this._timestampBase=0,this._timescale=1e3,this._duration=0,this._durationOverrided=!1,this._AVC_SPS=null,this._AVC_PPS=null,this._HEVC_VPS=null,this._HEVC_SPS=null,this._HEVC_PPS=null,this._StartCode=[0,0,0,1],this._AVC_Config=null,this._callbackInitFlag=!1,this._callbackMediaDataFunc=e,this._callbackMediaDataUserPtr=i}var e,r,o,a=t.prototype;return a.bindDataSource=function(t){return t.onDataArrival=this.append.bind(this),this},a.resetMediaInfo=function(){this._mediaInfo=new m.a},a.resetMediaPts=function(t){this.reset=t,this.syncVideoPts=0,this.syncAudioPts=0,this.findKeyframe=!0,this._videoTrack.samples=[],this._audioTrack.samples=[]},a._onDataAvailableToSoftwareDecodeVideo=function(t,e){var i=e.samples;if(!(t<1&&i.length>0)){var r=-1;for(i.length>1&&(r=0);i.length;){for(var n=i.shift(),o=0,a=0;a<n.units.length;a++)o+=n.units[a].data.length;for(var s=0,h=new Uint8Array(o);n.units.length;){var u=n.units.shift();27==t&&(u.data[0]=0,u.data[1]=0,u.data[2]=0,u.data[3]=1),h.set(u.data,s),s+=u.data.length}this._callbackMediaDataFunc&&(r>=0&&r++,this._callbackMediaDataFunc(this._callbackMediaDataUserPtr,!0,1,t,n.isKeyframe,h,o,n.pts,0,0))}}},a._onDataAvailableToSoftwareDecodeAudio=function(t,e){var i=e.samples,r=-1;for(i.length>1&&(r=0);i.length;){var n=i.shift();this._callbackMediaDataFunc&&(r>=0&&r++,this._callbackMediaDataFunc(this._callbackMediaDataUserPtr,!0,2,t,0,n.unit,n.length,this._SampleRate,this._ChannelNum,this._SampleRate>=44100?32:16))}},t.createTrack=function(t,e){return{container:"video"===t||"audio"===t?"video/mp2t":void 0,type:t,id:RemuxerTrackIdConfig[t],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:"video"===t?0:void 0,isAAC:"audio"===t||void 0,duration:"audio"===t?e:void 0,isHEVC:0}},t._syncOffset=function(t){for(var e=Math.min(1e3,t.length-564),i=0;i<e;){if(71===t[i]&&71===t[i+188]&&71===t[i+376])return i;i++}return-1},a.destroy=function(){this._initPTS=this._initDTS=void 0,this._duration=0},a.parsePAT=function(t,e){return(31&t[e+10])<<8|t[e+11]},a.parsePMT=function(t,e,i,r){var o,a,s={audio:-1,avc:-1,hevc:-1,id3:-1,isAAC:!0};for(o=e+3+((15&t[e+1])<<8|t[e+2])-4,e+=12+((15&t[e+10])<<8|t[e+11]);e<o;){switch(a=(31&t[e+1])<<8|t[e+2],t[e]){case 207:if(!r)break;case 15:-1===s.audio&&(s.audio=a);break;case 21:-1===s.id3&&(s.id3=a);break;case 219:if(!r){logger.log("unknown stream type:"+t[e]);break}case 27:-1===s.avc&&(s.avc=a),n.setCodecTypeStr("H264");break;case 36:-1===s.avc&&(s.avc=a,s.hevc=a),n.setCodecTypeStr("H265");break;case 3:case 4:i?-1===s.audio&&(s.audio=a,s.isAAC=!1):logger.log("MPEG audio found, not supported in this browser for now")}e+=5+((15&t[e+3])<<8|t[e+4])}return s},a.parsePES=function(t){if(1!==this.reset){var e,i,r,n,o,a,s,h,u=0,l=t.data;if(!t||0===t.size)return null;for(;l[0].length<19&&l.length>1;){var d=new Uint8Array(l[0].length+l[1].length);d.set(l[0]),d.set(l[1],l[0].length),l[0]=d,l.splice(1,1)}if(1===((e=l[0])[0]<<16)+(e[1]<<8)+e[2]){if((r=(e[4]<<8)+e[5])&&r>t.size-6)return null;if(192&(i=e[7])&&((a=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2)>4294967295&&(a-=4294967295),64&i?((s=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2)>4294967295&&(s-=4294967295),a-s>54e5&&(a=s)):s=a),h=(n=e[8])+9,t.size<=h)return null;t.size-=h,o=new Uint8Array(t.size);for(var f=0,c=l.length;f<c;f++){var p=(e=l[f]).byteLength;if(h){if(h>p){h-=p;continue}e=e.subarray(h),p-=h,h=0}o.set(e,u),u+=p}return r&&(r-=n+3),{data:o,pts:a,dts:s,len:r}}return null}},a.pushAccesUnit=function(t,e){if(t.units.length&&t.frame){var i=e.samples,r=i.length;if(isNaN(t.pts)){if(!r)return void e.dropped++;var n=i[r-1];t.pts=n.pts,t.dts=n.dts}!this.config.forceKeyFrameOnDiscontinuity||!0===t.key||e.sps&&(r||this.contiguous)?(t.id=r,i.push(t)):e.dropped++}t.debug.length&&logger.log(t.pts+"/"+t.dts+":"+t.debug)},a.parseAVCPES=function(t,e,r){var n=this,o=0;(0===this.startVideoPts||t.pts<this.startVideoPts)&&(this.startVideoPts=t.pts,o=1),this.audioFrameNum=0;var a=this._parseAVCNALu(t.data),s=[],h=0;t.data=null;var u=!1,l=!1;a.forEach((function(e){var r=e.data.length,o=new Uint8Array(4+r);o[0]=r>>24&255,o[1]=r>>16&255,o[2]=r>>8&255,o[3]=255&r,o.set(e.data,4);var a={type:e.type,data:o};switch(h+=o.length,s.push(a),e.type){case 1:!0;var d=e.data;if(l&&d.length>4)new c(d).readSliceType();break;case 5:!0,n.findKeyframe=!1,u=!0;break;case 6:!0;var f=new c(n.discardEPB(e.data));f.readUByte();for(var m=0,g=0,v=!1,y=0;!v&&f.bytesAvailable>1;){m=0;do{m+=y=f.readUByte()}while(255===y);g=0;do{g+=y=f.readUByte()}while(255===y);if(4===m&&0!==f.bytesAvailable){if(v=!0,181===f.readUByte())if(49===f.readUShort())if(1195456820===f.readUInt())if(3===f.readUByte()){var b=f.readUByte(),_=31&b,w=[b,f.readUByte()];for(i=0;i<_;i++)w.push(f.readUByte()),w.push(f.readUByte()),w.push(f.readUByte());n._insertSampleInOrder(n._txtTrack.samples,{type:3,pts:t.pts,bytes:w})}}else if(5===m&&0!==f.bytesAvailable){if(v=!0,g>16){var A=[];for(i=0;i<16;i++)A.push(f.readUByte().toString(16)),3!==i&&5!==i&&7!==i&&9!==i||A.push("-");var M=g-16,E=new Uint8Array(M);for(i=0;i<M;i++)E[i]=f.readUByte()}}else if(g<f.bytesAvailable)for(i=0;i<g;i++)f.readUByte()}break;case 7:!0,l=!0,n.findKeyframe=!1,n.tagPosition=n.filePosition,n._AVC_Config=p.a.parseSPS(e.data);var S=n._AVC_Config,k="avc1.";if(S)for(var T=e.data.subarray(1,4),R=0;R<3;R++){var I=T[R].toString(16);I.length<2&&(I="0"+I),k+=I}if(!n._initVideoMetadata){null==n._AVC_SPS&&(n._AVC_SPS=new Uint8Array(e.data.length+4),n._AVC_SPS.set(n._StartCode,0),n._AVC_SPS.set(e.data,4));var C=n._videoMetadata,P=n._videoTrack;if(C?void 0!==C.avcc&&Log.w(n.TAG,"Found another AVCDecoderConfigurationRecord!"):(!1===n._hasVideo&&!1===n._hasVideoFlagOverrided&&(n._hasVideo=!0,n._mediaInfo.hasVideo=!0),(C=n._videoMetadata={}).type="video",C.id=P.id,C.timescale=n._timescale,C.duration=n._duration),C.codecWidth=S.codec_size.width,C.codecHeight=S.codec_size.height,C.presentWidth=S.present_size.width,C.presentHeight=S.present_size.height,C.profile=S.profile_string,C.level=S.level_string,C.bitDepth=S.bit_depth,C.chromaFormat=S.chroma_format,C.sarRatio=S.sar_ratio,C.frameRate=S.frame_rate,!1!==S.frame_rate.fixed&&0!==S.frame_rate.fps_num&&0!==S.frame_rate.fps_den||(C.frameRate=n._referenceFrameRate),void 0!==C.frameRate){var x=C.frameRate.fps_den,D=C.frameRate.fps_num;C.refSampleDuration=C.timescale*(x/D)}C.codec=k;var O=n._mediaInfo;O.width=C.codecWidth,O.height=C.codecHeight,void 0!==C.frameRate&&(O.fps=C.frameRate.fps),O.profile=C.profile,O.level=C.level,O.refFrames=S.ref_frames,O.chromaFormat=S.chroma_format_string,O.sarNum=C.sarRatio.width,O.sarDen=C.sarRatio.height,O.videoCodec=k,O.hasAudio?null!=O.audioCodec&&(O.mimeType='video/x-flv; codecs="'+O.videoCodec+","+O.audioCodec+'"'):O.mimeType='video/x-flv; codecs="'+O.videoCodec+'"',O.isComplete()&&n._onMediaInfo(O)}break;case 8:if(!0,n.findKeyframe=!1,null==n._AVC_PPS&&(n._AVC_PPS=new Uint8Array(e.data.length+4),n._AVC_PPS.set(n._StartCode,0),n._AVC_PPS.set(e.data,4)),!n._initVideoMetadata){n._initVideoMetadata=!0;var B=n._videoMetadata;if(null==B.avcc){var L=0,W=n._AVC_SPS.length-4+8+1+2+(n._AVC_PPS.length-4);B.avcc=new Uint8Array(W+1),B.avcc[0]=1,B.avcc[1]=n._AVC_SPS[5],B.avcc[2]=n._AVC_SPS[6],B.avcc[3]=n._AVC_SPS[7],B.avcc[4]=255,B.avcc[5]=225,L=6;new Uint8Array;B.avcc[L++]=n._AVC_SPS.length-4>>8,B.avcc[L++]=n._AVC_SPS.length-4&255;var N=n._AVC_SPS.subarray(4,n._AVC_SPS.length);B.avcc.set(N,L),L+=N.length,B.avcc[L++]=1,B.avcc[L++]=n._AVC_PPS.length-4>>8,B.avcc[L++]=n._AVC_PPS.length-4&255;var F=n._AVC_PPS.subarray(4,n._AVC_PPS.length);B.avcc.set(F,L),L+=F.length,B.avcc[W]=1}n._onTrackMetadata("video",B)}break;default:!1}}));var d=(t.pts-this.startVideoPts)/90;u&&this.syncVideoPts<1&&(this.syncVideoPts=this.startVideoPts);var f=this._videoTrack,m={units:s,length:h,isKeyframe:u,dts:d,cts:0,pts:d};u&&(m.fileposition=this.tagPosition),0!==this.reset||this.findKeyframe||(f.samples.push(m),f.length+=h),this.filePosition+=h,this.accurateTimeOffset=m.pts,this.lastVideoPts=t.pts,1===o&&(this.seekVideoHistoryPts=d),e&&0===this.reset&&("auto"===this._config.decodeType||"hard"===this._config.decodeType?this._onDataAvailable(this._audioTrack,this._videoTrack):(this._videoTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeVideo(27,this._videoTrack),this._audioTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeAudio(86018,this._audioTrack)))},a.parseHEVCPES=function(t,e,i){(0===this.startVideoPts||t.pts<this.startVideoPts)&&(this.startVideoPts=t.pts);var r=[],n=0,o={type:1,data:t.data},a=0;if((n+=t.data.length)>32){var s=0;for(s=0;s<32;s++)if(0===t.data[s]&&0===t.data[s+1]&&0===t.data[s+2]&&1===t.data[s+3]&&64===t.data[s+4]){a=1,this.findKeyframe=!1;break}}r.push(o);var h=(t.pts-this.startVideoPts)/90;a&&this.syncVideoPts<1&&(this.syncVideoPts=this.startVideoPts);var u=this._videoTrack,l={units:r,length:n,isKeyframe:a,dts:h,cts:0,pts:h};a&&(l.fileposition=this.tagPosition),u.samples.push(l),u.length+=n,this._videoTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeVideo(173,this._videoTrack),this._audioTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeAudio(86018,this._audioTrack)},a._insertSampleInOrder=function(t,e){var i=t.length;if(i>0){if(e.pts>=t[i-1].pts)t.push(e);else for(var r=i-1;r>=0;r--)if(e.pts<t[r].pts){t.splice(r,0,e);break}}else t.push(e)},a._getLastNalUnit=function(){var t,e=this.avcSample;if(!e||0===e.units.length){var i=this._avcTrack.samples;e=i[i.length-1]}if(e){var r=e.units;t=r[r.length-1]}return t},a._parseAVCNALu=function(t){var e,i,r,n=0,o=t.byteLength,a=0,s=[],h=-1;for(-1===a&&(h=0,r=31&t[0],a=0,n=1);n<o;)if(e=t[n++],a)if(1!==a)if(e)if(1===e){if(h>=0)9!=(i={data:t.subarray(h,n-a-1),type:r}).type&&s.push(i);else;n<o?(h=n,r=31&t[n],a=0):a=-1}else a=0;else a=3;else a=e?0:2;else a=e?0:1;if(h>=0&&a>=0&&(i={data:t.subarray(h,o),type:r,state:a},s.push(i)),0===s.length){var u=this._getLastNalUnit();if(u){var l=new Uint8Array(u.data.byteLength+t.byteLength);l.set(u.data,0),l.set(t,u.data.byteLength),u.data=l}}return s},a.discardEPB=function(t){for(var e,i,r=t.byteLength,n=[],o=1;o<r-2;)0===t[o]&&0===t[o+1]&&3===t[o+2]?(n.push(o+2),o+=2):o++;if(0===n.length)return t;e=r-n.length,i=new Uint8Array(e);var a=0;for(o=0;o<e;a++,o++)a===n[0]&&(a++,n.shift()),i[o]=t[a];return i},a.parseAACPES=function(t,e){0===this.startAudioPts&&(this.startAudioPts=t.pts);var i,r,n,o,a,s,h,c=this._audioTrack,p=t.data,m=t.pts,g=this.aacOverFlow,v=this.aacLastPTS;if(g){var y=new Uint8Array(g.byteLength+p.byteLength);y.set(g,0),y.set(p,g.byteLength),p=y}for(n=0,a=p.length;n<a-1&&!u(p,n);n++);if(n&&(n<a-1?(s="AAC PES did not start with ADTS header,offset:"+n,h=!1):(s="no ADTS header found in AAC PES",h=!0),logger.warn("parsing error:"+s),this.observer.trigger(Event.ERROR,{type:ErrorTypes.MEDIA_ERROR,details:ErrorDetails.FRAG_PARSING_ERROR,fatal:h,reason:s}),h))return;if(this.audioSampleRate<1){var b=l(p,n,this.audioCodec);if(b&&(this.audioSampleRate=b.samplerate,this.audioChannel=b.channelCount,this.audioBitPerSample=16,!this._initAudioMetadata)){this._initAudioMetadata=!0;var _=this._audioMetadata,w=this._audioTrack;_||((_=this._audioMetadata={}).type="audio",_.id=w.id,_.timescale=1e3,_.duration=0,_.audioSampleRate=this.audioSampleRate,_.channelCount=this.audioChannel),_.config&&Log.w(this.TAG,"Found another AudioSpecificConfig!");b.config;_.audioSampleRate=b.samplerate,_.channelCount=b.channelCount,_.codec=b.codec,_.originalCodec=b.originalCodec,_.config=b.config,_.refSampleDuration=1024/_.audioSampleRate*_.timescale,this._SampleRate=b.samplerate,this._ChannelNum=b.channelCount,this._onDataAvailable(this._audioTrack,this._videoTrack),this._onTrackMetadata("audio",_);var A=this._mediaInfo;A.audioCodec=_.originalCodec,A.audioSampleRate=_.audioSampleRate,A.audioChannelCount=_.channelCount,A.hasVideo?null!=A.videoCodec&&(A.mimeType='video/x-flv; codecs="'+A.videoCodec+","+A.audioCodec+'"'):A.mimeType='video/x-flv; codecs="'+A.audioCodec+'"',A.isComplete()&&this._onMediaInfo(A)}}if(r=0,i=d(this.audioSampleRate),g&&v){var M=v+i;Math.abs(M-m)>1&&(m=M)}for(;n<a;)if(u(p,n)&&n+5<a){var E=f(this.audioSampleRate,p,n,m,r);if(!E)break;var S=Math.round((E.sample.pts-this.startAudioPts)/90),k={unit:E.sample.unit,length:E.length,dts:S,pts:S};0!==this.reset||this.findKeyframe||(this.syncAudioPts<1&&this.syncVideoPts>0&&(this.syncAudioPts=this.syncVideoPts),this.syncAudioPts>0&&(c.samples.push(k),c.length+=E.length)),n+=E.length,o=E.sample.pts,r++}else n++;g=n<a?p.subarray(n,a):null,this.aacOverFlow=g,this.aacLastPTS=o},a.parseMPEGPES=function(t){for(var e=t.data,i=e.length,r=0,n=0,o=t.pts;n<i;)if(MpegAudio.isHeader(e,n)){var a=MpegAudio.appendFrame(this._audioTrack,e,n,o,r);if(!a)break;n+=a.length,r++}else n++},a.append=function(e,i,r){if(null!=e&&(i=e.length,1!==this.reset)){var n,o,a,s,h,u,l=i,d=!1,f=-1,c=-1,p=-1,m=this.avcTrackPesData,g=this.audioTrackPesData,v=this.id3TrackPesData,y=!1,b=t._syncOffset(e);for(l-=(l+b)%188,n=b;n<l;n+=188)if(71===e[n]){if(o=!!(64&e[n+1]),a=((31&e[n+1])<<8)+e[n+2],(48&e[n+3])>>4>1){if((s=n+5+e[n+4])===n+188)continue}else s=n+4;switch(a){case f:o&&(m&&(h=this.parsePES(m))&&(1==this.isHEVC?this.parseHEVCPES(h,!1,r):this.parseAVCPES(h,!1,r)),m={data:[],size:0}),m&&(m.data.push(e.subarray(s,n+188)),m.size+=n+188-s);break;case c:o&&(g&&(h=this.parsePES(g))&&(this.isAAC?this.parseAACPES(h,!1):this.parseMPEGPES(h)),g={data:[],size:0}),g&&(g.data.push(e.subarray(s,n+188)),g.size+=n+188-s);break;case p:o&&(v&&(h=this.parsePES(v))&&parseID3PES(h),v={data:[],size:0}),v&&(v.data.push(e.subarray(s,n+188)),v.size+=n+188-s);break;case 0:o&&(s+=e[s]+1),u=this.parsePAT(e,s);break;case u:o&&(s+=e[s]+1);var _=this.parsePMT(e,s,!1,!1);f=_.avc,_.hevc>0&&(f=_.hevc,this.isHEVC=1),f>0&&(this.avcTrackPid=f),!this._callbackInitFlag&&this._callbackMediaDataFunc&&(this._callbackInitFlag=!0,1===this.isHEVC||"auto"!==this._config.decodeType&&"hard"!==this._config.decodeType||this._callbackMediaDataFunc(this._callbackMediaDataUserPtr,!1,1,0,0,null,0,0,0,0)),(c=_.audio)>0&&(this.audioTrackPid=c,this.isAAC=_.isAAC),(p=_.id3)>0&&(this.id3TrackPid=p),d&&!y&&(d=!1,n=b-188),y=!0;break;case 17:case 8191:break;default:d=!0}}m&&(h=this.parsePES(m))?(1==this.isHEVC?this.parseHEVCPES(h,!0,r):this.parseAVCPES(h,!0,r),this.avcTrackPesData=null):this.avcTrackPesData=m,g&&(h=this.parsePES(g))?(this.isAAC?this.parseAACPES(h,!0):this.parseMPEGPES(h),this.audioTrackPesData=null):(g&&g.size&&logger.log("last AAC PES packet truncated,might overlap between fragments"),this.audioTrackPesData=g),v&&(h=this.parsePES(v))?(parseID3PES(h),this.id3TrackPesData=null):this.id3TrackPesData=v}},e=t,(r=[{key:"onTrackMetadata",get:function(){return this._onTrackMetadata},set:function(t){this._onTrackMetadata=t}},{key:"onMediaInfo",get:function(){return this._onMediaInfo},set:function(t){this._onMediaInfo=t}},{key:"onMetaDataArrived",get:function(){return this._onMetaDataArrived},set:function(t){this._onMetaDataArrived=t}},{key:"onScriptDataArrived",get:function(){return this._onScriptDataArrived},set:function(t){this._onScriptDataArrived=t}},{key:"onError",get:function(){return this._onError},set:function(t){this._onError=t}},{key:"onDataAvailable",get:function(){return this._onDataAvailable},set:function(t){this._onDataAvailable=t}},{key:"timestampBase",get:function(){return this._timestampBase},set:function(t){this._timestampBase=t}},{key:"overridedDuration",get:function(){return this._duration},set:function(t){this._durationOverrided=!0,this._duration=t,this._mediaInfo.duration=t}},{key:"overridedHasAudio",set:function(t){this._hasAudioFlagOverrided=!0,this._hasAudio=t,this._mediaInfo.hasAudio=t}},{key:"overridedHasVideo",set:function(t){this._hasVideoFlagOverrided=!0,this._hasVideo=t,this._mediaInfo.hasVideo=t}}])&&g(e.prototype,r),o&&g(e,o),Object.defineProperty(e,"prototype",{writable:!1}),t}();e.a=v},function(t,e){var i={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==i.call(t)}},function(t,e,i){"use strict";var r=i(4).Buffer,n=i(149).Transform;function o(t){n.call(this),this._block=r.allocUnsafe(t),this._blockSize=t,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}i(3)(o,n),o.prototype._transform=function(t,e,i){var r=null;try{this.update(t,e)}catch(t){r=t}i(r)},o.prototype._flush=function(t){var e=null;try{this.push(this.digest())}catch(t){e=t}t(e)},o.prototype.update=function(t,e){if(function(t,e){if(!r.isBuffer(t)&&"string"!=typeof t)throw new TypeError(e+" must be a string or a buffer")}(t,"Data"),this._finalized)throw new Error("Digest already called");r.isBuffer(t)||(t=r.from(t,e));for(var i=this._block,n=0;this._blockOffset+t.length-n>=this._blockSize;){for(var o=this._blockOffset;o<this._blockSize;)i[o++]=t[n++];this._update(),this._blockOffset=0}for(;n<t.length;)i[this._blockOffset++]=t[n++];for(var a=0,s=8*t.length;s>0;++a)this._length[a]+=s,(s=this._length[a]/4294967296|0)>0&&(this._length[a]-=4294967296*s);return this},o.prototype._update=function(){throw new Error("_update is not implemented")},o.prototype.digest=function(t){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var e=this._digest();void 0!==t&&(e=e.toString(t)),this._block.fill(0),this._blockOffset=0;for(var i=0;i<4;++i)this._length[i]=0;return e},o.prototype._digest=function(){throw new Error("_digest is not implemented")},t.exports=o},function(t,e,i){"use strict";(function(e,r){var n;t.exports=S,S.ReadableState=E;i(6).EventEmitter;var o=function(t,e){return t.listeners(e).length},a=i(81),s=i(9).Buffer,h=e.Uint8Array||function(){};var u,l=i(150);u=l&&l.debuglog?l.debuglog("stream"):function(){};var d,f,c,p=i(151),m=i(82),g=i(83).getHighWaterMark,v=i(26).codes,y=v.ERR_INVALID_ARG_TYPE,b=v.ERR_STREAM_PUSH_AFTER_EOF,_=v.ERR_METHOD_NOT_IMPLEMENTED,w=v.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;i(3)(S,a);var A=m.errorOrDestroy,M=["error","close","destroy","pause","resume"];function E(t,e,r){n=n||i(27),t=t||{},"boolean"!=typeof r&&(r=e instanceof n),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=g(this,t,"readableHighWaterMark",r),this.buffer=new p,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(d||(d=i(18).StringDecoder),this.decoder=new d(t.encoding),this.encoding=t.encoding)}function S(t){if(n=n||i(27),!(this instanceof S))return new S(t);var e=this instanceof n;this._readableState=new E(t,this,e),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),a.call(this)}function k(t,e,i,r,n){u("readableAddChunk",e);var o,a=t._readableState;if(null===e)a.reading=!1,function(t,e){if(u("onEofChunk"),e.ended)return;if(e.decoder){var i=e.decoder.end();i&&i.length&&(e.buffer.push(i),e.length+=e.objectMode?1:i.length)}e.ended=!0,e.sync?C(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,P(t)))}(t,a);else if(n||(o=function(t,e){var i;r=e,s.isBuffer(r)||r instanceof h||"string"==typeof e||void 0===e||t.objectMode||(i=new y("chunk",["string","Buffer","Uint8Array"],e));var r;return i}(a,e)),o)A(t,o);else if(a.objectMode||e&&e.length>0)if("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===s.prototype||(e=function(t){return s.from(t)}(e)),r)a.endEmitted?A(t,new w):T(t,a,e,!0);else if(a.ended)A(t,new b);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!i?(e=a.decoder.write(e),a.objectMode||0!==e.length?T(t,a,e,!1):x(t,a)):T(t,a,e,!1)}else r||(a.reading=!1,x(t,a));return!a.ended&&(a.length<a.highWaterMark||0===a.length)}function T(t,e,i,r){e.flowing&&0===e.length&&!e.sync?(e.awaitDrain=0,t.emit("data",i)):(e.length+=e.objectMode?1:i.length,r?e.buffer.unshift(i):e.buffer.push(i),e.needReadable&&C(t)),x(t,e)}Object.defineProperty(S.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}}),S.prototype.destroy=m.destroy,S.prototype._undestroy=m.undestroy,S.prototype._destroy=function(t,e){e(t)},S.prototype.push=function(t,e){var i,r=this._readableState;return r.objectMode?i=!0:"string"==typeof t&&((e=e||r.defaultEncoding)!==r.encoding&&(t=s.from(t,e),e=""),i=!0),k(this,t,e,!1,i)},S.prototype.unshift=function(t){return k(this,t,null,!0,!1)},S.prototype.isPaused=function(){return!1===this._readableState.flowing},S.prototype.setEncoding=function(t){d||(d=i(18).StringDecoder);var e=new d(t);this._readableState.decoder=e,this._readableState.encoding=this._readableState.decoder.encoding;for(var r=this._readableState.buffer.head,n="";null!==r;)n+=e.write(r.data),r=r.next;return this._readableState.buffer.clear(),""!==n&&this._readableState.buffer.push(n),this._readableState.length=n.length,this};var R=1073741824;function I(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!=t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=function(t){return t>=R?t=R:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function C(t){var e=t._readableState;u("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(u("emitReadable",e.flowing),e.emittedReadable=!0,r.nextTick(P,t))}function P(t){var e=t._readableState;u("emitReadable_",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,W(t)}function x(t,e){e.readingMore||(e.readingMore=!0,r.nextTick(D,t,e))}function D(t,e){for(;!e.reading&&!e.ended&&(e.length<e.highWaterMark||e.flowing&&0===e.length);){var i=e.length;if(u("maybeReadMore read 0"),t.read(0),i===e.length)break}e.readingMore=!1}function O(t){var e=t._readableState;e.readableListening=t.listenerCount("readable")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function B(t){u("readable nexttick read 0"),t.read(0)}function L(t,e){u("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),W(t),e.flowing&&!e.reading&&t.read(0)}function W(t){var e=t._readableState;for(u("flow",e.flowing);e.flowing&&null!==t.read(););}function N(t,e){return 0===e.length?null:(e.objectMode?i=e.buffer.shift():!t||t>=e.length?(i=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):i=e.buffer.consume(t,e.decoder),i);var i}function F(t){var e=t._readableState;u("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,r.nextTick(U,e,t))}function U(t,e){if(u("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var i=e._writableState;(!i||i.autoDestroy&&i.finished)&&e.destroy()}}function j(t,e){for(var i=0,r=t.length;i<r;i++)if(t[i]===e)return i;return-1}S.prototype.read=function(t){u("read",t),t=parseInt(t,10);var e=this._readableState,i=t;if(0!==t&&(e.emittedReadable=!1),0===t&&e.needReadable&&((0!==e.highWaterMark?e.length>=e.highWaterMark:e.length>0)||e.ended))return u("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?F(this):C(this),null;if(0===(t=I(t,e))&&e.ended)return 0===e.length&&F(this),null;var r,n=e.needReadable;return u("need readable",n),(0===e.length||e.length-t<e.highWaterMark)&&u("length less than watermark",n=!0),e.ended||e.reading?u("reading or ended",n=!1):n&&(u("do read"),e.reading=!0,e.sync=!0,0===e.length&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=I(i,e))),null===(r=t>0?N(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),i!==t&&e.ended&&F(this)),null!==r&&this.emit("data",r),r},S.prototype._read=function(t){A(this,new _("_read()"))},S.prototype.pipe=function(t,e){var i=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=t;break;case 1:n.pipes=[n.pipes,t];break;default:n.pipes.push(t)}n.pipesCount+=1,u("pipe count=%d opts=%j",n.pipesCount,e);var a=(!e||!1!==e.end)&&t!==r.stdout&&t!==r.stderr?h:g;function s(e,r){u("onunpipe"),e===i&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,u("cleanup"),t.removeListener("close",p),t.removeListener("finish",m),t.removeListener("drain",l),t.removeListener("error",c),t.removeListener("unpipe",s),i.removeListener("end",h),i.removeListener("end",g),i.removeListener("data",f),d=!0,!n.awaitDrain||t._writableState&&!t._writableState.needDrain||l())}function h(){u("onend"),t.end()}n.endEmitted?r.nextTick(a):i.once("end",a),t.on("unpipe",s);var l=function(t){return function(){var e=t._readableState;u("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&o(t,"data")&&(e.flowing=!0,W(t))}}(i);t.on("drain",l);var d=!1;function f(e){u("ondata");var r=t.write(e);u("dest.write",r),!1===r&&((1===n.pipesCount&&n.pipes===t||n.pipesCount>1&&-1!==j(n.pipes,t))&&!d&&(u("false write response, pause",n.awaitDrain),n.awaitDrain++),i.pause())}function c(e){u("onerror",e),g(),t.removeListener("error",c),0===o(t,"error")&&A(t,e)}function p(){t.removeListener("finish",m),g()}function m(){u("onfinish"),t.removeListener("close",p),g()}function g(){u("unpipe"),i.unpipe(t)}return i.on("data",f),function(t,e,i){if("function"==typeof t.prependListener)return t.prependListener(e,i);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(i):t._events[e]=[i,t._events[e]]:t.on(e,i)}(t,"error",c),t.once("close",p),t.once("finish",m),t.emit("pipe",i),n.flowing||(u("pipe resume"),i.resume()),t},S.prototype.unpipe=function(t){var e=this._readableState,i={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,i)),this;if(!t){var r=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o<n;o++)r[o].emit("unpipe",this,{hasUnpiped:!1});return this}var a=j(e.pipes,t);return-1===a||(e.pipes.splice(a,1),e.pipesCount-=1,1===e.pipesCount&&(e.pipes=e.pipes[0]),t.emit("unpipe",this,i)),this},S.prototype.on=function(t,e){var i=a.prototype.on.call(this,t,e),n=this._readableState;return"data"===t?(n.readableListening=this.listenerCount("readable")>0,!1!==n.flowing&&this.resume()):"readable"===t&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,u("on readable",n.length,n.reading),n.length?C(this):n.reading||r.nextTick(B,this))),i},S.prototype.addListener=S.prototype.on,S.prototype.removeListener=function(t,e){var i=a.prototype.removeListener.call(this,t,e);return"readable"===t&&r.nextTick(O,this),i},S.prototype.removeAllListeners=function(t){var e=a.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||r.nextTick(O,this),e},S.prototype.resume=function(){var t=this._readableState;return t.flowing||(u("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,r.nextTick(L,t,e))}(this,t)),t.paused=!1,this},S.prototype.pause=function(){return u("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(u("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},S.prototype.wrap=function(t){var e=this,i=this._readableState,r=!1;for(var n in t.on("end",(function(){if(u("wrapped end"),i.decoder&&!i.ended){var t=i.decoder.end();t&&t.length&&e.push(t)}e.push(null)})),t.on("data",(function(n){(u("wrapped data"),i.decoder&&(n=i.decoder.write(n)),i.objectMode&&null==n)||(i.objectMode||n&&n.length)&&(e.push(n)||(r=!0,t.pause()))})),t)void 0===this[n]&&"function"==typeof t[n]&&(this[n]=function(e){return function(){return t[e].apply(t,arguments)}}(n));for(var o=0;o<M.length;o++)t.on(M[o],this.emit.bind(this,M[o]));return this._read=function(e){u("wrapped _read",e),r&&(r=!1,t.resume())},this},"function"==typeof Symbol&&(S.prototype[Symbol.asyncIterator]=function(){return void 0===f&&(f=i(153)),f(this)}),Object.defineProperty(S.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(S.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(S.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(t){this._readableState&&(this._readableState.flowing=t)}}),S._fromList=N,Object.defineProperty(S.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}}),"function"==typeof Symbol&&(S.from=function(t,e){return void 0===c&&(c=i(154)),c(S,t,e)})}).call(this,i(10),i(8))},function(t,e,i){t.exports=i(6).EventEmitter},function(t,e,i){"use strict";(function(e){function i(t,e){n(t,e),r(t)}function r(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function n(t,e){t.emit("error",e)}t.exports={destroy:function(t,o){var a=this,s=this._readableState&&this._readableState.destroyed,h=this._writableState&&this._writableState.destroyed;return s||h?(o?o(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,e.nextTick(n,this,t)):e.nextTick(n,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,(function(t){!o&&t?a._writableState?a._writableState.errorEmitted?e.nextTick(r,a):(a._writableState.errorEmitted=!0,e.nextTick(i,a,t)):e.nextTick(i,a,t):o?(e.nextTick(r,a),o(t)):e.nextTick(r,a)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(t,e){var i=t._readableState,r=t._writableState;i&&i.autoDestroy||r&&r.autoDestroy?t.destroy(e):t.emit("error",e)}}}).call(this,i(8))},function(t,e,i){"use strict";var r=i(26).codes.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(t,e,i,n){var o=function(t,e,i){return null!=t.highWaterMark?t.highWaterMark:e?t[i]:null}(e,n,i);if(null!=o){if(!isFinite(o)||Math.floor(o)!==o||o<0)throw new r(n?i:"highWaterMark",o);return Math.floor(o)}return t.objectMode?16:16384}}},function(t,e,i){"use strict";(function(e,r){function n(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,i){var r=t.entry;t.entry=null;for(;r;){var n=r.callback;e.pendingcb--,n(i),r=r.next}e.corkedRequestsFree.next=t}(e,t)}}var o;t.exports=S,S.WritableState=E;var a={deprecate:i(53)},s=i(81),h=i(9).Buffer,u=e.Uint8Array||function(){};var l,d=i(82),f=i(83).getHighWaterMark,c=i(26).codes,p=c.ERR_INVALID_ARG_TYPE,m=c.ERR_METHOD_NOT_IMPLEMENTED,g=c.ERR_MULTIPLE_CALLBACK,v=c.ERR_STREAM_CANNOT_PIPE,y=c.ERR_STREAM_DESTROYED,b=c.ERR_STREAM_NULL_VALUES,_=c.ERR_STREAM_WRITE_AFTER_END,w=c.ERR_UNKNOWN_ENCODING,A=d.errorOrDestroy;function M(){}function E(t,e,a){o=o||i(27),t=t||{},"boolean"!=typeof a&&(a=e instanceof o),this.objectMode=!!t.objectMode,a&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=f(this,t,"writableHighWaterMark",a),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var s=!1===t.decodeStrings;this.decodeStrings=!s,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var i=t._writableState,n=i.sync,o=i.writecb;if("function"!=typeof o)throw new g;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(i),e)!function(t,e,i,n,o){--e.pendingcb,i?(r.nextTick(o,n),r.nextTick(P,t,e),t._writableState.errorEmitted=!0,A(t,n)):(o(n),t._writableState.errorEmitted=!0,A(t,n),P(t,e))}(t,i,n,e,o);else{var a=I(i)||t.destroyed;a||i.corked||i.bufferProcessing||!i.bufferedRequest||R(t,i),n?r.nextTick(T,t,i,a,o):T(t,i,a,o)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new n(this)}function S(t){var e=this instanceof(o=o||i(27));if(!e&&!l.call(S,this))return new S(t);this._writableState=new E(t,this,e),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),s.call(this)}function k(t,e,i,r,n,o,a){e.writelen=r,e.writecb=a,e.writing=!0,e.sync=!0,e.destroyed?e.onwrite(new y("write")):i?t._writev(n,e.onwrite):t._write(n,o,e.onwrite),e.sync=!1}function T(t,e,i,r){i||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}(t,e),e.pendingcb--,r(),P(t,e)}function R(t,e){e.bufferProcessing=!0;var i=e.bufferedRequest;if(t._writev&&i&&i.next){var r=e.bufferedRequestCount,o=new Array(r),a=e.corkedRequestsFree;a.entry=i;for(var s=0,h=!0;i;)o[s]=i,i.isBuf||(h=!1),i=i.next,s+=1;o.allBuffers=h,k(t,e,!0,e.length,o,"",a.finish),e.pendingcb++,e.lastBufferedRequest=null,a.next?(e.corkedRequestsFree=a.next,a.next=null):e.corkedRequestsFree=new n(e),e.bufferedRequestCount=0}else{for(;i;){var u=i.chunk,l=i.encoding,d=i.callback;if(k(t,e,!1,e.objectMode?1:u.length,u,l,d),i=i.next,e.bufferedRequestCount--,e.writing)break}null===i&&(e.lastBufferedRequest=null)}e.bufferedRequest=i,e.bufferProcessing=!1}function I(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function C(t,e){t._final((function(i){e.pendingcb--,i&&A(t,i),e.prefinished=!0,t.emit("prefinish"),P(t,e)}))}function P(t,e){var i=I(e);if(i&&(function(t,e){e.prefinished||e.finalCalled||("function"!=typeof t._final||e.destroyed?(e.prefinished=!0,t.emit("prefinish")):(e.pendingcb++,e.finalCalled=!0,r.nextTick(C,t,e)))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"),e.autoDestroy))){var n=t._readableState;(!n||n.autoDestroy&&n.endEmitted)&&t.destroy()}return i}i(3)(S,s),E.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(E.prototype,"buffer",{get:a.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(l=Function.prototype[Symbol.hasInstance],Object.defineProperty(S,Symbol.hasInstance,{value:function(t){return!!l.call(this,t)||this===S&&(t&&t._writableState instanceof E)}})):l=function(t){return t instanceof this},S.prototype.pipe=function(){A(this,new v)},S.prototype.write=function(t,e,i){var n,o=this._writableState,a=!1,s=!o.objectMode&&(n=t,h.isBuffer(n)||n instanceof u);return s&&!h.isBuffer(t)&&(t=function(t){return h.from(t)}(t)),"function"==typeof e&&(i=e,e=null),s?e="buffer":e||(e=o.defaultEncoding),"function"!=typeof i&&(i=M),o.ending?function(t,e){var i=new _;A(t,i),r.nextTick(e,i)}(this,i):(s||function(t,e,i,n){var o;return null===i?o=new b:"string"==typeof i||e.objectMode||(o=new p("chunk",["string","Buffer"],i)),!o||(A(t,o),r.nextTick(n,o),!1)}(this,o,t,i))&&(o.pendingcb++,a=function(t,e,i,r,n,o){if(!i){var a=function(t,e,i){t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=h.from(e,i));return e}(e,r,n);r!==a&&(i=!0,n="buffer",r=a)}var s=e.objectMode?1:r.length;e.length+=s;var u=e.length<e.highWaterMark;u||(e.needDrain=!0);if(e.writing||e.corked){var l=e.lastBufferedRequest;e.lastBufferedRequest={chunk:r,encoding:n,isBuf:i,callback:o,next:null},l?l.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else k(t,e,!1,s,r,n,o);return u}(this,o,s,t,e,i)),a},S.prototype.cork=function(){this._writableState.corked++},S.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.bufferProcessing||!t.bufferedRequest||R(this,t))},S.prototype.setDefaultEncoding=function(t){if("string"==typeof t&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new w(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(S.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(S.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),S.prototype._write=function(t,e,i){i(new m("_write()"))},S.prototype._writev=null,S.prototype.end=function(t,e,i){var n=this._writableState;return"function"==typeof t?(i=t,t=null,e=null):"function"==typeof e&&(i=e,e=null),null!=t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||function(t,e,i){e.ending=!0,P(t,e),i&&(e.finished?r.nextTick(i):t.once("finish",i));e.ended=!0,t.writable=!1}(this,n,i),this},Object.defineProperty(S.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(S.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),S.prototype.destroy=d.destroy,S.prototype._undestroy=d.undestroy,S.prototype._destroy=function(t,e){e(t)}}).call(this,i(10),i(8))},function(t,e,i){"use strict";t.exports=l;var r=i(26).codes,n=r.ERR_METHOD_NOT_IMPLEMENTED,o=r.ERR_MULTIPLE_CALLBACK,a=r.ERR_TRANSFORM_ALREADY_TRANSFORMING,s=r.ERR_TRANSFORM_WITH_LENGTH_0,h=i(27);function u(t,e){var i=this._transformState;i.transforming=!1;var r=i.writecb;if(null===r)return this.emit("error",new o);i.writechunk=null,i.writecb=null,null!=e&&this.push(e),r(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length<n.highWaterMark)&&this._read(n.highWaterMark)}function l(t){if(!(this instanceof l))return new l(t);h.call(this,t),this._transformState={afterTransform:u.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,t&&("function"==typeof t.transform&&(this._transform=t.transform),"function"==typeof t.flush&&(this._flush=t.flush)),this.on("prefinish",d)}function d(){var t=this;"function"!=typeof this._flush||this._readableState.destroyed?f(this,null,null):this._flush((function(e,i){f(t,e,i)}))}function f(t,e,i){if(e)return t.emit("error",e);if(null!=i&&t.push(i),t._writableState.length)throw new s;if(t._transformState.transforming)throw new a;return t.push(null)}i(3)(l,h),l.prototype.push=function(t,e){return this._transformState.needTransform=!1,h.prototype.push.call(this,t,e)},l.prototype._transform=function(t,e,i){i(new n("_transform()"))},l.prototype._write=function(t,e,i){var r=this._transformState;if(r.writecb=i,r.writechunk=t,r.writeencoding=e,!r.transforming){var n=this._readableState;(r.needTransform||n.needReadable||n.length<n.highWaterMark)&&this._read(n.highWaterMark)}},l.prototype._read=function(t){var e=this._transformState;null===e.writechunk||e.transforming?e.needTransform=!0:(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform))},l.prototype._destroy=function(t,e){h.prototype._destroy.call(this,t,(function(t){e(t)}))}},function(t,e,i){var r=i(3),n=i(28),o=i(4).Buffer,a=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],s=new Array(64);function h(){this.init(),this._w=s,n.call(this,64,56)}function u(t,e,i){return i^t&(e^i)}function l(t,e,i){return t&e|i&(t|e)}function d(t){return(t>>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10)}function f(t){return(t>>>6|t<<26)^(t>>>11|t<<21)^(t>>>25|t<<7)}function c(t){return(t>>>7|t<<25)^(t>>>18|t<<14)^t>>>3}r(h,n),h.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},h.prototype._update=function(t){for(var e,i=this._w,r=0|this._a,n=0|this._b,o=0|this._c,s=0|this._d,h=0|this._e,p=0|this._f,m=0|this._g,g=0|this._h,v=0;v<16;++v)i[v]=t.readInt32BE(4*v);for(;v<64;++v)i[v]=0|(((e=i[v-2])>>>17|e<<15)^(e>>>19|e<<13)^e>>>10)+i[v-7]+c(i[v-15])+i[v-16];for(var y=0;y<64;++y){var b=g+f(h)+u(h,p,m)+a[y]+i[y]|0,_=d(r)+l(r,n,o)|0;g=m,m=p,p=h,h=s+b|0,s=o,o=n,n=r,r=b+_|0}this._a=r+this._a|0,this._b=n+this._b|0,this._c=o+this._c|0,this._d=s+this._d|0,this._e=h+this._e|0,this._f=p+this._f|0,this._g=m+this._g|0,this._h=g+this._h|0},h.prototype._hash=function(){var t=o.allocUnsafe(32);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t.writeInt32BE(this._h,28),t},t.exports=h},function(t,e,i){var r=i(3),n=i(28),o=i(4).Buffer,a=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],s=new Array(160);function h(){this.init(),this._w=s,n.call(this,128,112)}function u(t,e,i){return i^t&(e^i)}function l(t,e,i){return t&e|i&(t|e)}function d(t,e){return(t>>>28|e<<4)^(e>>>2|t<<30)^(e>>>7|t<<25)}function f(t,e){return(t>>>14|e<<18)^(t>>>18|e<<14)^(e>>>9|t<<23)}function c(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^t>>>7}function p(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^(t>>>7|e<<25)}function m(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^t>>>6}function g(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^(t>>>6|e<<26)}function v(t,e){return t>>>0<e>>>0?1:0}r(h,n),h.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},h.prototype._update=function(t){for(var e=this._w,i=0|this._ah,r=0|this._bh,n=0|this._ch,o=0|this._dh,s=0|this._eh,h=0|this._fh,y=0|this._gh,b=0|this._hh,_=0|this._al,w=0|this._bl,A=0|this._cl,M=0|this._dl,E=0|this._el,S=0|this._fl,k=0|this._gl,T=0|this._hl,R=0;R<32;R+=2)e[R]=t.readInt32BE(4*R),e[R+1]=t.readInt32BE(4*R+4);for(;R<160;R+=2){var I=e[R-30],C=e[R-30+1],P=c(I,C),x=p(C,I),D=m(I=e[R-4],C=e[R-4+1]),O=g(C,I),B=e[R-14],L=e[R-14+1],W=e[R-32],N=e[R-32+1],F=x+L|0,U=P+B+v(F,x)|0;U=(U=U+D+v(F=F+O|0,O)|0)+W+v(F=F+N|0,N)|0,e[R]=U,e[R+1]=F}for(var j=0;j<160;j+=2){U=e[j],F=e[j+1];var V=l(i,r,n),H=l(_,w,A),z=d(i,_),G=d(_,i),q=f(s,E),X=f(E,s),Z=a[j],K=a[j+1],Q=u(s,h,y),Y=u(E,S,k),J=T+X|0,$=b+q+v(J,T)|0;$=($=($=$+Q+v(J=J+Y|0,Y)|0)+Z+v(J=J+K|0,K)|0)+U+v(J=J+F|0,F)|0;var tt=G+H|0,et=z+V+v(tt,G)|0;b=y,T=k,y=h,k=S,h=s,S=E,s=o+$+v(E=M+J|0,M)|0,o=n,M=A,n=r,A=w,r=i,w=_,i=$+et+v(_=J+tt|0,J)|0}this._al=this._al+_|0,this._bl=this._bl+w|0,this._cl=this._cl+A|0,this._dl=this._dl+M|0,this._el=this._el+E|0,this._fl=this._fl+S|0,this._gl=this._gl+k|0,this._hl=this._hl+T|0,this._ah=this._ah+i+v(this._al,_)|0,this._bh=this._bh+r+v(this._bl,w)|0,this._ch=this._ch+n+v(this._cl,A)|0,this._dh=this._dh+o+v(this._dl,M)|0,this._eh=this._eh+s+v(this._el,E)|0,this._fh=this._fh+h+v(this._fl,S)|0,this._gh=this._gh+y+v(this._gl,k)|0,this._hh=this._hh+b+v(this._hl,T)|0},h.prototype._hash=function(){var t=o.allocUnsafe(64);function e(e,i,r){t.writeInt32BE(e,r),t.writeInt32BE(i,r+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),e(this._gh,this._gl,48),e(this._hh,this._hl,56),t},t.exports=h},function(t,e,i){"use strict";(function(e,r){var n=i(42);t.exports=b;var o,a=i(78);b.ReadableState=y;i(6).EventEmitter;var s=function(t,e){return t.listeners(e).length},h=i(89),u=i(58).Buffer,l=e.Uint8Array||function(){};var d=Object.create(i(36));d.inherits=i(3);var f=i(162),c=void 0;c=f&&f.debuglog?f.debuglog("stream"):function(){};var p,m=i(163),g=i(90);d.inherits(b,h);var v=["error","close","destroy","pause","resume"];function y(t,e){t=t||{};var r=e instanceof(o=o||i(19));this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode);var n=t.highWaterMark,a=t.readableHighWaterMark,s=this.objectMode?16:16384;this.highWaterMark=n||0===n?n:r&&(a||0===a)?a:s,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new m,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(p||(p=i(18).StringDecoder),this.decoder=new p(t.encoding),this.encoding=t.encoding)}function b(t){if(o=o||i(19),!(this instanceof b))return new b(t);this._readableState=new y(t,this),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),h.call(this)}function _(t,e,i,r,n){var o,a=t._readableState;null===e?(a.reading=!1,function(t,e){if(e.ended)return;if(e.decoder){var i=e.decoder.end();i&&i.length&&(e.buffer.push(i),e.length+=e.objectMode?1:i.length)}e.ended=!0,E(t)}(t,a)):(n||(o=function(t,e){var i;r=e,u.isBuffer(r)||r instanceof l||"string"==typeof e||void 0===e||t.objectMode||(i=new TypeError("Invalid non-string/buffer chunk"));var r;return i}(a,e)),o?t.emit("error",o):a.objectMode||e&&e.length>0?("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===u.prototype||(e=function(t){return u.from(t)}(e)),r?a.endEmitted?t.emit("error",new Error("stream.unshift() after end event")):w(t,a,e,!0):a.ended?t.emit("error",new Error("stream.push() after EOF")):(a.reading=!1,a.decoder&&!i?(e=a.decoder.write(e),a.objectMode||0!==e.length?w(t,a,e,!1):k(t,a)):w(t,a,e,!1))):r||(a.reading=!1));return function(t){return!t.ended&&(t.needReadable||t.length<t.highWaterMark||0===t.length)}(a)}function w(t,e,i,r){e.flowing&&0===e.length&&!e.sync?(t.emit("data",i),t.read(0)):(e.length+=e.objectMode?1:i.length,r?e.buffer.unshift(i):e.buffer.push(i),e.needReadable&&E(t)),k(t,e)}Object.defineProperty(b.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}}),b.prototype.destroy=g.destroy,b.prototype._undestroy=g.undestroy,b.prototype._destroy=function(t,e){this.push(null),e(t)},b.prototype.push=function(t,e){var i,r=this._readableState;return r.objectMode?i=!0:"string"==typeof t&&((e=e||r.defaultEncoding)!==r.encoding&&(t=u.from(t,e),e=""),i=!0),_(this,t,e,!1,i)},b.prototype.unshift=function(t){return _(this,t,null,!0,!1)},b.prototype.isPaused=function(){return!1===this._readableState.flowing},b.prototype.setEncoding=function(t){return p||(p=i(18).StringDecoder),this._readableState.decoder=new p(t),this._readableState.encoding=t,this};var A=8388608;function M(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!=t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=function(t){return t>=A?t=A:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function E(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(c("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?n.nextTick(S,t):S(t))}function S(t){c("emit readable"),t.emit("readable"),C(t)}function k(t,e){e.readingMore||(e.readingMore=!0,n.nextTick(T,t,e))}function T(t,e){for(var i=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length<e.highWaterMark&&(c("maybeReadMore read 0"),t.read(0),i!==e.length);)i=e.length;e.readingMore=!1}function R(t){c("readable nexttick read 0"),t.read(0)}function I(t,e){e.reading||(c("resume read 0"),t.read(0)),e.resumeScheduled=!1,e.awaitDrain=0,t.emit("resume"),C(t),e.flowing&&!e.reading&&t.read(0)}function C(t){var e=t._readableState;for(c("flow",e.flowing);e.flowing&&null!==t.read(););}function P(t,e){return 0===e.length?null:(e.objectMode?i=e.buffer.shift():!t||t>=e.length?(i=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):i=function(t,e,i){var r;t<e.head.data.length?(r=e.head.data.slice(0,t),e.head.data=e.head.data.slice(t)):r=t===e.head.data.length?e.shift():i?function(t,e){var i=e.head,r=1,n=i.data;t-=n.length;for(;i=i.next;){var o=i.data,a=t>o.length?o.length:t;if(a===o.length?n+=o:n+=o.slice(0,t),0===(t-=a)){a===o.length?(++r,i.next?e.head=i.next:e.head=e.tail=null):(e.head=i,i.data=o.slice(a));break}++r}return e.length-=r,n}(t,e):function(t,e){var i=u.allocUnsafe(t),r=e.head,n=1;r.data.copy(i),t-=r.data.length;for(;r=r.next;){var o=r.data,a=t>o.length?o.length:t;if(o.copy(i,i.length-t,0,a),0===(t-=a)){a===o.length?(++n,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=o.slice(a));break}++n}return e.length-=n,i}(t,e);return r}(t,e.buffer,e.decoder),i);var i}function x(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,n.nextTick(D,e,t))}function D(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function O(t,e){for(var i=0,r=t.length;i<r;i++)if(t[i]===e)return i;return-1}b.prototype.read=function(t){c("read",t),t=parseInt(t,10);var e=this._readableState,i=t;if(0!==t&&(e.emittedReadable=!1),0===t&&e.needReadable&&(e.length>=e.highWaterMark||e.ended))return c("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?x(this):E(this),null;if(0===(t=M(t,e))&&e.ended)return 0===e.length&&x(this),null;var r,n=e.needReadable;return c("need readable",n),(0===e.length||e.length-t<e.highWaterMark)&&c("length less than watermark",n=!0),e.ended||e.reading?c("reading or ended",n=!1):n&&(c("do read"),e.reading=!0,e.sync=!0,0===e.length&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=M(i,e))),null===(r=t>0?P(t,e):null)?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),i!==t&&e.ended&&x(this)),null!==r&&this.emit("data",r),r},b.prototype._read=function(t){this.emit("error",new Error("_read() is not implemented"))},b.prototype.pipe=function(t,e){var i=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=t;break;case 1:o.pipes=[o.pipes,t];break;default:o.pipes.push(t)}o.pipesCount+=1,c("pipe count=%d opts=%j",o.pipesCount,e);var h=(!e||!1!==e.end)&&t!==r.stdout&&t!==r.stderr?l:b;function u(e,r){c("onunpipe"),e===i&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,c("cleanup"),t.removeListener("close",v),t.removeListener("finish",y),t.removeListener("drain",d),t.removeListener("error",g),t.removeListener("unpipe",u),i.removeListener("end",l),i.removeListener("end",b),i.removeListener("data",m),f=!0,!o.awaitDrain||t._writableState&&!t._writableState.needDrain||d())}function l(){c("onend"),t.end()}o.endEmitted?n.nextTick(h):i.once("end",h),t.on("unpipe",u);var d=function(t){return function(){var e=t._readableState;c("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&s(t,"data")&&(e.flowing=!0,C(t))}}(i);t.on("drain",d);var f=!1;var p=!1;function m(e){c("ondata"),p=!1,!1!==t.write(e)||p||((1===o.pipesCount&&o.pipes===t||o.pipesCount>1&&-1!==O(o.pipes,t))&&!f&&(c("false write response, pause",i._readableState.awaitDrain),i._readableState.awaitDrain++,p=!0),i.pause())}function g(e){c("onerror",e),b(),t.removeListener("error",g),0===s(t,"error")&&t.emit("error",e)}function v(){t.removeListener("finish",y),b()}function y(){c("onfinish"),t.removeListener("close",v),b()}function b(){c("unpipe"),i.unpipe(t)}return i.on("data",m),function(t,e,i){if("function"==typeof t.prependListener)return t.prependListener(e,i);t._events&&t._events[e]?a(t._events[e])?t._events[e].unshift(i):t._events[e]=[i,t._events[e]]:t.on(e,i)}(t,"error",g),t.once("close",v),t.once("finish",y),t.emit("pipe",i),o.flowing||(c("pipe resume"),i.resume()),t},b.prototype.unpipe=function(t){var e=this._readableState,i={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,i)),this;if(!t){var r=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o<n;o++)r[o].emit("unpipe",this,i);return this}var a=O(e.pipes,t);return-1===a||(e.pipes.splice(a,1),e.pipesCount-=1,1===e.pipesCount&&(e.pipes=e.pipes[0]),t.emit("unpipe",this,i)),this},b.prototype.on=function(t,e){var i=h.prototype.on.call(this,t,e);if("data"===t)!1!==this._readableState.flowing&&this.resume();else if("readable"===t){var r=this._readableState;r.endEmitted||r.readableListening||(r.readableListening=r.needReadable=!0,r.emittedReadable=!1,r.reading?r.length&&E(this):n.nextTick(R,this))}return i},b.prototype.addListener=b.prototype.on,b.prototype.resume=function(){var t=this._readableState;return t.flowing||(c("resume"),t.flowing=!0,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,n.nextTick(I,t,e))}(this,t)),this},b.prototype.pause=function(){return c("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(c("pause"),this._readableState.flowing=!1,this.emit("pause")),this},b.prototype.wrap=function(t){var e=this,i=this._readableState,r=!1;for(var n in t.on("end",(function(){if(c("wrapped end"),i.decoder&&!i.ended){var t=i.decoder.end();t&&t.length&&e.push(t)}e.push(null)})),t.on("data",(function(n){(c("wrapped data"),i.decoder&&(n=i.decoder.write(n)),i.objectMode&&null==n)||(i.objectMode||n&&n.length)&&(e.push(n)||(r=!0,t.pause()))})),t)void 0===this[n]&&"function"==typeof t[n]&&(this[n]=function(e){return function(){return t[e].apply(t,arguments)}}(n));for(var o=0;o<v.length;o++)t.on(v[o],this.emit.bind(this,v[o]));return this._read=function(e){c("wrapped _read",e),r&&(r=!1,t.resume())},this},Object.defineProperty(b.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),b._fromList=P}).call(this,i(10),i(8))},function(t,e,i){t.exports=i(6).EventEmitter},function(t,e,i){"use strict";var r=i(42);function n(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var i=this,o=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return o||a?(e?e(t):!t||this._writableState&&this._writableState.errorEmitted||r.nextTick(n,this,t),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,(function(t){!e&&t?(r.nextTick(n,i,t),i._writableState&&(i._writableState.errorEmitted=!0)):e&&e(t)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(t,e,i){"use strict";t.exports=a;var r=i(19),n=Object.create(i(36));function o(t,e){var i=this._transformState;i.transforming=!1;var r=i.writecb;if(!r)return this.emit("error",new Error("write callback called multiple times"));i.writechunk=null,i.writecb=null,null!=e&&this.push(e),r(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length<n.highWaterMark)&&this._read(n.highWaterMark)}function a(t){if(!(this instanceof a))return new a(t);r.call(this,t),this._transformState={afterTransform:o.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,t&&("function"==typeof t.transform&&(this._transform=t.transform),"function"==typeof t.flush&&(this._flush=t.flush)),this.on("prefinish",s)}function s(){var t=this;"function"==typeof this._flush?this._flush((function(e,i){h(t,e,i)})):h(this,null,null)}function h(t,e,i){if(e)return t.emit("error",e);if(null!=i&&t.push(i),t._writableState.length)throw new Error("Calling transform done when ws.length != 0");if(t._transformState.transforming)throw new Error("Calling transform done when still transforming");return t.push(null)}n.inherits=i(3),n.inherits(a,r),a.prototype.push=function(t,e){return this._transformState.needTransform=!1,r.prototype.push.call(this,t,e)},a.prototype._transform=function(t,e,i){throw new Error("_transform() is not implemented")},a.prototype._write=function(t,e,i){var r=this._transformState;if(r.writecb=i,r.writechunk=t,r.writeencoding=e,!r.transforming){var n=this._readableState;(r.needTransform||n.needReadable||n.length<n.highWaterMark)&&this._read(n.highWaterMark)}},a.prototype._read=function(t){var e=this._transformState;null!==e.writechunk&&e.writecb&&!e.transforming?(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform)):e.needTransform=!0},a.prototype._destroy=function(t,e){var i=this;r.prototype._destroy.call(this,t,(function(t){e(t),i.emit("close")}))}},function(t,e,i){"use strict";var r=i(3),n=i(172),o=i(17),a=i(4).Buffer,s=i(93),h=i(55),u=i(56),l=a.alloc(128);function d(t,e){o.call(this,"digest"),"string"==typeof e&&(e=a.from(e));var i="sha512"===t||"sha384"===t?128:64;(this._alg=t,this._key=e,e.length>i)?e=("rmd160"===t?new h:u(t)).update(e).digest():e.length<i&&(e=a.concat([e,l],i));for(var r=this._ipad=a.allocUnsafe(i),n=this._opad=a.allocUnsafe(i),s=0;s<i;s++)r[s]=54^e[s],n[s]=92^e[s];this._hash="rmd160"===t?new h:u(t),this._hash.update(r)}r(d,o),d.prototype._update=function(t){this._hash.update(t)},d.prototype._final=function(){var t=this._hash.digest();return("rmd160"===this._alg?new h:u(this._alg)).update(this._opad).update(t).digest()},t.exports=function(t,e){return"rmd160"===(t=t.toLowerCase())||"ripemd160"===t?new d("rmd160",e):"md5"===t?new n(s,e):new d(t,e)}},function(t,e,i){var r=i(52);t.exports=function(t){return(new r).update(t).digest()}},function(t){t.exports=JSON.parse('{"sha224WithRSAEncryption":{"sign":"rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"RSA-SHA224":{"sign":"ecdsa/rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"sha256WithRSAEncryption":{"sign":"rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"RSA-SHA256":{"sign":"ecdsa/rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"sha384WithRSAEncryption":{"sign":"rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"RSA-SHA384":{"sign":"ecdsa/rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"sha512WithRSAEncryption":{"sign":"rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA512":{"sign":"ecdsa/rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA1":{"sign":"rsa","hash":"sha1","id":"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{"sign":"ecdsa","hash":"sha1","id":""},"sha256":{"sign":"ecdsa","hash":"sha256","id":""},"sha224":{"sign":"ecdsa","hash":"sha224","id":""},"sha384":{"sign":"ecdsa","hash":"sha384","id":""},"sha512":{"sign":"ecdsa","hash":"sha512","id":""},"DSA-SHA":{"sign":"dsa","hash":"sha1","id":""},"DSA-SHA1":{"sign":"dsa","hash":"sha1","id":""},"DSA":{"sign":"dsa","hash":"sha1","id":""},"DSA-WITH-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-WITH-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-WITH-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-WITH-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-RIPEMD160":{"sign":"dsa","hash":"rmd160","id":""},"ripemd160WithRSA":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"RSA-RIPEMD160":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"md5WithRSAEncryption":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"},"RSA-MD5":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"}}')},function(t,e,i){e.pbkdf2=i(174),e.pbkdf2Sync=i(98)},function(t,e){var i=Math.pow(2,30)-1;t.exports=function(t,e){if("number"!=typeof t)throw new TypeError("Iterations not a number");if(t<0)throw new TypeError("Bad iterations");if("number"!=typeof e)throw new TypeError("Key length not a number");if(e<0||e>i||e!=e)throw new TypeError("Bad key length")}},function(t,e,i){(function(e,i){var r;if(e.process&&e.process.browser)r="utf-8";else if(e.process&&e.process.version){r=parseInt(i.version.split(".")[0].slice(1),10)>=6?"utf-8":"binary"}else r="utf-8";t.exports=r}).call(this,i(10),i(8))},function(t,e,i){var r=i(93),n=i(55),o=i(56),a=i(4).Buffer,s=i(96),h=i(97),u=i(99),l=a.alloc(128),d={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function f(t,e,i){var s=function(t){function e(e){return o(t).update(e).digest()}function i(t){return(new n).update(t).digest()}return"rmd160"===t||"ripemd160"===t?i:"md5"===t?r:e}(t),h="sha512"===t||"sha384"===t?128:64;e.length>h?e=s(e):e.length<h&&(e=a.concat([e,l],h));for(var u=a.allocUnsafe(h+d[t]),f=a.allocUnsafe(h+d[t]),c=0;c<h;c++)u[c]=54^e[c],f[c]=92^e[c];var p=a.allocUnsafe(h+i+4);u.copy(p,0,0,h),this.ipad1=p,this.ipad2=u,this.opad=f,this.alg=t,this.blocksize=h,this.hash=s,this.size=d[t]}f.prototype.run=function(t,e){return t.copy(e,this.blocksize),this.hash(e).copy(this.opad,this.blocksize),this.hash(this.opad)},t.exports=function(t,e,i,r,n){s(i,r);var o=new f(n=n||"sha1",t=u(t,h,"Password"),(e=u(e,h,"Salt")).length),l=a.allocUnsafe(r),c=a.allocUnsafe(e.length+4);e.copy(c,0,0,e.length);for(var p=0,m=d[n],g=Math.ceil(r/m),v=1;v<=g;v++){c.writeUInt32BE(v,e.length);for(var y=o.run(c,o.ipad1),b=y,_=1;_<i;_++){b=o.run(b,o.ipad2);for(var w=0;w<m;w++)y[w]^=b[w]}y.copy(l,p),p+=m}return l}},function(t,e,i){var r=i(4).Buffer;t.exports=function(t,e,i){if(r.isBuffer(t))return t;if("string"==typeof t)return r.from(t,e);if(ArrayBuffer.isView(t))return r.from(t.buffer);throw new TypeError(i+" must be a string, a Buffer, a typed array or a DataView")}},function(t,e,i){"use strict";e.readUInt32BE=function(t,e){return(t[0+e]<<24|t[1+e]<<16|t[2+e]<<8|t[3+e])>>>0},e.writeUInt32BE=function(t,e,i){t[0+i]=e>>>24,t[1+i]=e>>>16&255,t[2+i]=e>>>8&255,t[3+i]=255&e},e.ip=function(t,e,i,r){for(var n=0,o=0,a=6;a>=0;a-=2){for(var s=0;s<=24;s+=8)n<<=1,n|=e>>>s+a&1;for(s=0;s<=24;s+=8)n<<=1,n|=t>>>s+a&1}for(a=6;a>=0;a-=2){for(s=1;s<=25;s+=8)o<<=1,o|=e>>>s+a&1;for(s=1;s<=25;s+=8)o<<=1,o|=t>>>s+a&1}i[r+0]=n>>>0,i[r+1]=o>>>0},e.rip=function(t,e,i,r){for(var n=0,o=0,a=0;a<4;a++)for(var s=24;s>=0;s-=8)n<<=1,n|=e>>>s+a&1,n<<=1,n|=t>>>s+a&1;for(a=4;a<8;a++)for(s=24;s>=0;s-=8)o<<=1,o|=e>>>s+a&1,o<<=1,o|=t>>>s+a&1;i[r+0]=n>>>0,i[r+1]=o>>>0},e.pc1=function(t,e,i,r){for(var n=0,o=0,a=7;a>=5;a--){for(var s=0;s<=24;s+=8)n<<=1,n|=e>>s+a&1;for(s=0;s<=24;s+=8)n<<=1,n|=t>>s+a&1}for(s=0;s<=24;s+=8)n<<=1,n|=e>>s+a&1;for(a=1;a<=3;a++){for(s=0;s<=24;s+=8)o<<=1,o|=e>>s+a&1;for(s=0;s<=24;s+=8)o<<=1,o|=t>>s+a&1}for(s=0;s<=24;s+=8)o<<=1,o|=t>>s+a&1;i[r+0]=n>>>0,i[r+1]=o>>>0},e.r28shl=function(t,e){return t<<e&268435455|t>>>28-e};var r=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];e.pc2=function(t,e,i,n){for(var o=0,a=0,s=r.length>>>1,h=0;h<s;h++)o<<=1,o|=t>>>r[h]&1;for(h=s;h<r.length;h++)a<<=1,a|=e>>>r[h]&1;i[n+0]=o>>>0,i[n+1]=a>>>0},e.expand=function(t,e,i){var r=0,n=0;r=(1&t)<<5|t>>>27;for(var o=23;o>=15;o-=4)r<<=6,r|=t>>>o&63;for(o=11;o>=3;o-=4)n|=t>>>o&63,n<<=6;n|=(31&t)<<1|t>>>31,e[i+0]=r>>>0,e[i+1]=n>>>0};var n=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];e.substitute=function(t,e){for(var i=0,r=0;r<4;r++){i<<=4,i|=n[64*r+(t>>>18-6*r&63)]}for(r=0;r<4;r++){i<<=4,i|=n[256+64*r+(e>>>18-6*r&63)]}return i>>>0};var o=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];e.permute=function(t){for(var e=0,i=0;i<o.length;i++)e<<=1,e|=t>>>o[i]&1;return e>>>0},e.padSplit=function(t,e,i){for(var r=t.toString(2);r.length<e;)r="0"+r;for(var n=[],o=0;o<e;o+=i)n.push(r.slice(o,o+i));return n.join(" ")}},function(t,e,i){"use strict";var r=i(13),n=i(3),o=i(100),a=i(60);function s(){this.tmp=new Array(2),this.keys=null}function h(t){a.call(this,t);var e=new s;this._desState=e,this.deriveKeys(e,t.key)}n(h,a),t.exports=h,h.create=function(t){return new h(t)};var u=[1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];h.prototype.deriveKeys=function(t,e){t.keys=new Array(32),r.equal(e.length,this.blockSize,"Invalid key length");var i=o.readUInt32BE(e,0),n=o.readUInt32BE(e,4);o.pc1(i,n,t.tmp,0),i=t.tmp[0],n=t.tmp[1];for(var a=0;a<t.keys.length;a+=2){var s=u[a>>>1];i=o.r28shl(i,s),n=o.r28shl(n,s),o.pc2(i,n,t.keys,a)}},h.prototype._update=function(t,e,i,r){var n=this._desState,a=o.readUInt32BE(t,e),s=o.readUInt32BE(t,e+4);o.ip(a,s,n.tmp,0),a=n.tmp[0],s=n.tmp[1],"encrypt"===this.type?this._encrypt(n,a,s,n.tmp,0):this._decrypt(n,a,s,n.tmp,0),a=n.tmp[0],s=n.tmp[1],o.writeUInt32BE(i,a,r),o.writeUInt32BE(i,s,r+4)},h.prototype._pad=function(t,e){for(var i=t.length-e,r=e;r<t.length;r++)t[r]=i;return!0},h.prototype._unpad=function(t){for(var e=t[t.length-1],i=t.length-e;i<t.length;i++)r.equal(t[i],e);return t.slice(0,t.length-e)},h.prototype._encrypt=function(t,e,i,r,n){for(var a=e,s=i,h=0;h<t.keys.length;h+=2){var u=t.keys[h],l=t.keys[h+1];o.expand(s,t.tmp,0),u^=t.tmp[0],l^=t.tmp[1];var d=o.substitute(u,l),f=s;s=(a^o.permute(d))>>>0,a=f}o.rip(s,a,r,n)},h.prototype._decrypt=function(t,e,i,r,n){for(var a=i,s=e,h=t.keys.length-2;h>=0;h-=2){var u=t.keys[h],l=t.keys[h+1];o.expand(a,t.tmp,0),u^=t.tmp[0],l^=t.tmp[1];var d=o.substitute(u,l),f=a;a=(s^o.permute(d))>>>0,s=f}o.rip(a,s,r,n)}},function(t,e,i){var r=i(37),n=i(4).Buffer,o=i(103);function a(t){var e=t._cipher.encryptBlockRaw(t._prev);return o(t._prev),e}e.encrypt=function(t,e){var i=Math.ceil(e.length/16),o=t._cache.length;t._cache=n.concat([t._cache,n.allocUnsafe(16*i)]);for(var s=0;s<i;s++){var h=a(t),u=o+16*s;t._cache.writeUInt32BE(h[0],u+0),t._cache.writeUInt32BE(h[1],u+4),t._cache.writeUInt32BE(h[2],u+8),t._cache.writeUInt32BE(h[3],u+12)}var l=t._cache.slice(0,e.length);return t._cache=t._cache.slice(e.length),r(e,l)}},function(t,e){t.exports=function(t){for(var e,i=t.length;i--;){if(255!==(e=t.readUInt8(i))){e++,t.writeUInt8(e,i);break}t.writeUInt8(0,i)}}},function(t){t.exports=JSON.parse('{"aes-128-ecb":{"cipher":"AES","key":128,"iv":0,"mode":"ECB","type":"block"},"aes-192-ecb":{"cipher":"AES","key":192,"iv":0,"mode":"ECB","type":"block"},"aes-256-ecb":{"cipher":"AES","key":256,"iv":0,"mode":"ECB","type":"block"},"aes-128-cbc":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes-192-cbc":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes-256-cbc":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes128":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes192":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes256":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes-128-cfb":{"cipher":"AES","key":128,"iv":16,"mode":"CFB","type":"stream"},"aes-192-cfb":{"cipher":"AES","key":192,"iv":16,"mode":"CFB","type":"stream"},"aes-256-cfb":{"cipher":"AES","key":256,"iv":16,"mode":"CFB","type":"stream"},"aes-128-cfb8":{"cipher":"AES","key":128,"iv":16,"mode":"CFB8","type":"stream"},"aes-192-cfb8":{"cipher":"AES","key":192,"iv":16,"mode":"CFB8","type":"stream"},"aes-256-cfb8":{"cipher":"AES","key":256,"iv":16,"mode":"CFB8","type":"stream"},"aes-128-cfb1":{"cipher":"AES","key":128,"iv":16,"mode":"CFB1","type":"stream"},"aes-192-cfb1":{"cipher":"AES","key":192,"iv":16,"mode":"CFB1","type":"stream"},"aes-256-cfb1":{"cipher":"AES","key":256,"iv":16,"mode":"CFB1","type":"stream"},"aes-128-ofb":{"cipher":"AES","key":128,"iv":16,"mode":"OFB","type":"stream"},"aes-192-ofb":{"cipher":"AES","key":192,"iv":16,"mode":"OFB","type":"stream"},"aes-256-ofb":{"cipher":"AES","key":256,"iv":16,"mode":"OFB","type":"stream"},"aes-128-ctr":{"cipher":"AES","key":128,"iv":16,"mode":"CTR","type":"stream"},"aes-192-ctr":{"cipher":"AES","key":192,"iv":16,"mode":"CTR","type":"stream"},"aes-256-ctr":{"cipher":"AES","key":256,"iv":16,"mode":"CTR","type":"stream"},"aes-128-gcm":{"cipher":"AES","key":128,"iv":12,"mode":"GCM","type":"auth"},"aes-192-gcm":{"cipher":"AES","key":192,"iv":12,"mode":"GCM","type":"auth"},"aes-256-gcm":{"cipher":"AES","key":256,"iv":12,"mode":"GCM","type":"auth"}}')},function(t,e,i){var r=i(43),n=i(4).Buffer,o=i(17),a=i(3),s=i(187),h=i(37),u=i(103);function l(t,e,i,a){o.call(this);var h=n.alloc(4,0);this._cipher=new r.AES(e);var l=this._cipher.encryptBlock(h);this._ghash=new s(l),i=function(t,e,i){if(12===e.length)return t._finID=n.concat([e,n.from([0,0,0,1])]),n.concat([e,n.from([0,0,0,2])]);var r=new s(i),o=e.length,a=o%16;r.update(e),a&&(a=16-a,r.update(n.alloc(a,0))),r.update(n.alloc(8,0));var h=8*o,l=n.alloc(8);l.writeUIntBE(h,0,8),r.update(l),t._finID=r.state;var d=n.from(t._finID);return u(d),d}(this,i,l),this._prev=n.from(i),this._cache=n.allocUnsafe(0),this._secCache=n.allocUnsafe(0),this._decrypt=a,this._alen=0,this._len=0,this._mode=t,this._authTag=null,this._called=!1}a(l,o),l.prototype._update=function(t){if(!this._called&&this._alen){var e=16-this._alen%16;e<16&&(e=n.alloc(e,0),this._ghash.update(e))}this._called=!0;var i=this._mode.encrypt(this,t);return this._decrypt?this._ghash.update(t):this._ghash.update(i),this._len+=t.length,i},l.prototype._final=function(){if(this._decrypt&&!this._authTag)throw new Error("Unsupported state or unable to authenticate data");var t=h(this._ghash.final(8*this._alen,8*this._len),this._cipher.encryptBlock(this._finID));if(this._decrypt&&function(t,e){var i=0;t.length!==e.length&&i++;for(var r=Math.min(t.length,e.length),n=0;n<r;++n)i+=t[n]^e[n];return i}(t,this._authTag))throw new Error("Unsupported state or unable to authenticate data");this._authTag=t,this._cipher.scrub()},l.prototype.getAuthTag=function(){if(this._decrypt||!n.isBuffer(this._authTag))throw new Error("Attempting to get auth tag in unsupported state");return this._authTag},l.prototype.setAuthTag=function(t){if(!this._decrypt)throw new Error("Attempting to set auth tag in unsupported state");this._authTag=t},l.prototype.setAAD=function(t){if(this._called)throw new Error("Attempting to set AAD in unsupported state");this._ghash.update(t),this._alen+=t.length},t.exports=l},function(t,e,i){var r=i(43),n=i(4).Buffer,o=i(17);function a(t,e,i,a){o.call(this),this._cipher=new r.AES(e),this._prev=n.from(i),this._cache=n.allocUnsafe(0),this._secCache=n.allocUnsafe(0),this._decrypt=a,this._mode=t}i(3)(a,o),a.prototype._update=function(t){return this._mode.encrypt(this,t,this._decrypt)},a.prototype._final=function(){this._cipher.scrub()},t.exports=a},function(t,e,i){var r=i(25);t.exports=y,y.simpleSieve=g,y.fermatTest=v;var n=i(108),o=new n(24),a=new(i(109)),s=new n(1),h=new n(2),u=new n(5),l=(new n(16),new n(8),new n(10)),d=new n(3),f=(new n(7),new n(11)),c=new n(4),p=(new n(12),null);function m(){if(null!==p)return p;var t=[];t[0]=2;for(var e=1,i=3;i<1048576;i+=2){for(var r=Math.ceil(Math.sqrt(i)),n=0;n<e&&t[n]<=r&&i%t[n]!=0;n++);e!==n&&t[n]<=r||(t[e++]=i)}return p=t,t}function g(t){for(var e=m(),i=0;i<e.length;i++)if(0===t.modn(e[i]))return 0===t.cmpn(e[i]);return!0}function v(t){var e=n.mont(t);return 0===h.toRed(e).redPow(t.subn(1)).fromRed().cmpn(1)}function y(t,e){if(t<16)return new n(2===e||5===e?[140,123]:[140,39]);var i,p;for(e=new n(e);;){for(i=new n(r(Math.ceil(t/8)));i.bitLength()>t;)i.ishrn(1);if(i.isEven()&&i.iadd(s),i.testn(1)||i.iadd(h),e.cmp(h)){if(!e.cmp(u))for(;i.mod(l).cmp(d);)i.iadd(c)}else for(;i.mod(o).cmp(f);)i.iadd(c);if(g(p=i.shrn(1))&&g(i)&&v(p)&&v(i)&&a.test(p)&&a.test(i))return i}}},function(t,e,i){(function(t){!function(t,e){"use strict";function r(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var i=function(){};i.prototype=e.prototype,t.prototype=new i,t.prototype.constructor=t}function o(t,e,i){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(i=e,e=10),this._init(t||0,e||10,i||"be"))}var a;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{a="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:i(191).Buffer}catch(t){}function s(t,e){var i=t.charCodeAt(e);return i>=65&&i<=70?i-55:i>=97&&i<=102?i-87:i-48&15}function h(t,e,i){var r=s(t,i);return i-1>=e&&(r|=s(t,i-1)<<4),r}function u(t,e,i,r){for(var n=0,o=Math.min(t.length,i),a=e;a<o;a++){var s=t.charCodeAt(a)-48;n*=r,n+=s>=49?s-49+10:s>=17?s-17+10:s}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,i){if("number"==typeof t)return this._initNumber(t,e,i);if("object"==typeof t)return this._initArray(t,e,i);"hex"===e&&(e=16),r(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n<t.length&&(16===e?this._parseHex(t,n,i):(this._parseBase(t,e,n),"le"===i&&this._initArray(this.toArray(),e,i)))},o.prototype._initNumber=function(t,e,i){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(r(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===i&&this._initArray(this.toArray(),e,i)},o.prototype._initArray=function(t,e,i){if(r("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var n=0;n<this.length;n++)this.words[n]=0;var o,a,s=0;if("be"===i)for(n=t.length-1,o=0;n>=0;n-=3)a=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=a<<s&67108863,this.words[o+1]=a>>>26-s&67108863,(s+=24)>=26&&(s-=26,o++);else if("le"===i)for(n=0,o=0;n<t.length;n+=3)a=t[n]|t[n+1]<<8|t[n+2]<<16,this.words[o]|=a<<s&67108863,this.words[o+1]=a>>>26-s&67108863,(s+=24)>=26&&(s-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,i){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r<this.length;r++)this.words[r]=0;var n,o=0,a=0;if("be"===i)for(r=t.length-1;r>=e;r-=2)n=h(t,e,r)<<o,this.words[a]|=67108863&n,o>=18?(o-=18,a+=1,this.words[a]|=n>>>26):o+=8;else for(r=(t.length-e)%2==0?e+1:e;r<t.length;r+=2)n=h(t,e,r)<<o,this.words[a]|=67108863&n,o>=18?(o-=18,a+=1,this.words[a]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,i){this.words=[0],this.length=1;for(var r=0,n=1;n<=67108863;n*=e)r++;r--,n=n/e|0;for(var o=t.length-i,a=o%r,s=Math.min(o,o-a)+i,h=0,l=i;l<s;l+=r)h=u(t,l,l+r,e),this.imuln(n),this.words[0]+h<67108864?this.words[0]+=h:this._iaddn(h);if(0!==a){var d=1;for(h=u(t,l,t.length,e),l=0;l<a;l++)d*=e;this.imuln(d),this.words[0]+h<67108864?this.words[0]+=h:this._iaddn(h)}this.strip()},o.prototype.copy=function(t){t.words=new Array(this.length);for(var e=0;e<this.length;e++)t.words[e]=this.words[e];t.length=this.length,t.negative=this.negative,t.red=this.red},o.prototype.clone=function(){var t=new o(null);return this.copy(t),t},o.prototype._expand=function(t){for(;this.length<t;)this.words[this.length++]=0;return this},o.prototype.strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],d=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function c(t,e,i){i.negative=e.negative^t.negative;var r=t.length+e.length|0;i.length=r,r=r-1|0;var n=0|t.words[0],o=0|e.words[0],a=n*o,s=67108863&a,h=a/67108864|0;i.words[0]=s;for(var u=1;u<r;u++){for(var l=h>>>26,d=67108863&h,f=Math.min(u,e.length-1),c=Math.max(0,u-t.length+1);c<=f;c++){var p=u-c|0;l+=(a=(n=0|t.words[p])*(o=0|e.words[c])+d)/67108864|0,d=67108863&a}i.words[u]=0|d,h=0|l}return 0!==h?i.words[u]=0|h:i.length--,i.strip()}o.prototype.toString=function(t,e){var i;if(e=0|e||1,16===(t=t||10)||"hex"===t){i="";for(var n=0,o=0,a=0;a<this.length;a++){var s=this.words[a],h=(16777215&(s<<n|o)).toString(16);i=0!==(o=s>>>24-n&16777215)||a!==this.length-1?l[6-h.length]+h+i:h+i,(n+=2)>=26&&(n-=26,a--)}for(0!==o&&(i=o.toString(16)+i);i.length%e!=0;)i="0"+i;return 0!==this.negative&&(i="-"+i),i}if(t===(0|t)&&t>=2&&t<=36){var u=d[t],c=f[t];i="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modn(c).toString(t);i=(p=p.idivn(c)).isZero()?m+i:l[u-m.length]+m+i}for(this.isZero()&&(i="0"+i);i.length%e!=0;)i="0"+i;return 0!==this.negative&&(i="-"+i),i}r(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return r(void 0!==a),this.toArrayLike(a,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,i){var n=this.byteLength(),o=i||Math.max(1,n);r(n<=o,"byte array longer than desired length"),r(o>0,"Requested array length <= 0"),this.strip();var a,s,h="le"===e,u=new t(o),l=this.clone();if(h){for(s=0;!l.isZero();s++)a=l.andln(255),l.iushrn(8),u[s]=a;for(;s<o;s++)u[s]=0}else{for(s=0;s<o-n;s++)u[s]=0;for(s=0;!l.isZero();s++)a=l.andln(255),l.iushrn(8),u[o-s-1]=a}return u},Math.clz32?o.prototype._countBits=function(t){return 32-Math.clz32(t)}:o.prototype._countBits=function(t){var e=t,i=0;return e>=4096&&(i+=13,e>>>=13),e>=64&&(i+=7,e>>>=7),e>=8&&(i+=4,e>>>=4),e>=2&&(i+=2,e>>>=2),i+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,i=0;return 0==(8191&e)&&(i+=13,e>>>=13),0==(127&e)&&(i+=7,e>>>=7),0==(15&e)&&(i+=4,e>>>=4),0==(3&e)&&(i+=2,e>>>=2),0==(1&e)&&i++,i},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;e<this.length;e++){var i=this._zeroBits(this.words[e]);if(t+=i,26!==i)break}return t},o.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},o.prototype.toTwos=function(t){return 0!==this.negative?this.abs().inotn(t).iaddn(1):this.clone()},o.prototype.fromTwos=function(t){return this.testn(t-1)?this.notn(t).iaddn(1).ineg():this.clone()},o.prototype.isNeg=function(){return 0!==this.negative},o.prototype.neg=function(){return this.clone().ineg()},o.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},o.prototype.iuor=function(t){for(;this.length<t.length;)this.words[this.length++]=0;for(var e=0;e<t.length;e++)this.words[e]=this.words[e]|t.words[e];return this.strip()},o.prototype.ior=function(t){return r(0==(this.negative|t.negative)),this.iuor(t)},o.prototype.or=function(t){return this.length>t.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var i=0;i<e.length;i++)this.words[i]=this.words[i]&t.words[i];return this.length=e.length,this.strip()},o.prototype.iand=function(t){return r(0==(this.negative|t.negative)),this.iuand(t)},o.prototype.and=function(t){return this.length>t.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,i;this.length>t.length?(e=this,i=t):(e=t,i=this);for(var r=0;r<i.length;r++)this.words[r]=e.words[r]^i.words[r];if(this!==e)for(;r<e.length;r++)this.words[r]=e.words[r];return this.length=e.length,this.strip()},o.prototype.ixor=function(t){return r(0==(this.negative|t.negative)),this.iuxor(t)},o.prototype.xor=function(t){return this.length>t.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){r("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),i=t%26;this._expand(e),i>0&&e--;for(var n=0;n<e;n++)this.words[n]=67108863&~this.words[n];return i>0&&(this.words[n]=~this.words[n]&67108863>>26-i),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){r("number"==typeof t&&t>=0);var i=t/26|0,n=t%26;return this._expand(i+1),this.words[i]=e?this.words[i]|1<<n:this.words[i]&~(1<<n),this.strip()},o.prototype.iadd=function(t){var e,i,r;if(0!==this.negative&&0===t.negative)return this.negative=0,e=this.isub(t),this.negative^=1,this._normSign();if(0===this.negative&&0!==t.negative)return t.negative=0,e=this.isub(t),t.negative=1,e._normSign();this.length>t.length?(i=this,r=t):(i=t,r=this);for(var n=0,o=0;o<r.length;o++)e=(0|i.words[o])+(0|r.words[o])+n,this.words[o]=67108863&e,n=e>>>26;for(;0!==n&&o<i.length;o++)e=(0|i.words[o])+n,this.words[o]=67108863&e,n=e>>>26;if(this.length=i.length,0!==n)this.words[this.length]=n,this.length++;else if(i!==this)for(;o<i.length;o++)this.words[o]=i.words[o];return this},o.prototype.add=function(t){var e;return 0!==t.negative&&0===this.negative?(t.negative=0,e=this.sub(t),t.negative^=1,e):0===t.negative&&0!==this.negative?(this.negative=0,e=t.sub(this),this.negative=1,e):this.length>t.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var i,r,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(i=this,r=t):(i=t,r=this);for(var o=0,a=0;a<r.length;a++)o=(e=(0|i.words[a])-(0|r.words[a])+o)>>26,this.words[a]=67108863&e;for(;0!==o&&a<i.length;a++)o=(e=(0|i.words[a])+o)>>26,this.words[a]=67108863&e;if(0===o&&a<i.length&&i!==this)for(;a<i.length;a++)this.words[a]=i.words[a];return this.length=Math.max(this.length,a),i!==this&&(this.negative=1),this.strip()},o.prototype.sub=function(t){return this.clone().isub(t)};var p=function(t,e,i){var r,n,o,a=t.words,s=e.words,h=i.words,u=0,l=0|a[0],d=8191&l,f=l>>>13,c=0|a[1],p=8191&c,m=c>>>13,g=0|a[2],v=8191&g,y=g>>>13,b=0|a[3],_=8191&b,w=b>>>13,A=0|a[4],M=8191&A,E=A>>>13,S=0|a[5],k=8191&S,T=S>>>13,R=0|a[6],I=8191&R,C=R>>>13,P=0|a[7],x=8191&P,D=P>>>13,O=0|a[8],B=8191&O,L=O>>>13,W=0|a[9],N=8191&W,F=W>>>13,U=0|s[0],j=8191&U,V=U>>>13,H=0|s[1],z=8191&H,G=H>>>13,q=0|s[2],X=8191&q,Z=q>>>13,K=0|s[3],Q=8191&K,Y=K>>>13,J=0|s[4],$=8191&J,tt=J>>>13,et=0|s[5],it=8191&et,rt=et>>>13,nt=0|s[6],ot=8191&nt,at=nt>>>13,st=0|s[7],ht=8191&st,ut=st>>>13,lt=0|s[8],dt=8191<,ft=lt>>>13,ct=0|s[9],pt=8191&ct,mt=ct>>>13;i.negative=t.negative^e.negative,i.length=19;var gt=(u+(r=Math.imul(d,j))|0)+((8191&(n=(n=Math.imul(d,V))+Math.imul(f,j)|0))<<13)|0;u=((o=Math.imul(f,V))+(n>>>13)|0)+(gt>>>26)|0,gt&=67108863,r=Math.imul(p,j),n=(n=Math.imul(p,V))+Math.imul(m,j)|0,o=Math.imul(m,V);var vt=(u+(r=r+Math.imul(d,z)|0)|0)+((8191&(n=(n=n+Math.imul(d,G)|0)+Math.imul(f,z)|0))<<13)|0;u=((o=o+Math.imul(f,G)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,r=Math.imul(v,j),n=(n=Math.imul(v,V))+Math.imul(y,j)|0,o=Math.imul(y,V),r=r+Math.imul(p,z)|0,n=(n=n+Math.imul(p,G)|0)+Math.imul(m,z)|0,o=o+Math.imul(m,G)|0;var yt=(u+(r=r+Math.imul(d,X)|0)|0)+((8191&(n=(n=n+Math.imul(d,Z)|0)+Math.imul(f,X)|0))<<13)|0;u=((o=o+Math.imul(f,Z)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,r=Math.imul(_,j),n=(n=Math.imul(_,V))+Math.imul(w,j)|0,o=Math.imul(w,V),r=r+Math.imul(v,z)|0,n=(n=n+Math.imul(v,G)|0)+Math.imul(y,z)|0,o=o+Math.imul(y,G)|0,r=r+Math.imul(p,X)|0,n=(n=n+Math.imul(p,Z)|0)+Math.imul(m,X)|0,o=o+Math.imul(m,Z)|0;var bt=(u+(r=r+Math.imul(d,Q)|0)|0)+((8191&(n=(n=n+Math.imul(d,Y)|0)+Math.imul(f,Q)|0))<<13)|0;u=((o=o+Math.imul(f,Y)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,r=Math.imul(M,j),n=(n=Math.imul(M,V))+Math.imul(E,j)|0,o=Math.imul(E,V),r=r+Math.imul(_,z)|0,n=(n=n+Math.imul(_,G)|0)+Math.imul(w,z)|0,o=o+Math.imul(w,G)|0,r=r+Math.imul(v,X)|0,n=(n=n+Math.imul(v,Z)|0)+Math.imul(y,X)|0,o=o+Math.imul(y,Z)|0,r=r+Math.imul(p,Q)|0,n=(n=n+Math.imul(p,Y)|0)+Math.imul(m,Q)|0,o=o+Math.imul(m,Y)|0;var _t=(u+(r=r+Math.imul(d,$)|0)|0)+((8191&(n=(n=n+Math.imul(d,tt)|0)+Math.imul(f,$)|0))<<13)|0;u=((o=o+Math.imul(f,tt)|0)+(n>>>13)|0)+(_t>>>26)|0,_t&=67108863,r=Math.imul(k,j),n=(n=Math.imul(k,V))+Math.imul(T,j)|0,o=Math.imul(T,V),r=r+Math.imul(M,z)|0,n=(n=n+Math.imul(M,G)|0)+Math.imul(E,z)|0,o=o+Math.imul(E,G)|0,r=r+Math.imul(_,X)|0,n=(n=n+Math.imul(_,Z)|0)+Math.imul(w,X)|0,o=o+Math.imul(w,Z)|0,r=r+Math.imul(v,Q)|0,n=(n=n+Math.imul(v,Y)|0)+Math.imul(y,Q)|0,o=o+Math.imul(y,Y)|0,r=r+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,$)|0,o=o+Math.imul(m,tt)|0;var wt=(u+(r=r+Math.imul(d,it)|0)|0)+((8191&(n=(n=n+Math.imul(d,rt)|0)+Math.imul(f,it)|0))<<13)|0;u=((o=o+Math.imul(f,rt)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,r=Math.imul(I,j),n=(n=Math.imul(I,V))+Math.imul(C,j)|0,o=Math.imul(C,V),r=r+Math.imul(k,z)|0,n=(n=n+Math.imul(k,G)|0)+Math.imul(T,z)|0,o=o+Math.imul(T,G)|0,r=r+Math.imul(M,X)|0,n=(n=n+Math.imul(M,Z)|0)+Math.imul(E,X)|0,o=o+Math.imul(E,Z)|0,r=r+Math.imul(_,Q)|0,n=(n=n+Math.imul(_,Y)|0)+Math.imul(w,Q)|0,o=o+Math.imul(w,Y)|0,r=r+Math.imul(v,$)|0,n=(n=n+Math.imul(v,tt)|0)+Math.imul(y,$)|0,o=o+Math.imul(y,tt)|0,r=r+Math.imul(p,it)|0,n=(n=n+Math.imul(p,rt)|0)+Math.imul(m,it)|0,o=o+Math.imul(m,rt)|0;var At=(u+(r=r+Math.imul(d,ot)|0)|0)+((8191&(n=(n=n+Math.imul(d,at)|0)+Math.imul(f,ot)|0))<<13)|0;u=((o=o+Math.imul(f,at)|0)+(n>>>13)|0)+(At>>>26)|0,At&=67108863,r=Math.imul(x,j),n=(n=Math.imul(x,V))+Math.imul(D,j)|0,o=Math.imul(D,V),r=r+Math.imul(I,z)|0,n=(n=n+Math.imul(I,G)|0)+Math.imul(C,z)|0,o=o+Math.imul(C,G)|0,r=r+Math.imul(k,X)|0,n=(n=n+Math.imul(k,Z)|0)+Math.imul(T,X)|0,o=o+Math.imul(T,Z)|0,r=r+Math.imul(M,Q)|0,n=(n=n+Math.imul(M,Y)|0)+Math.imul(E,Q)|0,o=o+Math.imul(E,Y)|0,r=r+Math.imul(_,$)|0,n=(n=n+Math.imul(_,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,r=r+Math.imul(v,it)|0,n=(n=n+Math.imul(v,rt)|0)+Math.imul(y,it)|0,o=o+Math.imul(y,rt)|0,r=r+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,at)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,at)|0;var Mt=(u+(r=r+Math.imul(d,ht)|0)|0)+((8191&(n=(n=n+Math.imul(d,ut)|0)+Math.imul(f,ht)|0))<<13)|0;u=((o=o+Math.imul(f,ut)|0)+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,r=Math.imul(B,j),n=(n=Math.imul(B,V))+Math.imul(L,j)|0,o=Math.imul(L,V),r=r+Math.imul(x,z)|0,n=(n=n+Math.imul(x,G)|0)+Math.imul(D,z)|0,o=o+Math.imul(D,G)|0,r=r+Math.imul(I,X)|0,n=(n=n+Math.imul(I,Z)|0)+Math.imul(C,X)|0,o=o+Math.imul(C,Z)|0,r=r+Math.imul(k,Q)|0,n=(n=n+Math.imul(k,Y)|0)+Math.imul(T,Q)|0,o=o+Math.imul(T,Y)|0,r=r+Math.imul(M,$)|0,n=(n=n+Math.imul(M,tt)|0)+Math.imul(E,$)|0,o=o+Math.imul(E,tt)|0,r=r+Math.imul(_,it)|0,n=(n=n+Math.imul(_,rt)|0)+Math.imul(w,it)|0,o=o+Math.imul(w,rt)|0,r=r+Math.imul(v,ot)|0,n=(n=n+Math.imul(v,at)|0)+Math.imul(y,ot)|0,o=o+Math.imul(y,at)|0,r=r+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0;var Et=(u+(r=r+Math.imul(d,dt)|0)|0)+((8191&(n=(n=n+Math.imul(d,ft)|0)+Math.imul(f,dt)|0))<<13)|0;u=((o=o+Math.imul(f,ft)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,r=Math.imul(N,j),n=(n=Math.imul(N,V))+Math.imul(F,j)|0,o=Math.imul(F,V),r=r+Math.imul(B,z)|0,n=(n=n+Math.imul(B,G)|0)+Math.imul(L,z)|0,o=o+Math.imul(L,G)|0,r=r+Math.imul(x,X)|0,n=(n=n+Math.imul(x,Z)|0)+Math.imul(D,X)|0,o=o+Math.imul(D,Z)|0,r=r+Math.imul(I,Q)|0,n=(n=n+Math.imul(I,Y)|0)+Math.imul(C,Q)|0,o=o+Math.imul(C,Y)|0,r=r+Math.imul(k,$)|0,n=(n=n+Math.imul(k,tt)|0)+Math.imul(T,$)|0,o=o+Math.imul(T,tt)|0,r=r+Math.imul(M,it)|0,n=(n=n+Math.imul(M,rt)|0)+Math.imul(E,it)|0,o=o+Math.imul(E,rt)|0,r=r+Math.imul(_,ot)|0,n=(n=n+Math.imul(_,at)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,at)|0,r=r+Math.imul(v,ht)|0,n=(n=n+Math.imul(v,ut)|0)+Math.imul(y,ht)|0,o=o+Math.imul(y,ut)|0,r=r+Math.imul(p,dt)|0,n=(n=n+Math.imul(p,ft)|0)+Math.imul(m,dt)|0,o=o+Math.imul(m,ft)|0;var St=(u+(r=r+Math.imul(d,pt)|0)|0)+((8191&(n=(n=n+Math.imul(d,mt)|0)+Math.imul(f,pt)|0))<<13)|0;u=((o=o+Math.imul(f,mt)|0)+(n>>>13)|0)+(St>>>26)|0,St&=67108863,r=Math.imul(N,z),n=(n=Math.imul(N,G))+Math.imul(F,z)|0,o=Math.imul(F,G),r=r+Math.imul(B,X)|0,n=(n=n+Math.imul(B,Z)|0)+Math.imul(L,X)|0,o=o+Math.imul(L,Z)|0,r=r+Math.imul(x,Q)|0,n=(n=n+Math.imul(x,Y)|0)+Math.imul(D,Q)|0,o=o+Math.imul(D,Y)|0,r=r+Math.imul(I,$)|0,n=(n=n+Math.imul(I,tt)|0)+Math.imul(C,$)|0,o=o+Math.imul(C,tt)|0,r=r+Math.imul(k,it)|0,n=(n=n+Math.imul(k,rt)|0)+Math.imul(T,it)|0,o=o+Math.imul(T,rt)|0,r=r+Math.imul(M,ot)|0,n=(n=n+Math.imul(M,at)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,at)|0,r=r+Math.imul(_,ht)|0,n=(n=n+Math.imul(_,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,r=r+Math.imul(v,dt)|0,n=(n=n+Math.imul(v,ft)|0)+Math.imul(y,dt)|0,o=o+Math.imul(y,ft)|0;var kt=(u+(r=r+Math.imul(p,pt)|0)|0)+((8191&(n=(n=n+Math.imul(p,mt)|0)+Math.imul(m,pt)|0))<<13)|0;u=((o=o+Math.imul(m,mt)|0)+(n>>>13)|0)+(kt>>>26)|0,kt&=67108863,r=Math.imul(N,X),n=(n=Math.imul(N,Z))+Math.imul(F,X)|0,o=Math.imul(F,Z),r=r+Math.imul(B,Q)|0,n=(n=n+Math.imul(B,Y)|0)+Math.imul(L,Q)|0,o=o+Math.imul(L,Y)|0,r=r+Math.imul(x,$)|0,n=(n=n+Math.imul(x,tt)|0)+Math.imul(D,$)|0,o=o+Math.imul(D,tt)|0,r=r+Math.imul(I,it)|0,n=(n=n+Math.imul(I,rt)|0)+Math.imul(C,it)|0,o=o+Math.imul(C,rt)|0,r=r+Math.imul(k,ot)|0,n=(n=n+Math.imul(k,at)|0)+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,r=r+Math.imul(M,ht)|0,n=(n=n+Math.imul(M,ut)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,ut)|0,r=r+Math.imul(_,dt)|0,n=(n=n+Math.imul(_,ft)|0)+Math.imul(w,dt)|0,o=o+Math.imul(w,ft)|0;var Tt=(u+(r=r+Math.imul(v,pt)|0)|0)+((8191&(n=(n=n+Math.imul(v,mt)|0)+Math.imul(y,pt)|0))<<13)|0;u=((o=o+Math.imul(y,mt)|0)+(n>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,r=Math.imul(N,Q),n=(n=Math.imul(N,Y))+Math.imul(F,Q)|0,o=Math.imul(F,Y),r=r+Math.imul(B,$)|0,n=(n=n+Math.imul(B,tt)|0)+Math.imul(L,$)|0,o=o+Math.imul(L,tt)|0,r=r+Math.imul(x,it)|0,n=(n=n+Math.imul(x,rt)|0)+Math.imul(D,it)|0,o=o+Math.imul(D,rt)|0,r=r+Math.imul(I,ot)|0,n=(n=n+Math.imul(I,at)|0)+Math.imul(C,ot)|0,o=o+Math.imul(C,at)|0,r=r+Math.imul(k,ht)|0,n=(n=n+Math.imul(k,ut)|0)+Math.imul(T,ht)|0,o=o+Math.imul(T,ut)|0,r=r+Math.imul(M,dt)|0,n=(n=n+Math.imul(M,ft)|0)+Math.imul(E,dt)|0,o=o+Math.imul(E,ft)|0;var Rt=(u+(r=r+Math.imul(_,pt)|0)|0)+((8191&(n=(n=n+Math.imul(_,mt)|0)+Math.imul(w,pt)|0))<<13)|0;u=((o=o+Math.imul(w,mt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,r=Math.imul(N,$),n=(n=Math.imul(N,tt))+Math.imul(F,$)|0,o=Math.imul(F,tt),r=r+Math.imul(B,it)|0,n=(n=n+Math.imul(B,rt)|0)+Math.imul(L,it)|0,o=o+Math.imul(L,rt)|0,r=r+Math.imul(x,ot)|0,n=(n=n+Math.imul(x,at)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,at)|0,r=r+Math.imul(I,ht)|0,n=(n=n+Math.imul(I,ut)|0)+Math.imul(C,ht)|0,o=o+Math.imul(C,ut)|0,r=r+Math.imul(k,dt)|0,n=(n=n+Math.imul(k,ft)|0)+Math.imul(T,dt)|0,o=o+Math.imul(T,ft)|0;var It=(u+(r=r+Math.imul(M,pt)|0)|0)+((8191&(n=(n=n+Math.imul(M,mt)|0)+Math.imul(E,pt)|0))<<13)|0;u=((o=o+Math.imul(E,mt)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,r=Math.imul(N,it),n=(n=Math.imul(N,rt))+Math.imul(F,it)|0,o=Math.imul(F,rt),r=r+Math.imul(B,ot)|0,n=(n=n+Math.imul(B,at)|0)+Math.imul(L,ot)|0,o=o+Math.imul(L,at)|0,r=r+Math.imul(x,ht)|0,n=(n=n+Math.imul(x,ut)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,ut)|0,r=r+Math.imul(I,dt)|0,n=(n=n+Math.imul(I,ft)|0)+Math.imul(C,dt)|0,o=o+Math.imul(C,ft)|0;var Ct=(u+(r=r+Math.imul(k,pt)|0)|0)+((8191&(n=(n=n+Math.imul(k,mt)|0)+Math.imul(T,pt)|0))<<13)|0;u=((o=o+Math.imul(T,mt)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,r=Math.imul(N,ot),n=(n=Math.imul(N,at))+Math.imul(F,ot)|0,o=Math.imul(F,at),r=r+Math.imul(B,ht)|0,n=(n=n+Math.imul(B,ut)|0)+Math.imul(L,ht)|0,o=o+Math.imul(L,ut)|0,r=r+Math.imul(x,dt)|0,n=(n=n+Math.imul(x,ft)|0)+Math.imul(D,dt)|0,o=o+Math.imul(D,ft)|0;var Pt=(u+(r=r+Math.imul(I,pt)|0)|0)+((8191&(n=(n=n+Math.imul(I,mt)|0)+Math.imul(C,pt)|0))<<13)|0;u=((o=o+Math.imul(C,mt)|0)+(n>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,r=Math.imul(N,ht),n=(n=Math.imul(N,ut))+Math.imul(F,ht)|0,o=Math.imul(F,ut),r=r+Math.imul(B,dt)|0,n=(n=n+Math.imul(B,ft)|0)+Math.imul(L,dt)|0,o=o+Math.imul(L,ft)|0;var xt=(u+(r=r+Math.imul(x,pt)|0)|0)+((8191&(n=(n=n+Math.imul(x,mt)|0)+Math.imul(D,pt)|0))<<13)|0;u=((o=o+Math.imul(D,mt)|0)+(n>>>13)|0)+(xt>>>26)|0,xt&=67108863,r=Math.imul(N,dt),n=(n=Math.imul(N,ft))+Math.imul(F,dt)|0,o=Math.imul(F,ft);var Dt=(u+(r=r+Math.imul(B,pt)|0)|0)+((8191&(n=(n=n+Math.imul(B,mt)|0)+Math.imul(L,pt)|0))<<13)|0;u=((o=o+Math.imul(L,mt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863;var Ot=(u+(r=Math.imul(N,pt))|0)+((8191&(n=(n=Math.imul(N,mt))+Math.imul(F,pt)|0))<<13)|0;return u=((o=Math.imul(F,mt))+(n>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,h[0]=gt,h[1]=vt,h[2]=yt,h[3]=bt,h[4]=_t,h[5]=wt,h[6]=At,h[7]=Mt,h[8]=Et,h[9]=St,h[10]=kt,h[11]=Tt,h[12]=Rt,h[13]=It,h[14]=Ct,h[15]=Pt,h[16]=xt,h[17]=Dt,h[18]=Ot,0!==u&&(h[19]=u,i.length++),i};function m(t,e,i){return(new g).mulp(t,e,i)}function g(t,e){this.x=t,this.y=e}Math.imul||(p=c),o.prototype.mulTo=function(t,e){var i,r=this.length+t.length;return i=10===this.length&&10===t.length?p(this,t,e):r<63?c(this,t,e):r<1024?function(t,e,i){i.negative=e.negative^t.negative,i.length=t.length+e.length;for(var r=0,n=0,o=0;o<i.length-1;o++){var a=n;n=0;for(var s=67108863&r,h=Math.min(o,e.length-1),u=Math.max(0,o-t.length+1);u<=h;u++){var l=o-u,d=(0|t.words[l])*(0|e.words[u]),f=67108863&d;s=67108863&(f=f+s|0),n+=(a=(a=a+(d/67108864|0)|0)+(f>>>26)|0)>>>26,a&=67108863}i.words[o]=s,r=a,a=n}return 0!==r?i.words[o]=r:i.length--,i.strip()}(this,t,e):m(this,t,e),i},g.prototype.makeRBT=function(t){for(var e=new Array(t),i=o.prototype._countBits(t)-1,r=0;r<t;r++)e[r]=this.revBin(r,i,t);return e},g.prototype.revBin=function(t,e,i){if(0===t||t===i-1)return t;for(var r=0,n=0;n<e;n++)r|=(1&t)<<e-n-1,t>>=1;return r},g.prototype.permute=function(t,e,i,r,n,o){for(var a=0;a<o;a++)r[a]=e[t[a]],n[a]=i[t[a]]},g.prototype.transform=function(t,e,i,r,n,o){this.permute(o,t,e,i,r,n);for(var a=1;a<n;a<<=1)for(var s=a<<1,h=Math.cos(2*Math.PI/s),u=Math.sin(2*Math.PI/s),l=0;l<n;l+=s)for(var d=h,f=u,c=0;c<a;c++){var p=i[l+c],m=r[l+c],g=i[l+c+a],v=r[l+c+a],y=d*g-f*v;v=d*v+f*g,g=y,i[l+c]=p+g,r[l+c]=m+v,i[l+c+a]=p-g,r[l+c+a]=m-v,c!==s&&(y=h*d-u*f,f=h*f+u*d,d=y)}},g.prototype.guessLen13b=function(t,e){var i=1|Math.max(e,t),r=1&i,n=0;for(i=i/2|0;i;i>>>=1)n++;return 1<<n+1+r},g.prototype.conjugate=function(t,e,i){if(!(i<=1))for(var r=0;r<i/2;r++){var n=t[r];t[r]=t[i-r-1],t[i-r-1]=n,n=e[r],e[r]=-e[i-r-1],e[i-r-1]=-n}},g.prototype.normalize13b=function(t,e){for(var i=0,r=0;r<e/2;r++){var n=8192*Math.round(t[2*r+1]/e)+Math.round(t[2*r]/e)+i;t[r]=67108863&n,i=n<67108864?0:n/67108864|0}return t},g.prototype.convert13b=function(t,e,i,n){for(var o=0,a=0;a<e;a++)o+=0|t[a],i[2*a]=8191&o,o>>>=13,i[2*a+1]=8191&o,o>>>=13;for(a=2*e;a<n;++a)i[a]=0;r(0===o),r(0==(-8192&o))},g.prototype.stub=function(t){for(var e=new Array(t),i=0;i<t;i++)e[i]=0;return e},g.prototype.mulp=function(t,e,i){var r=2*this.guessLen13b(t.length,e.length),n=this.makeRBT(r),o=this.stub(r),a=new Array(r),s=new Array(r),h=new Array(r),u=new Array(r),l=new Array(r),d=new Array(r),f=i.words;f.length=r,this.convert13b(t.words,t.length,a,r),this.convert13b(e.words,e.length,u,r),this.transform(a,o,s,h,r,n),this.transform(u,o,l,d,r,n);for(var c=0;c<r;c++){var p=s[c]*l[c]-h[c]*d[c];h[c]=s[c]*d[c]+h[c]*l[c],s[c]=p}return this.conjugate(s,h,r),this.transform(s,h,f,o,r,n),this.conjugate(f,o,r),this.normalize13b(f,r),i.negative=t.negative^e.negative,i.length=t.length+e.length,i.strip()},o.prototype.mul=function(t){var e=new o(null);return e.words=new Array(this.length+t.length),this.mulTo(t,e)},o.prototype.mulf=function(t){var e=new o(null);return e.words=new Array(this.length+t.length),m(this,t,e)},o.prototype.imul=function(t){return this.clone().mulTo(t,this)},o.prototype.imuln=function(t){r("number"==typeof t),r(t<67108864);for(var e=0,i=0;i<this.length;i++){var n=(0|this.words[i])*t,o=(67108863&n)+(67108863&e);e>>=26,e+=n/67108864|0,e+=o>>>26,this.words[i]=67108863&o}return 0!==e&&(this.words[i]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),i=0;i<e.length;i++){var r=i/26|0,n=i%26;e[i]=(t.words[r]&1<<n)>>>n}return e}(t);if(0===e.length)return new o(1);for(var i=this,r=0;r<e.length&&0===e[r];r++,i=i.sqr());if(++r<e.length)for(var n=i.sqr();r<e.length;r++,n=n.sqr())0!==e[r]&&(i=i.mul(n));return i},o.prototype.iushln=function(t){r("number"==typeof t&&t>=0);var e,i=t%26,n=(t-i)/26,o=67108863>>>26-i<<26-i;if(0!==i){var a=0;for(e=0;e<this.length;e++){var s=this.words[e]&o,h=(0|this.words[e])-s<<i;this.words[e]=h|a,a=s>>>26-i}a&&(this.words[e]=a,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e<n;e++)this.words[e]=0;this.length+=n}return this.strip()},o.prototype.ishln=function(t){return r(0===this.negative),this.iushln(t)},o.prototype.iushrn=function(t,e,i){var n;r("number"==typeof t&&t>=0),n=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),s=67108863^67108863>>>o<<o,h=i;if(n-=a,n=Math.max(0,n),h){for(var u=0;u<a;u++)h.words[u]=this.words[u];h.length=a}if(0===a);else if(this.length>a)for(this.length-=a,u=0;u<this.length;u++)this.words[u]=this.words[u+a];else this.words[0]=0,this.length=1;var l=0;for(u=this.length-1;u>=0&&(0!==l||u>=n);u--){var d=0|this.words[u];this.words[u]=l<<26-o|d>>>o,l=d&s}return h&&0!==l&&(h.words[h.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,i){return r(0===this.negative),this.iushrn(t,e,i)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){r("number"==typeof t&&t>=0);var e=t%26,i=(t-e)/26,n=1<<e;return!(this.length<=i)&&!!(this.words[i]&n)},o.prototype.imaskn=function(t){r("number"==typeof t&&t>=0);var e=t%26,i=(t-e)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=i)return this;if(0!==e&&i++,this.length=Math.min(i,this.length),0!==e){var n=67108863^67108863>>>e<<e;this.words[this.length-1]&=n}return this.strip()},o.prototype.maskn=function(t){return this.clone().imaskn(t)},o.prototype.iaddn=function(t){return r("number"==typeof t),r(t<67108864),t<0?this.isubn(-t):0!==this.negative?1===this.length&&(0|this.words[0])<t?(this.words[0]=t-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(t),this.negative=1,this):this._iaddn(t)},o.prototype._iaddn=function(t){this.words[0]+=t;for(var e=0;e<this.length&&this.words[e]>=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(r("number"==typeof t),r(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e<this.length&&this.words[e]<0;e++)this.words[e]+=67108864,this.words[e+1]-=1;return this.strip()},o.prototype.addn=function(t){return this.clone().iaddn(t)},o.prototype.subn=function(t){return this.clone().isubn(t)},o.prototype.iabs=function(){return this.negative=0,this},o.prototype.abs=function(){return this.clone().iabs()},o.prototype._ishlnsubmul=function(t,e,i){var n,o,a=t.length+i;this._expand(a);var s=0;for(n=0;n<t.length;n++){o=(0|this.words[n+i])+s;var h=(0|t.words[n])*e;s=((o-=67108863&h)>>26)-(h/67108864|0),this.words[n+i]=67108863&o}for(;n<this.length-i;n++)s=(o=(0|this.words[n+i])+s)>>26,this.words[n+i]=67108863&o;if(0===s)return this.strip();for(r(-1===s),s=0,n=0;n<this.length;n++)s=(o=-(0|this.words[n])+s)>>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var i=(this.length,t.length),r=this.clone(),n=t,a=0|n.words[n.length-1];0!==(i=26-this._countBits(a))&&(n=n.ushln(i),r.iushln(i),a=0|n.words[n.length-1]);var s,h=r.length-n.length;if("mod"!==e){(s=new o(null)).length=h+1,s.words=new Array(s.length);for(var u=0;u<s.length;u++)s.words[u]=0}var l=r.clone()._ishlnsubmul(n,1,h);0===l.negative&&(r=l,s&&(s.words[h]=1));for(var d=h-1;d>=0;d--){var f=67108864*(0|r.words[n.length+d])+(0|r.words[n.length+d-1]);for(f=Math.min(f/a|0,67108863),r._ishlnsubmul(n,f,d);0!==r.negative;)f--,r.negative=0,r._ishlnsubmul(n,1,d),r.isZero()||(r.negative^=1);s&&(s.words[d]=f)}return s&&s.strip(),r.strip(),"div"!==e&&0!==i&&r.iushrn(i),{div:s||null,mod:r}},o.prototype.divmod=function(t,e,i){return r(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(s=this.neg().divmod(t,e),"mod"!==e&&(n=s.div.neg()),"div"!==e&&(a=s.mod.neg(),i&&0!==a.negative&&a.iadd(t)),{div:n,mod:a}):0===this.negative&&0!==t.negative?(s=this.divmod(t.neg(),e),"mod"!==e&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&t.negative)?(s=this.neg().divmod(t.neg(),e),"div"!==e&&(a=s.mod.neg(),i&&0!==a.negative&&a.isub(t)),{div:s.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,a,s},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var i=0!==e.div.negative?e.mod.isub(t):e.mod,r=t.ushrn(1),n=t.andln(1),o=i.cmp(r);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){r(t<=67108863);for(var e=(1<<26)%t,i=0,n=this.length-1;n>=0;n--)i=(e*i+(0|this.words[n]))%t;return i},o.prototype.idivn=function(t){r(t<=67108863);for(var e=0,i=this.length-1;i>=0;i--){var n=(0|this.words[i])+67108864*e;this.words[i]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){r(0===t.negative),r(!t.isZero());var e=this,i=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),a=new o(0),s=new o(0),h=new o(1),u=0;e.isEven()&&i.isEven();)e.iushrn(1),i.iushrn(1),++u;for(var l=i.clone(),d=e.clone();!e.isZero();){for(var f=0,c=1;0==(e.words[0]&c)&&f<26;++f,c<<=1);if(f>0)for(e.iushrn(f);f-- >0;)(n.isOdd()||a.isOdd())&&(n.iadd(l),a.isub(d)),n.iushrn(1),a.iushrn(1);for(var p=0,m=1;0==(i.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(i.iushrn(p);p-- >0;)(s.isOdd()||h.isOdd())&&(s.iadd(l),h.isub(d)),s.iushrn(1),h.iushrn(1);e.cmp(i)>=0?(e.isub(i),n.isub(s),a.isub(h)):(i.isub(e),s.isub(n),h.isub(a))}return{a:s,b:h,gcd:i.iushln(u)}},o.prototype._invmp=function(t){r(0===t.negative),r(!t.isZero());var e=this,i=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,a=new o(1),s=new o(0),h=i.clone();e.cmpn(1)>0&&i.cmpn(1)>0;){for(var u=0,l=1;0==(e.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(e.iushrn(u);u-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);for(var d=0,f=1;0==(i.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(i.iushrn(d);d-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);e.cmp(i)>=0?(e.isub(i),a.isub(s)):(i.isub(e),s.isub(a))}return(n=0===e.cmpn(1)?a:s).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),i=t.clone();e.negative=0,i.negative=0;for(var r=0;e.isEven()&&i.isEven();r++)e.iushrn(1),i.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;i.isEven();)i.iushrn(1);var n=e.cmp(i);if(n<0){var o=e;e=i,i=o}else if(0===n||0===i.cmpn(1))break;e.isub(i)}return i.iushln(r)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){r("number"==typeof t);var e=t%26,i=(t-e)/26,n=1<<e;if(this.length<=i)return this._expand(i+1),this.words[i]|=n,this;for(var o=n,a=i;0!==o&&a<this.length;a++){var s=0|this.words[a];o=(s+=o)>>>26,s&=67108863,this.words[a]=s}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,i=t<0;if(0!==this.negative&&!i)return-1;if(0===this.negative&&i)return 1;if(this.strip(),this.length>1)e=1;else{i&&(t=-t),r(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:n<t?-1:1}return 0!==this.negative?0|-e:e},o.prototype.cmp=function(t){if(0!==this.negative&&0===t.negative)return-1;if(0===this.negative&&0!==t.negative)return 1;var e=this.ucmp(t);return 0!==this.negative?0|-e:e},o.prototype.ucmp=function(t){if(this.length>t.length)return 1;if(this.length<t.length)return-1;for(var e=0,i=this.length-1;i>=0;i--){var r=0|this.words[i],n=0|t.words[i];if(r!==n){r<n?e=-1:r>n&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new M(t)},o.prototype.toRed=function(t){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return r(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return r(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var v={k256:null,p224:null,p192:null,p25519:null};function y(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function b(){y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function _(){y.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){y.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function A(){y.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function M(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else r(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function E(t){M.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}y.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},y.prototype.ireduce=function(t){var e,i=t;do{this.split(i,this.tmp),e=(i=(i=this.imulK(i)).iadd(this.tmp)).bitLength()}while(e>this.n);var r=e<this.n?-1:i.ucmp(this.p);return 0===r?(i.words[0]=0,i.length=1):r>0?i.isub(this.p):void 0!==i.strip?i.strip():i._strip(),i},y.prototype.split=function(t,e){t.iushrn(this.n,0,e)},y.prototype.imulK=function(t){return t.imul(this.k)},n(b,y),b.prototype.split=function(t,e){for(var i=4194303,r=Math.min(t.length,9),n=0;n<r;n++)e.words[n]=t.words[n];if(e.length=r,t.length<=9)return t.words[0]=0,void(t.length=1);var o=t.words[9];for(e.words[e.length++]=o&i,n=10;n<t.length;n++){var a=0|t.words[n];t.words[n-10]=(a&i)<<4|o>>>22,o=a}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},b.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,i=0;i<t.length;i++){var r=0|t.words[i];e+=977*r,t.words[i]=67108863&e,e=64*r+(e/67108864|0)}return 0===t.words[t.length-1]&&(t.length--,0===t.words[t.length-1]&&t.length--),t},n(_,y),n(w,y),n(A,y),A.prototype.imulK=function(t){for(var e=0,i=0;i<t.length;i++){var r=19*(0|t.words[i])+e,n=67108863&r;r>>>=26,t.words[i]=n,e=r}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(v[t])return v[t];var e;if("k256"===t)e=new b;else if("p224"===t)e=new _;else if("p192"===t)e=new w;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new A}return v[t]=e,e},M.prototype._verify1=function(t){r(0===t.negative,"red works only with positives"),r(t.red,"red works only with red numbers")},M.prototype._verify2=function(t,e){r(0==(t.negative|e.negative),"red works only with positives"),r(t.red&&t.red===e.red,"red works only with red numbers")},M.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},M.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},M.prototype.add=function(t,e){this._verify2(t,e);var i=t.add(e);return i.cmp(this.m)>=0&&i.isub(this.m),i._forceRed(this)},M.prototype.iadd=function(t,e){this._verify2(t,e);var i=t.iadd(e);return i.cmp(this.m)>=0&&i.isub(this.m),i},M.prototype.sub=function(t,e){this._verify2(t,e);var i=t.sub(e);return i.cmpn(0)<0&&i.iadd(this.m),i._forceRed(this)},M.prototype.isub=function(t,e){this._verify2(t,e);var i=t.isub(e);return i.cmpn(0)<0&&i.iadd(this.m),i},M.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},M.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},M.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},M.prototype.isqr=function(t){return this.imul(t,t.clone())},M.prototype.sqr=function(t){return this.mul(t,t)},M.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(r(e%2==1),3===e){var i=this.m.add(new o(1)).iushrn(2);return this.pow(t,i)}for(var n=this.m.subn(1),a=0;!n.isZero()&&0===n.andln(1);)a++,n.iushrn(1);r(!n.isZero());var s=new o(1).toRed(this),h=s.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);0!==this.pow(l,u).cmp(h);)l.redIAdd(h);for(var d=this.pow(l,n),f=this.pow(t,n.addn(1).iushrn(1)),c=this.pow(t,n),p=a;0!==c.cmp(s);){for(var m=c,g=0;0!==m.cmp(s);g++)m=m.redSqr();r(g<p);var v=this.pow(d,new o(1).iushln(p-g-1));f=f.redMul(v),d=v.redSqr(),c=c.redMul(d),p=g}return f},M.prototype.invm=function(t){var e=t._invmp(this.m);return 0!==e.negative?(e.negative=0,this.imod(e).redNeg()):this.imod(e)},M.prototype.pow=function(t,e){if(e.isZero())return new o(1).toRed(this);if(0===e.cmpn(1))return t.clone();var i=new Array(16);i[0]=new o(1).toRed(this),i[1]=t;for(var r=2;r<i.length;r++)i[r]=this.mul(i[r-1],t);var n=i[0],a=0,s=0,h=e.bitLength()%26;for(0===h&&(h=26),r=e.length-1;r>=0;r--){for(var u=e.words[r],l=h-1;l>=0;l--){var d=u>>l&1;n!==i[0]&&(n=this.sqr(n)),0!==d||0!==a?(a<<=1,a|=d,(4===++s||0===r&&0===l)&&(n=this.mul(n,i[a]),s=0,a=0)):s=0}h=26}return n},M.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},M.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new E(t)},n(E,M),E.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},E.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},E.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var i=t.imul(e),r=i.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=i.isub(r).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},E.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var i=t.mul(e),r=i.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=i.isub(r).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},E.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t,this)}).call(this,i(20)(t))},function(t,e,i){var r=i(192),n=i(63);function o(t){this.rand=t||new n.Rand}t.exports=o,o.create=function(t){return new o(t)},o.prototype._randbelow=function(t){var e=t.bitLength(),i=Math.ceil(e/8);do{var n=new r(this.rand.generate(i))}while(n.cmp(t)>=0);return n},o.prototype._randrange=function(t,e){var i=e.sub(t);return t.add(this._randbelow(i))},o.prototype.test=function(t,e,i){var n=t.bitLength(),o=r.mont(t),a=new r(1).toRed(o);e||(e=Math.max(1,n/48|0));for(var s=t.subn(1),h=0;!s.testn(h);h++);for(var u=t.shrn(h),l=s.toRed(o);e>0;e--){var d=this._randrange(new r(2),s);i&&i(d);var f=d.toRed(o).redPow(u);if(0!==f.cmp(a)&&0!==f.cmp(l)){for(var c=1;c<h;c++){if(0===(f=f.redSqr()).cmp(a))return!1;if(0===f.cmp(l))break}if(c===h)return!1}}return!0},o.prototype.getDivisor=function(t,e){var i=t.bitLength(),n=r.mont(t),o=new r(1).toRed(n);e||(e=Math.max(1,i/48|0));for(var a=t.subn(1),s=0;!a.testn(s);s++);for(var h=t.shrn(s),u=a.toRed(n);e>0;e--){var l=this._randrange(new r(2),a),d=t.gcd(l);if(0!==d.cmpn(1))return d;var f=l.toRed(n).redPow(h);if(0!==f.cmp(o)&&0!==f.cmp(u)){for(var c=1;c<s;c++){if(0===(f=f.redSqr()).cmp(o))return f.fromRed().subn(1).gcd(t);if(0===f.cmp(u))break}if(c===s)return(f=f.redSqr()).fromRed().subn(1).gcd(t)}}return!1}},function(t,e,i){"use strict";(function(e,r){var n;t.exports=S,S.ReadableState=E;i(6).EventEmitter;var o=function(t,e){return t.listeners(e).length},a=i(111),s=i(9).Buffer,h=e.Uint8Array||function(){};var u,l=i(199);u=l&&l.debuglog?l.debuglog("stream"):function(){};var d,f,c,p=i(200),m=i(112),g=i(113).getHighWaterMark,v=i(29).codes,y=v.ERR_INVALID_ARG_TYPE,b=v.ERR_STREAM_PUSH_AFTER_EOF,_=v.ERR_METHOD_NOT_IMPLEMENTED,w=v.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;i(3)(S,a);var A=m.errorOrDestroy,M=["error","close","destroy","pause","resume"];function E(t,e,r){n=n||i(30),t=t||{},"boolean"!=typeof r&&(r=e instanceof n),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=g(this,t,"readableHighWaterMark",r),this.buffer=new p,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(d||(d=i(18).StringDecoder),this.decoder=new d(t.encoding),this.encoding=t.encoding)}function S(t){if(n=n||i(30),!(this instanceof S))return new S(t);var e=this instanceof n;this._readableState=new E(t,this,e),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),a.call(this)}function k(t,e,i,r,n){u("readableAddChunk",e);var o,a=t._readableState;if(null===e)a.reading=!1,function(t,e){if(u("onEofChunk"),e.ended)return;if(e.decoder){var i=e.decoder.end();i&&i.length&&(e.buffer.push(i),e.length+=e.objectMode?1:i.length)}e.ended=!0,e.sync?C(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,P(t)))}(t,a);else if(n||(o=function(t,e){var i;r=e,s.isBuffer(r)||r instanceof h||"string"==typeof e||void 0===e||t.objectMode||(i=new y("chunk",["string","Buffer","Uint8Array"],e));var r;return i}(a,e)),o)A(t,o);else if(a.objectMode||e&&e.length>0)if("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===s.prototype||(e=function(t){return s.from(t)}(e)),r)a.endEmitted?A(t,new w):T(t,a,e,!0);else if(a.ended)A(t,new b);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!i?(e=a.decoder.write(e),a.objectMode||0!==e.length?T(t,a,e,!1):x(t,a)):T(t,a,e,!1)}else r||(a.reading=!1,x(t,a));return!a.ended&&(a.length<a.highWaterMark||0===a.length)}function T(t,e,i,r){e.flowing&&0===e.length&&!e.sync?(e.awaitDrain=0,t.emit("data",i)):(e.length+=e.objectMode?1:i.length,r?e.buffer.unshift(i):e.buffer.push(i),e.needReadable&&C(t)),x(t,e)}Object.defineProperty(S.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}}),S.prototype.destroy=m.destroy,S.prototype._undestroy=m.undestroy,S.prototype._destroy=function(t,e){e(t)},S.prototype.push=function(t,e){var i,r=this._readableState;return r.objectMode?i=!0:"string"==typeof t&&((e=e||r.defaultEncoding)!==r.encoding&&(t=s.from(t,e),e=""),i=!0),k(this,t,e,!1,i)},S.prototype.unshift=function(t){return k(this,t,null,!0,!1)},S.prototype.isPaused=function(){return!1===this._readableState.flowing},S.prototype.setEncoding=function(t){d||(d=i(18).StringDecoder);var e=new d(t);this._readableState.decoder=e,this._readableState.encoding=this._readableState.decoder.encoding;for(var r=this._readableState.buffer.head,n="";null!==r;)n+=e.write(r.data),r=r.next;return this._readableState.buffer.clear(),""!==n&&this._readableState.buffer.push(n),this._readableState.length=n.length,this};var R=1073741824;function I(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!=t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=function(t){return t>=R?t=R:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function C(t){var e=t._readableState;u("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(u("emitReadable",e.flowing),e.emittedReadable=!0,r.nextTick(P,t))}function P(t){var e=t._readableState;u("emitReadable_",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,W(t)}function x(t,e){e.readingMore||(e.readingMore=!0,r.nextTick(D,t,e))}function D(t,e){for(;!e.reading&&!e.ended&&(e.length<e.highWaterMark||e.flowing&&0===e.length);){var i=e.length;if(u("maybeReadMore read 0"),t.read(0),i===e.length)break}e.readingMore=!1}function O(t){var e=t._readableState;e.readableListening=t.listenerCount("readable")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function B(t){u("readable nexttick read 0"),t.read(0)}function L(t,e){u("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),W(t),e.flowing&&!e.reading&&t.read(0)}function W(t){var e=t._readableState;for(u("flow",e.flowing);e.flowing&&null!==t.read(););}function N(t,e){return 0===e.length?null:(e.objectMode?i=e.buffer.shift():!t||t>=e.length?(i=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):i=e.buffer.consume(t,e.decoder),i);var i}function F(t){var e=t._readableState;u("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,r.nextTick(U,e,t))}function U(t,e){if(u("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var i=e._writableState;(!i||i.autoDestroy&&i.finished)&&e.destroy()}}function j(t,e){for(var i=0,r=t.length;i<r;i++)if(t[i]===e)return i;return-1}S.prototype.read=function(t){u("read",t),t=parseInt(t,10);var e=this._readableState,i=t;if(0!==t&&(e.emittedReadable=!1),0===t&&e.needReadable&&((0!==e.highWaterMark?e.length>=e.highWaterMark:e.length>0)||e.ended))return u("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?F(this):C(this),null;if(0===(t=I(t,e))&&e.ended)return 0===e.length&&F(this),null;var r,n=e.needReadable;return u("need readable",n),(0===e.length||e.length-t<e.highWaterMark)&&u("length less than watermark",n=!0),e.ended||e.reading?u("reading or ended",n=!1):n&&(u("do read"),e.reading=!0,e.sync=!0,0===e.length&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=I(i,e))),null===(r=t>0?N(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),i!==t&&e.ended&&F(this)),null!==r&&this.emit("data",r),r},S.prototype._read=function(t){A(this,new _("_read()"))},S.prototype.pipe=function(t,e){var i=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=t;break;case 1:n.pipes=[n.pipes,t];break;default:n.pipes.push(t)}n.pipesCount+=1,u("pipe count=%d opts=%j",n.pipesCount,e);var a=(!e||!1!==e.end)&&t!==r.stdout&&t!==r.stderr?h:g;function s(e,r){u("onunpipe"),e===i&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,u("cleanup"),t.removeListener("close",p),t.removeListener("finish",m),t.removeListener("drain",l),t.removeListener("error",c),t.removeListener("unpipe",s),i.removeListener("end",h),i.removeListener("end",g),i.removeListener("data",f),d=!0,!n.awaitDrain||t._writableState&&!t._writableState.needDrain||l())}function h(){u("onend"),t.end()}n.endEmitted?r.nextTick(a):i.once("end",a),t.on("unpipe",s);var l=function(t){return function(){var e=t._readableState;u("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&o(t,"data")&&(e.flowing=!0,W(t))}}(i);t.on("drain",l);var d=!1;function f(e){u("ondata");var r=t.write(e);u("dest.write",r),!1===r&&((1===n.pipesCount&&n.pipes===t||n.pipesCount>1&&-1!==j(n.pipes,t))&&!d&&(u("false write response, pause",n.awaitDrain),n.awaitDrain++),i.pause())}function c(e){u("onerror",e),g(),t.removeListener("error",c),0===o(t,"error")&&A(t,e)}function p(){t.removeListener("finish",m),g()}function m(){u("onfinish"),t.removeListener("close",p),g()}function g(){u("unpipe"),i.unpipe(t)}return i.on("data",f),function(t,e,i){if("function"==typeof t.prependListener)return t.prependListener(e,i);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(i):t._events[e]=[i,t._events[e]]:t.on(e,i)}(t,"error",c),t.once("close",p),t.once("finish",m),t.emit("pipe",i),n.flowing||(u("pipe resume"),i.resume()),t},S.prototype.unpipe=function(t){var e=this._readableState,i={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,i)),this;if(!t){var r=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o<n;o++)r[o].emit("unpipe",this,{hasUnpiped:!1});return this}var a=j(e.pipes,t);return-1===a||(e.pipes.splice(a,1),e.pipesCount-=1,1===e.pipesCount&&(e.pipes=e.pipes[0]),t.emit("unpipe",this,i)),this},S.prototype.on=function(t,e){var i=a.prototype.on.call(this,t,e),n=this._readableState;return"data"===t?(n.readableListening=this.listenerCount("readable")>0,!1!==n.flowing&&this.resume()):"readable"===t&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,u("on readable",n.length,n.reading),n.length?C(this):n.reading||r.nextTick(B,this))),i},S.prototype.addListener=S.prototype.on,S.prototype.removeListener=function(t,e){var i=a.prototype.removeListener.call(this,t,e);return"readable"===t&&r.nextTick(O,this),i},S.prototype.removeAllListeners=function(t){var e=a.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||r.nextTick(O,this),e},S.prototype.resume=function(){var t=this._readableState;return t.flowing||(u("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,r.nextTick(L,t,e))}(this,t)),t.paused=!1,this},S.prototype.pause=function(){return u("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(u("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},S.prototype.wrap=function(t){var e=this,i=this._readableState,r=!1;for(var n in t.on("end",(function(){if(u("wrapped end"),i.decoder&&!i.ended){var t=i.decoder.end();t&&t.length&&e.push(t)}e.push(null)})),t.on("data",(function(n){(u("wrapped data"),i.decoder&&(n=i.decoder.write(n)),i.objectMode&&null==n)||(i.objectMode||n&&n.length)&&(e.push(n)||(r=!0,t.pause()))})),t)void 0===this[n]&&"function"==typeof t[n]&&(this[n]=function(e){return function(){return t[e].apply(t,arguments)}}(n));for(var o=0;o<M.length;o++)t.on(M[o],this.emit.bind(this,M[o]));return this._read=function(e){u("wrapped _read",e),r&&(r=!1,t.resume())},this},"function"==typeof Symbol&&(S.prototype[Symbol.asyncIterator]=function(){return void 0===f&&(f=i(202)),f(this)}),Object.defineProperty(S.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(S.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(S.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(t){this._readableState&&(this._readableState.flowing=t)}}),S._fromList=N,Object.defineProperty(S.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}}),"function"==typeof Symbol&&(S.from=function(t,e){return void 0===c&&(c=i(203)),c(S,t,e)})}).call(this,i(10),i(8))},function(t,e,i){t.exports=i(6).EventEmitter},function(t,e,i){"use strict";(function(e){function i(t,e){n(t,e),r(t)}function r(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function n(t,e){t.emit("error",e)}t.exports={destroy:function(t,o){var a=this,s=this._readableState&&this._readableState.destroyed,h=this._writableState&&this._writableState.destroyed;return s||h?(o?o(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,e.nextTick(n,this,t)):e.nextTick(n,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,(function(t){!o&&t?a._writableState?a._writableState.errorEmitted?e.nextTick(r,a):(a._writableState.errorEmitted=!0,e.nextTick(i,a,t)):e.nextTick(i,a,t):o?(e.nextTick(r,a),o(t)):e.nextTick(r,a)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(t,e){var i=t._readableState,r=t._writableState;i&&i.autoDestroy||r&&r.autoDestroy?t.destroy(e):t.emit("error",e)}}}).call(this,i(8))},function(t,e,i){"use strict";var r=i(29).codes.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(t,e,i,n){var o=function(t,e,i){return null!=t.highWaterMark?t.highWaterMark:e?t[i]:null}(e,n,i);if(null!=o){if(!isFinite(o)||Math.floor(o)!==o||o<0)throw new r(n?i:"highWaterMark",o);return Math.floor(o)}return t.objectMode?16:16384}}},function(t,e,i){"use strict";(function(e,r){function n(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,i){var r=t.entry;t.entry=null;for(;r;){var n=r.callback;e.pendingcb--,n(i),r=r.next}e.corkedRequestsFree.next=t}(e,t)}}var o;t.exports=S,S.WritableState=E;var a={deprecate:i(53)},s=i(111),h=i(9).Buffer,u=e.Uint8Array||function(){};var l,d=i(112),f=i(113).getHighWaterMark,c=i(29).codes,p=c.ERR_INVALID_ARG_TYPE,m=c.ERR_METHOD_NOT_IMPLEMENTED,g=c.ERR_MULTIPLE_CALLBACK,v=c.ERR_STREAM_CANNOT_PIPE,y=c.ERR_STREAM_DESTROYED,b=c.ERR_STREAM_NULL_VALUES,_=c.ERR_STREAM_WRITE_AFTER_END,w=c.ERR_UNKNOWN_ENCODING,A=d.errorOrDestroy;function M(){}function E(t,e,a){o=o||i(30),t=t||{},"boolean"!=typeof a&&(a=e instanceof o),this.objectMode=!!t.objectMode,a&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=f(this,t,"writableHighWaterMark",a),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var s=!1===t.decodeStrings;this.decodeStrings=!s,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var i=t._writableState,n=i.sync,o=i.writecb;if("function"!=typeof o)throw new g;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(i),e)!function(t,e,i,n,o){--e.pendingcb,i?(r.nextTick(o,n),r.nextTick(P,t,e),t._writableState.errorEmitted=!0,A(t,n)):(o(n),t._writableState.errorEmitted=!0,A(t,n),P(t,e))}(t,i,n,e,o);else{var a=I(i)||t.destroyed;a||i.corked||i.bufferProcessing||!i.bufferedRequest||R(t,i),n?r.nextTick(T,t,i,a,o):T(t,i,a,o)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new n(this)}function S(t){var e=this instanceof(o=o||i(30));if(!e&&!l.call(S,this))return new S(t);this._writableState=new E(t,this,e),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),s.call(this)}function k(t,e,i,r,n,o,a){e.writelen=r,e.writecb=a,e.writing=!0,e.sync=!0,e.destroyed?e.onwrite(new y("write")):i?t._writev(n,e.onwrite):t._write(n,o,e.onwrite),e.sync=!1}function T(t,e,i,r){i||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}(t,e),e.pendingcb--,r(),P(t,e)}function R(t,e){e.bufferProcessing=!0;var i=e.bufferedRequest;if(t._writev&&i&&i.next){var r=e.bufferedRequestCount,o=new Array(r),a=e.corkedRequestsFree;a.entry=i;for(var s=0,h=!0;i;)o[s]=i,i.isBuf||(h=!1),i=i.next,s+=1;o.allBuffers=h,k(t,e,!0,e.length,o,"",a.finish),e.pendingcb++,e.lastBufferedRequest=null,a.next?(e.corkedRequestsFree=a.next,a.next=null):e.corkedRequestsFree=new n(e),e.bufferedRequestCount=0}else{for(;i;){var u=i.chunk,l=i.encoding,d=i.callback;if(k(t,e,!1,e.objectMode?1:u.length,u,l,d),i=i.next,e.bufferedRequestCount--,e.writing)break}null===i&&(e.lastBufferedRequest=null)}e.bufferedRequest=i,e.bufferProcessing=!1}function I(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function C(t,e){t._final((function(i){e.pendingcb--,i&&A(t,i),e.prefinished=!0,t.emit("prefinish"),P(t,e)}))}function P(t,e){var i=I(e);if(i&&(function(t,e){e.prefinished||e.finalCalled||("function"!=typeof t._final||e.destroyed?(e.prefinished=!0,t.emit("prefinish")):(e.pendingcb++,e.finalCalled=!0,r.nextTick(C,t,e)))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"),e.autoDestroy))){var n=t._readableState;(!n||n.autoDestroy&&n.endEmitted)&&t.destroy()}return i}i(3)(S,s),E.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(E.prototype,"buffer",{get:a.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(l=Function.prototype[Symbol.hasInstance],Object.defineProperty(S,Symbol.hasInstance,{value:function(t){return!!l.call(this,t)||this===S&&(t&&t._writableState instanceof E)}})):l=function(t){return t instanceof this},S.prototype.pipe=function(){A(this,new v)},S.prototype.write=function(t,e,i){var n,o=this._writableState,a=!1,s=!o.objectMode&&(n=t,h.isBuffer(n)||n instanceof u);return s&&!h.isBuffer(t)&&(t=function(t){return h.from(t)}(t)),"function"==typeof e&&(i=e,e=null),s?e="buffer":e||(e=o.defaultEncoding),"function"!=typeof i&&(i=M),o.ending?function(t,e){var i=new _;A(t,i),r.nextTick(e,i)}(this,i):(s||function(t,e,i,n){var o;return null===i?o=new b:"string"==typeof i||e.objectMode||(o=new p("chunk",["string","Buffer"],i)),!o||(A(t,o),r.nextTick(n,o),!1)}(this,o,t,i))&&(o.pendingcb++,a=function(t,e,i,r,n,o){if(!i){var a=function(t,e,i){t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=h.from(e,i));return e}(e,r,n);r!==a&&(i=!0,n="buffer",r=a)}var s=e.objectMode?1:r.length;e.length+=s;var u=e.length<e.highWaterMark;u||(e.needDrain=!0);if(e.writing||e.corked){var l=e.lastBufferedRequest;e.lastBufferedRequest={chunk:r,encoding:n,isBuf:i,callback:o,next:null},l?l.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else k(t,e,!1,s,r,n,o);return u}(this,o,s,t,e,i)),a},S.prototype.cork=function(){this._writableState.corked++},S.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.bufferProcessing||!t.bufferedRequest||R(this,t))},S.prototype.setDefaultEncoding=function(t){if("string"==typeof t&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new w(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(S.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(S.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),S.prototype._write=function(t,e,i){i(new m("_write()"))},S.prototype._writev=null,S.prototype.end=function(t,e,i){var n=this._writableState;return"function"==typeof t?(i=t,t=null,e=null):"function"==typeof e&&(i=e,e=null),null!=t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||function(t,e,i){e.ending=!0,P(t,e),i&&(e.finished?r.nextTick(i):t.once("finish",i));e.ended=!0,t.writable=!1}(this,n,i),this},Object.defineProperty(S.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(S.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),S.prototype.destroy=d.destroy,S.prototype._undestroy=d.undestroy,S.prototype._destroy=function(t,e){e(t)}}).call(this,i(10),i(8))},function(t,e,i){"use strict";t.exports=l;var r=i(29).codes,n=r.ERR_METHOD_NOT_IMPLEMENTED,o=r.ERR_MULTIPLE_CALLBACK,a=r.ERR_TRANSFORM_ALREADY_TRANSFORMING,s=r.ERR_TRANSFORM_WITH_LENGTH_0,h=i(30);function u(t,e){var i=this._transformState;i.transforming=!1;var r=i.writecb;if(null===r)return this.emit("error",new o);i.writechunk=null,i.writecb=null,null!=e&&this.push(e),r(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length<n.highWaterMark)&&this._read(n.highWaterMark)}function l(t){if(!(this instanceof l))return new l(t);h.call(this,t),this._transformState={afterTransform:u.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,t&&("function"==typeof t.transform&&(this._transform=t.transform),"function"==typeof t.flush&&(this._flush=t.flush)),this.on("prefinish",d)}function d(){var t=this;"function"!=typeof this._flush||this._readableState.destroyed?f(this,null,null):this._flush((function(e,i){f(t,e,i)}))}function f(t,e,i){if(e)return t.emit("error",e);if(null!=i&&t.push(i),t._writableState.length)throw new s;if(t._transformState.transforming)throw new a;return t.push(null)}i(3)(l,h),l.prototype.push=function(t,e){return this._transformState.needTransform=!1,h.prototype.push.call(this,t,e)},l.prototype._transform=function(t,e,i){i(new n("_transform()"))},l.prototype._write=function(t,e,i){var r=this._transformState;if(r.writecb=i,r.writechunk=t,r.writeencoding=e,!r.transforming){var n=this._readableState;(r.needTransform||n.needReadable||n.length<n.highWaterMark)&&this._read(n.highWaterMark)}},l.prototype._read=function(t){var e=this._transformState;null===e.writechunk||e.transforming?e.needTransform=!0:(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform))},l.prototype._destroy=function(t,e){h.prototype._destroy.call(this,t,(function(t){e(t)}))}},function(t,e,i){"use strict";var r=e;function n(t){return 1===t.length?"0"+t:t}function o(t){for(var e="",i=0;i<t.length;i++)e+=n(t[i].toString(16));return e}r.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var i=[];if("string"!=typeof t){for(var r=0;r<t.length;r++)i[r]=0|t[r];return i}if("hex"===e){(t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t);for(r=0;r<t.length;r+=2)i.push(parseInt(t[r]+t[r+1],16))}else for(r=0;r<t.length;r++){var n=t.charCodeAt(r),o=n>>8,a=255&n;o?i.push(o,a):i.push(a)}return i},r.zero2=n,r.toHex=o,r.encode=function(t,e){return"hex"===e?o(t):t}},function(t,e,i){"use strict";var r=e;r.base=i(45),r.short=i(210),r.mont=i(211),r.edwards=i(212)},function(t,e,i){"use strict";var r=i(15).rotr32;function n(t,e,i){return t&e^~t&i}function o(t,e,i){return t&e^t&i^e&i}function a(t,e,i){return t^e^i}e.ft_1=function(t,e,i,r){return 0===t?n(e,i,r):1===t||3===t?a(e,i,r):2===t?o(e,i,r):void 0},e.ch32=n,e.maj32=o,e.p32=a,e.s0_256=function(t){return r(t,2)^r(t,13)^r(t,22)},e.s1_256=function(t){return r(t,6)^r(t,11)^r(t,25)},e.g0_256=function(t){return r(t,7)^r(t,18)^t>>>3},e.g1_256=function(t){return r(t,17)^r(t,19)^t>>>10}},function(t,e,i){"use strict";var r=i(15),n=i(38),o=i(118),a=i(13),s=r.sum32,h=r.sum32_4,u=r.sum32_5,l=o.ch32,d=o.maj32,f=o.s0_256,c=o.s1_256,p=o.g0_256,m=o.g1_256,g=n.BlockHash,v=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function y(){if(!(this instanceof y))return new y;g.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=v,this.W=new Array(64)}r.inherits(y,g),t.exports=y,y.blockSize=512,y.outSize=256,y.hmacStrength=192,y.padLength=64,y.prototype._update=function(t,e){for(var i=this.W,r=0;r<16;r++)i[r]=t[e+r];for(;r<i.length;r++)i[r]=h(m(i[r-2]),i[r-7],p(i[r-15]),i[r-16]);var n=this.h[0],o=this.h[1],g=this.h[2],v=this.h[3],y=this.h[4],b=this.h[5],_=this.h[6],w=this.h[7];for(a(this.k.length===i.length),r=0;r<i.length;r++){var A=u(w,c(y),l(y,b,_),this.k[r],i[r]),M=s(f(n),d(n,o,g));w=_,_=b,b=y,y=s(v,A),v=g,g=o,o=n,n=s(A,M)}this.h[0]=s(this.h[0],n),this.h[1]=s(this.h[1],o),this.h[2]=s(this.h[2],g),this.h[3]=s(this.h[3],v),this.h[4]=s(this.h[4],y),this.h[5]=s(this.h[5],b),this.h[6]=s(this.h[6],_),this.h[7]=s(this.h[7],w)},y.prototype._digest=function(t){return"hex"===t?r.toHex32(this.h,"big"):r.split32(this.h,"big")}},function(t,e,i){"use strict";var r=i(15),n=i(38),o=i(13),a=r.rotr64_hi,s=r.rotr64_lo,h=r.shr64_hi,u=r.shr64_lo,l=r.sum64,d=r.sum64_hi,f=r.sum64_lo,c=r.sum64_4_hi,p=r.sum64_4_lo,m=r.sum64_5_hi,g=r.sum64_5_lo,v=n.BlockHash,y=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function b(){if(!(this instanceof b))return new b;v.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=y,this.W=new Array(160)}function _(t,e,i,r,n){var o=t&i^~t&n;return o<0&&(o+=4294967296),o}function w(t,e,i,r,n,o){var a=e&r^~e&o;return a<0&&(a+=4294967296),a}function A(t,e,i,r,n){var o=t&i^t&n^i&n;return o<0&&(o+=4294967296),o}function M(t,e,i,r,n,o){var a=e&r^e&o^r&o;return a<0&&(a+=4294967296),a}function E(t,e){var i=a(t,e,28)^a(e,t,2)^a(e,t,7);return i<0&&(i+=4294967296),i}function S(t,e){var i=s(t,e,28)^s(e,t,2)^s(e,t,7);return i<0&&(i+=4294967296),i}function k(t,e){var i=a(t,e,14)^a(t,e,18)^a(e,t,9);return i<0&&(i+=4294967296),i}function T(t,e){var i=s(t,e,14)^s(t,e,18)^s(e,t,9);return i<0&&(i+=4294967296),i}function R(t,e){var i=a(t,e,1)^a(t,e,8)^h(t,e,7);return i<0&&(i+=4294967296),i}function I(t,e){var i=s(t,e,1)^s(t,e,8)^u(t,e,7);return i<0&&(i+=4294967296),i}function C(t,e){var i=a(t,e,19)^a(e,t,29)^h(t,e,6);return i<0&&(i+=4294967296),i}function P(t,e){var i=s(t,e,19)^s(e,t,29)^u(t,e,6);return i<0&&(i+=4294967296),i}r.inherits(b,v),t.exports=b,b.blockSize=1024,b.outSize=512,b.hmacStrength=192,b.padLength=128,b.prototype._prepareBlock=function(t,e){for(var i=this.W,r=0;r<32;r++)i[r]=t[e+r];for(;r<i.length;r+=2){var n=C(i[r-4],i[r-3]),o=P(i[r-4],i[r-3]),a=i[r-14],s=i[r-13],h=R(i[r-30],i[r-29]),u=I(i[r-30],i[r-29]),l=i[r-32],d=i[r-31];i[r]=c(n,o,a,s,h,u,l,d),i[r+1]=p(n,o,a,s,h,u,l,d)}},b.prototype._update=function(t,e){this._prepareBlock(t,e);var i=this.W,r=this.h[0],n=this.h[1],a=this.h[2],s=this.h[3],h=this.h[4],u=this.h[5],c=this.h[6],p=this.h[7],v=this.h[8],y=this.h[9],b=this.h[10],R=this.h[11],I=this.h[12],C=this.h[13],P=this.h[14],x=this.h[15];o(this.k.length===i.length);for(var D=0;D<i.length;D+=2){var O=P,B=x,L=k(v,y),W=T(v,y),N=_(v,y,b,R,I),F=w(v,y,b,R,I,C),U=this.k[D],j=this.k[D+1],V=i[D],H=i[D+1],z=m(O,B,L,W,N,F,U,j,V,H),G=g(O,B,L,W,N,F,U,j,V,H);O=E(r,n),B=S(r,n),L=A(r,n,a,s,h),W=M(r,n,a,s,h,u);var q=d(O,B,L,W),X=f(O,B,L,W);P=I,x=C,I=b,C=R,b=v,R=y,v=d(c,p,z,G),y=f(p,p,z,G),c=h,p=u,h=a,u=s,a=r,s=n,r=d(z,G,q,X),n=f(z,G,q,X)}l(this.h,0,r,n),l(this.h,2,a,s),l(this.h,4,h,u),l(this.h,6,c,p),l(this.h,8,v,y),l(this.h,10,b,R),l(this.h,12,I,C),l(this.h,14,P,x)},b.prototype._digest=function(t){return"hex"===t?r.toHex32(this.h,"big"):r.split32(this.h,"big")}},function(t,e,i){"use strict";var r=e;r.bignum=i(122),r.define=i(229).define,r.base=i(232),r.constants=i(233),r.decoders=i(125),r.encoders=i(123)},function(t,e,i){(function(t){!function(t,e){"use strict";function r(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var i=function(){};i.prototype=e.prototype,t.prototype=new i,t.prototype.constructor=t}function o(t,e,i){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(i=e,e=10),this._init(t||0,e||10,i||"be"))}var a;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{a="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:i(228).Buffer}catch(t){}function s(t,e){var i=t.charCodeAt(e);return i>=65&&i<=70?i-55:i>=97&&i<=102?i-87:i-48&15}function h(t,e,i){var r=s(t,i);return i-1>=e&&(r|=s(t,i-1)<<4),r}function u(t,e,i,r){for(var n=0,o=Math.min(t.length,i),a=e;a<o;a++){var s=t.charCodeAt(a)-48;n*=r,n+=s>=49?s-49+10:s>=17?s-17+10:s}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,i){if("number"==typeof t)return this._initNumber(t,e,i);if("object"==typeof t)return this._initArray(t,e,i);"hex"===e&&(e=16),r(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n<t.length&&(16===e?this._parseHex(t,n,i):(this._parseBase(t,e,n),"le"===i&&this._initArray(this.toArray(),e,i)))},o.prototype._initNumber=function(t,e,i){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(r(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===i&&this._initArray(this.toArray(),e,i)},o.prototype._initArray=function(t,e,i){if(r("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var n=0;n<this.length;n++)this.words[n]=0;var o,a,s=0;if("be"===i)for(n=t.length-1,o=0;n>=0;n-=3)a=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=a<<s&67108863,this.words[o+1]=a>>>26-s&67108863,(s+=24)>=26&&(s-=26,o++);else if("le"===i)for(n=0,o=0;n<t.length;n+=3)a=t[n]|t[n+1]<<8|t[n+2]<<16,this.words[o]|=a<<s&67108863,this.words[o+1]=a>>>26-s&67108863,(s+=24)>=26&&(s-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,i){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r<this.length;r++)this.words[r]=0;var n,o=0,a=0;if("be"===i)for(r=t.length-1;r>=e;r-=2)n=h(t,e,r)<<o,this.words[a]|=67108863&n,o>=18?(o-=18,a+=1,this.words[a]|=n>>>26):o+=8;else for(r=(t.length-e)%2==0?e+1:e;r<t.length;r+=2)n=h(t,e,r)<<o,this.words[a]|=67108863&n,o>=18?(o-=18,a+=1,this.words[a]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,i){this.words=[0],this.length=1;for(var r=0,n=1;n<=67108863;n*=e)r++;r--,n=n/e|0;for(var o=t.length-i,a=o%r,s=Math.min(o,o-a)+i,h=0,l=i;l<s;l+=r)h=u(t,l,l+r,e),this.imuln(n),this.words[0]+h<67108864?this.words[0]+=h:this._iaddn(h);if(0!==a){var d=1;for(h=u(t,l,t.length,e),l=0;l<a;l++)d*=e;this.imuln(d),this.words[0]+h<67108864?this.words[0]+=h:this._iaddn(h)}this.strip()},o.prototype.copy=function(t){t.words=new Array(this.length);for(var e=0;e<this.length;e++)t.words[e]=this.words[e];t.length=this.length,t.negative=this.negative,t.red=this.red},o.prototype.clone=function(){var t=new o(null);return this.copy(t),t},o.prototype._expand=function(t){for(;this.length<t;)this.words[this.length++]=0;return this},o.prototype.strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],d=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function c(t,e,i){i.negative=e.negative^t.negative;var r=t.length+e.length|0;i.length=r,r=r-1|0;var n=0|t.words[0],o=0|e.words[0],a=n*o,s=67108863&a,h=a/67108864|0;i.words[0]=s;for(var u=1;u<r;u++){for(var l=h>>>26,d=67108863&h,f=Math.min(u,e.length-1),c=Math.max(0,u-t.length+1);c<=f;c++){var p=u-c|0;l+=(a=(n=0|t.words[p])*(o=0|e.words[c])+d)/67108864|0,d=67108863&a}i.words[u]=0|d,h=0|l}return 0!==h?i.words[u]=0|h:i.length--,i.strip()}o.prototype.toString=function(t,e){var i;if(e=0|e||1,16===(t=t||10)||"hex"===t){i="";for(var n=0,o=0,a=0;a<this.length;a++){var s=this.words[a],h=(16777215&(s<<n|o)).toString(16);i=0!==(o=s>>>24-n&16777215)||a!==this.length-1?l[6-h.length]+h+i:h+i,(n+=2)>=26&&(n-=26,a--)}for(0!==o&&(i=o.toString(16)+i);i.length%e!=0;)i="0"+i;return 0!==this.negative&&(i="-"+i),i}if(t===(0|t)&&t>=2&&t<=36){var u=d[t],c=f[t];i="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modn(c).toString(t);i=(p=p.idivn(c)).isZero()?m+i:l[u-m.length]+m+i}for(this.isZero()&&(i="0"+i);i.length%e!=0;)i="0"+i;return 0!==this.negative&&(i="-"+i),i}r(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return r(void 0!==a),this.toArrayLike(a,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,i){var n=this.byteLength(),o=i||Math.max(1,n);r(n<=o,"byte array longer than desired length"),r(o>0,"Requested array length <= 0"),this.strip();var a,s,h="le"===e,u=new t(o),l=this.clone();if(h){for(s=0;!l.isZero();s++)a=l.andln(255),l.iushrn(8),u[s]=a;for(;s<o;s++)u[s]=0}else{for(s=0;s<o-n;s++)u[s]=0;for(s=0;!l.isZero();s++)a=l.andln(255),l.iushrn(8),u[o-s-1]=a}return u},Math.clz32?o.prototype._countBits=function(t){return 32-Math.clz32(t)}:o.prototype._countBits=function(t){var e=t,i=0;return e>=4096&&(i+=13,e>>>=13),e>=64&&(i+=7,e>>>=7),e>=8&&(i+=4,e>>>=4),e>=2&&(i+=2,e>>>=2),i+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,i=0;return 0==(8191&e)&&(i+=13,e>>>=13),0==(127&e)&&(i+=7,e>>>=7),0==(15&e)&&(i+=4,e>>>=4),0==(3&e)&&(i+=2,e>>>=2),0==(1&e)&&i++,i},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;e<this.length;e++){var i=this._zeroBits(this.words[e]);if(t+=i,26!==i)break}return t},o.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},o.prototype.toTwos=function(t){return 0!==this.negative?this.abs().inotn(t).iaddn(1):this.clone()},o.prototype.fromTwos=function(t){return this.testn(t-1)?this.notn(t).iaddn(1).ineg():this.clone()},o.prototype.isNeg=function(){return 0!==this.negative},o.prototype.neg=function(){return this.clone().ineg()},o.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},o.prototype.iuor=function(t){for(;this.length<t.length;)this.words[this.length++]=0;for(var e=0;e<t.length;e++)this.words[e]=this.words[e]|t.words[e];return this.strip()},o.prototype.ior=function(t){return r(0==(this.negative|t.negative)),this.iuor(t)},o.prototype.or=function(t){return this.length>t.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var i=0;i<e.length;i++)this.words[i]=this.words[i]&t.words[i];return this.length=e.length,this.strip()},o.prototype.iand=function(t){return r(0==(this.negative|t.negative)),this.iuand(t)},o.prototype.and=function(t){return this.length>t.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,i;this.length>t.length?(e=this,i=t):(e=t,i=this);for(var r=0;r<i.length;r++)this.words[r]=e.words[r]^i.words[r];if(this!==e)for(;r<e.length;r++)this.words[r]=e.words[r];return this.length=e.length,this.strip()},o.prototype.ixor=function(t){return r(0==(this.negative|t.negative)),this.iuxor(t)},o.prototype.xor=function(t){return this.length>t.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){r("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),i=t%26;this._expand(e),i>0&&e--;for(var n=0;n<e;n++)this.words[n]=67108863&~this.words[n];return i>0&&(this.words[n]=~this.words[n]&67108863>>26-i),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){r("number"==typeof t&&t>=0);var i=t/26|0,n=t%26;return this._expand(i+1),this.words[i]=e?this.words[i]|1<<n:this.words[i]&~(1<<n),this.strip()},o.prototype.iadd=function(t){var e,i,r;if(0!==this.negative&&0===t.negative)return this.negative=0,e=this.isub(t),this.negative^=1,this._normSign();if(0===this.negative&&0!==t.negative)return t.negative=0,e=this.isub(t),t.negative=1,e._normSign();this.length>t.length?(i=this,r=t):(i=t,r=this);for(var n=0,o=0;o<r.length;o++)e=(0|i.words[o])+(0|r.words[o])+n,this.words[o]=67108863&e,n=e>>>26;for(;0!==n&&o<i.length;o++)e=(0|i.words[o])+n,this.words[o]=67108863&e,n=e>>>26;if(this.length=i.length,0!==n)this.words[this.length]=n,this.length++;else if(i!==this)for(;o<i.length;o++)this.words[o]=i.words[o];return this},o.prototype.add=function(t){var e;return 0!==t.negative&&0===this.negative?(t.negative=0,e=this.sub(t),t.negative^=1,e):0===t.negative&&0!==this.negative?(this.negative=0,e=t.sub(this),this.negative=1,e):this.length>t.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var i,r,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(i=this,r=t):(i=t,r=this);for(var o=0,a=0;a<r.length;a++)o=(e=(0|i.words[a])-(0|r.words[a])+o)>>26,this.words[a]=67108863&e;for(;0!==o&&a<i.length;a++)o=(e=(0|i.words[a])+o)>>26,this.words[a]=67108863&e;if(0===o&&a<i.length&&i!==this)for(;a<i.length;a++)this.words[a]=i.words[a];return this.length=Math.max(this.length,a),i!==this&&(this.negative=1),this.strip()},o.prototype.sub=function(t){return this.clone().isub(t)};var p=function(t,e,i){var r,n,o,a=t.words,s=e.words,h=i.words,u=0,l=0|a[0],d=8191&l,f=l>>>13,c=0|a[1],p=8191&c,m=c>>>13,g=0|a[2],v=8191&g,y=g>>>13,b=0|a[3],_=8191&b,w=b>>>13,A=0|a[4],M=8191&A,E=A>>>13,S=0|a[5],k=8191&S,T=S>>>13,R=0|a[6],I=8191&R,C=R>>>13,P=0|a[7],x=8191&P,D=P>>>13,O=0|a[8],B=8191&O,L=O>>>13,W=0|a[9],N=8191&W,F=W>>>13,U=0|s[0],j=8191&U,V=U>>>13,H=0|s[1],z=8191&H,G=H>>>13,q=0|s[2],X=8191&q,Z=q>>>13,K=0|s[3],Q=8191&K,Y=K>>>13,J=0|s[4],$=8191&J,tt=J>>>13,et=0|s[5],it=8191&et,rt=et>>>13,nt=0|s[6],ot=8191&nt,at=nt>>>13,st=0|s[7],ht=8191&st,ut=st>>>13,lt=0|s[8],dt=8191<,ft=lt>>>13,ct=0|s[9],pt=8191&ct,mt=ct>>>13;i.negative=t.negative^e.negative,i.length=19;var gt=(u+(r=Math.imul(d,j))|0)+((8191&(n=(n=Math.imul(d,V))+Math.imul(f,j)|0))<<13)|0;u=((o=Math.imul(f,V))+(n>>>13)|0)+(gt>>>26)|0,gt&=67108863,r=Math.imul(p,j),n=(n=Math.imul(p,V))+Math.imul(m,j)|0,o=Math.imul(m,V);var vt=(u+(r=r+Math.imul(d,z)|0)|0)+((8191&(n=(n=n+Math.imul(d,G)|0)+Math.imul(f,z)|0))<<13)|0;u=((o=o+Math.imul(f,G)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,r=Math.imul(v,j),n=(n=Math.imul(v,V))+Math.imul(y,j)|0,o=Math.imul(y,V),r=r+Math.imul(p,z)|0,n=(n=n+Math.imul(p,G)|0)+Math.imul(m,z)|0,o=o+Math.imul(m,G)|0;var yt=(u+(r=r+Math.imul(d,X)|0)|0)+((8191&(n=(n=n+Math.imul(d,Z)|0)+Math.imul(f,X)|0))<<13)|0;u=((o=o+Math.imul(f,Z)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,r=Math.imul(_,j),n=(n=Math.imul(_,V))+Math.imul(w,j)|0,o=Math.imul(w,V),r=r+Math.imul(v,z)|0,n=(n=n+Math.imul(v,G)|0)+Math.imul(y,z)|0,o=o+Math.imul(y,G)|0,r=r+Math.imul(p,X)|0,n=(n=n+Math.imul(p,Z)|0)+Math.imul(m,X)|0,o=o+Math.imul(m,Z)|0;var bt=(u+(r=r+Math.imul(d,Q)|0)|0)+((8191&(n=(n=n+Math.imul(d,Y)|0)+Math.imul(f,Q)|0))<<13)|0;u=((o=o+Math.imul(f,Y)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,r=Math.imul(M,j),n=(n=Math.imul(M,V))+Math.imul(E,j)|0,o=Math.imul(E,V),r=r+Math.imul(_,z)|0,n=(n=n+Math.imul(_,G)|0)+Math.imul(w,z)|0,o=o+Math.imul(w,G)|0,r=r+Math.imul(v,X)|0,n=(n=n+Math.imul(v,Z)|0)+Math.imul(y,X)|0,o=o+Math.imul(y,Z)|0,r=r+Math.imul(p,Q)|0,n=(n=n+Math.imul(p,Y)|0)+Math.imul(m,Q)|0,o=o+Math.imul(m,Y)|0;var _t=(u+(r=r+Math.imul(d,$)|0)|0)+((8191&(n=(n=n+Math.imul(d,tt)|0)+Math.imul(f,$)|0))<<13)|0;u=((o=o+Math.imul(f,tt)|0)+(n>>>13)|0)+(_t>>>26)|0,_t&=67108863,r=Math.imul(k,j),n=(n=Math.imul(k,V))+Math.imul(T,j)|0,o=Math.imul(T,V),r=r+Math.imul(M,z)|0,n=(n=n+Math.imul(M,G)|0)+Math.imul(E,z)|0,o=o+Math.imul(E,G)|0,r=r+Math.imul(_,X)|0,n=(n=n+Math.imul(_,Z)|0)+Math.imul(w,X)|0,o=o+Math.imul(w,Z)|0,r=r+Math.imul(v,Q)|0,n=(n=n+Math.imul(v,Y)|0)+Math.imul(y,Q)|0,o=o+Math.imul(y,Y)|0,r=r+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,$)|0,o=o+Math.imul(m,tt)|0;var wt=(u+(r=r+Math.imul(d,it)|0)|0)+((8191&(n=(n=n+Math.imul(d,rt)|0)+Math.imul(f,it)|0))<<13)|0;u=((o=o+Math.imul(f,rt)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,r=Math.imul(I,j),n=(n=Math.imul(I,V))+Math.imul(C,j)|0,o=Math.imul(C,V),r=r+Math.imul(k,z)|0,n=(n=n+Math.imul(k,G)|0)+Math.imul(T,z)|0,o=o+Math.imul(T,G)|0,r=r+Math.imul(M,X)|0,n=(n=n+Math.imul(M,Z)|0)+Math.imul(E,X)|0,o=o+Math.imul(E,Z)|0,r=r+Math.imul(_,Q)|0,n=(n=n+Math.imul(_,Y)|0)+Math.imul(w,Q)|0,o=o+Math.imul(w,Y)|0,r=r+Math.imul(v,$)|0,n=(n=n+Math.imul(v,tt)|0)+Math.imul(y,$)|0,o=o+Math.imul(y,tt)|0,r=r+Math.imul(p,it)|0,n=(n=n+Math.imul(p,rt)|0)+Math.imul(m,it)|0,o=o+Math.imul(m,rt)|0;var At=(u+(r=r+Math.imul(d,ot)|0)|0)+((8191&(n=(n=n+Math.imul(d,at)|0)+Math.imul(f,ot)|0))<<13)|0;u=((o=o+Math.imul(f,at)|0)+(n>>>13)|0)+(At>>>26)|0,At&=67108863,r=Math.imul(x,j),n=(n=Math.imul(x,V))+Math.imul(D,j)|0,o=Math.imul(D,V),r=r+Math.imul(I,z)|0,n=(n=n+Math.imul(I,G)|0)+Math.imul(C,z)|0,o=o+Math.imul(C,G)|0,r=r+Math.imul(k,X)|0,n=(n=n+Math.imul(k,Z)|0)+Math.imul(T,X)|0,o=o+Math.imul(T,Z)|0,r=r+Math.imul(M,Q)|0,n=(n=n+Math.imul(M,Y)|0)+Math.imul(E,Q)|0,o=o+Math.imul(E,Y)|0,r=r+Math.imul(_,$)|0,n=(n=n+Math.imul(_,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,r=r+Math.imul(v,it)|0,n=(n=n+Math.imul(v,rt)|0)+Math.imul(y,it)|0,o=o+Math.imul(y,rt)|0,r=r+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,at)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,at)|0;var Mt=(u+(r=r+Math.imul(d,ht)|0)|0)+((8191&(n=(n=n+Math.imul(d,ut)|0)+Math.imul(f,ht)|0))<<13)|0;u=((o=o+Math.imul(f,ut)|0)+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,r=Math.imul(B,j),n=(n=Math.imul(B,V))+Math.imul(L,j)|0,o=Math.imul(L,V),r=r+Math.imul(x,z)|0,n=(n=n+Math.imul(x,G)|0)+Math.imul(D,z)|0,o=o+Math.imul(D,G)|0,r=r+Math.imul(I,X)|0,n=(n=n+Math.imul(I,Z)|0)+Math.imul(C,X)|0,o=o+Math.imul(C,Z)|0,r=r+Math.imul(k,Q)|0,n=(n=n+Math.imul(k,Y)|0)+Math.imul(T,Q)|0,o=o+Math.imul(T,Y)|0,r=r+Math.imul(M,$)|0,n=(n=n+Math.imul(M,tt)|0)+Math.imul(E,$)|0,o=o+Math.imul(E,tt)|0,r=r+Math.imul(_,it)|0,n=(n=n+Math.imul(_,rt)|0)+Math.imul(w,it)|0,o=o+Math.imul(w,rt)|0,r=r+Math.imul(v,ot)|0,n=(n=n+Math.imul(v,at)|0)+Math.imul(y,ot)|0,o=o+Math.imul(y,at)|0,r=r+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0;var Et=(u+(r=r+Math.imul(d,dt)|0)|0)+((8191&(n=(n=n+Math.imul(d,ft)|0)+Math.imul(f,dt)|0))<<13)|0;u=((o=o+Math.imul(f,ft)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,r=Math.imul(N,j),n=(n=Math.imul(N,V))+Math.imul(F,j)|0,o=Math.imul(F,V),r=r+Math.imul(B,z)|0,n=(n=n+Math.imul(B,G)|0)+Math.imul(L,z)|0,o=o+Math.imul(L,G)|0,r=r+Math.imul(x,X)|0,n=(n=n+Math.imul(x,Z)|0)+Math.imul(D,X)|0,o=o+Math.imul(D,Z)|0,r=r+Math.imul(I,Q)|0,n=(n=n+Math.imul(I,Y)|0)+Math.imul(C,Q)|0,o=o+Math.imul(C,Y)|0,r=r+Math.imul(k,$)|0,n=(n=n+Math.imul(k,tt)|0)+Math.imul(T,$)|0,o=o+Math.imul(T,tt)|0,r=r+Math.imul(M,it)|0,n=(n=n+Math.imul(M,rt)|0)+Math.imul(E,it)|0,o=o+Math.imul(E,rt)|0,r=r+Math.imul(_,ot)|0,n=(n=n+Math.imul(_,at)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,at)|0,r=r+Math.imul(v,ht)|0,n=(n=n+Math.imul(v,ut)|0)+Math.imul(y,ht)|0,o=o+Math.imul(y,ut)|0,r=r+Math.imul(p,dt)|0,n=(n=n+Math.imul(p,ft)|0)+Math.imul(m,dt)|0,o=o+Math.imul(m,ft)|0;var St=(u+(r=r+Math.imul(d,pt)|0)|0)+((8191&(n=(n=n+Math.imul(d,mt)|0)+Math.imul(f,pt)|0))<<13)|0;u=((o=o+Math.imul(f,mt)|0)+(n>>>13)|0)+(St>>>26)|0,St&=67108863,r=Math.imul(N,z),n=(n=Math.imul(N,G))+Math.imul(F,z)|0,o=Math.imul(F,G),r=r+Math.imul(B,X)|0,n=(n=n+Math.imul(B,Z)|0)+Math.imul(L,X)|0,o=o+Math.imul(L,Z)|0,r=r+Math.imul(x,Q)|0,n=(n=n+Math.imul(x,Y)|0)+Math.imul(D,Q)|0,o=o+Math.imul(D,Y)|0,r=r+Math.imul(I,$)|0,n=(n=n+Math.imul(I,tt)|0)+Math.imul(C,$)|0,o=o+Math.imul(C,tt)|0,r=r+Math.imul(k,it)|0,n=(n=n+Math.imul(k,rt)|0)+Math.imul(T,it)|0,o=o+Math.imul(T,rt)|0,r=r+Math.imul(M,ot)|0,n=(n=n+Math.imul(M,at)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,at)|0,r=r+Math.imul(_,ht)|0,n=(n=n+Math.imul(_,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,r=r+Math.imul(v,dt)|0,n=(n=n+Math.imul(v,ft)|0)+Math.imul(y,dt)|0,o=o+Math.imul(y,ft)|0;var kt=(u+(r=r+Math.imul(p,pt)|0)|0)+((8191&(n=(n=n+Math.imul(p,mt)|0)+Math.imul(m,pt)|0))<<13)|0;u=((o=o+Math.imul(m,mt)|0)+(n>>>13)|0)+(kt>>>26)|0,kt&=67108863,r=Math.imul(N,X),n=(n=Math.imul(N,Z))+Math.imul(F,X)|0,o=Math.imul(F,Z),r=r+Math.imul(B,Q)|0,n=(n=n+Math.imul(B,Y)|0)+Math.imul(L,Q)|0,o=o+Math.imul(L,Y)|0,r=r+Math.imul(x,$)|0,n=(n=n+Math.imul(x,tt)|0)+Math.imul(D,$)|0,o=o+Math.imul(D,tt)|0,r=r+Math.imul(I,it)|0,n=(n=n+Math.imul(I,rt)|0)+Math.imul(C,it)|0,o=o+Math.imul(C,rt)|0,r=r+Math.imul(k,ot)|0,n=(n=n+Math.imul(k,at)|0)+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,r=r+Math.imul(M,ht)|0,n=(n=n+Math.imul(M,ut)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,ut)|0,r=r+Math.imul(_,dt)|0,n=(n=n+Math.imul(_,ft)|0)+Math.imul(w,dt)|0,o=o+Math.imul(w,ft)|0;var Tt=(u+(r=r+Math.imul(v,pt)|0)|0)+((8191&(n=(n=n+Math.imul(v,mt)|0)+Math.imul(y,pt)|0))<<13)|0;u=((o=o+Math.imul(y,mt)|0)+(n>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,r=Math.imul(N,Q),n=(n=Math.imul(N,Y))+Math.imul(F,Q)|0,o=Math.imul(F,Y),r=r+Math.imul(B,$)|0,n=(n=n+Math.imul(B,tt)|0)+Math.imul(L,$)|0,o=o+Math.imul(L,tt)|0,r=r+Math.imul(x,it)|0,n=(n=n+Math.imul(x,rt)|0)+Math.imul(D,it)|0,o=o+Math.imul(D,rt)|0,r=r+Math.imul(I,ot)|0,n=(n=n+Math.imul(I,at)|0)+Math.imul(C,ot)|0,o=o+Math.imul(C,at)|0,r=r+Math.imul(k,ht)|0,n=(n=n+Math.imul(k,ut)|0)+Math.imul(T,ht)|0,o=o+Math.imul(T,ut)|0,r=r+Math.imul(M,dt)|0,n=(n=n+Math.imul(M,ft)|0)+Math.imul(E,dt)|0,o=o+Math.imul(E,ft)|0;var Rt=(u+(r=r+Math.imul(_,pt)|0)|0)+((8191&(n=(n=n+Math.imul(_,mt)|0)+Math.imul(w,pt)|0))<<13)|0;u=((o=o+Math.imul(w,mt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,r=Math.imul(N,$),n=(n=Math.imul(N,tt))+Math.imul(F,$)|0,o=Math.imul(F,tt),r=r+Math.imul(B,it)|0,n=(n=n+Math.imul(B,rt)|0)+Math.imul(L,it)|0,o=o+Math.imul(L,rt)|0,r=r+Math.imul(x,ot)|0,n=(n=n+Math.imul(x,at)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,at)|0,r=r+Math.imul(I,ht)|0,n=(n=n+Math.imul(I,ut)|0)+Math.imul(C,ht)|0,o=o+Math.imul(C,ut)|0,r=r+Math.imul(k,dt)|0,n=(n=n+Math.imul(k,ft)|0)+Math.imul(T,dt)|0,o=o+Math.imul(T,ft)|0;var It=(u+(r=r+Math.imul(M,pt)|0)|0)+((8191&(n=(n=n+Math.imul(M,mt)|0)+Math.imul(E,pt)|0))<<13)|0;u=((o=o+Math.imul(E,mt)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,r=Math.imul(N,it),n=(n=Math.imul(N,rt))+Math.imul(F,it)|0,o=Math.imul(F,rt),r=r+Math.imul(B,ot)|0,n=(n=n+Math.imul(B,at)|0)+Math.imul(L,ot)|0,o=o+Math.imul(L,at)|0,r=r+Math.imul(x,ht)|0,n=(n=n+Math.imul(x,ut)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,ut)|0,r=r+Math.imul(I,dt)|0,n=(n=n+Math.imul(I,ft)|0)+Math.imul(C,dt)|0,o=o+Math.imul(C,ft)|0;var Ct=(u+(r=r+Math.imul(k,pt)|0)|0)+((8191&(n=(n=n+Math.imul(k,mt)|0)+Math.imul(T,pt)|0))<<13)|0;u=((o=o+Math.imul(T,mt)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,r=Math.imul(N,ot),n=(n=Math.imul(N,at))+Math.imul(F,ot)|0,o=Math.imul(F,at),r=r+Math.imul(B,ht)|0,n=(n=n+Math.imul(B,ut)|0)+Math.imul(L,ht)|0,o=o+Math.imul(L,ut)|0,r=r+Math.imul(x,dt)|0,n=(n=n+Math.imul(x,ft)|0)+Math.imul(D,dt)|0,o=o+Math.imul(D,ft)|0;var Pt=(u+(r=r+Math.imul(I,pt)|0)|0)+((8191&(n=(n=n+Math.imul(I,mt)|0)+Math.imul(C,pt)|0))<<13)|0;u=((o=o+Math.imul(C,mt)|0)+(n>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,r=Math.imul(N,ht),n=(n=Math.imul(N,ut))+Math.imul(F,ht)|0,o=Math.imul(F,ut),r=r+Math.imul(B,dt)|0,n=(n=n+Math.imul(B,ft)|0)+Math.imul(L,dt)|0,o=o+Math.imul(L,ft)|0;var xt=(u+(r=r+Math.imul(x,pt)|0)|0)+((8191&(n=(n=n+Math.imul(x,mt)|0)+Math.imul(D,pt)|0))<<13)|0;u=((o=o+Math.imul(D,mt)|0)+(n>>>13)|0)+(xt>>>26)|0,xt&=67108863,r=Math.imul(N,dt),n=(n=Math.imul(N,ft))+Math.imul(F,dt)|0,o=Math.imul(F,ft);var Dt=(u+(r=r+Math.imul(B,pt)|0)|0)+((8191&(n=(n=n+Math.imul(B,mt)|0)+Math.imul(L,pt)|0))<<13)|0;u=((o=o+Math.imul(L,mt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863;var Ot=(u+(r=Math.imul(N,pt))|0)+((8191&(n=(n=Math.imul(N,mt))+Math.imul(F,pt)|0))<<13)|0;return u=((o=Math.imul(F,mt))+(n>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,h[0]=gt,h[1]=vt,h[2]=yt,h[3]=bt,h[4]=_t,h[5]=wt,h[6]=At,h[7]=Mt,h[8]=Et,h[9]=St,h[10]=kt,h[11]=Tt,h[12]=Rt,h[13]=It,h[14]=Ct,h[15]=Pt,h[16]=xt,h[17]=Dt,h[18]=Ot,0!==u&&(h[19]=u,i.length++),i};function m(t,e,i){return(new g).mulp(t,e,i)}function g(t,e){this.x=t,this.y=e}Math.imul||(p=c),o.prototype.mulTo=function(t,e){var i,r=this.length+t.length;return i=10===this.length&&10===t.length?p(this,t,e):r<63?c(this,t,e):r<1024?function(t,e,i){i.negative=e.negative^t.negative,i.length=t.length+e.length;for(var r=0,n=0,o=0;o<i.length-1;o++){var a=n;n=0;for(var s=67108863&r,h=Math.min(o,e.length-1),u=Math.max(0,o-t.length+1);u<=h;u++){var l=o-u,d=(0|t.words[l])*(0|e.words[u]),f=67108863&d;s=67108863&(f=f+s|0),n+=(a=(a=a+(d/67108864|0)|0)+(f>>>26)|0)>>>26,a&=67108863}i.words[o]=s,r=a,a=n}return 0!==r?i.words[o]=r:i.length--,i.strip()}(this,t,e):m(this,t,e),i},g.prototype.makeRBT=function(t){for(var e=new Array(t),i=o.prototype._countBits(t)-1,r=0;r<t;r++)e[r]=this.revBin(r,i,t);return e},g.prototype.revBin=function(t,e,i){if(0===t||t===i-1)return t;for(var r=0,n=0;n<e;n++)r|=(1&t)<<e-n-1,t>>=1;return r},g.prototype.permute=function(t,e,i,r,n,o){for(var a=0;a<o;a++)r[a]=e[t[a]],n[a]=i[t[a]]},g.prototype.transform=function(t,e,i,r,n,o){this.permute(o,t,e,i,r,n);for(var a=1;a<n;a<<=1)for(var s=a<<1,h=Math.cos(2*Math.PI/s),u=Math.sin(2*Math.PI/s),l=0;l<n;l+=s)for(var d=h,f=u,c=0;c<a;c++){var p=i[l+c],m=r[l+c],g=i[l+c+a],v=r[l+c+a],y=d*g-f*v;v=d*v+f*g,g=y,i[l+c]=p+g,r[l+c]=m+v,i[l+c+a]=p-g,r[l+c+a]=m-v,c!==s&&(y=h*d-u*f,f=h*f+u*d,d=y)}},g.prototype.guessLen13b=function(t,e){var i=1|Math.max(e,t),r=1&i,n=0;for(i=i/2|0;i;i>>>=1)n++;return 1<<n+1+r},g.prototype.conjugate=function(t,e,i){if(!(i<=1))for(var r=0;r<i/2;r++){var n=t[r];t[r]=t[i-r-1],t[i-r-1]=n,n=e[r],e[r]=-e[i-r-1],e[i-r-1]=-n}},g.prototype.normalize13b=function(t,e){for(var i=0,r=0;r<e/2;r++){var n=8192*Math.round(t[2*r+1]/e)+Math.round(t[2*r]/e)+i;t[r]=67108863&n,i=n<67108864?0:n/67108864|0}return t},g.prototype.convert13b=function(t,e,i,n){for(var o=0,a=0;a<e;a++)o+=0|t[a],i[2*a]=8191&o,o>>>=13,i[2*a+1]=8191&o,o>>>=13;for(a=2*e;a<n;++a)i[a]=0;r(0===o),r(0==(-8192&o))},g.prototype.stub=function(t){for(var e=new Array(t),i=0;i<t;i++)e[i]=0;return e},g.prototype.mulp=function(t,e,i){var r=2*this.guessLen13b(t.length,e.length),n=this.makeRBT(r),o=this.stub(r),a=new Array(r),s=new Array(r),h=new Array(r),u=new Array(r),l=new Array(r),d=new Array(r),f=i.words;f.length=r,this.convert13b(t.words,t.length,a,r),this.convert13b(e.words,e.length,u,r),this.transform(a,o,s,h,r,n),this.transform(u,o,l,d,r,n);for(var c=0;c<r;c++){var p=s[c]*l[c]-h[c]*d[c];h[c]=s[c]*d[c]+h[c]*l[c],s[c]=p}return this.conjugate(s,h,r),this.transform(s,h,f,o,r,n),this.conjugate(f,o,r),this.normalize13b(f,r),i.negative=t.negative^e.negative,i.length=t.length+e.length,i.strip()},o.prototype.mul=function(t){var e=new o(null);return e.words=new Array(this.length+t.length),this.mulTo(t,e)},o.prototype.mulf=function(t){var e=new o(null);return e.words=new Array(this.length+t.length),m(this,t,e)},o.prototype.imul=function(t){return this.clone().mulTo(t,this)},o.prototype.imuln=function(t){r("number"==typeof t),r(t<67108864);for(var e=0,i=0;i<this.length;i++){var n=(0|this.words[i])*t,o=(67108863&n)+(67108863&e);e>>=26,e+=n/67108864|0,e+=o>>>26,this.words[i]=67108863&o}return 0!==e&&(this.words[i]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),i=0;i<e.length;i++){var r=i/26|0,n=i%26;e[i]=(t.words[r]&1<<n)>>>n}return e}(t);if(0===e.length)return new o(1);for(var i=this,r=0;r<e.length&&0===e[r];r++,i=i.sqr());if(++r<e.length)for(var n=i.sqr();r<e.length;r++,n=n.sqr())0!==e[r]&&(i=i.mul(n));return i},o.prototype.iushln=function(t){r("number"==typeof t&&t>=0);var e,i=t%26,n=(t-i)/26,o=67108863>>>26-i<<26-i;if(0!==i){var a=0;for(e=0;e<this.length;e++){var s=this.words[e]&o,h=(0|this.words[e])-s<<i;this.words[e]=h|a,a=s>>>26-i}a&&(this.words[e]=a,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e<n;e++)this.words[e]=0;this.length+=n}return this.strip()},o.prototype.ishln=function(t){return r(0===this.negative),this.iushln(t)},o.prototype.iushrn=function(t,e,i){var n;r("number"==typeof t&&t>=0),n=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),s=67108863^67108863>>>o<<o,h=i;if(n-=a,n=Math.max(0,n),h){for(var u=0;u<a;u++)h.words[u]=this.words[u];h.length=a}if(0===a);else if(this.length>a)for(this.length-=a,u=0;u<this.length;u++)this.words[u]=this.words[u+a];else this.words[0]=0,this.length=1;var l=0;for(u=this.length-1;u>=0&&(0!==l||u>=n);u--){var d=0|this.words[u];this.words[u]=l<<26-o|d>>>o,l=d&s}return h&&0!==l&&(h.words[h.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,i){return r(0===this.negative),this.iushrn(t,e,i)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){r("number"==typeof t&&t>=0);var e=t%26,i=(t-e)/26,n=1<<e;return!(this.length<=i)&&!!(this.words[i]&n)},o.prototype.imaskn=function(t){r("number"==typeof t&&t>=0);var e=t%26,i=(t-e)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=i)return this;if(0!==e&&i++,this.length=Math.min(i,this.length),0!==e){var n=67108863^67108863>>>e<<e;this.words[this.length-1]&=n}return this.strip()},o.prototype.maskn=function(t){return this.clone().imaskn(t)},o.prototype.iaddn=function(t){return r("number"==typeof t),r(t<67108864),t<0?this.isubn(-t):0!==this.negative?1===this.length&&(0|this.words[0])<t?(this.words[0]=t-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(t),this.negative=1,this):this._iaddn(t)},o.prototype._iaddn=function(t){this.words[0]+=t;for(var e=0;e<this.length&&this.words[e]>=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(r("number"==typeof t),r(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e<this.length&&this.words[e]<0;e++)this.words[e]+=67108864,this.words[e+1]-=1;return this.strip()},o.prototype.addn=function(t){return this.clone().iaddn(t)},o.prototype.subn=function(t){return this.clone().isubn(t)},o.prototype.iabs=function(){return this.negative=0,this},o.prototype.abs=function(){return this.clone().iabs()},o.prototype._ishlnsubmul=function(t,e,i){var n,o,a=t.length+i;this._expand(a);var s=0;for(n=0;n<t.length;n++){o=(0|this.words[n+i])+s;var h=(0|t.words[n])*e;s=((o-=67108863&h)>>26)-(h/67108864|0),this.words[n+i]=67108863&o}for(;n<this.length-i;n++)s=(o=(0|this.words[n+i])+s)>>26,this.words[n+i]=67108863&o;if(0===s)return this.strip();for(r(-1===s),s=0,n=0;n<this.length;n++)s=(o=-(0|this.words[n])+s)>>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var i=(this.length,t.length),r=this.clone(),n=t,a=0|n.words[n.length-1];0!==(i=26-this._countBits(a))&&(n=n.ushln(i),r.iushln(i),a=0|n.words[n.length-1]);var s,h=r.length-n.length;if("mod"!==e){(s=new o(null)).length=h+1,s.words=new Array(s.length);for(var u=0;u<s.length;u++)s.words[u]=0}var l=r.clone()._ishlnsubmul(n,1,h);0===l.negative&&(r=l,s&&(s.words[h]=1));for(var d=h-1;d>=0;d--){var f=67108864*(0|r.words[n.length+d])+(0|r.words[n.length+d-1]);for(f=Math.min(f/a|0,67108863),r._ishlnsubmul(n,f,d);0!==r.negative;)f--,r.negative=0,r._ishlnsubmul(n,1,d),r.isZero()||(r.negative^=1);s&&(s.words[d]=f)}return s&&s.strip(),r.strip(),"div"!==e&&0!==i&&r.iushrn(i),{div:s||null,mod:r}},o.prototype.divmod=function(t,e,i){return r(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(s=this.neg().divmod(t,e),"mod"!==e&&(n=s.div.neg()),"div"!==e&&(a=s.mod.neg(),i&&0!==a.negative&&a.iadd(t)),{div:n,mod:a}):0===this.negative&&0!==t.negative?(s=this.divmod(t.neg(),e),"mod"!==e&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&t.negative)?(s=this.neg().divmod(t.neg(),e),"div"!==e&&(a=s.mod.neg(),i&&0!==a.negative&&a.isub(t)),{div:s.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,a,s},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var i=0!==e.div.negative?e.mod.isub(t):e.mod,r=t.ushrn(1),n=t.andln(1),o=i.cmp(r);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){r(t<=67108863);for(var e=(1<<26)%t,i=0,n=this.length-1;n>=0;n--)i=(e*i+(0|this.words[n]))%t;return i},o.prototype.idivn=function(t){r(t<=67108863);for(var e=0,i=this.length-1;i>=0;i--){var n=(0|this.words[i])+67108864*e;this.words[i]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){r(0===t.negative),r(!t.isZero());var e=this,i=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),a=new o(0),s=new o(0),h=new o(1),u=0;e.isEven()&&i.isEven();)e.iushrn(1),i.iushrn(1),++u;for(var l=i.clone(),d=e.clone();!e.isZero();){for(var f=0,c=1;0==(e.words[0]&c)&&f<26;++f,c<<=1);if(f>0)for(e.iushrn(f);f-- >0;)(n.isOdd()||a.isOdd())&&(n.iadd(l),a.isub(d)),n.iushrn(1),a.iushrn(1);for(var p=0,m=1;0==(i.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(i.iushrn(p);p-- >0;)(s.isOdd()||h.isOdd())&&(s.iadd(l),h.isub(d)),s.iushrn(1),h.iushrn(1);e.cmp(i)>=0?(e.isub(i),n.isub(s),a.isub(h)):(i.isub(e),s.isub(n),h.isub(a))}return{a:s,b:h,gcd:i.iushln(u)}},o.prototype._invmp=function(t){r(0===t.negative),r(!t.isZero());var e=this,i=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,a=new o(1),s=new o(0),h=i.clone();e.cmpn(1)>0&&i.cmpn(1)>0;){for(var u=0,l=1;0==(e.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(e.iushrn(u);u-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);for(var d=0,f=1;0==(i.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(i.iushrn(d);d-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);e.cmp(i)>=0?(e.isub(i),a.isub(s)):(i.isub(e),s.isub(a))}return(n=0===e.cmpn(1)?a:s).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),i=t.clone();e.negative=0,i.negative=0;for(var r=0;e.isEven()&&i.isEven();r++)e.iushrn(1),i.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;i.isEven();)i.iushrn(1);var n=e.cmp(i);if(n<0){var o=e;e=i,i=o}else if(0===n||0===i.cmpn(1))break;e.isub(i)}return i.iushln(r)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){r("number"==typeof t);var e=t%26,i=(t-e)/26,n=1<<e;if(this.length<=i)return this._expand(i+1),this.words[i]|=n,this;for(var o=n,a=i;0!==o&&a<this.length;a++){var s=0|this.words[a];o=(s+=o)>>>26,s&=67108863,this.words[a]=s}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,i=t<0;if(0!==this.negative&&!i)return-1;if(0===this.negative&&i)return 1;if(this.strip(),this.length>1)e=1;else{i&&(t=-t),r(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:n<t?-1:1}return 0!==this.negative?0|-e:e},o.prototype.cmp=function(t){if(0!==this.negative&&0===t.negative)return-1;if(0===this.negative&&0!==t.negative)return 1;var e=this.ucmp(t);return 0!==this.negative?0|-e:e},o.prototype.ucmp=function(t){if(this.length>t.length)return 1;if(this.length<t.length)return-1;for(var e=0,i=this.length-1;i>=0;i--){var r=0|this.words[i],n=0|t.words[i];if(r!==n){r<n?e=-1:r>n&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new M(t)},o.prototype.toRed=function(t){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return r(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return r(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var v={k256:null,p224:null,p192:null,p25519:null};function y(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function b(){y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function _(){y.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){y.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function A(){y.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function M(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else r(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function E(t){M.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}y.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},y.prototype.ireduce=function(t){var e,i=t;do{this.split(i,this.tmp),e=(i=(i=this.imulK(i)).iadd(this.tmp)).bitLength()}while(e>this.n);var r=e<this.n?-1:i.ucmp(this.p);return 0===r?(i.words[0]=0,i.length=1):r>0?i.isub(this.p):void 0!==i.strip?i.strip():i._strip(),i},y.prototype.split=function(t,e){t.iushrn(this.n,0,e)},y.prototype.imulK=function(t){return t.imul(this.k)},n(b,y),b.prototype.split=function(t,e){for(var i=4194303,r=Math.min(t.length,9),n=0;n<r;n++)e.words[n]=t.words[n];if(e.length=r,t.length<=9)return t.words[0]=0,void(t.length=1);var o=t.words[9];for(e.words[e.length++]=o&i,n=10;n<t.length;n++){var a=0|t.words[n];t.words[n-10]=(a&i)<<4|o>>>22,o=a}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},b.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,i=0;i<t.length;i++){var r=0|t.words[i];e+=977*r,t.words[i]=67108863&e,e=64*r+(e/67108864|0)}return 0===t.words[t.length-1]&&(t.length--,0===t.words[t.length-1]&&t.length--),t},n(_,y),n(w,y),n(A,y),A.prototype.imulK=function(t){for(var e=0,i=0;i<t.length;i++){var r=19*(0|t.words[i])+e,n=67108863&r;r>>>=26,t.words[i]=n,e=r}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(v[t])return v[t];var e;if("k256"===t)e=new b;else if("p224"===t)e=new _;else if("p192"===t)e=new w;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new A}return v[t]=e,e},M.prototype._verify1=function(t){r(0===t.negative,"red works only with positives"),r(t.red,"red works only with red numbers")},M.prototype._verify2=function(t,e){r(0==(t.negative|e.negative),"red works only with positives"),r(t.red&&t.red===e.red,"red works only with red numbers")},M.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},M.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},M.prototype.add=function(t,e){this._verify2(t,e);var i=t.add(e);return i.cmp(this.m)>=0&&i.isub(this.m),i._forceRed(this)},M.prototype.iadd=function(t,e){this._verify2(t,e);var i=t.iadd(e);return i.cmp(this.m)>=0&&i.isub(this.m),i},M.prototype.sub=function(t,e){this._verify2(t,e);var i=t.sub(e);return i.cmpn(0)<0&&i.iadd(this.m),i._forceRed(this)},M.prototype.isub=function(t,e){this._verify2(t,e);var i=t.isub(e);return i.cmpn(0)<0&&i.iadd(this.m),i},M.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},M.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},M.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},M.prototype.isqr=function(t){return this.imul(t,t.clone())},M.prototype.sqr=function(t){return this.mul(t,t)},M.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(r(e%2==1),3===e){var i=this.m.add(new o(1)).iushrn(2);return this.pow(t,i)}for(var n=this.m.subn(1),a=0;!n.isZero()&&0===n.andln(1);)a++,n.iushrn(1);r(!n.isZero());var s=new o(1).toRed(this),h=s.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);0!==this.pow(l,u).cmp(h);)l.redIAdd(h);for(var d=this.pow(l,n),f=this.pow(t,n.addn(1).iushrn(1)),c=this.pow(t,n),p=a;0!==c.cmp(s);){for(var m=c,g=0;0!==m.cmp(s);g++)m=m.redSqr();r(g<p);var v=this.pow(d,new o(1).iushln(p-g-1));f=f.redMul(v),d=v.redSqr(),c=c.redMul(d),p=g}return f},M.prototype.invm=function(t){var e=t._invmp(this.m);return 0!==e.negative?(e.negative=0,this.imod(e).redNeg()):this.imod(e)},M.prototype.pow=function(t,e){if(e.isZero())return new o(1).toRed(this);if(0===e.cmpn(1))return t.clone();var i=new Array(16);i[0]=new o(1).toRed(this),i[1]=t;for(var r=2;r<i.length;r++)i[r]=this.mul(i[r-1],t);var n=i[0],a=0,s=0,h=e.bitLength()%26;for(0===h&&(h=26),r=e.length-1;r>=0;r--){for(var u=e.words[r],l=h-1;l>=0;l--){var d=u>>l&1;n!==i[0]&&(n=this.sqr(n)),0!==d||0!==a?(a<<=1,a|=d,(4===++s||0===r&&0===l)&&(n=this.mul(n,i[a]),s=0,a=0)):s=0}h=26}return n},M.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},M.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new E(t)},n(E,M),E.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},E.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},E.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var i=t.imul(e),r=i.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=i.isub(r).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},E.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var i=t.mul(e),r=i.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=i.isub(r).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},E.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t,this)}).call(this,i(20)(t))},function(t,e,i){"use strict";var r=e;r.der=i(124),r.pem=i(230)},function(t,e,i){"use strict";var r=i(3),n=i(70).Buffer,o=i(71),a=i(73);function s(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new h,this.tree._init(t.body)}function h(t){o.call(this,"der",t)}function u(t){return t<10?"0"+t:t}t.exports=s,s.prototype.encode=function(t,e){return this.tree._encode(t,e).join()},r(h,o),h.prototype._encodeComposite=function(t,e,i,r){var o=function(t,e,i,r){var n;"seqof"===t?t="seq":"setof"===t&&(t="set");if(a.tagByName.hasOwnProperty(t))n=a.tagByName[t];else{if("number"!=typeof t||(0|t)!==t)return r.error("Unknown tag: "+t);n=t}if(n>=31)return r.error("Multi-octet tag encoding unsupported");e||(n|=32);return n|=a.tagClassByName[i||"universal"]<<6}(t,e,i,this.reporter);if(r.length<128){var s=n.alloc(2);return s[0]=o,s[1]=r.length,this._createEncoderBuffer([s,r])}for(var h=1,u=r.length;u>=256;u>>=8)h++;var l=n.alloc(2+h);l[0]=o,l[1]=128|h;for(var d=1+h,f=r.length;f>0;d--,f>>=8)l[d]=255&f;return this._createEncoderBuffer([l,r])},h.prototype._encodeStr=function(t,e){if("bitstr"===e)return this._createEncoderBuffer([0|t.unused,t.data]);if("bmpstr"===e){for(var i=n.alloc(2*t.length),r=0;r<t.length;r++)i.writeUInt16BE(t.charCodeAt(r),2*r);return this._createEncoderBuffer(i)}return"numstr"===e?this._isNumstr(t)?this._createEncoderBuffer(t):this.reporter.error("Encoding of string type: numstr supports only digits and space"):"printstr"===e?this._isPrintstr(t)?this._createEncoderBuffer(t):this.reporter.error("Encoding of string type: printstr supports only latin upper and lower case letters, digits, space, apostrophe, left and rigth parenthesis, plus sign, comma, hyphen, dot, slash, colon, equal sign, question mark"):/str$/.test(e)||"objDesc"===e?this._createEncoderBuffer(t):this.reporter.error("Encoding of string type: "+e+" unsupported")},h.prototype._encodeObjid=function(t,e,i){if("string"==typeof t){if(!e)return this.reporter.error("string objid given, but no values map found");if(!e.hasOwnProperty(t))return this.reporter.error("objid not found in values map");t=e[t].split(/[\s.]+/g);for(var r=0;r<t.length;r++)t[r]|=0}else if(Array.isArray(t)){t=t.slice();for(var o=0;o<t.length;o++)t[o]|=0}if(!Array.isArray(t))return this.reporter.error("objid() should be either array or string, got: "+JSON.stringify(t));if(!i){if(t[1]>=40)return this.reporter.error("Second objid identifier OOB");t.splice(0,2,40*t[0]+t[1])}for(var a=0,s=0;s<t.length;s++){var h=t[s];for(a++;h>=128;h>>=7)a++}for(var u=n.alloc(a),l=u.length-1,d=t.length-1;d>=0;d--){var f=t[d];for(u[l--]=127&f;(f>>=7)>0;)u[l--]=128|127&f}return this._createEncoderBuffer(u)},h.prototype._encodeTime=function(t,e){var i,r=new Date(t);return"gentime"===e?i=[u(r.getUTCFullYear()),u(r.getUTCMonth()+1),u(r.getUTCDate()),u(r.getUTCHours()),u(r.getUTCMinutes()),u(r.getUTCSeconds()),"Z"].join(""):"utctime"===e?i=[u(r.getUTCFullYear()%100),u(r.getUTCMonth()+1),u(r.getUTCDate()),u(r.getUTCHours()),u(r.getUTCMinutes()),u(r.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+e+" time is not supported yet"),this._encodeStr(i,"octstr")},h.prototype._encodeNull=function(){return this._createEncoderBuffer("")},h.prototype._encodeInt=function(t,e){if("string"==typeof t){if(!e)return this.reporter.error("String int or enum given, but no values map");if(!e.hasOwnProperty(t))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(t));t=e[t]}if("number"!=typeof t&&!n.isBuffer(t)){var i=t.toArray();!t.sign&&128&i[0]&&i.unshift(0),t=n.from(i)}if(n.isBuffer(t)){var r=t.length;0===t.length&&r++;var o=n.alloc(r);return t.copy(o),0===t.length&&(o[0]=0),this._createEncoderBuffer(o)}if(t<128)return this._createEncoderBuffer(t);if(t<256)return this._createEncoderBuffer([0,t]);for(var a=1,s=t;s>=256;s>>=8)a++;for(var h=new Array(a),u=h.length-1;u>=0;u--)h[u]=255&t,t>>=8;return 128&h[0]&&h.unshift(0),this._createEncoderBuffer(n.from(h))},h.prototype._encodeBool=function(t){return this._createEncoderBuffer(t?255:0)},h.prototype._use=function(t,e){return"function"==typeof t&&(t=t(e)),t._getEncoder("der").tree},h.prototype._skipDefault=function(t,e,i){var r,n=this._baseState;if(null===n.default)return!1;var o=t.join();if(void 0===n.defaultBuffer&&(n.defaultBuffer=this._encodeValue(n.default,e,i).join()),o.length!==n.defaultBuffer.length)return!1;for(r=0;r<o.length;r++)if(o[r]!==n.defaultBuffer[r])return!1;return!0}},function(t,e,i){"use strict";var r=e;r.der=i(126),r.pem=i(231)},function(t,e,i){"use strict";var r=i(3),n=i(122),o=i(39).DecoderBuffer,a=i(71),s=i(73);function h(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new u,this.tree._init(t.body)}function u(t){a.call(this,"der",t)}function l(t,e){var i=t.readUInt8(e);if(t.isError(i))return i;var r=s.tagClass[i>>6],n=0==(32&i);if(31==(31&i)){var o=i;for(i=0;128==(128&o);){if(o=t.readUInt8(e),t.isError(o))return o;i<<=7,i|=127&o}}else i&=31;return{cls:r,primitive:n,tag:i,tagStr:s.tag[i]}}function d(t,e,i){var r=t.readUInt8(i);if(t.isError(r))return r;if(!e&&128===r)return null;if(0==(128&r))return r;var n=127&r;if(n>4)return t.error("length octect is too long");r=0;for(var o=0;o<n;o++){r<<=8;var a=t.readUInt8(i);if(t.isError(a))return a;r|=a}return r}t.exports=h,h.prototype.decode=function(t,e){return o.isDecoderBuffer(t)||(t=new o(t,e)),this.tree._decode(t,e)},r(u,a),u.prototype._peekTag=function(t,e,i){if(t.isEmpty())return!1;var r=t.save(),n=l(t,'Failed to peek tag: "'+e+'"');return t.isError(n)?n:(t.restore(r),n.tag===e||n.tagStr===e||n.tagStr+"of"===e||i)},u.prototype._decodeTag=function(t,e,i){var r=l(t,'Failed to decode tag of "'+e+'"');if(t.isError(r))return r;var n=d(t,r.primitive,'Failed to get length of "'+e+'"');if(t.isError(n))return n;if(!i&&r.tag!==e&&r.tagStr!==e&&r.tagStr+"of"!==e)return t.error('Failed to match tag: "'+e+'"');if(r.primitive||null!==n)return t.skip(n,'Failed to match body of: "'+e+'"');var o=t.save(),a=this._skipUntilEnd(t,'Failed to skip indefinite length body: "'+this.tag+'"');return t.isError(a)?a:(n=t.offset-o.offset,t.restore(o),t.skip(n,'Failed to match body of: "'+e+'"'))},u.prototype._skipUntilEnd=function(t,e){for(;;){var i=l(t,e);if(t.isError(i))return i;var r=d(t,i.primitive,e);if(t.isError(r))return r;var n=void 0;if(n=i.primitive||null!==r?t.skip(r):this._skipUntilEnd(t,e),t.isError(n))return n;if("end"===i.tagStr)break}},u.prototype._decodeList=function(t,e,i,r){for(var n=[];!t.isEmpty();){var o=this._peekTag(t,"end");if(t.isError(o))return o;var a=i.decode(t,"der",r);if(t.isError(a)&&o)break;n.push(a)}return n},u.prototype._decodeStr=function(t,e){if("bitstr"===e){var i=t.readUInt8();return t.isError(i)?i:{unused:i,data:t.raw()}}if("bmpstr"===e){var r=t.raw();if(r.length%2==1)return t.error("Decoding of string type: bmpstr length mismatch");for(var n="",o=0;o<r.length/2;o++)n+=String.fromCharCode(r.readUInt16BE(2*o));return n}if("numstr"===e){var a=t.raw().toString("ascii");return this._isNumstr(a)?a:t.error("Decoding of string type: numstr unsupported characters")}if("octstr"===e)return t.raw();if("objDesc"===e)return t.raw();if("printstr"===e){var s=t.raw().toString("ascii");return this._isPrintstr(s)?s:t.error("Decoding of string type: printstr unsupported characters")}return/str$/.test(e)?t.raw().toString():t.error("Decoding of string type: "+e+" unsupported")},u.prototype._decodeObjid=function(t,e,i){for(var r,n=[],o=0,a=0;!t.isEmpty();)o<<=7,o|=127&(a=t.readUInt8()),0==(128&a)&&(n.push(o),o=0);128&a&&n.push(o);var s=n[0]/40|0,h=n[0]%40;if(r=i?n:[s,h].concat(n.slice(1)),e){var u=e[r.join(" ")];void 0===u&&(u=e[r.join(".")]),void 0!==u&&(r=u)}return r},u.prototype._decodeTime=function(t,e){var i,r,n,o,a,s,h=t.raw().toString();if("gentime"===e)i=0|h.slice(0,4),r=0|h.slice(4,6),n=0|h.slice(6,8),o=0|h.slice(8,10),a=0|h.slice(10,12),s=0|h.slice(12,14);else{if("utctime"!==e)return t.error("Decoding "+e+" time is not supported yet");i=0|h.slice(0,2),r=0|h.slice(2,4),n=0|h.slice(4,6),o=0|h.slice(6,8),a=0|h.slice(8,10),s=0|h.slice(10,12),i=i<70?2e3+i:1900+i}return Date.UTC(i,r-1,n,o,a,s,0)},u.prototype._decodeNull=function(){return null},u.prototype._decodeBool=function(t){var e=t.readUInt8();return t.isError(e)?e:0!==e},u.prototype._decodeInt=function(t,e){var i=t.raw(),r=new n(i);return e&&(r=e[r.toString(10)]||r),r},u.prototype._use=function(t,e){return"function"==typeof t&&(t=t(e)),t._getDecoder("der").tree}},function(t){t.exports=JSON.parse('{"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}')},function(t,e,i){var r=i(35),n=i(4).Buffer;function o(t){var e=n.allocUnsafe(4);return e.writeUInt32BE(t,0),e}t.exports=function(t,e){for(var i,a=n.alloc(0),s=0;a.length<e;)i=o(s++),a=n.concat([a,r("sha1").update(t).update(i).digest()]);return a.slice(0,e)}},function(t,e){t.exports=function(t,e){for(var i=t.length,r=-1;++r<i;)t[r]^=e[r];return t}},function(t,e,i){var r=i(74),n=i(4).Buffer;t.exports=function(t,e){return n.from(t.toRed(r.mont(e.modulus)).redPow(new r(e.publicExponent)).fromRed().toArray())}},function(t,e,i){var r;t.exports=(r=i(5),function(t){var e=r,i=e.lib,n=i.WordArray,o=i.Hasher,a=e.algo,s=[],h=[];!function(){function e(e){for(var i=t.sqrt(e),r=2;r<=i;r++)if(!(e%r))return!1;return!0}function i(t){return 4294967296*(t-(0|t))|0}for(var r=2,n=0;n<64;)e(r)&&(n<8&&(s[n]=i(t.pow(r,.5))),h[n]=i(t.pow(r,1/3)),n++),r++}();var u=[],l=a.SHA256=o.extend({_doReset:function(){this._hash=new n.init(s.slice(0))},_doProcessBlock:function(t,e){for(var i=this._hash.words,r=i[0],n=i[1],o=i[2],a=i[3],s=i[4],l=i[5],d=i[6],f=i[7],c=0;c<64;c++){if(c<16)u[c]=0|t[e+c];else{var p=u[c-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,g=u[c-2],v=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;u[c]=m+u[c-7]+v+u[c-16]}var y=r&n^r&o^n&o,b=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),_=f+((s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25))+(s&l^~s&d)+h[c]+u[c];f=d,d=l,l=s,s=a+_|0,a=o,o=n,n=r,r=_+(b+y)|0}i[0]=i[0]+r|0,i[1]=i[1]+n|0,i[2]=i[2]+o|0,i[3]=i[3]+a|0,i[4]=i[4]+s|0,i[5]=i[5]+l|0,i[6]=i[6]+d|0,i[7]=i[7]+f|0},_doFinalize:function(){var e=this._data,i=e.words,r=8*this._nDataBytes,n=8*e.sigBytes;return i[n>>>5]|=128<<24-n%32,i[14+(n+64>>>9<<4)]=t.floor(r/4294967296),i[15+(n+64>>>9<<4)]=r,e.sigBytes=4*i.length,this._process(),this._hash},clone:function(){var t=o.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA256=o._createHelper(l),e.HmacSHA256=o._createHmacHelper(l)}(Math),r.SHA256)},function(t,e,i){var r;t.exports=(r=i(5),i(49),function(){var t=r,e=t.lib.Hasher,i=t.x64,n=i.Word,o=i.WordArray,a=t.algo;function s(){return n.create.apply(n,arguments)}var h=[s(1116352408,3609767458),s(1899447441,602891725),s(3049323471,3964484399),s(3921009573,2173295548),s(961987163,4081628472),s(1508970993,3053834265),s(2453635748,2937671579),s(2870763221,3664609560),s(3624381080,2734883394),s(310598401,1164996542),s(607225278,1323610764),s(1426881987,3590304994),s(1925078388,4068182383),s(2162078206,991336113),s(2614888103,633803317),s(3248222580,3479774868),s(3835390401,2666613458),s(4022224774,944711139),s(264347078,2341262773),s(604807628,2007800933),s(770255983,1495990901),s(1249150122,1856431235),s(1555081692,3175218132),s(1996064986,2198950837),s(2554220882,3999719339),s(2821834349,766784016),s(2952996808,2566594879),s(3210313671,3203337956),s(3336571891,1034457026),s(3584528711,2466948901),s(113926993,3758326383),s(338241895,168717936),s(666307205,1188179964),s(773529912,1546045734),s(1294757372,1522805485),s(1396182291,2643833823),s(1695183700,2343527390),s(1986661051,1014477480),s(2177026350,1206759142),s(2456956037,344077627),s(2730485921,1290863460),s(2820302411,3158454273),s(3259730800,3505952657),s(3345764771,106217008),s(3516065817,3606008344),s(3600352804,1432725776),s(4094571909,1467031594),s(275423344,851169720),s(430227734,3100823752),s(506948616,1363258195),s(659060556,3750685593),s(883997877,3785050280),s(958139571,3318307427),s(1322822218,3812723403),s(1537002063,2003034995),s(1747873779,3602036899),s(1955562222,1575990012),s(2024104815,1125592928),s(2227730452,2716904306),s(2361852424,442776044),s(2428436474,593698344),s(2756734187,3733110249),s(3204031479,2999351573),s(3329325298,3815920427),s(3391569614,3928383900),s(3515267271,566280711),s(3940187606,3454069534),s(4118630271,4000239992),s(116418474,1914138554),s(174292421,2731055270),s(289380356,3203993006),s(460393269,320620315),s(685471733,587496836),s(852142971,1086792851),s(1017036298,365543100),s(1126000580,2618297676),s(1288033470,3409855158),s(1501505948,4234509866),s(1607167915,987167468),s(1816402316,1246189591)],u=[];!function(){for(var t=0;t<80;t++)u[t]=s()}();var l=a.SHA512=e.extend({_doReset:function(){this._hash=new o.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(t,e){for(var i=this._hash.words,r=i[0],n=i[1],o=i[2],a=i[3],s=i[4],l=i[5],d=i[6],f=i[7],c=r.high,p=r.low,m=n.high,g=n.low,v=o.high,y=o.low,b=a.high,_=a.low,w=s.high,A=s.low,M=l.high,E=l.low,S=d.high,k=d.low,T=f.high,R=f.low,I=c,C=p,P=m,x=g,D=v,O=y,B=b,L=_,W=w,N=A,F=M,U=E,j=S,V=k,H=T,z=R,G=0;G<80;G++){var q,X,Z=u[G];if(G<16)X=Z.high=0|t[e+2*G],q=Z.low=0|t[e+2*G+1];else{var K=u[G-15],Q=K.high,Y=K.low,J=(Q>>>1|Y<<31)^(Q>>>8|Y<<24)^Q>>>7,$=(Y>>>1|Q<<31)^(Y>>>8|Q<<24)^(Y>>>7|Q<<25),tt=u[G-2],et=tt.high,it=tt.low,rt=(et>>>19|it<<13)^(et<<3|it>>>29)^et>>>6,nt=(it>>>19|et<<13)^(it<<3|et>>>29)^(it>>>6|et<<26),ot=u[G-7],at=ot.high,st=ot.low,ht=u[G-16],ut=ht.high,lt=ht.low;X=(X=(X=J+at+((q=$+st)>>>0<$>>>0?1:0))+rt+((q+=nt)>>>0<nt>>>0?1:0))+ut+((q+=lt)>>>0<lt>>>0?1:0),Z.high=X,Z.low=q}var dt,ft=W&F^~W&j,ct=N&U^~N&V,pt=I&P^I&D^P&D,mt=C&x^C&O^x&O,gt=(I>>>28|C<<4)^(I<<30|C>>>2)^(I<<25|C>>>7),vt=(C>>>28|I<<4)^(C<<30|I>>>2)^(C<<25|I>>>7),yt=(W>>>14|N<<18)^(W>>>18|N<<14)^(W<<23|N>>>9),bt=(N>>>14|W<<18)^(N>>>18|W<<14)^(N<<23|W>>>9),_t=h[G],wt=_t.high,At=_t.low,Mt=H+yt+((dt=z+bt)>>>0<z>>>0?1:0),Et=vt+mt;H=j,z=V,j=F,V=U,F=W,U=N,W=B+(Mt=(Mt=(Mt=Mt+ft+((dt+=ct)>>>0<ct>>>0?1:0))+wt+((dt+=At)>>>0<At>>>0?1:0))+X+((dt+=q)>>>0<q>>>0?1:0))+((N=L+dt|0)>>>0<L>>>0?1:0)|0,B=D,L=O,D=P,O=x,P=I,x=C,I=Mt+(gt+pt+(Et>>>0<vt>>>0?1:0))+((C=dt+Et|0)>>>0<dt>>>0?1:0)|0}p=r.low=p+C,r.high=c+I+(p>>>0<C>>>0?1:0),g=n.low=g+x,n.high=m+P+(g>>>0<x>>>0?1:0),y=o.low=y+O,o.high=v+D+(y>>>0<O>>>0?1:0),_=a.low=_+L,a.high=b+B+(_>>>0<L>>>0?1:0),A=s.low=A+N,s.high=w+W+(A>>>0<N>>>0?1:0),E=l.low=E+U,l.high=M+F+(E>>>0<U>>>0?1:0),k=d.low=k+V,d.high=S+j+(k>>>0<V>>>0?1:0),R=f.low=R+z,f.high=T+H+(R>>>0<z>>>0?1:0)},_doFinalize:function(){var t=this._data,e=t.words,i=8*this._nDataBytes,r=8*t.sigBytes;return e[r>>>5]|=128<<24-r%32,e[30+(r+128>>>10<<5)]=Math.floor(i/4294967296),e[31+(r+128>>>10<<5)]=i,t.sigBytes=4*e.length,this._process(),this._hash.toX32()},clone:function(){var t=e.clone.call(this);return t._hash=this._hash.clone(),t},blockSize:32});t.SHA512=e._createHelper(l),t.HmacSHA512=e._createHmacHelper(l)}(),r.SHA512)},function(t,e,i){!function(){"use strict";var e=i(51),r=i(135),n=i(138),o={FrameSink:e,SoftwareFrameSink:r,WebGLFrameSink:n,attach:function(t,e){return("webGL"in(e=e||{})?e.webGL:n.isAvailable())?new n(t,e):new r(t,e)}};t.exports=o}()},function(t,e,i){"use strict";(function(e){var r,n=(r=i(142))&&"object"==typeof r&&"default"in r?r.default:r;t.exports=function(t){for(var i,r=(i=t,n.atob?n.atob(i):e.from(i,"base64").toString("binary")),o=new Uint8Array(r.length),a=0;a<r.length;a++)o[a]=r.charCodeAt(a);return o}}).call(this,i(9).Buffer)},function(t,e,i){!function(){"use strict";var e=i(51),r=i(136);function n(t){var e=this,i=t.getContext("2d"),n=null,o=null,a=null;return e.drawFrame=function(e){var s=e.format;t.width===s.displayWidth&&t.height===s.displayHeight||(t.width=s.displayWidth,t.height=s.displayHeight),null!==n&&n.width==s.width&&n.height==s.height||function(t,e){for(var r=(n=i.createImageData(t,e)).data,o=t*e*4,a=0;a<o;a+=4)r[a+3]=255}(s.width,s.height),r.convertYCbCr(e,n.data);var h,u,l,d=s.cropWidth!=s.displayWidth||s.cropHeight!=s.displayHeight;d?(o||(u=s.cropWidth,l=s.cropHeight,(o=document.createElement("canvas")).width=u,o.height=l,a=o.getContext("2d")),h=a):h=i,h.putImageData(n,-s.cropLeft,-s.cropTop,s.cropLeft,s.cropTop,s.cropWidth,s.cropHeight),d&&i.drawImage(o,0,0,s.displayWidth,s.displayHeight)},e.clear=function(){i.clearRect(0,0,t.width,t.height)},e}n.prototype=Object.create(e.prototype),t.exports=n}()},function(t,e,i){!function(){"use strict";var e=i(137);t.exports={convertYCbCr:function(t,i){var r=0|t.format.width,n=0|t.format.height,o=0|e(t.format.width/t.format.chromaWidth),a=0|e(t.format.height/t.format.chromaHeight),s=t.y.bytes,h=t.u.bytes,u=t.v.bytes,l=0|t.y.stride,d=0|t.u.stride,f=0|t.v.stride,c=r<<2,p=0,m=0,g=0,v=0,y=0,b=0,_=0,w=0,A=0,M=0,E=0,S=0,k=0,T=0,R=0,I=0,C=0,P=0;if(1==o&&1==a)for(_=0,w=c,P=0,I=0;I<n;I+=2){for(g=(m=I*l|0)+l|0,v=P*d|0,y=P*f|0,R=0;R<r;R+=2)A=0|h[v++],S=(409*(M=0|u[y++])|0)-57088|0,k=(100*A|0)+(208*M|0)-34816|0,T=(516*A|0)-70912|0,E=298*s[m++]|0,i[_]=E+S>>8,i[_+1]=E-k>>8,i[_+2]=E+T>>8,_+=4,E=298*s[m++]|0,i[_]=E+S>>8,i[_+1]=E-k>>8,i[_+2]=E+T>>8,_+=4,E=298*s[g++]|0,i[w]=E+S>>8,i[w+1]=E-k>>8,i[w+2]=E+T>>8,w+=4,E=298*s[g++]|0,i[w]=E+S>>8,i[w+1]=E-k>>8,i[w+2]=E+T>>8,w+=4;_+=c,w+=c,P++}else for(b=0,I=0;I<n;I++)for(C=0,p=I*l|0,v=(P=I>>a)*d|0,y=P*f|0,R=0;R<r;R++)A=0|h[v+(C=R>>o)],S=(409*(M=0|u[y+C])|0)-57088|0,k=(100*A|0)+(208*M|0)-34816|0,T=(516*A|0)-70912|0,E=298*s[p++]|0,i[b]=E+S>>8,i[b+1]=E-k>>8,i[b+2]=E+T>>8,b+=4}}}()},function(t,e){!function(){"use strict";t.exports=function(t){for(var e=0,i=t>>1;0!=i;)i>>=1,e++;if(t!==1<<e)throw"chroma plane dimensions must be power of 2 ratio to luma plane dimensions; got "+t;return e}}()},function(t,e,i){!function(){"use strict";var e=i(51),r=i(139);function n(t){var e,i,o=this,a=n.contextForCanvas(t);if(null===a)throw new Error("WebGL unavailable");function s(t,e){var i=a.createShader(t);if(a.shaderSource(i,e),a.compileShader(i),!a.getShaderParameter(i,a.COMPILE_STATUS)){var r=a.getShaderInfoLog(i);throw a.deleteShader(i),new Error("GL shader compilation for "+t+" failed: "+r)}return i}var h,u,l,d,f,c,p,m,g,v,y=new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]),b={},_={},w={};function A(t,e){return b[t]&&!e||(b[t]=a.createTexture()),b[t]}function M(t,e,i,r,o){var s=!b[t]||e,h=A(t,e);if(a.activeTexture(a.TEXTURE0),n.stripe){var u=!b[t+"_temp"]||e,l=A(t+"_temp",e);a.bindTexture(a.TEXTURE_2D,l),u?(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.NEAREST),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.NEAREST),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,i/4,r,0,a.RGBA,a.UNSIGNED_BYTE,o)):a.texSubImage2D(a.TEXTURE_2D,0,0,0,i/4,r,a.RGBA,a.UNSIGNED_BYTE,o);var d=b[t+"_stripe"],f=!d||e;f&&(d=A(t+"_stripe",e)),a.bindTexture(a.TEXTURE_2D,d),f&&(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.NEAREST),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.NEAREST),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,i,1,0,a.RGBA,a.UNSIGNED_BYTE,function(t){if(w[t])return w[t];for(var e=t,i=new Uint32Array(e),r=0;r<e;r+=4)i[r]=255,i[r+1]=65280,i[r+2]=16711680,i[r+3]=4278190080;return w[t]=new Uint8Array(i.buffer)}(i)))}else a.bindTexture(a.TEXTURE_2D,h),s?(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR),a.texImage2D(a.TEXTURE_2D,0,a.ALPHA,i,r,0,a.ALPHA,a.UNSIGNED_BYTE,o)):a.texSubImage2D(a.TEXTURE_2D,0,0,0,i,r,a.ALPHA,a.UNSIGNED_BYTE,o)}function E(t,e,r,n){var o=b[t];a.useProgram(i);var s=_[t];s&&!e||(a.activeTexture(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,o),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,r,n,0,a.RGBA,a.UNSIGNED_BYTE,null),s=_[t]=a.createFramebuffer()),a.bindFramebuffer(a.FRAMEBUFFER,s),a.framebufferTexture2D(a.FRAMEBUFFER,a.COLOR_ATTACHMENT0,a.TEXTURE_2D,o,0);var p=b[t+"_temp"];a.activeTexture(a.TEXTURE1),a.bindTexture(a.TEXTURE_2D,p),a.uniform1i(c,1);var m=b[t+"_stripe"];a.activeTexture(a.TEXTURE2),a.bindTexture(a.TEXTURE_2D,m),a.uniform1i(f,2),a.bindBuffer(a.ARRAY_BUFFER,h),a.enableVertexAttribArray(u),a.vertexAttribPointer(u,2,a.FLOAT,!1,0,0),a.bindBuffer(a.ARRAY_BUFFER,l),a.enableVertexAttribArray(d),a.vertexAttribPointer(d,2,a.FLOAT,!1,0,0),a.viewport(0,0,r,n),a.drawArrays(a.TRIANGLES,0,y.length/2),a.bindFramebuffer(a.FRAMEBUFFER,null)}function S(t,i,r){a.activeTexture(i),a.bindTexture(a.TEXTURE_2D,b[t]),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR),a.uniform1i(a.getUniformLocation(e,t),r)}function k(t,e){var i=s(a.VERTEX_SHADER,t),r=s(a.FRAGMENT_SHADER,e),n=a.createProgram();if(a.attachShader(n,i),a.attachShader(n,r),a.linkProgram(n),!a.getProgramParameter(n,a.LINK_STATUS)){var o=a.getProgramInfoLog(n);throw a.deleteProgram(n),new Error("GL program linking failed: "+o)}return n}return o.drawFrame=function(s){var b=s.format,_=!e||t.width!==b.displayWidth||t.height!==b.displayHeight;if(_&&(t.width=b.displayWidth,t.height=b.displayHeight,o.clear()),e||function(){if(n.stripe){i=k(r.vertexStripe,r.fragmentStripe),a.getAttribLocation(i,"aPosition"),l=a.createBuffer();var t=new Float32Array([0,0,1,0,0,1,0,1,1,0,1,1]);a.bindBuffer(a.ARRAY_BUFFER,l),a.bufferData(a.ARRAY_BUFFER,t,a.STATIC_DRAW),d=a.getAttribLocation(i,"aTexturePosition"),f=a.getUniformLocation(i,"uStripe"),c=a.getUniformLocation(i,"uTexture")}e=k(r.vertex,r.fragment),h=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,h),a.bufferData(a.ARRAY_BUFFER,y,a.STATIC_DRAW),u=a.getAttribLocation(e,"aPosition"),p=a.createBuffer(),m=a.getAttribLocation(e,"aLumaPosition"),g=a.createBuffer(),v=a.getAttribLocation(e,"aChromaPosition")}(),_){var w=function(t,e,i){var r=b.cropLeft/i,n=(b.cropLeft+b.cropWidth)/i,o=(b.cropTop+b.cropHeight)/b.height,s=b.cropTop/b.height,h=new Float32Array([r,o,n,o,r,s,r,s,n,o,n,s]);a.bindBuffer(a.ARRAY_BUFFER,t),a.bufferData(a.ARRAY_BUFFER,h,a.STATIC_DRAW)};w(p,0,s.y.stride),w(g,0,s.u.stride*b.width/b.chromaWidth)}M("uTextureY",_,s.y.stride,b.height,s.y.bytes),M("uTextureCb",_,s.u.stride,b.chromaHeight,s.u.bytes),M("uTextureCr",_,s.v.stride,b.chromaHeight,s.v.bytes),n.stripe&&(E("uTextureY",_,s.y.stride,b.height),E("uTextureCb",_,s.u.stride,b.chromaHeight),E("uTextureCr",_,s.v.stride,b.chromaHeight)),a.useProgram(e),a.viewport(0,0,t.width,t.height),S("uTextureY",a.TEXTURE0,0),S("uTextureCb",a.TEXTURE1,1),S("uTextureCr",a.TEXTURE2,2),a.bindBuffer(a.ARRAY_BUFFER,h),a.enableVertexAttribArray(u),a.vertexAttribPointer(u,2,a.FLOAT,!1,0,0),a.bindBuffer(a.ARRAY_BUFFER,p),a.enableVertexAttribArray(m),a.vertexAttribPointer(m,2,a.FLOAT,!1,0,0),a.bindBuffer(a.ARRAY_BUFFER,g),a.enableVertexAttribArray(v),a.vertexAttribPointer(v,2,a.FLOAT,!1,0,0),a.drawArrays(a.TRIANGLES,0,y.length/2)},o.clear=function(){a.viewport(0,0,t.width,t.height),a.clearColor(0,0,0,0),a.clear(a.COLOR_BUFFER_BIT)},o.clear(),o}n.stripe=!1,n.contextForCanvas=function(t){var e={preferLowPowerToHighPerformance:!0,powerPreference:"low-power",failIfMajorPerformanceCaveat:!0,preserveDrawingBuffer:!0};return t.getContext("webgl",e)||t.getContext("experimental-webgl",e)},n.isAvailable=function(){var t,e=document.createElement("canvas");e.width=1,e.height=1;try{t=n.contextForCanvas(e)}catch(t){return!1}if(t){var i=t.TEXTURE0,r=t.createTexture(),o=new Uint8Array(16),a=n.stripe?1:4,s=n.stripe?t.RGBA:t.ALPHA,h=n.stripe?t.NEAREST:t.LINEAR;return t.activeTexture(i),t.bindTexture(t.TEXTURE_2D,r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,h),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,h),t.texImage2D(t.TEXTURE_2D,0,s,a,4,0,s,t.UNSIGNED_BYTE,o),!t.getError()}return!1},n.prototype=Object.create(e.prototype),t.exports=n}()},function(t,e){t.exports={vertex:"precision mediump float;\n\nattribute vec2 aPosition;\nattribute vec2 aLumaPosition;\nattribute vec2 aChromaPosition;\nvarying vec2 vLumaPosition;\nvarying vec2 vChromaPosition;\nvoid main() {\n gl_Position = vec4(aPosition, 0, 1);\n vLumaPosition = aLumaPosition;\n vChromaPosition = aChromaPosition;\n}\n",fragment:"// inspired by https://github.com/mbebenita/Broadway/blob/master/Player/canvas.js\n\nprecision mediump float;\n\nuniform sampler2D uTextureY;\nuniform sampler2D uTextureCb;\nuniform sampler2D uTextureCr;\nvarying vec2 vLumaPosition;\nvarying vec2 vChromaPosition;\nvoid main() {\n // Y, Cb, and Cr planes are uploaded as ALPHA textures.\n float fY = texture2D(uTextureY, vLumaPosition).w;\n float fCb = texture2D(uTextureCb, vChromaPosition).w;\n float fCr = texture2D(uTextureCr, vChromaPosition).w;\n\n // Premultipy the Y...\n float fYmul = fY * 1.1643828125;\n\n // And convert that to RGB!\n gl_FragColor = vec4(\n fYmul + 1.59602734375 * fCr - 0.87078515625,\n fYmul - 0.39176171875 * fCb - 0.81296875 * fCr + 0.52959375,\n fYmul + 2.017234375 * fCb - 1.081390625,\n 1\n );\n}\n",vertexStripe:"precision mediump float;\n\nattribute vec2 aPosition;\nattribute vec2 aTexturePosition;\nvarying vec2 vTexturePosition;\n\nvoid main() {\n gl_Position = vec4(aPosition, 0, 1);\n vTexturePosition = aTexturePosition;\n}\n",fragmentStripe:"// extra 'stripe' texture fiddling to work around IE 11's poor performance on gl.LUMINANCE and gl.ALPHA textures\n\nprecision mediump float;\n\nuniform sampler2D uStripe;\nuniform sampler2D uTexture;\nvarying vec2 vTexturePosition;\nvoid main() {\n // Y, Cb, and Cr planes are mapped into a pseudo-RGBA texture\n // so we can upload them without expanding the bytes on IE 11\n // which doesn't allow LUMINANCE or ALPHA textures\n // The stripe textures mark which channel to keep for each pixel.\n // Each texture extraction will contain the relevant value in one\n // channel only.\n\n float fLuminance = dot(\n texture2D(uStripe, vTexturePosition),\n texture2D(uTexture, vTexturePosition)\n );\n\n gl_FragColor = vec4(0, 0, 0, fLuminance);\n}\n"}},function(t,e,i){"use strict";e.byteLength=function(t){var e=u(t),i=e[0],r=e[1];return 3*(i+r)/4-r},e.toByteArray=function(t){var e,i,r=u(t),a=r[0],s=r[1],h=new o(function(t,e,i){return 3*(e+i)/4-i}(0,a,s)),l=0,d=s>0?a-4:a;for(i=0;i<d;i+=4)e=n[t.charCodeAt(i)]<<18|n[t.charCodeAt(i+1)]<<12|n[t.charCodeAt(i+2)]<<6|n[t.charCodeAt(i+3)],h[l++]=e>>16&255,h[l++]=e>>8&255,h[l++]=255&e;2===s&&(e=n[t.charCodeAt(i)]<<2|n[t.charCodeAt(i+1)]>>4,h[l++]=255&e);1===s&&(e=n[t.charCodeAt(i)]<<10|n[t.charCodeAt(i+1)]<<4|n[t.charCodeAt(i+2)]>>2,h[l++]=e>>8&255,h[l++]=255&e);return h},e.fromByteArray=function(t){for(var e,i=t.length,n=i%3,o=[],a=16383,s=0,h=i-n;s<h;s+=a)o.push(l(t,s,s+a>h?h:s+a));1===n?(e=t[i-1],o.push(r[e>>2]+r[e<<4&63]+"==")):2===n&&(e=(t[i-2]<<8)+t[i-1],o.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"="));return o.join("")};for(var r=[],n=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,h=a.length;s<h;++s)r[s]=a[s],n[a.charCodeAt(s)]=s;function u(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var i=t.indexOf("=");return-1===i&&(i=e),[i,i===e?0:4-i%4]}function l(t,e,i){for(var n,o,a=[],s=e;s<i;s+=3)n=(t[s]<<16&16711680)+(t[s+1]<<8&65280)+(255&t[s+2]),a.push(r[(o=n)>>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return a.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},function(t,e){e.read=function(t,e,i,r,n){var o,a,s=8*n-r-1,h=(1<<s)-1,u=h>>1,l=-7,d=i?n-1:0,f=i?-1:1,c=t[e+d];for(d+=f,o=c&(1<<-l)-1,c>>=-l,l+=s;l>0;o=256*o+t[e+d],d+=f,l-=8);for(a=o&(1<<-l)-1,o>>=-l,l+=r;l>0;a=256*a+t[e+d],d+=f,l-=8);if(0===o)o=1-u;else{if(o===h)return a?NaN:1/0*(c?-1:1);a+=Math.pow(2,r),o-=u}return(c?-1:1)*a*Math.pow(2,o-r)},e.write=function(t,e,i,r,n,o){var a,s,h,u=8*o-n-1,l=(1<<u)-1,d=l>>1,f=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,c=r?0:o-1,p=r?1:-1,m=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,a=l):(a=Math.floor(Math.log(e)/Math.LN2),e*(h=Math.pow(2,-a))<1&&(a--,h*=2),(e+=a+d>=1?f/h:f*Math.pow(2,1-d))*h>=2&&(a++,h/=2),a+d>=l?(s=0,a=l):a+d>=1?(s=(e*h-1)*Math.pow(2,n),a+=d):(s=e*Math.pow(2,d-1)*Math.pow(2,n),a=0));n>=8;t[i+c]=255&s,c+=p,s/=256,n-=8);for(a=a<<n|s,u+=n;u>0;t[i+c]=255&a,c+=p,a/=256,u-=8);t[i+c-p]|=128*m}},function(t,e,i){(function(e){var i;i="undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{},t.exports=i}).call(this,i(10))},function(t,e,i){(function(e,i){var r;r=function(){"use strict";function t(t){return"function"==typeof t}var r=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},n=0,o=void 0,a=void 0,s=function(t,e){p[n]=t,p[n+1]=e,2===(n+=2)&&(a?a(m):v())},h="undefined"!=typeof window?window:void 0,u=h||{},l=u.MutationObserver||u.WebKitMutationObserver,d="undefined"==typeof self&&void 0!==e&&"[object process]"==={}.toString.call(e),f="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function c(){var t=setTimeout;return function(){return t(m,1)}}var p=new Array(1e3);function m(){for(var t=0;t<n;t+=2)(0,p[t])(p[t+1]),p[t]=void 0,p[t+1]=void 0;n=0}var g,v=void 0;function y(t,e){var i=this,r=new this.constructor(w);void 0===r[_]&&x(r);var n=i._state;if(n){var o=arguments[n-1];s((function(){return C(n,r,o,i._result)}))}else R(i,r,t,e);return r}function b(t){if(t&&"object"==typeof t&&t.constructor===this)return t;var e=new this(w);return E(e,t),e}d?v=function(){return e.nextTick(m)}:l?v=function(){var t=0,e=new l(m),i=document.createTextNode("");return e.observe(i,{characterData:!0}),function(){i.data=t=++t%2}}():f?((g=new MessageChannel).port1.onmessage=m,v=function(){return g.port2.postMessage(0)}):v=void 0===h?function(){try{var t=Function("return this")().require("vertx");return void 0!==(o=t.runOnLoop||t.runOnContext)?function(){o(m)}:c()}catch(t){return c()}}():c();var _=Math.random().toString(36).substring(2);function w(){}var A=void 0;function M(e,i,r){i.constructor===e.constructor&&r===y&&i.constructor.resolve===b?function(t,e){1===e._state?k(t,e._result):2===e._state?T(t,e._result):R(e,void 0,(function(e){return E(t,e)}),(function(e){return T(t,e)}))}(e,i):void 0===r?k(e,i):t(r)?function(t,e,i){s((function(t){var r=!1,n=function(t,e,i,r){try{t.call(e,i,r)}catch(t){return t}}(i,e,(function(i){r||(r=!0,e!==i?E(t,i):k(t,i))}),(function(e){r||(r=!0,T(t,e))}),t._label);!r&&n&&(r=!0,T(t,n))}),t)}(e,i,r):k(e,i)}function E(t,e){if(t===e)T(t,new TypeError("You cannot resolve a promise with itself"));else if(n=typeof(r=e),null===r||"object"!==n&&"function"!==n)k(t,e);else{var i=void 0;try{i=e.then}catch(e){return void T(t,e)}M(t,e,i)}var r,n}function S(t){t._onerror&&t._onerror(t._result),I(t)}function k(t,e){t._state===A&&(t._result=e,t._state=1,0!==t._subscribers.length&&s(I,t))}function T(t,e){t._state===A&&(t._state=2,t._result=e,s(S,t))}function R(t,e,i,r){var n=t._subscribers,o=n.length;t._onerror=null,n[o]=e,n[o+1]=i,n[o+2]=r,0===o&&t._state&&s(I,t)}function I(t){var e=t._subscribers,i=t._state;if(0!==e.length){for(var r=void 0,n=void 0,o=t._result,a=0;a<e.length;a+=3)r=e[a],n=e[a+i],r?C(i,r,n,o):n(o);t._subscribers.length=0}}function C(e,i,r,n){var o=t(r),a=void 0,s=void 0,h=!0;if(o){try{a=r(n)}catch(t){h=!1,s=t}if(i===a)return void T(i,new TypeError("A promises callback cannot return that same promise."))}else a=n;i._state!==A||(o&&h?E(i,a):!1===h?T(i,s):1===e?k(i,a):2===e&&T(i,a))}var P=0;function x(t){t[_]=P++,t._state=void 0,t._result=void 0,t._subscribers=[]}var D=function(){function t(t,e){this._instanceConstructor=t,this.promise=new t(w),this.promise[_]||x(this.promise),r(e)?(this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0===this.length?k(this.promise,this._result):(this.length=this.length||0,this._enumerate(e),0===this._remaining&&k(this.promise,this._result))):T(this.promise,new Error("Array Methods must be provided an Array"))}return t.prototype._enumerate=function(t){for(var e=0;this._state===A&&e<t.length;e++)this._eachEntry(t[e],e)},t.prototype._eachEntry=function(t,e){var i=this._instanceConstructor,r=i.resolve;if(r===b){var n=void 0,o=void 0,a=!1;try{n=t.then}catch(t){a=!0,o=t}if(n===y&&t._state!==A)this._settledAt(t._state,e,t._result);else if("function"!=typeof n)this._remaining--,this._result[e]=t;else if(i===O){var s=new i(w);a?T(s,o):M(s,t,n),this._willSettleAt(s,e)}else this._willSettleAt(new i((function(e){return e(t)})),e)}else this._willSettleAt(r(t),e)},t.prototype._settledAt=function(t,e,i){var r=this.promise;r._state===A&&(this._remaining--,2===t?T(r,i):this._result[e]=i),0===this._remaining&&k(r,this._result)},t.prototype._willSettleAt=function(t,e){var i=this;R(t,void 0,(function(t){return i._settledAt(1,e,t)}),(function(t){return i._settledAt(2,e,t)}))},t}(),O=function(){function e(t){this[_]=P++,this._result=this._state=void 0,this._subscribers=[],w!==t&&("function"!=typeof t&&function(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}(),this instanceof e?function(t,e){try{e((function(e){E(t,e)}),(function(e){T(t,e)}))}catch(e){T(t,e)}}(this,t):function(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}())}return e.prototype.catch=function(t){return this.then(null,t)},e.prototype.finally=function(e){var i=this,r=i.constructor;return t(e)?i.then((function(t){return r.resolve(e()).then((function(){return t}))}),(function(t){return r.resolve(e()).then((function(){throw t}))})):i.then(e,e)},e}();return O.prototype.then=y,O.all=function(t){return new D(this,t).promise},O.race=function(t){var e=this;return r(t)?new e((function(i,r){for(var n=t.length,o=0;o<n;o++)e.resolve(t[o]).then(i,r)})):new e((function(t,e){return e(new TypeError("You must pass an array to race."))}))},O.resolve=b,O.reject=function(t){var e=new this(w);return T(e,t),e},O._setScheduler=function(t){a=t},O._setAsap=function(t){s=t},O._asap=s,O.polyfill=function(){var t=void 0;if(void 0!==i)t=i;else if("undefined"!=typeof self)t=self;else try{t=Function("return this")()}catch(t){throw new Error("polyfill failed because global object is unavailable in this environment")}var e=t.Promise;if(e){var r=null;try{r=Object.prototype.toString.call(e.resolve())}catch(t){}if("[object Promise]"===r&&!e.cast)return}t.Promise=O},O.Promise=O,O},t.exports=r()}).call(this,i(8),i(10))},function(t,e){var i=arguments[3],r=arguments[4],n=arguments[5],o=JSON.stringify;t.exports=function(t,e){for(var a,s=Object.keys(n),h=0,u=s.length;h<u;h++){var l=s[h],d=n[l].exports;if(d===t||d&&d.default===t){a=l;break}}if(!a){a=Math.floor(Math.pow(16,8)*Math.random()).toString(16);var f={};for(h=0,u=s.length;h<u;h++){f[l=s[h]]=l}r[a]=["function(require,module,exports){"+t+"(self); }",f]}var c=Math.floor(Math.pow(16,8)*Math.random()).toString(16),p={};p[a]=a,r[c]=["function(require,module,exports){var f = require("+o(a)+");(f.default ? f.default : f)(self);}",p];var m={};!function t(e){for(var i in m[e]=!0,r[e][1]){var n=r[e][1][i];m[n]||t(n)}}(c);var g="("+i+")({"+Object.keys(m).map((function(t){return o(t)+":["+r[t][0]+","+o(r[t][1])+"]"})).join(",")+"},{},["+o(c)+"])",v=window.URL||window.webkitURL||window.mozURL||window.msURL,y=new Blob([g],{type:"text/javascript"});if(e&&e.bare)return y;var b=v.createObjectURL(y),_=new Worker(b);return _.objectURL=b,_}},function(t,e){t.exports=function(t){if(!t.webpackPolyfill){var e=Object.create(t);e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),Object.defineProperty(e,"exports",{enumerable:!0}),e.webpackPolyfill=1}return e}},function(t,e){},function(t,e,i){(function(t){function i(t,e){for(var i=0,r=t.length-1;r>=0;r--){var n=t[r];"."===n?t.splice(r,1):".."===n?(t.splice(r,1),i++):i&&(t.splice(r,1),i--)}if(e)for(;i--;i)t.unshift("..");return t}function r(t,e){if(t.filter)return t.filter(e);for(var i=[],r=0;r<t.length;r++)e(t[r],r,t)&&i.push(t[r]);return i}e.resolve=function(){for(var e="",n=!1,o=arguments.length-1;o>=-1&&!n;o--){var a=o>=0?arguments[o]:t.cwd();if("string"!=typeof a)throw new TypeError("Arguments to path.resolve must be strings");a&&(e=a+"/"+e,n="/"===a.charAt(0))}return(n?"/":"")+(e=i(r(e.split("/"),(function(t){return!!t})),!n).join("/"))||"."},e.normalize=function(t){var o=e.isAbsolute(t),a="/"===n(t,-1);return(t=i(r(t.split("/"),(function(t){return!!t})),!o).join("/"))||o||(t="."),t&&a&&(t+="/"),(o?"/":"")+t},e.isAbsolute=function(t){return"/"===t.charAt(0)},e.join=function(){var t=Array.prototype.slice.call(arguments,0);return e.normalize(r(t,(function(t,e){if("string"!=typeof t)throw new TypeError("Arguments to path.join must be strings");return t})).join("/"))},e.relative=function(t,i){function r(t){for(var e=0;e<t.length&&""===t[e];e++);for(var i=t.length-1;i>=0&&""===t[i];i--);return e>i?[]:t.slice(e,i-e+1)}t=e.resolve(t).substr(1),i=e.resolve(i).substr(1);for(var n=r(t.split("/")),o=r(i.split("/")),a=Math.min(n.length,o.length),s=a,h=0;h<a;h++)if(n[h]!==o[h]){s=h;break}var u=[];for(h=s;h<n.length;h++)u.push("..");return(u=u.concat(o.slice(s))).join("/")},e.sep="/",e.delimiter=":",e.dirname=function(t){if("string"!=typeof t&&(t+=""),0===t.length)return".";for(var e=t.charCodeAt(0),i=47===e,r=-1,n=!0,o=t.length-1;o>=1;--o)if(47===(e=t.charCodeAt(o))){if(!n){r=o;break}}else n=!1;return-1===r?i?"/":".":i&&1===r?"/":t.slice(0,r)},e.basename=function(t,e){var i=function(t){"string"!=typeof t&&(t+="");var e,i=0,r=-1,n=!0;for(e=t.length-1;e>=0;--e)if(47===t.charCodeAt(e)){if(!n){i=e+1;break}}else-1===r&&(n=!1,r=e+1);return-1===r?"":t.slice(i,r)}(t);return e&&i.substr(-1*e.length)===e&&(i=i.substr(0,i.length-e.length)),i},e.extname=function(t){"string"!=typeof t&&(t+="");for(var e=-1,i=0,r=-1,n=!0,o=0,a=t.length-1;a>=0;--a){var s=t.charCodeAt(a);if(47!==s)-1===r&&(n=!1,r=a+1),46===s?-1===e?e=a:1!==o&&(o=1):-1!==e&&(o=-1);else if(!n){i=a+1;break}}return-1===e||-1===r||0===o||1===o&&e===r-1&&e===i+1?"":t.slice(e,r)};var n="b"==="ab".substr(-1)?function(t,e,i){return t.substr(e,i)}:function(t,e,i){return e<0&&(e=t.length+e),t.substr(e,i)}}).call(this,i(8))},function(t,e,i){"use strict";e.randomBytes=e.rng=e.pseudoRandomBytes=e.prng=i(25),e.createHash=e.Hash=i(35),e.createHmac=e.Hmac=i(92);var r=i(173),n=Object.keys(r),o=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(n);e.getHashes=function(){return o};var a=i(95);e.pbkdf2=a.pbkdf2,e.pbkdf2Sync=a.pbkdf2Sync;var s=i(175);e.Cipher=s.Cipher,e.createCipher=s.createCipher,e.Cipheriv=s.Cipheriv,e.createCipheriv=s.createCipheriv,e.Decipher=s.Decipher,e.createDecipher=s.createDecipher,e.Decipheriv=s.Decipheriv,e.createDecipheriv=s.createDecipheriv,e.getCiphers=s.getCiphers,e.listCiphers=s.listCiphers;var h=i(190);e.DiffieHellmanGroup=h.DiffieHellmanGroup,e.createDiffieHellmanGroup=h.createDiffieHellmanGroup,e.getDiffieHellman=h.getDiffieHellman,e.createDiffieHellman=h.createDiffieHellman,e.DiffieHellman=h.DiffieHellman;var u=i(197);e.createSign=u.createSign,e.Sign=u.Sign,e.createVerify=u.createVerify,e.Verify=u.Verify,e.createECDH=i(238);var l=i(241);e.publicEncrypt=l.publicEncrypt,e.privateEncrypt=l.privateEncrypt,e.publicDecrypt=l.publicDecrypt,e.privateDecrypt=l.privateDecrypt;var d=i(245);e.randomFill=d.randomFill,e.randomFillSync=d.randomFillSync,e.createCredentials=function(){throw new Error(["sorry, createCredentials is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join("\n"))},e.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}},function(t,e,i){(e=t.exports=i(80)).Stream=e,e.Readable=e,e.Writable=i(84),e.Duplex=i(27),e.Transform=i(85),e.PassThrough=i(155),e.finished=i(54),e.pipeline=i(156)},function(t,e){},function(t,e,i){"use strict";function r(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,r)}return i}function n(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function o(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var a=i(9).Buffer,s=i(152).inspect,h=s&&s.custom||"inspect";t.exports=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.head=null,this.tail=null,this.length=0}var e,i,u;return e=t,i=[{key:"push",value:function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,i=""+e.data;e=e.next;)i+=t+e.data;return i}},{key:"concat",value:function(t){if(0===this.length)return a.alloc(0);for(var e,i,r,n=a.allocUnsafe(t>>>0),o=this.head,s=0;o;)e=o.data,i=n,r=s,a.prototype.copy.call(e,i,r),s+=o.data.length,o=o.next;return n}},{key:"consume",value:function(t,e){var i;return t<this.head.data.length?(i=this.head.data.slice(0,t),this.head.data=this.head.data.slice(t)):i=t===this.head.data.length?this.shift():e?this._getString(t):this._getBuffer(t),i}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(t){var e=this.head,i=1,r=e.data;for(t-=r.length;e=e.next;){var n=e.data,o=t>n.length?n.length:t;if(o===n.length?r+=n:r+=n.slice(0,t),0==(t-=o)){o===n.length?(++i,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=n.slice(o));break}++i}return this.length-=i,r}},{key:"_getBuffer",value:function(t){var e=a.allocUnsafe(t),i=this.head,r=1;for(i.data.copy(e),t-=i.data.length;i=i.next;){var n=i.data,o=t>n.length?n.length:t;if(n.copy(e,e.length-t,0,o),0==(t-=o)){o===n.length?(++r,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=n.slice(o));break}++r}return this.length-=r,e}},{key:h,value:function(t,e){return s(this,function(t){for(var e=1;e<arguments.length;e++){var i=null!=arguments[e]?arguments[e]:{};e%2?r(Object(i),!0).forEach((function(e){n(t,e,i[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):r(Object(i)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(i,e))}))}return t}({},e,{depth:0,customInspect:!1}))}}],i&&o(e.prototype,i),u&&o(e,u),t}()},function(t,e){},function(t,e,i){"use strict";(function(e){var r;function n(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}var o=i(54),a=Symbol("lastResolve"),s=Symbol("lastReject"),h=Symbol("error"),u=Symbol("ended"),l=Symbol("lastPromise"),d=Symbol("handlePromise"),f=Symbol("stream");function c(t,e){return{value:t,done:e}}function p(t){var e=t[a];if(null!==e){var i=t[f].read();null!==i&&(t[l]=null,t[a]=null,t[s]=null,e(c(i,!1)))}}function m(t){e.nextTick(p,t)}var g=Object.getPrototypeOf((function(){})),v=Object.setPrototypeOf((n(r={get stream(){return this[f]},next:function(){var t=this,i=this[h];if(null!==i)return Promise.reject(i);if(this[u])return Promise.resolve(c(void 0,!0));if(this[f].destroyed)return new Promise((function(i,r){e.nextTick((function(){t[h]?r(t[h]):i(c(void 0,!0))}))}));var r,n=this[l];if(n)r=new Promise(function(t,e){return function(i,r){t.then((function(){e[u]?i(c(void 0,!0)):e[d](i,r)}),r)}}(n,this));else{var o=this[f].read();if(null!==o)return Promise.resolve(c(o,!1));r=new Promise(this[d])}return this[l]=r,r}},Symbol.asyncIterator,(function(){return this})),n(r,"return",(function(){var t=this;return new Promise((function(e,i){t[f].destroy(null,(function(t){t?i(t):e(c(void 0,!0))}))}))})),r),g);t.exports=function(t){var e,i=Object.create(v,(n(e={},f,{value:t,writable:!0}),n(e,a,{value:null,writable:!0}),n(e,s,{value:null,writable:!0}),n(e,h,{value:null,writable:!0}),n(e,u,{value:t._readableState.endEmitted,writable:!0}),n(e,d,{value:function(t,e){var r=i[f].read();r?(i[l]=null,i[a]=null,i[s]=null,t(c(r,!1))):(i[a]=t,i[s]=e)},writable:!0}),e));return i[l]=null,o(t,(function(t){if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){var e=i[s];return null!==e&&(i[l]=null,i[a]=null,i[s]=null,e(t)),void(i[h]=t)}var r=i[a];null!==r&&(i[l]=null,i[a]=null,i[s]=null,r(c(void 0,!0))),i[u]=!0})),t.on("readable",m.bind(null,i)),i}}).call(this,i(8))},function(t,e){t.exports=function(){throw new Error("Readable.from is not available in the browser")}},function(t,e,i){"use strict";t.exports=n;var r=i(85);function n(t){if(!(this instanceof n))return new n(t);r.call(this,t)}i(3)(n,r),n.prototype._transform=function(t,e,i){i(null,t)}},function(t,e,i){"use strict";var r;var n=i(26).codes,o=n.ERR_MISSING_ARGS,a=n.ERR_STREAM_DESTROYED;function s(t){if(t)throw t}function h(t,e,n,o){o=function(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}(o);var s=!1;t.on("close",(function(){s=!0})),void 0===r&&(r=i(54)),r(t,{readable:e,writable:n},(function(t){if(t)return o(t);s=!0,o()}));var h=!1;return function(e){if(!s&&!h)return h=!0,function(t){return t.setHeader&&"function"==typeof t.abort}(t)?t.abort():"function"==typeof t.destroy?t.destroy():void o(e||new a("pipe"))}}function u(t){t()}function l(t,e){return t.pipe(e)}function d(t){return t.length?"function"!=typeof t[t.length-1]?s:t.pop():s}t.exports=function(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];var r,n=d(e);if(Array.isArray(e[0])&&(e=e[0]),e.length<2)throw new o("streams");var a=e.map((function(t,i){var o=i<e.length-1;return h(t,o,i>0,(function(t){r||(r=t),t&&a.forEach(u),o||(a.forEach(u),n(r))}))}));return e.reduce(l)}},function(t,e,i){var r=i(3),n=i(28),o=i(4).Buffer,a=[1518500249,1859775393,-1894007588,-899497514],s=new Array(80);function h(){this.init(),this._w=s,n.call(this,64,56)}function u(t){return t<<30|t>>>2}function l(t,e,i,r){return 0===t?e&i|~e&r:2===t?e&i|e&r|i&r:e^i^r}r(h,n),h.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},h.prototype._update=function(t){for(var e,i=this._w,r=0|this._a,n=0|this._b,o=0|this._c,s=0|this._d,h=0|this._e,d=0;d<16;++d)i[d]=t.readInt32BE(4*d);for(;d<80;++d)i[d]=i[d-3]^i[d-8]^i[d-14]^i[d-16];for(var f=0;f<80;++f){var c=~~(f/20),p=0|((e=r)<<5|e>>>27)+l(c,n,o,s)+h+i[f]+a[c];h=s,s=o,o=u(n),n=r,r=p}this._a=r+this._a|0,this._b=n+this._b|0,this._c=o+this._c|0,this._d=s+this._d|0,this._e=h+this._e|0},h.prototype._hash=function(){var t=o.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=h},function(t,e,i){var r=i(3),n=i(28),o=i(4).Buffer,a=[1518500249,1859775393,-1894007588,-899497514],s=new Array(80);function h(){this.init(),this._w=s,n.call(this,64,56)}function u(t){return t<<5|t>>>27}function l(t){return t<<30|t>>>2}function d(t,e,i,r){return 0===t?e&i|~e&r:2===t?e&i|e&r|i&r:e^i^r}r(h,n),h.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},h.prototype._update=function(t){for(var e,i=this._w,r=0|this._a,n=0|this._b,o=0|this._c,s=0|this._d,h=0|this._e,f=0;f<16;++f)i[f]=t.readInt32BE(4*f);for(;f<80;++f)i[f]=(e=i[f-3]^i[f-8]^i[f-14]^i[f-16])<<1|e>>>31;for(var c=0;c<80;++c){var p=~~(c/20),m=u(r)+d(p,n,o,s)+h+i[c]+a[p]|0;h=s,s=o,o=l(n),n=r,r=m}this._a=r+this._a|0,this._b=n+this._b|0,this._c=o+this._c|0,this._d=s+this._d|0,this._e=h+this._e|0},h.prototype._hash=function(){var t=o.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=h},function(t,e,i){var r=i(3),n=i(86),o=i(28),a=i(4).Buffer,s=new Array(64);function h(){this.init(),this._w=s,o.call(this,64,56)}r(h,n),h.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},h.prototype._hash=function(){var t=a.allocUnsafe(28);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t},t.exports=h},function(t,e,i){var r=i(3),n=i(87),o=i(28),a=i(4).Buffer,s=new Array(160);function h(){this.init(),this._w=s,o.call(this,128,112)}r(h,n),h.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},h.prototype._hash=function(){var t=a.allocUnsafe(48);function e(e,i,r){t.writeInt32BE(e,r),t.writeInt32BE(i,r+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),t},t.exports=h},function(t,e,i){t.exports=n;var r=i(6).EventEmitter;function n(){r.call(this)}i(3)(n,r),n.Readable=i(57),n.Writable=i(168),n.Duplex=i(169),n.Transform=i(170),n.PassThrough=i(171),n.Stream=n,n.prototype.pipe=function(t,e){var i=this;function n(e){t.writable&&!1===t.write(e)&&i.pause&&i.pause()}function o(){i.readable&&i.resume&&i.resume()}i.on("data",n),t.on("drain",o),t._isStdio||e&&!1===e.end||(i.on("end",s),i.on("close",h));var a=!1;function s(){a||(a=!0,t.end())}function h(){a||(a=!0,"function"==typeof t.destroy&&t.destroy())}function u(t){if(l(),0===r.listenerCount(this,"error"))throw t}function l(){i.removeListener("data",n),t.removeListener("drain",o),i.removeListener("end",s),i.removeListener("close",h),i.removeListener("error",u),t.removeListener("error",u),i.removeListener("end",l),i.removeListener("close",l),t.removeListener("close",l)}return i.on("error",u),t.on("error",u),i.on("end",l),i.on("close",l),t.on("close",l),t.emit("pipe",i),t}},function(t,e){},function(t,e,i){"use strict";var r=i(58).Buffer,n=i(164);t.exports=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.head=null,this.tail=null,this.length=0}return t.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},t.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return"";for(var e=this.head,i=""+e.data;e=e.next;)i+=t+e.data;return i},t.prototype.concat=function(t){if(0===this.length)return r.alloc(0);if(1===this.length)return this.head.data;for(var e,i,n,o=r.allocUnsafe(t>>>0),a=this.head,s=0;a;)e=a.data,i=o,n=s,e.copy(i,n),s+=a.data.length,a=a.next;return o},t}(),n&&n.inspect&&n.inspect.custom&&(t.exports.prototype[n.inspect.custom]=function(){var t=n.inspect({length:this.length});return this.constructor.name+" "+t})},function(t,e){},function(t,e,i){(function(t){var r=void 0!==t&&t||"undefined"!=typeof self&&self||window,n=Function.prototype.apply;function o(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new o(n.call(setTimeout,r,arguments),clearTimeout)},e.setInterval=function(){return new o(n.call(setInterval,r,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(r,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},i(166),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,i(10))},function(t,e,i){(function(t,e){!function(t,i){"use strict";if(!t.setImmediate){var r,n,o,a,s,h=1,u={},l=!1,d=t.document,f=Object.getPrototypeOf&&Object.getPrototypeOf(t);f=f&&f.setTimeout?f:t,"[object process]"==={}.toString.call(t.process)?r=function(t){e.nextTick((function(){p(t)}))}:!function(){if(t.postMessage&&!t.importScripts){var e=!0,i=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=i,e}}()?t.MessageChannel?((o=new MessageChannel).port1.onmessage=function(t){p(t.data)},r=function(t){o.port2.postMessage(t)}):d&&"onreadystatechange"in d.createElement("script")?(n=d.documentElement,r=function(t){var e=d.createElement("script");e.onreadystatechange=function(){p(t),e.onreadystatechange=null,n.removeChild(e),e=null},n.appendChild(e)}):r=function(t){setTimeout(p,0,t)}:(a="setImmediate$"+Math.random()+"$",s=function(e){e.source===t&&"string"==typeof e.data&&0===e.data.indexOf(a)&&p(+e.data.slice(a.length))},t.addEventListener?t.addEventListener("message",s,!1):t.attachEvent("onmessage",s),r=function(e){t.postMessage(a+e,"*")}),f.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),i=0;i<e.length;i++)e[i]=arguments[i+1];var n={callback:t,args:e};return u[h]=n,r(h),h++},f.clearImmediate=c}function c(t){delete u[t]}function p(t){if(l)setTimeout(p,0,t);else{var e=u[t];if(e){l=!0;try{!function(t){var e=t.callback,i=t.args;switch(i.length){case 0:e();break;case 1:e(i[0]);break;case 2:e(i[0],i[1]);break;case 3:e(i[0],i[1],i[2]);break;default:e.apply(void 0,i)}}(e)}finally{c(t),l=!1}}}}}("undefined"==typeof self?void 0===t?this:t:self)}).call(this,i(10),i(8))},function(t,e,i){"use strict";t.exports=o;var r=i(91),n=Object.create(i(36));function o(t){if(!(this instanceof o))return new o(t);r.call(this,t)}n.inherits=i(3),n.inherits(o,r),o.prototype._transform=function(t,e,i){i(null,t)}},function(t,e,i){t.exports=i(59)},function(t,e,i){t.exports=i(19)},function(t,e,i){t.exports=i(57).Transform},function(t,e,i){t.exports=i(57).PassThrough},function(t,e,i){"use strict";var r=i(3),n=i(4).Buffer,o=i(17),a=n.alloc(128),s=64;function h(t,e){o.call(this,"digest"),"string"==typeof e&&(e=n.from(e)),this._alg=t,this._key=e,e.length>s?e=t(e):e.length<s&&(e=n.concat([e,a],s));for(var i=this._ipad=n.allocUnsafe(s),r=this._opad=n.allocUnsafe(s),h=0;h<s;h++)i[h]=54^e[h],r[h]=92^e[h];this._hash=[i]}r(h,o),h.prototype._update=function(t){this._hash.push(t)},h.prototype._final=function(){var t=this._alg(n.concat(this._hash));return this._alg(n.concat([this._opad,t]))},t.exports=h},function(t,e,i){t.exports=i(94)},function(t,e,i){(function(e){var r,n,o=i(4).Buffer,a=i(96),s=i(97),h=i(98),u=i(99),l=e.crypto&&e.crypto.subtle,d={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},f=[];function c(){return n||(n=e.process&&e.process.nextTick?e.process.nextTick:e.queueMicrotask?e.queueMicrotask:e.setImmediate?e.setImmediate:e.setTimeout)}function p(t,e,i,r,n){return l.importKey("raw",t,{name:"PBKDF2"},!1,["deriveBits"]).then((function(t){return l.deriveBits({name:"PBKDF2",salt:e,iterations:i,hash:{name:n}},t,r<<3)})).then((function(t){return o.from(t)}))}t.exports=function(t,i,n,m,g,v){"function"==typeof g&&(v=g,g=void 0);var y=d[(g=g||"sha1").toLowerCase()];if(y&&"function"==typeof e.Promise){if(a(n,m),t=u(t,s,"Password"),i=u(i,s,"Salt"),"function"!=typeof v)throw new Error("No callback provided to pbkdf2");!function(t,e){t.then((function(t){c()((function(){e(null,t)}))}),(function(t){c()((function(){e(t)}))}))}(function(t){if(e.process&&!e.process.browser)return Promise.resolve(!1);if(!l||!l.importKey||!l.deriveBits)return Promise.resolve(!1);if(void 0!==f[t])return f[t];var i=p(r=r||o.alloc(8),r,10,128,t).then((function(){return!0})).catch((function(){return!1}));return f[t]=i,i}(y).then((function(e){return e?p(t,i,n,m,y):h(t,i,n,m,g)})),v)}else c()((function(){var e;try{e=h(t,i,n,m,g)}catch(t){return v(t)}v(null,e)}))}}).call(this,i(10))},function(t,e,i){var r=i(176),n=i(61),o=i(62),a=i(189),s=i(44);function h(t,e,i){if(t=t.toLowerCase(),o[t])return n.createCipheriv(t,e,i);if(a[t])return new r({key:e,iv:i,mode:t});throw new TypeError("invalid suite type")}function u(t,e,i){if(t=t.toLowerCase(),o[t])return n.createDecipheriv(t,e,i);if(a[t])return new r({key:e,iv:i,mode:t,decrypt:!0});throw new TypeError("invalid suite type")}e.createCipher=e.Cipher=function(t,e){var i,r;if(t=t.toLowerCase(),o[t])i=o[t].key,r=o[t].iv;else{if(!a[t])throw new TypeError("invalid suite type");i=8*a[t].key,r=a[t].iv}var n=s(e,!1,i,r);return h(t,n.key,n.iv)},e.createCipheriv=e.Cipheriv=h,e.createDecipher=e.Decipher=function(t,e){var i,r;if(t=t.toLowerCase(),o[t])i=o[t].key,r=o[t].iv;else{if(!a[t])throw new TypeError("invalid suite type");i=8*a[t].key,r=a[t].iv}var n=s(e,!1,i,r);return u(t,n.key,n.iv)},e.createDecipheriv=e.Decipheriv=u,e.listCiphers=e.getCiphers=function(){return Object.keys(a).concat(n.getCiphers())}},function(t,e,i){var r=i(17),n=i(177),o=i(3),a=i(4).Buffer,s={"des-ede3-cbc":n.CBC.instantiate(n.EDE),"des-ede3":n.EDE,"des-ede-cbc":n.CBC.instantiate(n.EDE),"des-ede":n.EDE,"des-cbc":n.CBC.instantiate(n.DES),"des-ecb":n.DES};function h(t){r.call(this);var e,i=t.mode.toLowerCase(),n=s[i];e=t.decrypt?"decrypt":"encrypt";var o=t.key;a.isBuffer(o)||(o=a.from(o)),"des-ede"!==i&&"des-ede-cbc"!==i||(o=a.concat([o,o.slice(0,8)]));var h=t.iv;a.isBuffer(h)||(h=a.from(h)),this._des=n.create({key:o,iv:h,type:e})}s.des=s["des-cbc"],s.des3=s["des-ede3-cbc"],t.exports=h,o(h,r),h.prototype._update=function(t){return a.from(this._des.update(t))},h.prototype._final=function(){return a.from(this._des.final())}},function(t,e,i){"use strict";e.utils=i(100),e.Cipher=i(60),e.DES=i(101),e.CBC=i(178),e.EDE=i(179)},function(t,e,i){"use strict";var r=i(13),n=i(3),o={};function a(t){r.equal(t.length,8,"Invalid IV length"),this.iv=new Array(8);for(var e=0;e<this.iv.length;e++)this.iv[e]=t[e]}e.instantiate=function(t){function e(e){t.call(this,e),this._cbcInit()}n(e,t);for(var i=Object.keys(o),r=0;r<i.length;r++){var a=i[r];e.prototype[a]=o[a]}return e.create=function(t){return new e(t)},e},o._cbcInit=function(){var t=new a(this.options.iv);this._cbcState=t},o._update=function(t,e,i,r){var n=this._cbcState,o=this.constructor.super_.prototype,a=n.iv;if("encrypt"===this.type){for(var s=0;s<this.blockSize;s++)a[s]^=t[e+s];o._update.call(this,a,0,i,r);for(s=0;s<this.blockSize;s++)a[s]=i[r+s]}else{o._update.call(this,t,e,i,r);for(s=0;s<this.blockSize;s++)i[r+s]^=a[s];for(s=0;s<this.blockSize;s++)a[s]=t[e+s]}}},function(t,e,i){"use strict";var r=i(13),n=i(3),o=i(60),a=i(101);function s(t,e){r.equal(e.length,24,"Invalid key length");var i=e.slice(0,8),n=e.slice(8,16),o=e.slice(16,24);this.ciphers="encrypt"===t?[a.create({type:"encrypt",key:i}),a.create({type:"decrypt",key:n}),a.create({type:"encrypt",key:o})]:[a.create({type:"decrypt",key:o}),a.create({type:"encrypt",key:n}),a.create({type:"decrypt",key:i})]}function h(t){o.call(this,t);var e=new s(this.type,this.options.key);this._edeState=e}n(h,o),t.exports=h,h.create=function(t){return new h(t)},h.prototype._update=function(t,e,i,r){var n=this._edeState;n.ciphers[0]._update(t,e,i,r),n.ciphers[1]._update(i,r,i,r),n.ciphers[2]._update(i,r,i,r)},h.prototype._pad=a.prototype._pad,h.prototype._unpad=a.prototype._unpad},function(t,e,i){var r=i(62),n=i(105),o=i(4).Buffer,a=i(106),s=i(17),h=i(43),u=i(44);function l(t,e,i){s.call(this),this._cache=new f,this._cipher=new h.AES(e),this._prev=o.from(i),this._mode=t,this._autopadding=!0}i(3)(l,s),l.prototype._update=function(t){var e,i;this._cache.add(t);for(var r=[];e=this._cache.get();)i=this._mode.encrypt(this,e),r.push(i);return o.concat(r)};var d=o.alloc(16,16);function f(){this.cache=o.allocUnsafe(0)}function c(t,e,i){var s=r[t.toLowerCase()];if(!s)throw new TypeError("invalid suite type");if("string"==typeof e&&(e=o.from(e)),e.length!==s.key/8)throw new TypeError("invalid key length "+e.length);if("string"==typeof i&&(i=o.from(i)),"GCM"!==s.mode&&i.length!==s.iv)throw new TypeError("invalid iv length "+i.length);return"stream"===s.type?new a(s.module,e,i):"auth"===s.type?new n(s.module,e,i):new l(s.module,e,i)}l.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return t=this._mode.encrypt(this,t),this._cipher.scrub(),t;if(!t.equals(d))throw this._cipher.scrub(),new Error("data not multiple of block length")},l.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this},f.prototype.add=function(t){this.cache=o.concat([this.cache,t])},f.prototype.get=function(){if(this.cache.length>15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null},f.prototype.flush=function(){for(var t=16-this.cache.length,e=o.allocUnsafe(t),i=-1;++i<t;)e.writeUInt8(t,i);return o.concat([this.cache,e])},e.createCipheriv=c,e.createCipher=function(t,e){var i=r[t.toLowerCase()];if(!i)throw new TypeError("invalid suite type");var n=u(e,!1,i.key,i.iv);return c(t,n.key,n.iv)}},function(t,e){e.encrypt=function(t,e){return t._cipher.encryptBlock(e)},e.decrypt=function(t,e){return t._cipher.decryptBlock(e)}},function(t,e,i){var r=i(37);e.encrypt=function(t,e){var i=r(e,t._prev);return t._prev=t._cipher.encryptBlock(i),t._prev},e.decrypt=function(t,e){var i=t._prev;t._prev=e;var n=t._cipher.decryptBlock(e);return r(n,i)}},function(t,e,i){var r=i(4).Buffer,n=i(37);function o(t,e,i){var o=e.length,a=n(e,t._cache);return t._cache=t._cache.slice(o),t._prev=r.concat([t._prev,i?e:a]),a}e.encrypt=function(t,e,i){for(var n,a=r.allocUnsafe(0);e.length;){if(0===t._cache.length&&(t._cache=t._cipher.encryptBlock(t._prev),t._prev=r.allocUnsafe(0)),!(t._cache.length<=e.length)){a=r.concat([a,o(t,e,i)]);break}n=t._cache.length,a=r.concat([a,o(t,e.slice(0,n),i)]),e=e.slice(n)}return a}},function(t,e,i){var r=i(4).Buffer;function n(t,e,i){var n=t._cipher.encryptBlock(t._prev)[0]^e;return t._prev=r.concat([t._prev.slice(1),r.from([i?e:n])]),n}e.encrypt=function(t,e,i){for(var o=e.length,a=r.allocUnsafe(o),s=-1;++s<o;)a[s]=n(t,e[s],i);return a}},function(t,e,i){var r=i(4).Buffer;function n(t,e,i){for(var r,n,a=-1,s=0;++a<8;)r=e&1<<7-a?128:0,s+=(128&(n=t._cipher.encryptBlock(t._prev)[0]^r))>>a%8,t._prev=o(t._prev,i?r:n);return s}function o(t,e){var i=t.length,n=-1,o=r.allocUnsafe(t.length);for(t=r.concat([t,r.from([e])]);++n<i;)o[n]=t[n]<<1|t[n+1]>>7;return o}e.encrypt=function(t,e,i){for(var o=e.length,a=r.allocUnsafe(o),s=-1;++s<o;)a[s]=n(t,e[s],i);return a}},function(t,e,i){(function(t){var r=i(37);function n(t){return t._prev=t._cipher.encryptBlock(t._prev),t._prev}e.encrypt=function(e,i){for(;e._cache.length<i.length;)e._cache=t.concat([e._cache,n(e)]);var o=e._cache.slice(0,i.length);return e._cache=e._cache.slice(i.length),r(i,o)}}).call(this,i(9).Buffer)},function(t,e,i){var r=i(4).Buffer,n=r.alloc(16,0);function o(t){var e=r.allocUnsafe(16);return e.writeUInt32BE(t[0]>>>0,0),e.writeUInt32BE(t[1]>>>0,4),e.writeUInt32BE(t[2]>>>0,8),e.writeUInt32BE(t[3]>>>0,12),e}function a(t){this.h=t,this.state=r.alloc(16,0),this.cache=r.allocUnsafe(0)}a.prototype.ghash=function(t){for(var e=-1;++e<t.length;)this.state[e]^=t[e];this._multiply()},a.prototype._multiply=function(){for(var t,e,i,r=[(t=this.h).readUInt32BE(0),t.readUInt32BE(4),t.readUInt32BE(8),t.readUInt32BE(12)],n=[0,0,0,0],a=-1;++a<128;){for(0!=(this.state[~~(a/8)]&1<<7-a%8)&&(n[0]^=r[0],n[1]^=r[1],n[2]^=r[2],n[3]^=r[3]),i=0!=(1&r[3]),e=3;e>0;e--)r[e]=r[e]>>>1|(1&r[e-1])<<31;r[0]=r[0]>>>1,i&&(r[0]=r[0]^225<<24)}this.state=o(n)},a.prototype.update=function(t){var e;for(this.cache=r.concat([this.cache,t]);this.cache.length>=16;)e=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(e)},a.prototype.final=function(t,e){return this.cache.length&&this.ghash(r.concat([this.cache,n],16)),this.ghash(o([0,t,0,e])),this.state},t.exports=a},function(t,e,i){var r=i(105),n=i(4).Buffer,o=i(62),a=i(106),s=i(17),h=i(43),u=i(44);function l(t,e,i){s.call(this),this._cache=new d,this._last=void 0,this._cipher=new h.AES(e),this._prev=n.from(i),this._mode=t,this._autopadding=!0}function d(){this.cache=n.allocUnsafe(0)}function f(t,e,i){var s=o[t.toLowerCase()];if(!s)throw new TypeError("invalid suite type");if("string"==typeof i&&(i=n.from(i)),"GCM"!==s.mode&&i.length!==s.iv)throw new TypeError("invalid iv length "+i.length);if("string"==typeof e&&(e=n.from(e)),e.length!==s.key/8)throw new TypeError("invalid key length "+e.length);return"stream"===s.type?new a(s.module,e,i,!0):"auth"===s.type?new r(s.module,e,i,!0):new l(s.module,e,i)}i(3)(l,s),l.prototype._update=function(t){var e,i;this._cache.add(t);for(var r=[];e=this._cache.get(this._autopadding);)i=this._mode.decrypt(this,e),r.push(i);return n.concat(r)},l.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return function(t){var e=t[15];if(e<1||e>16)throw new Error("unable to decrypt data");var i=-1;for(;++i<e;)if(t[i+(16-e)]!==e)throw new Error("unable to decrypt data");if(16===e)return;return t.slice(0,16-e)}(this._mode.decrypt(this,t));if(t)throw new Error("data not multiple of block length")},l.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this},d.prototype.add=function(t){this.cache=n.concat([this.cache,t])},d.prototype.get=function(t){var e;if(t){if(this.cache.length>16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null},d.prototype.flush=function(){if(this.cache.length)return this.cache},e.createDecipher=function(t,e){var i=o[t.toLowerCase()];if(!i)throw new TypeError("invalid suite type");var r=u(e,!1,i.key,i.iv);return f(t,r.key,r.iv)},e.createDecipheriv=f},function(t,e){e["des-ecb"]={key:8,iv:0},e["des-cbc"]=e.des={key:8,iv:8},e["des-ede3-cbc"]=e.des3={key:24,iv:8},e["des-ede3"]={key:24,iv:0},e["des-ede-cbc"]={key:16,iv:8},e["des-ede"]={key:16,iv:0}},function(t,e,i){(function(t){var r=i(107),n=i(195),o=i(196);var a={binary:!0,hex:!0,base64:!0};e.DiffieHellmanGroup=e.createDiffieHellmanGroup=e.getDiffieHellman=function(e){var i=new t(n[e].prime,"hex"),r=new t(n[e].gen,"hex");return new o(i,r)},e.createDiffieHellman=e.DiffieHellman=function e(i,n,s,h){return t.isBuffer(n)||void 0===a[n]?e(i,"binary",n,s):(n=n||"binary",h=h||"binary",s=s||new t([2]),t.isBuffer(s)||(s=new t(s,h)),"number"==typeof i?new o(r(i,s),s,!0):(t.isBuffer(i)||(i=new t(i,n)),new o(i,s,!0)))}}).call(this,i(9).Buffer)},function(t,e){},function(t,e,i){(function(t){!function(t,e){"use strict";function r(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var i=function(){};i.prototype=e.prototype,t.prototype=new i,t.prototype.constructor=t}function o(t,e,i){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(i=e,e=10),this._init(t||0,e||10,i||"be"))}var a;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{a="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:i(193).Buffer}catch(t){}function s(t,e){var i=t.charCodeAt(e);return i>=65&&i<=70?i-55:i>=97&&i<=102?i-87:i-48&15}function h(t,e,i){var r=s(t,i);return i-1>=e&&(r|=s(t,i-1)<<4),r}function u(t,e,i,r){for(var n=0,o=Math.min(t.length,i),a=e;a<o;a++){var s=t.charCodeAt(a)-48;n*=r,n+=s>=49?s-49+10:s>=17?s-17+10:s}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,i){if("number"==typeof t)return this._initNumber(t,e,i);if("object"==typeof t)return this._initArray(t,e,i);"hex"===e&&(e=16),r(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n<t.length&&(16===e?this._parseHex(t,n,i):(this._parseBase(t,e,n),"le"===i&&this._initArray(this.toArray(),e,i)))},o.prototype._initNumber=function(t,e,i){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(r(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===i&&this._initArray(this.toArray(),e,i)},o.prototype._initArray=function(t,e,i){if(r("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var n=0;n<this.length;n++)this.words[n]=0;var o,a,s=0;if("be"===i)for(n=t.length-1,o=0;n>=0;n-=3)a=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=a<<s&67108863,this.words[o+1]=a>>>26-s&67108863,(s+=24)>=26&&(s-=26,o++);else if("le"===i)for(n=0,o=0;n<t.length;n+=3)a=t[n]|t[n+1]<<8|t[n+2]<<16,this.words[o]|=a<<s&67108863,this.words[o+1]=a>>>26-s&67108863,(s+=24)>=26&&(s-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,i){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r<this.length;r++)this.words[r]=0;var n,o=0,a=0;if("be"===i)for(r=t.length-1;r>=e;r-=2)n=h(t,e,r)<<o,this.words[a]|=67108863&n,o>=18?(o-=18,a+=1,this.words[a]|=n>>>26):o+=8;else for(r=(t.length-e)%2==0?e+1:e;r<t.length;r+=2)n=h(t,e,r)<<o,this.words[a]|=67108863&n,o>=18?(o-=18,a+=1,this.words[a]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,i){this.words=[0],this.length=1;for(var r=0,n=1;n<=67108863;n*=e)r++;r--,n=n/e|0;for(var o=t.length-i,a=o%r,s=Math.min(o,o-a)+i,h=0,l=i;l<s;l+=r)h=u(t,l,l+r,e),this.imuln(n),this.words[0]+h<67108864?this.words[0]+=h:this._iaddn(h);if(0!==a){var d=1;for(h=u(t,l,t.length,e),l=0;l<a;l++)d*=e;this.imuln(d),this.words[0]+h<67108864?this.words[0]+=h:this._iaddn(h)}this.strip()},o.prototype.copy=function(t){t.words=new Array(this.length);for(var e=0;e<this.length;e++)t.words[e]=this.words[e];t.length=this.length,t.negative=this.negative,t.red=this.red},o.prototype.clone=function(){var t=new o(null);return this.copy(t),t},o.prototype._expand=function(t){for(;this.length<t;)this.words[this.length++]=0;return this},o.prototype.strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],d=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function c(t,e,i){i.negative=e.negative^t.negative;var r=t.length+e.length|0;i.length=r,r=r-1|0;var n=0|t.words[0],o=0|e.words[0],a=n*o,s=67108863&a,h=a/67108864|0;i.words[0]=s;for(var u=1;u<r;u++){for(var l=h>>>26,d=67108863&h,f=Math.min(u,e.length-1),c=Math.max(0,u-t.length+1);c<=f;c++){var p=u-c|0;l+=(a=(n=0|t.words[p])*(o=0|e.words[c])+d)/67108864|0,d=67108863&a}i.words[u]=0|d,h=0|l}return 0!==h?i.words[u]=0|h:i.length--,i.strip()}o.prototype.toString=function(t,e){var i;if(e=0|e||1,16===(t=t||10)||"hex"===t){i="";for(var n=0,o=0,a=0;a<this.length;a++){var s=this.words[a],h=(16777215&(s<<n|o)).toString(16);i=0!==(o=s>>>24-n&16777215)||a!==this.length-1?l[6-h.length]+h+i:h+i,(n+=2)>=26&&(n-=26,a--)}for(0!==o&&(i=o.toString(16)+i);i.length%e!=0;)i="0"+i;return 0!==this.negative&&(i="-"+i),i}if(t===(0|t)&&t>=2&&t<=36){var u=d[t],c=f[t];i="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modn(c).toString(t);i=(p=p.idivn(c)).isZero()?m+i:l[u-m.length]+m+i}for(this.isZero()&&(i="0"+i);i.length%e!=0;)i="0"+i;return 0!==this.negative&&(i="-"+i),i}r(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return r(void 0!==a),this.toArrayLike(a,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,i){var n=this.byteLength(),o=i||Math.max(1,n);r(n<=o,"byte array longer than desired length"),r(o>0,"Requested array length <= 0"),this.strip();var a,s,h="le"===e,u=new t(o),l=this.clone();if(h){for(s=0;!l.isZero();s++)a=l.andln(255),l.iushrn(8),u[s]=a;for(;s<o;s++)u[s]=0}else{for(s=0;s<o-n;s++)u[s]=0;for(s=0;!l.isZero();s++)a=l.andln(255),l.iushrn(8),u[o-s-1]=a}return u},Math.clz32?o.prototype._countBits=function(t){return 32-Math.clz32(t)}:o.prototype._countBits=function(t){var e=t,i=0;return e>=4096&&(i+=13,e>>>=13),e>=64&&(i+=7,e>>>=7),e>=8&&(i+=4,e>>>=4),e>=2&&(i+=2,e>>>=2),i+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,i=0;return 0==(8191&e)&&(i+=13,e>>>=13),0==(127&e)&&(i+=7,e>>>=7),0==(15&e)&&(i+=4,e>>>=4),0==(3&e)&&(i+=2,e>>>=2),0==(1&e)&&i++,i},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;e<this.length;e++){var i=this._zeroBits(this.words[e]);if(t+=i,26!==i)break}return t},o.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},o.prototype.toTwos=function(t){return 0!==this.negative?this.abs().inotn(t).iaddn(1):this.clone()},o.prototype.fromTwos=function(t){return this.testn(t-1)?this.notn(t).iaddn(1).ineg():this.clone()},o.prototype.isNeg=function(){return 0!==this.negative},o.prototype.neg=function(){return this.clone().ineg()},o.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},o.prototype.iuor=function(t){for(;this.length<t.length;)this.words[this.length++]=0;for(var e=0;e<t.length;e++)this.words[e]=this.words[e]|t.words[e];return this.strip()},o.prototype.ior=function(t){return r(0==(this.negative|t.negative)),this.iuor(t)},o.prototype.or=function(t){return this.length>t.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var i=0;i<e.length;i++)this.words[i]=this.words[i]&t.words[i];return this.length=e.length,this.strip()},o.prototype.iand=function(t){return r(0==(this.negative|t.negative)),this.iuand(t)},o.prototype.and=function(t){return this.length>t.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,i;this.length>t.length?(e=this,i=t):(e=t,i=this);for(var r=0;r<i.length;r++)this.words[r]=e.words[r]^i.words[r];if(this!==e)for(;r<e.length;r++)this.words[r]=e.words[r];return this.length=e.length,this.strip()},o.prototype.ixor=function(t){return r(0==(this.negative|t.negative)),this.iuxor(t)},o.prototype.xor=function(t){return this.length>t.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){r("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),i=t%26;this._expand(e),i>0&&e--;for(var n=0;n<e;n++)this.words[n]=67108863&~this.words[n];return i>0&&(this.words[n]=~this.words[n]&67108863>>26-i),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){r("number"==typeof t&&t>=0);var i=t/26|0,n=t%26;return this._expand(i+1),this.words[i]=e?this.words[i]|1<<n:this.words[i]&~(1<<n),this.strip()},o.prototype.iadd=function(t){var e,i,r;if(0!==this.negative&&0===t.negative)return this.negative=0,e=this.isub(t),this.negative^=1,this._normSign();if(0===this.negative&&0!==t.negative)return t.negative=0,e=this.isub(t),t.negative=1,e._normSign();this.length>t.length?(i=this,r=t):(i=t,r=this);for(var n=0,o=0;o<r.length;o++)e=(0|i.words[o])+(0|r.words[o])+n,this.words[o]=67108863&e,n=e>>>26;for(;0!==n&&o<i.length;o++)e=(0|i.words[o])+n,this.words[o]=67108863&e,n=e>>>26;if(this.length=i.length,0!==n)this.words[this.length]=n,this.length++;else if(i!==this)for(;o<i.length;o++)this.words[o]=i.words[o];return this},o.prototype.add=function(t){var e;return 0!==t.negative&&0===this.negative?(t.negative=0,e=this.sub(t),t.negative^=1,e):0===t.negative&&0!==this.negative?(this.negative=0,e=t.sub(this),this.negative=1,e):this.length>t.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var i,r,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(i=this,r=t):(i=t,r=this);for(var o=0,a=0;a<r.length;a++)o=(e=(0|i.words[a])-(0|r.words[a])+o)>>26,this.words[a]=67108863&e;for(;0!==o&&a<i.length;a++)o=(e=(0|i.words[a])+o)>>26,this.words[a]=67108863&e;if(0===o&&a<i.length&&i!==this)for(;a<i.length;a++)this.words[a]=i.words[a];return this.length=Math.max(this.length,a),i!==this&&(this.negative=1),this.strip()},o.prototype.sub=function(t){return this.clone().isub(t)};var p=function(t,e,i){var r,n,o,a=t.words,s=e.words,h=i.words,u=0,l=0|a[0],d=8191&l,f=l>>>13,c=0|a[1],p=8191&c,m=c>>>13,g=0|a[2],v=8191&g,y=g>>>13,b=0|a[3],_=8191&b,w=b>>>13,A=0|a[4],M=8191&A,E=A>>>13,S=0|a[5],k=8191&S,T=S>>>13,R=0|a[6],I=8191&R,C=R>>>13,P=0|a[7],x=8191&P,D=P>>>13,O=0|a[8],B=8191&O,L=O>>>13,W=0|a[9],N=8191&W,F=W>>>13,U=0|s[0],j=8191&U,V=U>>>13,H=0|s[1],z=8191&H,G=H>>>13,q=0|s[2],X=8191&q,Z=q>>>13,K=0|s[3],Q=8191&K,Y=K>>>13,J=0|s[4],$=8191&J,tt=J>>>13,et=0|s[5],it=8191&et,rt=et>>>13,nt=0|s[6],ot=8191&nt,at=nt>>>13,st=0|s[7],ht=8191&st,ut=st>>>13,lt=0|s[8],dt=8191<,ft=lt>>>13,ct=0|s[9],pt=8191&ct,mt=ct>>>13;i.negative=t.negative^e.negative,i.length=19;var gt=(u+(r=Math.imul(d,j))|0)+((8191&(n=(n=Math.imul(d,V))+Math.imul(f,j)|0))<<13)|0;u=((o=Math.imul(f,V))+(n>>>13)|0)+(gt>>>26)|0,gt&=67108863,r=Math.imul(p,j),n=(n=Math.imul(p,V))+Math.imul(m,j)|0,o=Math.imul(m,V);var vt=(u+(r=r+Math.imul(d,z)|0)|0)+((8191&(n=(n=n+Math.imul(d,G)|0)+Math.imul(f,z)|0))<<13)|0;u=((o=o+Math.imul(f,G)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,r=Math.imul(v,j),n=(n=Math.imul(v,V))+Math.imul(y,j)|0,o=Math.imul(y,V),r=r+Math.imul(p,z)|0,n=(n=n+Math.imul(p,G)|0)+Math.imul(m,z)|0,o=o+Math.imul(m,G)|0;var yt=(u+(r=r+Math.imul(d,X)|0)|0)+((8191&(n=(n=n+Math.imul(d,Z)|0)+Math.imul(f,X)|0))<<13)|0;u=((o=o+Math.imul(f,Z)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,r=Math.imul(_,j),n=(n=Math.imul(_,V))+Math.imul(w,j)|0,o=Math.imul(w,V),r=r+Math.imul(v,z)|0,n=(n=n+Math.imul(v,G)|0)+Math.imul(y,z)|0,o=o+Math.imul(y,G)|0,r=r+Math.imul(p,X)|0,n=(n=n+Math.imul(p,Z)|0)+Math.imul(m,X)|0,o=o+Math.imul(m,Z)|0;var bt=(u+(r=r+Math.imul(d,Q)|0)|0)+((8191&(n=(n=n+Math.imul(d,Y)|0)+Math.imul(f,Q)|0))<<13)|0;u=((o=o+Math.imul(f,Y)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,r=Math.imul(M,j),n=(n=Math.imul(M,V))+Math.imul(E,j)|0,o=Math.imul(E,V),r=r+Math.imul(_,z)|0,n=(n=n+Math.imul(_,G)|0)+Math.imul(w,z)|0,o=o+Math.imul(w,G)|0,r=r+Math.imul(v,X)|0,n=(n=n+Math.imul(v,Z)|0)+Math.imul(y,X)|0,o=o+Math.imul(y,Z)|0,r=r+Math.imul(p,Q)|0,n=(n=n+Math.imul(p,Y)|0)+Math.imul(m,Q)|0,o=o+Math.imul(m,Y)|0;var _t=(u+(r=r+Math.imul(d,$)|0)|0)+((8191&(n=(n=n+Math.imul(d,tt)|0)+Math.imul(f,$)|0))<<13)|0;u=((o=o+Math.imul(f,tt)|0)+(n>>>13)|0)+(_t>>>26)|0,_t&=67108863,r=Math.imul(k,j),n=(n=Math.imul(k,V))+Math.imul(T,j)|0,o=Math.imul(T,V),r=r+Math.imul(M,z)|0,n=(n=n+Math.imul(M,G)|0)+Math.imul(E,z)|0,o=o+Math.imul(E,G)|0,r=r+Math.imul(_,X)|0,n=(n=n+Math.imul(_,Z)|0)+Math.imul(w,X)|0,o=o+Math.imul(w,Z)|0,r=r+Math.imul(v,Q)|0,n=(n=n+Math.imul(v,Y)|0)+Math.imul(y,Q)|0,o=o+Math.imul(y,Y)|0,r=r+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,$)|0,o=o+Math.imul(m,tt)|0;var wt=(u+(r=r+Math.imul(d,it)|0)|0)+((8191&(n=(n=n+Math.imul(d,rt)|0)+Math.imul(f,it)|0))<<13)|0;u=((o=o+Math.imul(f,rt)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,r=Math.imul(I,j),n=(n=Math.imul(I,V))+Math.imul(C,j)|0,o=Math.imul(C,V),r=r+Math.imul(k,z)|0,n=(n=n+Math.imul(k,G)|0)+Math.imul(T,z)|0,o=o+Math.imul(T,G)|0,r=r+Math.imul(M,X)|0,n=(n=n+Math.imul(M,Z)|0)+Math.imul(E,X)|0,o=o+Math.imul(E,Z)|0,r=r+Math.imul(_,Q)|0,n=(n=n+Math.imul(_,Y)|0)+Math.imul(w,Q)|0,o=o+Math.imul(w,Y)|0,r=r+Math.imul(v,$)|0,n=(n=n+Math.imul(v,tt)|0)+Math.imul(y,$)|0,o=o+Math.imul(y,tt)|0,r=r+Math.imul(p,it)|0,n=(n=n+Math.imul(p,rt)|0)+Math.imul(m,it)|0,o=o+Math.imul(m,rt)|0;var At=(u+(r=r+Math.imul(d,ot)|0)|0)+((8191&(n=(n=n+Math.imul(d,at)|0)+Math.imul(f,ot)|0))<<13)|0;u=((o=o+Math.imul(f,at)|0)+(n>>>13)|0)+(At>>>26)|0,At&=67108863,r=Math.imul(x,j),n=(n=Math.imul(x,V))+Math.imul(D,j)|0,o=Math.imul(D,V),r=r+Math.imul(I,z)|0,n=(n=n+Math.imul(I,G)|0)+Math.imul(C,z)|0,o=o+Math.imul(C,G)|0,r=r+Math.imul(k,X)|0,n=(n=n+Math.imul(k,Z)|0)+Math.imul(T,X)|0,o=o+Math.imul(T,Z)|0,r=r+Math.imul(M,Q)|0,n=(n=n+Math.imul(M,Y)|0)+Math.imul(E,Q)|0,o=o+Math.imul(E,Y)|0,r=r+Math.imul(_,$)|0,n=(n=n+Math.imul(_,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,r=r+Math.imul(v,it)|0,n=(n=n+Math.imul(v,rt)|0)+Math.imul(y,it)|0,o=o+Math.imul(y,rt)|0,r=r+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,at)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,at)|0;var Mt=(u+(r=r+Math.imul(d,ht)|0)|0)+((8191&(n=(n=n+Math.imul(d,ut)|0)+Math.imul(f,ht)|0))<<13)|0;u=((o=o+Math.imul(f,ut)|0)+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,r=Math.imul(B,j),n=(n=Math.imul(B,V))+Math.imul(L,j)|0,o=Math.imul(L,V),r=r+Math.imul(x,z)|0,n=(n=n+Math.imul(x,G)|0)+Math.imul(D,z)|0,o=o+Math.imul(D,G)|0,r=r+Math.imul(I,X)|0,n=(n=n+Math.imul(I,Z)|0)+Math.imul(C,X)|0,o=o+Math.imul(C,Z)|0,r=r+Math.imul(k,Q)|0,n=(n=n+Math.imul(k,Y)|0)+Math.imul(T,Q)|0,o=o+Math.imul(T,Y)|0,r=r+Math.imul(M,$)|0,n=(n=n+Math.imul(M,tt)|0)+Math.imul(E,$)|0,o=o+Math.imul(E,tt)|0,r=r+Math.imul(_,it)|0,n=(n=n+Math.imul(_,rt)|0)+Math.imul(w,it)|0,o=o+Math.imul(w,rt)|0,r=r+Math.imul(v,ot)|0,n=(n=n+Math.imul(v,at)|0)+Math.imul(y,ot)|0,o=o+Math.imul(y,at)|0,r=r+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0;var Et=(u+(r=r+Math.imul(d,dt)|0)|0)+((8191&(n=(n=n+Math.imul(d,ft)|0)+Math.imul(f,dt)|0))<<13)|0;u=((o=o+Math.imul(f,ft)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,r=Math.imul(N,j),n=(n=Math.imul(N,V))+Math.imul(F,j)|0,o=Math.imul(F,V),r=r+Math.imul(B,z)|0,n=(n=n+Math.imul(B,G)|0)+Math.imul(L,z)|0,o=o+Math.imul(L,G)|0,r=r+Math.imul(x,X)|0,n=(n=n+Math.imul(x,Z)|0)+Math.imul(D,X)|0,o=o+Math.imul(D,Z)|0,r=r+Math.imul(I,Q)|0,n=(n=n+Math.imul(I,Y)|0)+Math.imul(C,Q)|0,o=o+Math.imul(C,Y)|0,r=r+Math.imul(k,$)|0,n=(n=n+Math.imul(k,tt)|0)+Math.imul(T,$)|0,o=o+Math.imul(T,tt)|0,r=r+Math.imul(M,it)|0,n=(n=n+Math.imul(M,rt)|0)+Math.imul(E,it)|0,o=o+Math.imul(E,rt)|0,r=r+Math.imul(_,ot)|0,n=(n=n+Math.imul(_,at)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,at)|0,r=r+Math.imul(v,ht)|0,n=(n=n+Math.imul(v,ut)|0)+Math.imul(y,ht)|0,o=o+Math.imul(y,ut)|0,r=r+Math.imul(p,dt)|0,n=(n=n+Math.imul(p,ft)|0)+Math.imul(m,dt)|0,o=o+Math.imul(m,ft)|0;var St=(u+(r=r+Math.imul(d,pt)|0)|0)+((8191&(n=(n=n+Math.imul(d,mt)|0)+Math.imul(f,pt)|0))<<13)|0;u=((o=o+Math.imul(f,mt)|0)+(n>>>13)|0)+(St>>>26)|0,St&=67108863,r=Math.imul(N,z),n=(n=Math.imul(N,G))+Math.imul(F,z)|0,o=Math.imul(F,G),r=r+Math.imul(B,X)|0,n=(n=n+Math.imul(B,Z)|0)+Math.imul(L,X)|0,o=o+Math.imul(L,Z)|0,r=r+Math.imul(x,Q)|0,n=(n=n+Math.imul(x,Y)|0)+Math.imul(D,Q)|0,o=o+Math.imul(D,Y)|0,r=r+Math.imul(I,$)|0,n=(n=n+Math.imul(I,tt)|0)+Math.imul(C,$)|0,o=o+Math.imul(C,tt)|0,r=r+Math.imul(k,it)|0,n=(n=n+Math.imul(k,rt)|0)+Math.imul(T,it)|0,o=o+Math.imul(T,rt)|0,r=r+Math.imul(M,ot)|0,n=(n=n+Math.imul(M,at)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,at)|0,r=r+Math.imul(_,ht)|0,n=(n=n+Math.imul(_,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,r=r+Math.imul(v,dt)|0,n=(n=n+Math.imul(v,ft)|0)+Math.imul(y,dt)|0,o=o+Math.imul(y,ft)|0;var kt=(u+(r=r+Math.imul(p,pt)|0)|0)+((8191&(n=(n=n+Math.imul(p,mt)|0)+Math.imul(m,pt)|0))<<13)|0;u=((o=o+Math.imul(m,mt)|0)+(n>>>13)|0)+(kt>>>26)|0,kt&=67108863,r=Math.imul(N,X),n=(n=Math.imul(N,Z))+Math.imul(F,X)|0,o=Math.imul(F,Z),r=r+Math.imul(B,Q)|0,n=(n=n+Math.imul(B,Y)|0)+Math.imul(L,Q)|0,o=o+Math.imul(L,Y)|0,r=r+Math.imul(x,$)|0,n=(n=n+Math.imul(x,tt)|0)+Math.imul(D,$)|0,o=o+Math.imul(D,tt)|0,r=r+Math.imul(I,it)|0,n=(n=n+Math.imul(I,rt)|0)+Math.imul(C,it)|0,o=o+Math.imul(C,rt)|0,r=r+Math.imul(k,ot)|0,n=(n=n+Math.imul(k,at)|0)+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,r=r+Math.imul(M,ht)|0,n=(n=n+Math.imul(M,ut)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,ut)|0,r=r+Math.imul(_,dt)|0,n=(n=n+Math.imul(_,ft)|0)+Math.imul(w,dt)|0,o=o+Math.imul(w,ft)|0;var Tt=(u+(r=r+Math.imul(v,pt)|0)|0)+((8191&(n=(n=n+Math.imul(v,mt)|0)+Math.imul(y,pt)|0))<<13)|0;u=((o=o+Math.imul(y,mt)|0)+(n>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,r=Math.imul(N,Q),n=(n=Math.imul(N,Y))+Math.imul(F,Q)|0,o=Math.imul(F,Y),r=r+Math.imul(B,$)|0,n=(n=n+Math.imul(B,tt)|0)+Math.imul(L,$)|0,o=o+Math.imul(L,tt)|0,r=r+Math.imul(x,it)|0,n=(n=n+Math.imul(x,rt)|0)+Math.imul(D,it)|0,o=o+Math.imul(D,rt)|0,r=r+Math.imul(I,ot)|0,n=(n=n+Math.imul(I,at)|0)+Math.imul(C,ot)|0,o=o+Math.imul(C,at)|0,r=r+Math.imul(k,ht)|0,n=(n=n+Math.imul(k,ut)|0)+Math.imul(T,ht)|0,o=o+Math.imul(T,ut)|0,r=r+Math.imul(M,dt)|0,n=(n=n+Math.imul(M,ft)|0)+Math.imul(E,dt)|0,o=o+Math.imul(E,ft)|0;var Rt=(u+(r=r+Math.imul(_,pt)|0)|0)+((8191&(n=(n=n+Math.imul(_,mt)|0)+Math.imul(w,pt)|0))<<13)|0;u=((o=o+Math.imul(w,mt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,r=Math.imul(N,$),n=(n=Math.imul(N,tt))+Math.imul(F,$)|0,o=Math.imul(F,tt),r=r+Math.imul(B,it)|0,n=(n=n+Math.imul(B,rt)|0)+Math.imul(L,it)|0,o=o+Math.imul(L,rt)|0,r=r+Math.imul(x,ot)|0,n=(n=n+Math.imul(x,at)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,at)|0,r=r+Math.imul(I,ht)|0,n=(n=n+Math.imul(I,ut)|0)+Math.imul(C,ht)|0,o=o+Math.imul(C,ut)|0,r=r+Math.imul(k,dt)|0,n=(n=n+Math.imul(k,ft)|0)+Math.imul(T,dt)|0,o=o+Math.imul(T,ft)|0;var It=(u+(r=r+Math.imul(M,pt)|0)|0)+((8191&(n=(n=n+Math.imul(M,mt)|0)+Math.imul(E,pt)|0))<<13)|0;u=((o=o+Math.imul(E,mt)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,r=Math.imul(N,it),n=(n=Math.imul(N,rt))+Math.imul(F,it)|0,o=Math.imul(F,rt),r=r+Math.imul(B,ot)|0,n=(n=n+Math.imul(B,at)|0)+Math.imul(L,ot)|0,o=o+Math.imul(L,at)|0,r=r+Math.imul(x,ht)|0,n=(n=n+Math.imul(x,ut)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,ut)|0,r=r+Math.imul(I,dt)|0,n=(n=n+Math.imul(I,ft)|0)+Math.imul(C,dt)|0,o=o+Math.imul(C,ft)|0;var Ct=(u+(r=r+Math.imul(k,pt)|0)|0)+((8191&(n=(n=n+Math.imul(k,mt)|0)+Math.imul(T,pt)|0))<<13)|0;u=((o=o+Math.imul(T,mt)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,r=Math.imul(N,ot),n=(n=Math.imul(N,at))+Math.imul(F,ot)|0,o=Math.imul(F,at),r=r+Math.imul(B,ht)|0,n=(n=n+Math.imul(B,ut)|0)+Math.imul(L,ht)|0,o=o+Math.imul(L,ut)|0,r=r+Math.imul(x,dt)|0,n=(n=n+Math.imul(x,ft)|0)+Math.imul(D,dt)|0,o=o+Math.imul(D,ft)|0;var Pt=(u+(r=r+Math.imul(I,pt)|0)|0)+((8191&(n=(n=n+Math.imul(I,mt)|0)+Math.imul(C,pt)|0))<<13)|0;u=((o=o+Math.imul(C,mt)|0)+(n>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,r=Math.imul(N,ht),n=(n=Math.imul(N,ut))+Math.imul(F,ht)|0,o=Math.imul(F,ut),r=r+Math.imul(B,dt)|0,n=(n=n+Math.imul(B,ft)|0)+Math.imul(L,dt)|0,o=o+Math.imul(L,ft)|0;var xt=(u+(r=r+Math.imul(x,pt)|0)|0)+((8191&(n=(n=n+Math.imul(x,mt)|0)+Math.imul(D,pt)|0))<<13)|0;u=((o=o+Math.imul(D,mt)|0)+(n>>>13)|0)+(xt>>>26)|0,xt&=67108863,r=Math.imul(N,dt),n=(n=Math.imul(N,ft))+Math.imul(F,dt)|0,o=Math.imul(F,ft);var Dt=(u+(r=r+Math.imul(B,pt)|0)|0)+((8191&(n=(n=n+Math.imul(B,mt)|0)+Math.imul(L,pt)|0))<<13)|0;u=((o=o+Math.imul(L,mt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863;var Ot=(u+(r=Math.imul(N,pt))|0)+((8191&(n=(n=Math.imul(N,mt))+Math.imul(F,pt)|0))<<13)|0;return u=((o=Math.imul(F,mt))+(n>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,h[0]=gt,h[1]=vt,h[2]=yt,h[3]=bt,h[4]=_t,h[5]=wt,h[6]=At,h[7]=Mt,h[8]=Et,h[9]=St,h[10]=kt,h[11]=Tt,h[12]=Rt,h[13]=It,h[14]=Ct,h[15]=Pt,h[16]=xt,h[17]=Dt,h[18]=Ot,0!==u&&(h[19]=u,i.length++),i};function m(t,e,i){return(new g).mulp(t,e,i)}function g(t,e){this.x=t,this.y=e}Math.imul||(p=c),o.prototype.mulTo=function(t,e){var i,r=this.length+t.length;return i=10===this.length&&10===t.length?p(this,t,e):r<63?c(this,t,e):r<1024?function(t,e,i){i.negative=e.negative^t.negative,i.length=t.length+e.length;for(var r=0,n=0,o=0;o<i.length-1;o++){var a=n;n=0;for(var s=67108863&r,h=Math.min(o,e.length-1),u=Math.max(0,o-t.length+1);u<=h;u++){var l=o-u,d=(0|t.words[l])*(0|e.words[u]),f=67108863&d;s=67108863&(f=f+s|0),n+=(a=(a=a+(d/67108864|0)|0)+(f>>>26)|0)>>>26,a&=67108863}i.words[o]=s,r=a,a=n}return 0!==r?i.words[o]=r:i.length--,i.strip()}(this,t,e):m(this,t,e),i},g.prototype.makeRBT=function(t){for(var e=new Array(t),i=o.prototype._countBits(t)-1,r=0;r<t;r++)e[r]=this.revBin(r,i,t);return e},g.prototype.revBin=function(t,e,i){if(0===t||t===i-1)return t;for(var r=0,n=0;n<e;n++)r|=(1&t)<<e-n-1,t>>=1;return r},g.prototype.permute=function(t,e,i,r,n,o){for(var a=0;a<o;a++)r[a]=e[t[a]],n[a]=i[t[a]]},g.prototype.transform=function(t,e,i,r,n,o){this.permute(o,t,e,i,r,n);for(var a=1;a<n;a<<=1)for(var s=a<<1,h=Math.cos(2*Math.PI/s),u=Math.sin(2*Math.PI/s),l=0;l<n;l+=s)for(var d=h,f=u,c=0;c<a;c++){var p=i[l+c],m=r[l+c],g=i[l+c+a],v=r[l+c+a],y=d*g-f*v;v=d*v+f*g,g=y,i[l+c]=p+g,r[l+c]=m+v,i[l+c+a]=p-g,r[l+c+a]=m-v,c!==s&&(y=h*d-u*f,f=h*f+u*d,d=y)}},g.prototype.guessLen13b=function(t,e){var i=1|Math.max(e,t),r=1&i,n=0;for(i=i/2|0;i;i>>>=1)n++;return 1<<n+1+r},g.prototype.conjugate=function(t,e,i){if(!(i<=1))for(var r=0;r<i/2;r++){var n=t[r];t[r]=t[i-r-1],t[i-r-1]=n,n=e[r],e[r]=-e[i-r-1],e[i-r-1]=-n}},g.prototype.normalize13b=function(t,e){for(var i=0,r=0;r<e/2;r++){var n=8192*Math.round(t[2*r+1]/e)+Math.round(t[2*r]/e)+i;t[r]=67108863&n,i=n<67108864?0:n/67108864|0}return t},g.prototype.convert13b=function(t,e,i,n){for(var o=0,a=0;a<e;a++)o+=0|t[a],i[2*a]=8191&o,o>>>=13,i[2*a+1]=8191&o,o>>>=13;for(a=2*e;a<n;++a)i[a]=0;r(0===o),r(0==(-8192&o))},g.prototype.stub=function(t){for(var e=new Array(t),i=0;i<t;i++)e[i]=0;return e},g.prototype.mulp=function(t,e,i){var r=2*this.guessLen13b(t.length,e.length),n=this.makeRBT(r),o=this.stub(r),a=new Array(r),s=new Array(r),h=new Array(r),u=new Array(r),l=new Array(r),d=new Array(r),f=i.words;f.length=r,this.convert13b(t.words,t.length,a,r),this.convert13b(e.words,e.length,u,r),this.transform(a,o,s,h,r,n),this.transform(u,o,l,d,r,n);for(var c=0;c<r;c++){var p=s[c]*l[c]-h[c]*d[c];h[c]=s[c]*d[c]+h[c]*l[c],s[c]=p}return this.conjugate(s,h,r),this.transform(s,h,f,o,r,n),this.conjugate(f,o,r),this.normalize13b(f,r),i.negative=t.negative^e.negative,i.length=t.length+e.length,i.strip()},o.prototype.mul=function(t){var e=new o(null);return e.words=new Array(this.length+t.length),this.mulTo(t,e)},o.prototype.mulf=function(t){var e=new o(null);return e.words=new Array(this.length+t.length),m(this,t,e)},o.prototype.imul=function(t){return this.clone().mulTo(t,this)},o.prototype.imuln=function(t){r("number"==typeof t),r(t<67108864);for(var e=0,i=0;i<this.length;i++){var n=(0|this.words[i])*t,o=(67108863&n)+(67108863&e);e>>=26,e+=n/67108864|0,e+=o>>>26,this.words[i]=67108863&o}return 0!==e&&(this.words[i]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),i=0;i<e.length;i++){var r=i/26|0,n=i%26;e[i]=(t.words[r]&1<<n)>>>n}return e}(t);if(0===e.length)return new o(1);for(var i=this,r=0;r<e.length&&0===e[r];r++,i=i.sqr());if(++r<e.length)for(var n=i.sqr();r<e.length;r++,n=n.sqr())0!==e[r]&&(i=i.mul(n));return i},o.prototype.iushln=function(t){r("number"==typeof t&&t>=0);var e,i=t%26,n=(t-i)/26,o=67108863>>>26-i<<26-i;if(0!==i){var a=0;for(e=0;e<this.length;e++){var s=this.words[e]&o,h=(0|this.words[e])-s<<i;this.words[e]=h|a,a=s>>>26-i}a&&(this.words[e]=a,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e<n;e++)this.words[e]=0;this.length+=n}return this.strip()},o.prototype.ishln=function(t){return r(0===this.negative),this.iushln(t)},o.prototype.iushrn=function(t,e,i){var n;r("number"==typeof t&&t>=0),n=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),s=67108863^67108863>>>o<<o,h=i;if(n-=a,n=Math.max(0,n),h){for(var u=0;u<a;u++)h.words[u]=this.words[u];h.length=a}if(0===a);else if(this.length>a)for(this.length-=a,u=0;u<this.length;u++)this.words[u]=this.words[u+a];else this.words[0]=0,this.length=1;var l=0;for(u=this.length-1;u>=0&&(0!==l||u>=n);u--){var d=0|this.words[u];this.words[u]=l<<26-o|d>>>o,l=d&s}return h&&0!==l&&(h.words[h.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,i){return r(0===this.negative),this.iushrn(t,e,i)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){r("number"==typeof t&&t>=0);var e=t%26,i=(t-e)/26,n=1<<e;return!(this.length<=i)&&!!(this.words[i]&n)},o.prototype.imaskn=function(t){r("number"==typeof t&&t>=0);var e=t%26,i=(t-e)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=i)return this;if(0!==e&&i++,this.length=Math.min(i,this.length),0!==e){var n=67108863^67108863>>>e<<e;this.words[this.length-1]&=n}return this.strip()},o.prototype.maskn=function(t){return this.clone().imaskn(t)},o.prototype.iaddn=function(t){return r("number"==typeof t),r(t<67108864),t<0?this.isubn(-t):0!==this.negative?1===this.length&&(0|this.words[0])<t?(this.words[0]=t-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(t),this.negative=1,this):this._iaddn(t)},o.prototype._iaddn=function(t){this.words[0]+=t;for(var e=0;e<this.length&&this.words[e]>=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(r("number"==typeof t),r(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e<this.length&&this.words[e]<0;e++)this.words[e]+=67108864,this.words[e+1]-=1;return this.strip()},o.prototype.addn=function(t){return this.clone().iaddn(t)},o.prototype.subn=function(t){return this.clone().isubn(t)},o.prototype.iabs=function(){return this.negative=0,this},o.prototype.abs=function(){return this.clone().iabs()},o.prototype._ishlnsubmul=function(t,e,i){var n,o,a=t.length+i;this._expand(a);var s=0;for(n=0;n<t.length;n++){o=(0|this.words[n+i])+s;var h=(0|t.words[n])*e;s=((o-=67108863&h)>>26)-(h/67108864|0),this.words[n+i]=67108863&o}for(;n<this.length-i;n++)s=(o=(0|this.words[n+i])+s)>>26,this.words[n+i]=67108863&o;if(0===s)return this.strip();for(r(-1===s),s=0,n=0;n<this.length;n++)s=(o=-(0|this.words[n])+s)>>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var i=(this.length,t.length),r=this.clone(),n=t,a=0|n.words[n.length-1];0!==(i=26-this._countBits(a))&&(n=n.ushln(i),r.iushln(i),a=0|n.words[n.length-1]);var s,h=r.length-n.length;if("mod"!==e){(s=new o(null)).length=h+1,s.words=new Array(s.length);for(var u=0;u<s.length;u++)s.words[u]=0}var l=r.clone()._ishlnsubmul(n,1,h);0===l.negative&&(r=l,s&&(s.words[h]=1));for(var d=h-1;d>=0;d--){var f=67108864*(0|r.words[n.length+d])+(0|r.words[n.length+d-1]);for(f=Math.min(f/a|0,67108863),r._ishlnsubmul(n,f,d);0!==r.negative;)f--,r.negative=0,r._ishlnsubmul(n,1,d),r.isZero()||(r.negative^=1);s&&(s.words[d]=f)}return s&&s.strip(),r.strip(),"div"!==e&&0!==i&&r.iushrn(i),{div:s||null,mod:r}},o.prototype.divmod=function(t,e,i){return r(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(s=this.neg().divmod(t,e),"mod"!==e&&(n=s.div.neg()),"div"!==e&&(a=s.mod.neg(),i&&0!==a.negative&&a.iadd(t)),{div:n,mod:a}):0===this.negative&&0!==t.negative?(s=this.divmod(t.neg(),e),"mod"!==e&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&t.negative)?(s=this.neg().divmod(t.neg(),e),"div"!==e&&(a=s.mod.neg(),i&&0!==a.negative&&a.isub(t)),{div:s.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,a,s},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var i=0!==e.div.negative?e.mod.isub(t):e.mod,r=t.ushrn(1),n=t.andln(1),o=i.cmp(r);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){r(t<=67108863);for(var e=(1<<26)%t,i=0,n=this.length-1;n>=0;n--)i=(e*i+(0|this.words[n]))%t;return i},o.prototype.idivn=function(t){r(t<=67108863);for(var e=0,i=this.length-1;i>=0;i--){var n=(0|this.words[i])+67108864*e;this.words[i]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){r(0===t.negative),r(!t.isZero());var e=this,i=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),a=new o(0),s=new o(0),h=new o(1),u=0;e.isEven()&&i.isEven();)e.iushrn(1),i.iushrn(1),++u;for(var l=i.clone(),d=e.clone();!e.isZero();){for(var f=0,c=1;0==(e.words[0]&c)&&f<26;++f,c<<=1);if(f>0)for(e.iushrn(f);f-- >0;)(n.isOdd()||a.isOdd())&&(n.iadd(l),a.isub(d)),n.iushrn(1),a.iushrn(1);for(var p=0,m=1;0==(i.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(i.iushrn(p);p-- >0;)(s.isOdd()||h.isOdd())&&(s.iadd(l),h.isub(d)),s.iushrn(1),h.iushrn(1);e.cmp(i)>=0?(e.isub(i),n.isub(s),a.isub(h)):(i.isub(e),s.isub(n),h.isub(a))}return{a:s,b:h,gcd:i.iushln(u)}},o.prototype._invmp=function(t){r(0===t.negative),r(!t.isZero());var e=this,i=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,a=new o(1),s=new o(0),h=i.clone();e.cmpn(1)>0&&i.cmpn(1)>0;){for(var u=0,l=1;0==(e.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(e.iushrn(u);u-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);for(var d=0,f=1;0==(i.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(i.iushrn(d);d-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);e.cmp(i)>=0?(e.isub(i),a.isub(s)):(i.isub(e),s.isub(a))}return(n=0===e.cmpn(1)?a:s).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),i=t.clone();e.negative=0,i.negative=0;for(var r=0;e.isEven()&&i.isEven();r++)e.iushrn(1),i.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;i.isEven();)i.iushrn(1);var n=e.cmp(i);if(n<0){var o=e;e=i,i=o}else if(0===n||0===i.cmpn(1))break;e.isub(i)}return i.iushln(r)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){r("number"==typeof t);var e=t%26,i=(t-e)/26,n=1<<e;if(this.length<=i)return this._expand(i+1),this.words[i]|=n,this;for(var o=n,a=i;0!==o&&a<this.length;a++){var s=0|this.words[a];o=(s+=o)>>>26,s&=67108863,this.words[a]=s}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,i=t<0;if(0!==this.negative&&!i)return-1;if(0===this.negative&&i)return 1;if(this.strip(),this.length>1)e=1;else{i&&(t=-t),r(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:n<t?-1:1}return 0!==this.negative?0|-e:e},o.prototype.cmp=function(t){if(0!==this.negative&&0===t.negative)return-1;if(0===this.negative&&0!==t.negative)return 1;var e=this.ucmp(t);return 0!==this.negative?0|-e:e},o.prototype.ucmp=function(t){if(this.length>t.length)return 1;if(this.length<t.length)return-1;for(var e=0,i=this.length-1;i>=0;i--){var r=0|this.words[i],n=0|t.words[i];if(r!==n){r<n?e=-1:r>n&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new M(t)},o.prototype.toRed=function(t){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return r(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return r(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var v={k256:null,p224:null,p192:null,p25519:null};function y(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function b(){y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function _(){y.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){y.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function A(){y.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function M(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else r(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function E(t){M.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}y.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},y.prototype.ireduce=function(t){var e,i=t;do{this.split(i,this.tmp),e=(i=(i=this.imulK(i)).iadd(this.tmp)).bitLength()}while(e>this.n);var r=e<this.n?-1:i.ucmp(this.p);return 0===r?(i.words[0]=0,i.length=1):r>0?i.isub(this.p):void 0!==i.strip?i.strip():i._strip(),i},y.prototype.split=function(t,e){t.iushrn(this.n,0,e)},y.prototype.imulK=function(t){return t.imul(this.k)},n(b,y),b.prototype.split=function(t,e){for(var i=4194303,r=Math.min(t.length,9),n=0;n<r;n++)e.words[n]=t.words[n];if(e.length=r,t.length<=9)return t.words[0]=0,void(t.length=1);var o=t.words[9];for(e.words[e.length++]=o&i,n=10;n<t.length;n++){var a=0|t.words[n];t.words[n-10]=(a&i)<<4|o>>>22,o=a}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},b.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,i=0;i<t.length;i++){var r=0|t.words[i];e+=977*r,t.words[i]=67108863&e,e=64*r+(e/67108864|0)}return 0===t.words[t.length-1]&&(t.length--,0===t.words[t.length-1]&&t.length--),t},n(_,y),n(w,y),n(A,y),A.prototype.imulK=function(t){for(var e=0,i=0;i<t.length;i++){var r=19*(0|t.words[i])+e,n=67108863&r;r>>>=26,t.words[i]=n,e=r}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(v[t])return v[t];var e;if("k256"===t)e=new b;else if("p224"===t)e=new _;else if("p192"===t)e=new w;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new A}return v[t]=e,e},M.prototype._verify1=function(t){r(0===t.negative,"red works only with positives"),r(t.red,"red works only with red numbers")},M.prototype._verify2=function(t,e){r(0==(t.negative|e.negative),"red works only with positives"),r(t.red&&t.red===e.red,"red works only with red numbers")},M.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},M.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},M.prototype.add=function(t,e){this._verify2(t,e);var i=t.add(e);return i.cmp(this.m)>=0&&i.isub(this.m),i._forceRed(this)},M.prototype.iadd=function(t,e){this._verify2(t,e);var i=t.iadd(e);return i.cmp(this.m)>=0&&i.isub(this.m),i},M.prototype.sub=function(t,e){this._verify2(t,e);var i=t.sub(e);return i.cmpn(0)<0&&i.iadd(this.m),i._forceRed(this)},M.prototype.isub=function(t,e){this._verify2(t,e);var i=t.isub(e);return i.cmpn(0)<0&&i.iadd(this.m),i},M.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},M.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},M.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},M.prototype.isqr=function(t){return this.imul(t,t.clone())},M.prototype.sqr=function(t){return this.mul(t,t)},M.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(r(e%2==1),3===e){var i=this.m.add(new o(1)).iushrn(2);return this.pow(t,i)}for(var n=this.m.subn(1),a=0;!n.isZero()&&0===n.andln(1);)a++,n.iushrn(1);r(!n.isZero());var s=new o(1).toRed(this),h=s.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);0!==this.pow(l,u).cmp(h);)l.redIAdd(h);for(var d=this.pow(l,n),f=this.pow(t,n.addn(1).iushrn(1)),c=this.pow(t,n),p=a;0!==c.cmp(s);){for(var m=c,g=0;0!==m.cmp(s);g++)m=m.redSqr();r(g<p);var v=this.pow(d,new o(1).iushln(p-g-1));f=f.redMul(v),d=v.redSqr(),c=c.redMul(d),p=g}return f},M.prototype.invm=function(t){var e=t._invmp(this.m);return 0!==e.negative?(e.negative=0,this.imod(e).redNeg()):this.imod(e)},M.prototype.pow=function(t,e){if(e.isZero())return new o(1).toRed(this);if(0===e.cmpn(1))return t.clone();var i=new Array(16);i[0]=new o(1).toRed(this),i[1]=t;for(var r=2;r<i.length;r++)i[r]=this.mul(i[r-1],t);var n=i[0],a=0,s=0,h=e.bitLength()%26;for(0===h&&(h=26),r=e.length-1;r>=0;r--){for(var u=e.words[r],l=h-1;l>=0;l--){var d=u>>l&1;n!==i[0]&&(n=this.sqr(n)),0!==d||0!==a?(a<<=1,a|=d,(4===++s||0===r&&0===l)&&(n=this.mul(n,i[a]),s=0,a=0)):s=0}h=26}return n},M.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},M.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new E(t)},n(E,M),E.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},E.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},E.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var i=t.imul(e),r=i.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=i.isub(r).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},E.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var i=t.mul(e),r=i.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=i.isub(r).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},E.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t,this)}).call(this,i(20)(t))},function(t,e){},function(t,e){},function(t){t.exports=JSON.parse('{"modp1":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},"modp2":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},"modp5":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},"modp14":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},"modp15":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},"modp16":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},"modp17":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},"modp18":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}')},function(t,e,i){(function(e){var r=i(108),n=new(i(109)),o=new r(24),a=new r(11),s=new r(10),h=new r(3),u=new r(7),l=i(107),d=i(25);function f(t,i){return i=i||"utf8",e.isBuffer(t)||(t=new e(t,i)),this._pub=new r(t),this}function c(t,i){return i=i||"utf8",e.isBuffer(t)||(t=new e(t,i)),this._priv=new r(t),this}t.exports=m;var p={};function m(t,e,i){this.setGenerator(e),this.__prime=new r(t),this._prime=r.mont(this.__prime),this._primeLen=t.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,i?(this.setPublicKey=f,this.setPrivateKey=c):this._primeCode=8}function g(t,i){var r=new e(t.toArray());return i?r.toString(i):r}Object.defineProperty(m.prototype,"verifyError",{enumerable:!0,get:function(){return"number"!=typeof this._primeCode&&(this._primeCode=function(t,e){var i=e.toString("hex"),r=[i,t.toString(16)].join("_");if(r in p)return p[r];var d,f=0;if(t.isEven()||!l.simpleSieve||!l.fermatTest(t)||!n.test(t))return f+=1,f+="02"===i||"05"===i?8:4,p[r]=f,f;switch(n.test(t.shrn(1))||(f+=2),i){case"02":t.mod(o).cmp(a)&&(f+=8);break;case"05":(d=t.mod(s)).cmp(h)&&d.cmp(u)&&(f+=8);break;default:f+=4}return p[r]=f,f}(this.__prime,this.__gen)),this._primeCode}}),m.prototype.generateKeys=function(){return this._priv||(this._priv=new r(d(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},m.prototype.computeSecret=function(t){var i=(t=(t=new r(t)).toRed(this._prime)).redPow(this._priv).fromRed(),n=new e(i.toArray()),o=this.getPrime();if(n.length<o.length){var a=new e(o.length-n.length);a.fill(0),n=e.concat([a,n])}return n},m.prototype.getPublicKey=function(t){return g(this._pub,t)},m.prototype.getPrivateKey=function(t){return g(this._priv,t)},m.prototype.getPrime=function(t){return g(this.__prime,t)},m.prototype.getGenerator=function(t){return g(this._gen,t)},m.prototype.setGenerator=function(t,i){return i=i||"utf8",e.isBuffer(t)||(t=new e(t,i)),this.__gen=t,this._gen=new r(t),this}}).call(this,i(9).Buffer)},function(t,e,i){var r=i(4).Buffer,n=i(35),o=i(198),a=i(3),s=i(206),h=i(237),u=i(94);function l(t){o.Writable.call(this);var e=u[t];if(!e)throw new Error("Unknown message digest");this._hashType=e.hash,this._hash=n(e.hash),this._tag=e.id,this._signType=e.sign}function d(t){o.Writable.call(this);var e=u[t];if(!e)throw new Error("Unknown message digest");this._hash=n(e.hash),this._tag=e.id,this._signType=e.sign}function f(t){return new l(t)}function c(t){return new d(t)}Object.keys(u).forEach((function(t){u[t].id=r.from(u[t].id,"hex"),u[t.toLowerCase()]=u[t]})),a(l,o.Writable),l.prototype._write=function(t,e,i){this._hash.update(t),i()},l.prototype.update=function(t,e){return"string"==typeof t&&(t=r.from(t,e)),this._hash.update(t),this},l.prototype.sign=function(t,e){this.end();var i=this._hash.digest(),r=s(i,t,this._hashType,this._signType,this._tag);return e?r.toString(e):r},a(d,o.Writable),d.prototype._write=function(t,e,i){this._hash.update(t),i()},d.prototype.update=function(t,e){return"string"==typeof t&&(t=r.from(t,e)),this._hash.update(t),this},d.prototype.verify=function(t,e,i){"string"==typeof e&&(e=r.from(e,i)),this.end();var n=this._hash.digest();return h(e,n,t,this._signType,this._tag)},t.exports={Sign:f,Verify:c,createSign:f,createVerify:c}},function(t,e,i){(e=t.exports=i(110)).Stream=e,e.Readable=e,e.Writable=i(114),e.Duplex=i(30),e.Transform=i(115),e.PassThrough=i(204),e.finished=i(64),e.pipeline=i(205)},function(t,e){},function(t,e,i){"use strict";function r(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,r)}return i}function n(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function o(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var a=i(9).Buffer,s=i(201).inspect,h=s&&s.custom||"inspect";t.exports=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.head=null,this.tail=null,this.length=0}var e,i,u;return e=t,i=[{key:"push",value:function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,i=""+e.data;e=e.next;)i+=t+e.data;return i}},{key:"concat",value:function(t){if(0===this.length)return a.alloc(0);for(var e,i,r,n=a.allocUnsafe(t>>>0),o=this.head,s=0;o;)e=o.data,i=n,r=s,a.prototype.copy.call(e,i,r),s+=o.data.length,o=o.next;return n}},{key:"consume",value:function(t,e){var i;return t<this.head.data.length?(i=this.head.data.slice(0,t),this.head.data=this.head.data.slice(t)):i=t===this.head.data.length?this.shift():e?this._getString(t):this._getBuffer(t),i}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(t){var e=this.head,i=1,r=e.data;for(t-=r.length;e=e.next;){var n=e.data,o=t>n.length?n.length:t;if(o===n.length?r+=n:r+=n.slice(0,t),0==(t-=o)){o===n.length?(++i,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=n.slice(o));break}++i}return this.length-=i,r}},{key:"_getBuffer",value:function(t){var e=a.allocUnsafe(t),i=this.head,r=1;for(i.data.copy(e),t-=i.data.length;i=i.next;){var n=i.data,o=t>n.length?n.length:t;if(n.copy(e,e.length-t,0,o),0==(t-=o)){o===n.length?(++r,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=n.slice(o));break}++r}return this.length-=r,e}},{key:h,value:function(t,e){return s(this,function(t){for(var e=1;e<arguments.length;e++){var i=null!=arguments[e]?arguments[e]:{};e%2?r(Object(i),!0).forEach((function(e){n(t,e,i[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):r(Object(i)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(i,e))}))}return t}({},e,{depth:0,customInspect:!1}))}}],i&&o(e.prototype,i),u&&o(e,u),t}()},function(t,e){},function(t,e,i){"use strict";(function(e){var r;function n(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}var o=i(64),a=Symbol("lastResolve"),s=Symbol("lastReject"),h=Symbol("error"),u=Symbol("ended"),l=Symbol("lastPromise"),d=Symbol("handlePromise"),f=Symbol("stream");function c(t,e){return{value:t,done:e}}function p(t){var e=t[a];if(null!==e){var i=t[f].read();null!==i&&(t[l]=null,t[a]=null,t[s]=null,e(c(i,!1)))}}function m(t){e.nextTick(p,t)}var g=Object.getPrototypeOf((function(){})),v=Object.setPrototypeOf((n(r={get stream(){return this[f]},next:function(){var t=this,i=this[h];if(null!==i)return Promise.reject(i);if(this[u])return Promise.resolve(c(void 0,!0));if(this[f].destroyed)return new Promise((function(i,r){e.nextTick((function(){t[h]?r(t[h]):i(c(void 0,!0))}))}));var r,n=this[l];if(n)r=new Promise(function(t,e){return function(i,r){t.then((function(){e[u]?i(c(void 0,!0)):e[d](i,r)}),r)}}(n,this));else{var o=this[f].read();if(null!==o)return Promise.resolve(c(o,!1));r=new Promise(this[d])}return this[l]=r,r}},Symbol.asyncIterator,(function(){return this})),n(r,"return",(function(){var t=this;return new Promise((function(e,i){t[f].destroy(null,(function(t){t?i(t):e(c(void 0,!0))}))}))})),r),g);t.exports=function(t){var e,i=Object.create(v,(n(e={},f,{value:t,writable:!0}),n(e,a,{value:null,writable:!0}),n(e,s,{value:null,writable:!0}),n(e,h,{value:null,writable:!0}),n(e,u,{value:t._readableState.endEmitted,writable:!0}),n(e,d,{value:function(t,e){var r=i[f].read();r?(i[l]=null,i[a]=null,i[s]=null,t(c(r,!1))):(i[a]=t,i[s]=e)},writable:!0}),e));return i[l]=null,o(t,(function(t){if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){var e=i[s];return null!==e&&(i[l]=null,i[a]=null,i[s]=null,e(t)),void(i[h]=t)}var r=i[a];null!==r&&(i[l]=null,i[a]=null,i[s]=null,r(c(void 0,!0))),i[u]=!0})),t.on("readable",m.bind(null,i)),i}}).call(this,i(8))},function(t,e){t.exports=function(){throw new Error("Readable.from is not available in the browser")}},function(t,e,i){"use strict";t.exports=n;var r=i(115);function n(t){if(!(this instanceof n))return new n(t);r.call(this,t)}i(3)(n,r),n.prototype._transform=function(t,e,i){i(null,t)}},function(t,e,i){"use strict";var r;var n=i(29).codes,o=n.ERR_MISSING_ARGS,a=n.ERR_STREAM_DESTROYED;function s(t){if(t)throw t}function h(t,e,n,o){o=function(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}(o);var s=!1;t.on("close",(function(){s=!0})),void 0===r&&(r=i(64)),r(t,{readable:e,writable:n},(function(t){if(t)return o(t);s=!0,o()}));var h=!1;return function(e){if(!s&&!h)return h=!0,function(t){return t.setHeader&&"function"==typeof t.abort}(t)?t.abort():"function"==typeof t.destroy?t.destroy():void o(e||new a("pipe"))}}function u(t){t()}function l(t,e){return t.pipe(e)}function d(t){return t.length?"function"!=typeof t[t.length-1]?s:t.pop():s}t.exports=function(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];var r,n=d(e);if(Array.isArray(e[0])&&(e=e[0]),e.length<2)throw new o("streams");var a=e.map((function(t,i){var o=i<e.length-1;return h(t,o,i>0,(function(t){r||(r=t),t&&a.forEach(u),o||(a.forEach(u),n(r))}))}));return e.reduce(l)}},function(t,e,i){var r=i(4).Buffer,n=i(92),o=i(65),a=i(67).ec,s=i(66),h=i(46),u=i(127);function l(t,e,i,o){if((t=r.from(t.toArray())).length<e.byteLength()){var a=r.alloc(e.byteLength()-t.length);t=r.concat([a,t])}var s=i.length,h=function(t,e){t=(t=d(t,e)).mod(e);var i=r.from(t.toArray());if(i.length<e.byteLength()){var n=r.alloc(e.byteLength()-i.length);i=r.concat([n,i])}return i}(i,e),u=r.alloc(s);u.fill(1);var l=r.alloc(s);return l=n(o,l).update(u).update(r.from([0])).update(t).update(h).digest(),u=n(o,l).update(u).digest(),{k:l=n(o,l).update(u).update(r.from([1])).update(t).update(h).digest(),v:u=n(o,l).update(u).digest()}}function d(t,e){var i=new s(t),r=(t.length<<3)-e.bitLength();return r>0&&i.ishrn(r),i}function f(t,e,i){var o,a;do{for(o=r.alloc(0);8*o.length<t.bitLength();)e.v=n(i,e.k).update(e.v).digest(),o=r.concat([o,e.v]);a=d(o,t),e.k=n(i,e.k).update(e.v).update(r.from([0])).digest(),e.v=n(i,e.k).update(e.v).digest()}while(-1!==a.cmp(t));return a}function c(t,e,i,r){return t.toRed(s.mont(i)).redPow(e).fromRed().mod(r)}t.exports=function(t,e,i,n,p){var m=h(e);if(m.curve){if("ecdsa"!==n&&"ecdsa/rsa"!==n)throw new Error("wrong private key type");return function(t,e){var i=u[e.curve.join(".")];if(!i)throw new Error("unknown curve "+e.curve.join("."));var n=new a(i).keyFromPrivate(e.privateKey).sign(t);return r.from(n.toDER())}(t,m)}if("dsa"===m.type){if("dsa"!==n)throw new Error("wrong private key type");return function(t,e,i){var n,o=e.params.priv_key,a=e.params.p,h=e.params.q,u=e.params.g,p=new s(0),m=d(t,h).mod(h),g=!1,v=l(o,h,t,i);for(;!1===g;)p=c(u,n=f(h,v,i),a,h),0===(g=n.invm(h).imul(m.add(o.mul(p))).mod(h)).cmpn(0)&&(g=!1,p=new s(0));return function(t,e){t=t.toArray(),e=e.toArray(),128&t[0]&&(t=[0].concat(t));128&e[0]&&(e=[0].concat(e));var i=[48,t.length+e.length+4,2,t.length];return i=i.concat(t,[2,e.length],e),r.from(i)}(p,g)}(t,m,i)}if("rsa"!==n&&"ecdsa/rsa"!==n)throw new Error("wrong private key type");t=r.concat([p,t]);for(var g=m.modulus.byteLength(),v=[0,1];t.length+v.length+1<g;)v.push(255);v.push(0);for(var y=-1;++y<t.length;)v.push(t[y]);return o(v,m)},t.exports.getKey=l,t.exports.makeKey=f},function(t,e){},function(t){t.exports=JSON.parse('{"_args":[["elliptic@6.5.4","G:\\\\yolin\\\\SkeyeWebPlayerSourceCode"]],"_from":"elliptic@6.5.4","_id":"elliptic@6.5.4","_inBundle":false,"_integrity":"sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==","_location":"/elliptic","_phantomChildren":{},"_requested":{"type":"version","registry":true,"raw":"elliptic@6.5.4","name":"elliptic","escapedName":"elliptic","rawSpec":"6.5.4","saveSpec":null,"fetchSpec":"6.5.4"},"_requiredBy":["/browserify-sign","/create-ecdh"],"_resolved":"https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz","_spec":"6.5.4","_where":"G:\\\\yolin\\\\SkeyeWebPlayerSourceCode","author":{"name":"Fedor Indutny","email":"fedor@indutny.com"},"bugs":{"url":"https://github.com/indutny/elliptic/issues"},"dependencies":{"bn.js":"^4.11.9","brorand":"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1","inherits":"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"},"description":"EC cryptography","devDependencies":{"brfs":"^2.0.2","coveralls":"^3.1.0","eslint":"^7.6.0","grunt":"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1","istanbul":"^0.4.5","mocha":"^8.0.1"},"files":["lib"],"homepage":"https://github.com/indutny/elliptic","keywords":["EC","Elliptic","curve","Cryptography"],"license":"MIT","main":"lib/elliptic.js","name":"elliptic","repository":{"type":"git","url":"git+ssh://git@github.com/indutny/elliptic.git"},"scripts":{"lint":"eslint lib test","lint:fix":"npm run lint -- --fix","test":"npm run lint && npm run unit","unit":"istanbul test _mocha --reporter=spec test/index.js","version":"grunt dist && git add dist/"},"version":"6.5.4"}')},function(t,e){},function(t,e,i){"use strict";var r=i(14),n=i(16),o=i(3),a=i(45),s=r.assert;function h(t){a.call(this,"short",t),this.a=new n(t.a,16).toRed(this.red),this.b=new n(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function u(t,e,i,r){a.BasePoint.call(this,t,"affine"),null===e&&null===i?(this.x=null,this.y=null,this.inf=!0):(this.x=new n(e,16),this.y=new n(i,16),r&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function l(t,e,i,r){a.BasePoint.call(this,t,"jacobian"),null===e&&null===i&&null===r?(this.x=this.curve.one,this.y=this.curve.one,this.z=new n(0)):(this.x=new n(e,16),this.y=new n(i,16),this.z=new n(r,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}o(h,a),t.exports=h,h.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,i;if(t.beta)e=new n(t.beta,16).toRed(this.red);else{var r=this._getEndoRoots(this.p);e=(e=r[0].cmp(r[1])<0?r[0]:r[1]).toRed(this.red)}if(t.lambda)i=new n(t.lambda,16);else{var o=this._getEndoRoots(this.n);0===this.g.mul(o[0]).x.cmp(this.g.x.redMul(e))?i=o[0]:(i=o[1],s(0===this.g.mul(i).x.cmp(this.g.x.redMul(e))))}return{beta:e,lambda:i,basis:t.basis?t.basis.map((function(t){return{a:new n(t.a,16),b:new n(t.b,16)}})):this._getEndoBasis(i)}}},h.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:n.mont(t),i=new n(2).toRed(e).redInvm(),r=i.redNeg(),o=new n(3).toRed(e).redNeg().redSqrt().redMul(i);return[r.redAdd(o).fromRed(),r.redSub(o).fromRed()]},h.prototype._getEndoBasis=function(t){for(var e,i,r,o,a,s,h,u,l,d=this.n.ushrn(Math.floor(this.n.bitLength()/2)),f=t,c=this.n.clone(),p=new n(1),m=new n(0),g=new n(0),v=new n(1),y=0;0!==f.cmpn(0);){var b=c.div(f);u=c.sub(b.mul(f)),l=g.sub(b.mul(p));var _=v.sub(b.mul(m));if(!r&&u.cmp(d)<0)e=h.neg(),i=p,r=u.neg(),o=l;else if(r&&2==++y)break;h=u,c=f,f=u,g=p,p=l,v=m,m=_}a=u.neg(),s=l;var w=r.sqr().add(o.sqr());return a.sqr().add(s.sqr()).cmp(w)>=0&&(a=e,s=i),r.negative&&(r=r.neg(),o=o.neg()),a.negative&&(a=a.neg(),s=s.neg()),[{a:r,b:o},{a:a,b:s}]},h.prototype._endoSplit=function(t){var e=this.endo.basis,i=e[0],r=e[1],n=r.b.mul(t).divRound(this.n),o=i.b.neg().mul(t).divRound(this.n),a=n.mul(i.a),s=o.mul(r.a),h=n.mul(i.b),u=o.mul(r.b);return{k1:t.sub(a).sub(s),k2:h.add(u).neg()}},h.prototype.pointFromX=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var i=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),r=i.redSqrt();if(0!==r.redSqr().redSub(i).cmp(this.zero))throw new Error("invalid point");var o=r.fromRed().isOdd();return(e&&!o||!e&&o)&&(r=r.redNeg()),this.point(t,r)},h.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,i=t.y,r=this.a.redMul(e),n=e.redSqr().redMul(e).redIAdd(r).redIAdd(this.b);return 0===i.redSqr().redISub(n).cmpn(0)},h.prototype._endoWnafMulAdd=function(t,e,i){for(var r=this._endoWnafT1,n=this._endoWnafT2,o=0;o<t.length;o++){var a=this._endoSplit(e[o]),s=t[o],h=s._getBeta();a.k1.negative&&(a.k1.ineg(),s=s.neg(!0)),a.k2.negative&&(a.k2.ineg(),h=h.neg(!0)),r[2*o]=s,r[2*o+1]=h,n[2*o]=a.k1,n[2*o+1]=a.k2}for(var u=this._wnafMulAdd(1,r,n,2*o,i),l=0;l<2*o;l++)r[l]=null,n[l]=null;return u},o(u,a.BasePoint),h.prototype.point=function(t,e,i){return new u(this,t,e,i)},h.prototype.pointFromJSON=function(t,e){return u.fromJSON(this,t,e)},u.prototype._getBeta=function(){if(this.curve.endo){var t=this.precomputed;if(t&&t.beta)return t.beta;var e=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(t){var i=this.curve,r=function(t){return i.point(t.x.redMul(i.endo.beta),t.y)};t.beta=e,e.precomputed={beta:null,naf:t.naf&&{wnd:t.naf.wnd,points:t.naf.points.map(r)},doubles:t.doubles&&{step:t.doubles.step,points:t.doubles.points.map(r)}}}return e}},u.prototype.toJSON=function(){return this.precomputed?[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]:[this.x,this.y]},u.fromJSON=function(t,e,i){"string"==typeof e&&(e=JSON.parse(e));var r=t.point(e[0],e[1],i);if(!e[2])return r;function n(e){return t.point(e[0],e[1],i)}var o=e[2];return r.precomputed={beta:null,doubles:o.doubles&&{step:o.doubles.step,points:[r].concat(o.doubles.points.map(n))},naf:o.naf&&{wnd:o.naf.wnd,points:[r].concat(o.naf.points.map(n))}},r},u.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+">"},u.prototype.isInfinity=function(){return this.inf},u.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var i=e.redSqr().redISub(this.x).redISub(t.x),r=e.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,r)},u.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,i=this.x.redSqr(),r=t.redInvm(),n=i.redAdd(i).redIAdd(i).redIAdd(e).redMul(r),o=n.redSqr().redISub(this.x.redAdd(this.x)),a=n.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,a)},u.prototype.getX=function(){return this.x.fromRed()},u.prototype.getY=function(){return this.y.fromRed()},u.prototype.mul=function(t){return t=new n(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},u.prototype.mulAdd=function(t,e,i){var r=[this,e],n=[t,i];return this.curve.endo?this.curve._endoWnafMulAdd(r,n):this.curve._wnafMulAdd(1,r,n,2)},u.prototype.jmulAdd=function(t,e,i){var r=[this,e],n=[t,i];return this.curve.endo?this.curve._endoWnafMulAdd(r,n,!0):this.curve._wnafMulAdd(1,r,n,2,!0)},u.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},u.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var i=this.precomputed,r=function(t){return t.neg()};e.precomputed={naf:i.naf&&{wnd:i.naf.wnd,points:i.naf.points.map(r)},doubles:i.doubles&&{step:i.doubles.step,points:i.doubles.points.map(r)}}}return e},u.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},o(l,a.BasePoint),h.prototype.jpoint=function(t,e,i){return new l(this,t,e,i)},l.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),i=this.x.redMul(e),r=this.y.redMul(e).redMul(t);return this.curve.point(i,r)},l.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},l.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),i=this.z.redSqr(),r=this.x.redMul(e),n=t.x.redMul(i),o=this.y.redMul(e.redMul(t.z)),a=t.y.redMul(i.redMul(this.z)),s=r.redSub(n),h=o.redSub(a);if(0===s.cmpn(0))return 0!==h.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=s.redSqr(),l=u.redMul(s),d=r.redMul(u),f=h.redSqr().redIAdd(l).redISub(d).redISub(d),c=h.redMul(d.redISub(f)).redISub(o.redMul(l)),p=this.z.redMul(t.z).redMul(s);return this.curve.jpoint(f,c,p)},l.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),i=this.x,r=t.x.redMul(e),n=this.y,o=t.y.redMul(e).redMul(this.z),a=i.redSub(r),s=n.redSub(o);if(0===a.cmpn(0))return 0!==s.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var h=a.redSqr(),u=h.redMul(a),l=i.redMul(h),d=s.redSqr().redIAdd(u).redISub(l).redISub(l),f=s.redMul(l.redISub(d)).redISub(n.redMul(u)),c=this.z.redMul(a);return this.curve.jpoint(d,f,c)},l.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var e;if(this.curve.zeroA||this.curve.threeA){var i=this;for(e=0;e<t;e++)i=i.dbl();return i}var r=this.curve.a,n=this.curve.tinv,o=this.x,a=this.y,s=this.z,h=s.redSqr().redSqr(),u=a.redAdd(a);for(e=0;e<t;e++){var l=o.redSqr(),d=u.redSqr(),f=d.redSqr(),c=l.redAdd(l).redIAdd(l).redIAdd(r.redMul(h)),p=o.redMul(d),m=c.redSqr().redISub(p.redAdd(p)),g=p.redISub(m),v=c.redMul(g);v=v.redIAdd(v).redISub(f);var y=u.redMul(s);e+1<t&&(h=h.redMul(f)),o=m,s=y,u=v}return this.curve.jpoint(o,u.redMul(n),s)},l.prototype.dbl=function(){return this.isInfinity()?this:this.curve.zeroA?this._zeroDbl():this.curve.threeA?this._threeDbl():this._dbl()},l.prototype._zeroDbl=function(){var t,e,i;if(this.zOne){var r=this.x.redSqr(),n=this.y.redSqr(),o=n.redSqr(),a=this.x.redAdd(n).redSqr().redISub(r).redISub(o);a=a.redIAdd(a);var s=r.redAdd(r).redIAdd(r),h=s.redSqr().redISub(a).redISub(a),u=o.redIAdd(o);u=(u=u.redIAdd(u)).redIAdd(u),t=h,e=s.redMul(a.redISub(h)).redISub(u),i=this.y.redAdd(this.y)}else{var l=this.x.redSqr(),d=this.y.redSqr(),f=d.redSqr(),c=this.x.redAdd(d).redSqr().redISub(l).redISub(f);c=c.redIAdd(c);var p=l.redAdd(l).redIAdd(l),m=p.redSqr(),g=f.redIAdd(f);g=(g=g.redIAdd(g)).redIAdd(g),t=m.redISub(c).redISub(c),e=p.redMul(c.redISub(t)).redISub(g),i=(i=this.y.redMul(this.z)).redIAdd(i)}return this.curve.jpoint(t,e,i)},l.prototype._threeDbl=function(){var t,e,i;if(this.zOne){var r=this.x.redSqr(),n=this.y.redSqr(),o=n.redSqr(),a=this.x.redAdd(n).redSqr().redISub(r).redISub(o);a=a.redIAdd(a);var s=r.redAdd(r).redIAdd(r).redIAdd(this.curve.a),h=s.redSqr().redISub(a).redISub(a);t=h;var u=o.redIAdd(o);u=(u=u.redIAdd(u)).redIAdd(u),e=s.redMul(a.redISub(h)).redISub(u),i=this.y.redAdd(this.y)}else{var l=this.z.redSqr(),d=this.y.redSqr(),f=this.x.redMul(d),c=this.x.redSub(l).redMul(this.x.redAdd(l));c=c.redAdd(c).redIAdd(c);var p=f.redIAdd(f),m=(p=p.redIAdd(p)).redAdd(p);t=c.redSqr().redISub(m),i=this.y.redAdd(this.z).redSqr().redISub(d).redISub(l);var g=d.redSqr();g=(g=(g=g.redIAdd(g)).redIAdd(g)).redIAdd(g),e=c.redMul(p.redISub(t)).redISub(g)}return this.curve.jpoint(t,e,i)},l.prototype._dbl=function(){var t=this.curve.a,e=this.x,i=this.y,r=this.z,n=r.redSqr().redSqr(),o=e.redSqr(),a=i.redSqr(),s=o.redAdd(o).redIAdd(o).redIAdd(t.redMul(n)),h=e.redAdd(e),u=(h=h.redIAdd(h)).redMul(a),l=s.redSqr().redISub(u.redAdd(u)),d=u.redISub(l),f=a.redSqr();f=(f=(f=f.redIAdd(f)).redIAdd(f)).redIAdd(f);var c=s.redMul(d).redISub(f),p=i.redAdd(i).redMul(r);return this.curve.jpoint(l,c,p)},l.prototype.trpl=function(){if(!this.curve.zeroA)return this.dbl().add(this);var t=this.x.redSqr(),e=this.y.redSqr(),i=this.z.redSqr(),r=e.redSqr(),n=t.redAdd(t).redIAdd(t),o=n.redSqr(),a=this.x.redAdd(e).redSqr().redISub(t).redISub(r),s=(a=(a=(a=a.redIAdd(a)).redAdd(a).redIAdd(a)).redISub(o)).redSqr(),h=r.redIAdd(r);h=(h=(h=h.redIAdd(h)).redIAdd(h)).redIAdd(h);var u=n.redIAdd(a).redSqr().redISub(o).redISub(s).redISub(h),l=e.redMul(u);l=(l=l.redIAdd(l)).redIAdd(l);var d=this.x.redMul(s).redISub(l);d=(d=d.redIAdd(d)).redIAdd(d);var f=this.y.redMul(u.redMul(h.redISub(u)).redISub(a.redMul(s)));f=(f=(f=f.redIAdd(f)).redIAdd(f)).redIAdd(f);var c=this.z.redAdd(a).redSqr().redISub(i).redISub(s);return this.curve.jpoint(d,f,c)},l.prototype.mul=function(t,e){return t=new n(t,e),this.curve._wnafMul(this,t)},l.prototype.eq=function(t){if("affine"===t.type)return this.eq(t.toJ());if(this===t)return!0;var e=this.z.redSqr(),i=t.z.redSqr();if(0!==this.x.redMul(i).redISub(t.x.redMul(e)).cmpn(0))return!1;var r=e.redMul(this.z),n=i.redMul(t.z);return 0===this.y.redMul(n).redISub(t.y.redMul(r)).cmpn(0)},l.prototype.eqXToP=function(t){var e=this.z.redSqr(),i=t.toRed(this.curve.red).redMul(e);if(0===this.x.cmp(i))return!0;for(var r=t.clone(),n=this.curve.redN.redMul(e);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(i.redIAdd(n),0===this.x.cmp(i))return!0}},l.prototype.inspect=function(){return this.isInfinity()?"<EC JPoint Infinity>":"<EC JPoint x: "+this.x.toString(16,2)+" y: "+this.y.toString(16,2)+" z: "+this.z.toString(16,2)+">"},l.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},function(t,e,i){"use strict";var r=i(16),n=i(3),o=i(45),a=i(14);function s(t){o.call(this,"mont",t),this.a=new r(t.a,16).toRed(this.red),this.b=new r(t.b,16).toRed(this.red),this.i4=new r(4).toRed(this.red).redInvm(),this.two=new r(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function h(t,e,i){o.BasePoint.call(this,t,"projective"),null===e&&null===i?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new r(e,16),this.z=new r(i,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}n(s,o),t.exports=s,s.prototype.validate=function(t){var e=t.normalize().x,i=e.redSqr(),r=i.redMul(e).redAdd(i.redMul(this.a)).redAdd(e);return 0===r.redSqrt().redSqr().cmp(r)},n(h,o.BasePoint),s.prototype.decodePoint=function(t,e){return this.point(a.toArray(t,e),1)},s.prototype.point=function(t,e){return new h(this,t,e)},s.prototype.pointFromJSON=function(t){return h.fromJSON(this,t)},h.prototype.precompute=function(){},h.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},h.fromJSON=function(t,e){return new h(t,e[0],e[1]||t.one)},h.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" z: "+this.z.fromRed().toString(16,2)+">"},h.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},h.prototype.dbl=function(){var t=this.x.redAdd(this.z).redSqr(),e=this.x.redSub(this.z).redSqr(),i=t.redSub(e),r=t.redMul(e),n=i.redMul(e.redAdd(this.curve.a24.redMul(i)));return this.curve.point(r,n)},h.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.diffAdd=function(t,e){var i=this.x.redAdd(this.z),r=this.x.redSub(this.z),n=t.x.redAdd(t.z),o=t.x.redSub(t.z).redMul(i),a=n.redMul(r),s=e.z.redMul(o.redAdd(a).redSqr()),h=e.x.redMul(o.redISub(a).redSqr());return this.curve.point(s,h)},h.prototype.mul=function(t){for(var e=t.clone(),i=this,r=this.curve.point(null,null),n=[];0!==e.cmpn(0);e.iushrn(1))n.push(e.andln(1));for(var o=n.length-1;o>=0;o--)0===n[o]?(i=i.diffAdd(r,this),r=r.dbl()):(r=i.diffAdd(r,this),i=i.dbl());return r},h.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.eq=function(t){return 0===this.getX().cmp(t.getX())},h.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},h.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},function(t,e,i){"use strict";var r=i(14),n=i(16),o=i(3),a=i(45),s=r.assert;function h(t){this.twisted=1!=(0|t.a),this.mOneA=this.twisted&&-1==(0|t.a),this.extended=this.mOneA,a.call(this,"edwards",t),this.a=new n(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new n(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new n(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),s(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1==(0|t.c)}function u(t,e,i,r,o){a.BasePoint.call(this,t,"projective"),null===e&&null===i&&null===r?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new n(e,16),this.y=new n(i,16),this.z=r?new n(r,16):this.curve.one,this.t=o&&new n(o,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}o(h,a),t.exports=h,h.prototype._mulA=function(t){return this.mOneA?t.redNeg():this.a.redMul(t)},h.prototype._mulC=function(t){return this.oneC?t:this.c.redMul(t)},h.prototype.jpoint=function(t,e,i,r){return this.point(t,e,i,r)},h.prototype.pointFromX=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var i=t.redSqr(),r=this.c2.redSub(this.a.redMul(i)),o=this.one.redSub(this.c2.redMul(this.d).redMul(i)),a=r.redMul(o.redInvm()),s=a.redSqrt();if(0!==s.redSqr().redSub(a).cmp(this.zero))throw new Error("invalid point");var h=s.fromRed().isOdd();return(e&&!h||!e&&h)&&(s=s.redNeg()),this.point(t,s)},h.prototype.pointFromY=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var i=t.redSqr(),r=i.redSub(this.c2),o=i.redMul(this.d).redMul(this.c2).redSub(this.a),a=r.redMul(o.redInvm());if(0===a.cmp(this.zero)){if(e)throw new Error("invalid point");return this.point(this.zero,t)}var s=a.redSqrt();if(0!==s.redSqr().redSub(a).cmp(this.zero))throw new Error("invalid point");return s.fromRed().isOdd()!==e&&(s=s.redNeg()),this.point(s,t)},h.prototype.validate=function(t){if(t.isInfinity())return!0;t.normalize();var e=t.x.redSqr(),i=t.y.redSqr(),r=e.redMul(this.a).redAdd(i),n=this.c2.redMul(this.one.redAdd(this.d.redMul(e).redMul(i)));return 0===r.cmp(n)},o(u,a.BasePoint),h.prototype.pointFromJSON=function(t){return u.fromJSON(this,t)},h.prototype.point=function(t,e,i,r){return new u(this,t,e,i,r)},u.fromJSON=function(t,e){return new u(t,e[0],e[1],e[2])},u.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+" z: "+this.z.fromRed().toString(16,2)+">"},u.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},u.prototype._extDbl=function(){var t=this.x.redSqr(),e=this.y.redSqr(),i=this.z.redSqr();i=i.redIAdd(i);var r=this.curve._mulA(t),n=this.x.redAdd(this.y).redSqr().redISub(t).redISub(e),o=r.redAdd(e),a=o.redSub(i),s=r.redSub(e),h=n.redMul(a),u=o.redMul(s),l=n.redMul(s),d=a.redMul(o);return this.curve.point(h,u,d,l)},u.prototype._projDbl=function(){var t,e,i,r,n,o,a=this.x.redAdd(this.y).redSqr(),s=this.x.redSqr(),h=this.y.redSqr();if(this.curve.twisted){var u=(r=this.curve._mulA(s)).redAdd(h);this.zOne?(t=a.redSub(s).redSub(h).redMul(u.redSub(this.curve.two)),e=u.redMul(r.redSub(h)),i=u.redSqr().redSub(u).redSub(u)):(n=this.z.redSqr(),o=u.redSub(n).redISub(n),t=a.redSub(s).redISub(h).redMul(o),e=u.redMul(r.redSub(h)),i=u.redMul(o))}else r=s.redAdd(h),n=this.curve._mulC(this.z).redSqr(),o=r.redSub(n).redSub(n),t=this.curve._mulC(a.redISub(r)).redMul(o),e=this.curve._mulC(r).redMul(s.redISub(h)),i=r.redMul(o);return this.curve.point(t,e,i)},u.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},u.prototype._extAdd=function(t){var e=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),i=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),r=this.t.redMul(this.curve.dd).redMul(t.t),n=this.z.redMul(t.z.redAdd(t.z)),o=i.redSub(e),a=n.redSub(r),s=n.redAdd(r),h=i.redAdd(e),u=o.redMul(a),l=s.redMul(h),d=o.redMul(h),f=a.redMul(s);return this.curve.point(u,l,f,d)},u.prototype._projAdd=function(t){var e,i,r=this.z.redMul(t.z),n=r.redSqr(),o=this.x.redMul(t.x),a=this.y.redMul(t.y),s=this.curve.d.redMul(o).redMul(a),h=n.redSub(s),u=n.redAdd(s),l=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(o).redISub(a),d=r.redMul(h).redMul(l);return this.curve.twisted?(e=r.redMul(u).redMul(a.redSub(this.curve._mulA(o))),i=h.redMul(u)):(e=r.redMul(u).redMul(a.redSub(o)),i=this.curve._mulC(h).redMul(u)),this.curve.point(d,e,i)},u.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)},u.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)},u.prototype.mulAdd=function(t,e,i){return this.curve._wnafMulAdd(1,[this,e],[t,i],2,!1)},u.prototype.jmulAdd=function(t,e,i){return this.curve._wnafMulAdd(1,[this,e],[t,i],2,!0)},u.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this},u.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},u.prototype.getX=function(){return this.normalize(),this.x.fromRed()},u.prototype.getY=function(){return this.normalize(),this.y.fromRed()},u.prototype.eq=function(t){return this===t||0===this.getX().cmp(t.getX())&&0===this.getY().cmp(t.getY())},u.prototype.eqXToP=function(t){var e=t.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(e))return!0;for(var i=t.clone(),r=this.curve.redN.redMul(this.z);;){if(i.iadd(this.curve.n),i.cmp(this.curve.p)>=0)return!1;if(e.redIAdd(r),0===this.x.cmp(e))return!0}},u.prototype.toP=u.prototype.normalize,u.prototype.mixedAdd=u.prototype.add},function(t,e,i){"use strict";e.sha1=i(214),e.sha224=i(215),e.sha256=i(119),e.sha384=i(216),e.sha512=i(120)},function(t,e,i){"use strict";var r=i(15),n=i(38),o=i(118),a=r.rotl32,s=r.sum32,h=r.sum32_5,u=o.ft_1,l=n.BlockHash,d=[1518500249,1859775393,2400959708,3395469782];function f(){if(!(this instanceof f))return new f;l.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}r.inherits(f,l),t.exports=f,f.blockSize=512,f.outSize=160,f.hmacStrength=80,f.padLength=64,f.prototype._update=function(t,e){for(var i=this.W,r=0;r<16;r++)i[r]=t[e+r];for(;r<i.length;r++)i[r]=a(i[r-3]^i[r-8]^i[r-14]^i[r-16],1);var n=this.h[0],o=this.h[1],l=this.h[2],f=this.h[3],c=this.h[4];for(r=0;r<i.length;r++){var p=~~(r/20),m=h(a(n,5),u(p,o,l,f),c,i[r],d[p]);c=f,f=l,l=a(o,30),o=n,n=m}this.h[0]=s(this.h[0],n),this.h[1]=s(this.h[1],o),this.h[2]=s(this.h[2],l),this.h[3]=s(this.h[3],f),this.h[4]=s(this.h[4],c)},f.prototype._digest=function(t){return"hex"===t?r.toHex32(this.h,"big"):r.split32(this.h,"big")}},function(t,e,i){"use strict";var r=i(15),n=i(119);function o(){if(!(this instanceof o))return new o;n.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}r.inherits(o,n),t.exports=o,o.blockSize=512,o.outSize=224,o.hmacStrength=192,o.padLength=64,o.prototype._digest=function(t){return"hex"===t?r.toHex32(this.h.slice(0,7),"big"):r.split32(this.h.slice(0,7),"big")}},function(t,e,i){"use strict";var r=i(15),n=i(120);function o(){if(!(this instanceof o))return new o;n.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}r.inherits(o,n),t.exports=o,o.blockSize=1024,o.outSize=384,o.hmacStrength=192,o.padLength=128,o.prototype._digest=function(t){return"hex"===t?r.toHex32(this.h.slice(0,12),"big"):r.split32(this.h.slice(0,12),"big")}},function(t,e,i){"use strict";var r=i(15),n=i(38),o=r.rotl32,a=r.sum32,s=r.sum32_3,h=r.sum32_4,u=n.BlockHash;function l(){if(!(this instanceof l))return new l;u.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function d(t,e,i,r){return t<=15?e^i^r:t<=31?e&i|~e&r:t<=47?(e|~i)^r:t<=63?e&r|i&~r:e^(i|~r)}function f(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function c(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}r.inherits(l,u),e.ripemd160=l,l.blockSize=512,l.outSize=160,l.hmacStrength=192,l.padLength=64,l.prototype._update=function(t,e){for(var i=this.h[0],r=this.h[1],n=this.h[2],u=this.h[3],l=this.h[4],y=i,b=r,_=n,w=u,A=l,M=0;M<80;M++){var E=a(o(h(i,d(M,r,n,u),t[p[M]+e],f(M)),g[M]),l);i=l,l=u,u=o(n,10),n=r,r=E,E=a(o(h(y,d(79-M,b,_,w),t[m[M]+e],c(M)),v[M]),A),y=A,A=w,w=o(_,10),_=b,b=E}E=s(this.h[1],n,w),this.h[1]=s(this.h[2],u,A),this.h[2]=s(this.h[3],l,y),this.h[3]=s(this.h[4],i,b),this.h[4]=s(this.h[0],r,_),this.h[0]=E},l.prototype._digest=function(t){return"hex"===t?r.toHex32(this.h,"little"):r.split32(this.h,"little")};var p=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],m=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],g=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],v=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]},function(t,e,i){"use strict";var r=i(15),n=i(13);function o(t,e,i){if(!(this instanceof o))return new o(t,e,i);this.Hash=t,this.blockSize=t.blockSize/8,this.outSize=t.outSize/8,this.inner=null,this.outer=null,this._init(r.toArray(e,i))}t.exports=o,o.prototype._init=function(t){t.length>this.blockSize&&(t=(new this.Hash).update(t).digest()),n(t.length<=this.blockSize);for(var e=t.length;e<this.blockSize;e++)t.push(0);for(e=0;e<t.length;e++)t[e]^=54;for(this.inner=(new this.Hash).update(t),e=0;e<t.length;e++)t[e]^=106;this.outer=(new this.Hash).update(t)},o.prototype.update=function(t,e){return this.inner.update(t,e),this},o.prototype.digest=function(t){return this.outer.update(this.inner.digest()),this.outer.digest(t)}},function(t,e){t.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}},function(t,e,i){"use strict";var r=i(16),n=i(221),o=i(14),a=i(68),s=i(63),h=o.assert,u=i(222),l=i(223);function d(t){if(!(this instanceof d))return new d(t);"string"==typeof t&&(h(Object.prototype.hasOwnProperty.call(a,t),"Unknown curve "+t),t=a[t]),t instanceof a.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}t.exports=d,d.prototype.keyPair=function(t){return new u(this,t)},d.prototype.keyFromPrivate=function(t,e){return u.fromPrivate(this,t,e)},d.prototype.keyFromPublic=function(t,e){return u.fromPublic(this,t,e)},d.prototype.genKeyPair=function(t){t||(t={});for(var e=new n({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||s(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),i=this.n.byteLength(),o=this.n.sub(new r(2));;){var a=new r(e.generate(i));if(!(a.cmp(o)>0))return a.iaddn(1),this.keyFromPrivate(a)}},d.prototype._truncateToN=function(t,e){var i=8*t.byteLength()-this.n.bitLength();return i>0&&(t=t.ushrn(i)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},d.prototype.sign=function(t,e,i,o){"object"==typeof i&&(o=i,i=null),o||(o={}),e=this.keyFromPrivate(e,i),t=this._truncateToN(new r(t,16));for(var a=this.n.byteLength(),s=e.getPrivate().toArray("be",a),h=t.toArray("be",a),u=new n({hash:this.hash,entropy:s,nonce:h,pers:o.pers,persEnc:o.persEnc||"utf8"}),d=this.n.sub(new r(1)),f=0;;f++){var c=o.k?o.k(f):new r(u.generate(this.n.byteLength()));if(!((c=this._truncateToN(c,!0)).cmpn(1)<=0||c.cmp(d)>=0)){var p=this.g.mul(c);if(!p.isInfinity()){var m=p.getX(),g=m.umod(this.n);if(0!==g.cmpn(0)){var v=c.invm(this.n).mul(g.mul(e.getPrivate()).iadd(t));if(0!==(v=v.umod(this.n)).cmpn(0)){var y=(p.getY().isOdd()?1:0)|(0!==m.cmp(g)?2:0);return o.canonical&&v.cmp(this.nh)>0&&(v=this.n.sub(v),y^=1),new l({r:g,s:v,recoveryParam:y})}}}}}},d.prototype.verify=function(t,e,i,n){t=this._truncateToN(new r(t,16)),i=this.keyFromPublic(i,n);var o=(e=new l(e,"hex")).r,a=e.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(a.cmpn(1)<0||a.cmp(this.n)>=0)return!1;var s,h=a.invm(this.n),u=h.mul(t).umod(this.n),d=h.mul(o).umod(this.n);return this.curve._maxwellTrick?!(s=this.g.jmulAdd(u,i.getPublic(),d)).isInfinity()&&s.eqXToP(o):!(s=this.g.mulAdd(u,i.getPublic(),d)).isInfinity()&&0===s.getX().umod(this.n).cmp(o)},d.prototype.recoverPubKey=function(t,e,i,n){h((3&i)===i,"The recovery param is more than two bits"),e=new l(e,n);var o=this.n,a=new r(t),s=e.r,u=e.s,d=1&i,f=i>>1;if(s.cmp(this.curve.p.umod(this.curve.n))>=0&&f)throw new Error("Unable to find sencond key candinate");s=f?this.curve.pointFromX(s.add(this.curve.n),d):this.curve.pointFromX(s,d);var c=e.r.invm(o),p=o.sub(a).mul(c).umod(o),m=u.mul(c).umod(o);return this.g.mulAdd(p,s,m)},d.prototype.getKeyRecoveryParam=function(t,e,i,r){if(null!==(e=new l(e,r)).recoveryParam)return e.recoveryParam;for(var n=0;n<4;n++){var o;try{o=this.recoverPubKey(t,e,n)}catch(t){continue}if(o.eq(i))return n}throw new Error("Unable to find valid recovery factor")}},function(t,e,i){"use strict";var r=i(69),n=i(116),o=i(13);function a(t){if(!(this instanceof a))return new a(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=n.toArray(t.entropy,t.entropyEnc||"hex"),i=n.toArray(t.nonce,t.nonceEnc||"hex"),r=n.toArray(t.pers,t.persEnc||"hex");o(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,i,r)}t.exports=a,a.prototype._init=function(t,e,i){var r=t.concat(e).concat(i);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n<this.V.length;n++)this.K[n]=0,this.V[n]=1;this._update(r),this._reseed=1,this.reseedInterval=281474976710656},a.prototype._hmac=function(){return new r.hmac(this.hash,this.K)},a.prototype._update=function(t){var e=this._hmac().update(this.V).update([0]);t&&(e=e.update(t)),this.K=e.digest(),this.V=this._hmac().update(this.V).digest(),t&&(this.K=this._hmac().update(this.V).update([1]).update(t).digest(),this.V=this._hmac().update(this.V).digest())},a.prototype.reseed=function(t,e,i,r){"string"!=typeof e&&(r=i,i=e,e=null),t=n.toArray(t,e),i=n.toArray(i,r),o(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(i||[])),this._reseed=1},a.prototype.generate=function(t,e,i,r){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(r=i,i=e,e=null),i&&(i=n.toArray(i,r||"hex"),this._update(i));for(var o=[];o.length<t;)this.V=this._hmac().update(this.V).digest(),o=o.concat(this.V);var a=o.slice(0,t);return this._update(i),this._reseed++,n.encode(a,e)}},function(t,e,i){"use strict";var r=i(16),n=i(14).assert;function o(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}t.exports=o,o.fromPublic=function(t,e,i){return e instanceof o?e:new o(t,{pub:e,pubEnc:i})},o.fromPrivate=function(t,e,i){return e instanceof o?e:new o(t,{priv:e,privEnc:i})},o.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},o.prototype.getPublic=function(t,e){return"string"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},o.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},o.prototype._importPrivate=function(t,e){this.priv=new r(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},o.prototype._importPublic=function(t,e){if(t.x||t.y)return"mont"===this.ec.curve.type?n(t.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||n(t.x&&t.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(t.x,t.y));this.pub=this.ec.curve.decodePoint(t,e)},o.prototype.derive=function(t){return t.validate()||n(t.validate(),"public point not validated"),t.mul(this.priv).getX()},o.prototype.sign=function(t,e,i){return this.ec.sign(t,this,e,i)},o.prototype.verify=function(t,e){return this.ec.verify(t,e,this)},o.prototype.inspect=function(){return"<Key priv: "+(this.priv&&this.priv.toString(16,2))+" pub: "+(this.pub&&this.pub.inspect())+" >"}},function(t,e,i){"use strict";var r=i(16),n=i(14),o=n.assert;function a(t,e){if(t instanceof a)return t;this._importDER(t,e)||(o(t.r&&t.s,"Signature without r or s"),this.r=new r(t.r,16),this.s=new r(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}function s(){this.place=0}function h(t,e){var i=t[e.place++];if(!(128&i))return i;var r=15&i;if(0===r||r>4)return!1;for(var n=0,o=0,a=e.place;o<r;o++,a++)n<<=8,n|=t[a],n>>>=0;return!(n<=127)&&(e.place=a,n)}function u(t){for(var e=0,i=t.length-1;!t[e]&&!(128&t[e+1])&&e<i;)e++;return 0===e?t:t.slice(e)}function l(t,e){if(e<128)t.push(e);else{var i=1+(Math.log(e)/Math.LN2>>>3);for(t.push(128|i);--i;)t.push(e>>>(i<<3)&255);t.push(e)}}t.exports=a,a.prototype._importDER=function(t,e){t=n.toArray(t,e);var i=new s;if(48!==t[i.place++])return!1;var o=h(t,i);if(!1===o)return!1;if(o+i.place!==t.length)return!1;if(2!==t[i.place++])return!1;var a=h(t,i);if(!1===a)return!1;var u=t.slice(i.place,a+i.place);if(i.place+=a,2!==t[i.place++])return!1;var l=h(t,i);if(!1===l)return!1;if(t.length!==l+i.place)return!1;var d=t.slice(i.place,l+i.place);if(0===u[0]){if(!(128&u[1]))return!1;u=u.slice(1)}if(0===d[0]){if(!(128&d[1]))return!1;d=d.slice(1)}return this.r=new r(u),this.s=new r(d),this.recoveryParam=null,!0},a.prototype.toDER=function(t){var e=this.r.toArray(),i=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&i[0]&&(i=[0].concat(i)),e=u(e),i=u(i);!(i[0]||128&i[1]);)i=i.slice(1);var r=[2];l(r,e.length),(r=r.concat(e)).push(2),l(r,i.length);var o=r.concat(i),a=[48];return l(a,o.length),a=a.concat(o),n.encode(a,t)}},function(t,e,i){"use strict";var r=i(69),n=i(68),o=i(14),a=o.assert,s=o.parseBytes,h=i(225),u=i(226);function l(t){if(a("ed25519"===t,"only tested with ed25519 so far"),!(this instanceof l))return new l(t);t=n[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=r.sha512}t.exports=l,l.prototype.sign=function(t,e){t=s(t);var i=this.keyFromSecret(e),r=this.hashInt(i.messagePrefix(),t),n=this.g.mul(r),o=this.encodePoint(n),a=this.hashInt(o,i.pubBytes(),t).mul(i.priv()),h=r.add(a).umod(this.curve.n);return this.makeSignature({R:n,S:h,Rencoded:o})},l.prototype.verify=function(t,e,i){t=s(t),e=this.makeSignature(e);var r=this.keyFromPublic(i),n=this.hashInt(e.Rencoded(),r.pubBytes(),t),o=this.g.mul(e.S());return e.R().add(r.pub().mul(n)).eq(o)},l.prototype.hashInt=function(){for(var t=this.hash(),e=0;e<arguments.length;e++)t.update(arguments[e]);return o.intFromLE(t.digest()).umod(this.curve.n)},l.prototype.keyFromPublic=function(t){return h.fromPublic(this,t)},l.prototype.keyFromSecret=function(t){return h.fromSecret(this,t)},l.prototype.makeSignature=function(t){return t instanceof u?t:new u(this,t)},l.prototype.encodePoint=function(t){var e=t.getY().toArray("le",this.encodingLength);return e[this.encodingLength-1]|=t.getX().isOdd()?128:0,e},l.prototype.decodePoint=function(t){var e=(t=o.parseBytes(t)).length-1,i=t.slice(0,e).concat(-129&t[e]),r=0!=(128&t[e]),n=o.intFromLE(i);return this.curve.pointFromY(n,r)},l.prototype.encodeInt=function(t){return t.toArray("le",this.encodingLength)},l.prototype.decodeInt=function(t){return o.intFromLE(t)},l.prototype.isPoint=function(t){return t instanceof this.pointClass}},function(t,e,i){"use strict";var r=i(14),n=r.assert,o=r.parseBytes,a=r.cachedProperty;function s(t,e){this.eddsa=t,this._secret=o(e.secret),t.isPoint(e.pub)?this._pub=e.pub:this._pubBytes=o(e.pub)}s.fromPublic=function(t,e){return e instanceof s?e:new s(t,{pub:e})},s.fromSecret=function(t,e){return e instanceof s?e:new s(t,{secret:e})},s.prototype.secret=function(){return this._secret},a(s,"pubBytes",(function(){return this.eddsa.encodePoint(this.pub())})),a(s,"pub",(function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())})),a(s,"privBytes",(function(){var t=this.eddsa,e=this.hash(),i=t.encodingLength-1,r=e.slice(0,t.encodingLength);return r[0]&=248,r[i]&=127,r[i]|=64,r})),a(s,"priv",(function(){return this.eddsa.decodeInt(this.privBytes())})),a(s,"hash",(function(){return this.eddsa.hash().update(this.secret()).digest()})),a(s,"messagePrefix",(function(){return this.hash().slice(this.eddsa.encodingLength)})),s.prototype.sign=function(t){return n(this._secret,"KeyPair can only verify"),this.eddsa.sign(t,this)},s.prototype.verify=function(t,e){return this.eddsa.verify(t,e,this)},s.prototype.getSecret=function(t){return n(this._secret,"KeyPair is public only"),r.encode(this.secret(),t)},s.prototype.getPublic=function(t){return r.encode(this.pubBytes(),t)},t.exports=s},function(t,e,i){"use strict";var r=i(16),n=i(14),o=n.assert,a=n.cachedProperty,s=n.parseBytes;function h(t,e){this.eddsa=t,"object"!=typeof e&&(e=s(e)),Array.isArray(e)&&(e={R:e.slice(0,t.encodingLength),S:e.slice(t.encodingLength)}),o(e.R&&e.S,"Signature without R or S"),t.isPoint(e.R)&&(this._R=e.R),e.S instanceof r&&(this._S=e.S),this._Rencoded=Array.isArray(e.R)?e.R:e.Rencoded,this._Sencoded=Array.isArray(e.S)?e.S:e.Sencoded}a(h,"S",(function(){return this.eddsa.decodeInt(this.Sencoded())})),a(h,"R",(function(){return this.eddsa.decodePoint(this.Rencoded())})),a(h,"Rencoded",(function(){return this.eddsa.encodePoint(this.R())})),a(h,"Sencoded",(function(){return this.eddsa.encodeInt(this.S())})),h.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())},h.prototype.toHex=function(){return n.encode(this.toBytes(),"hex").toUpperCase()},t.exports=h},function(t,e,i){"use strict";var r=i(121);e.certificate=i(234);var n=r.define("RSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())}));e.RSAPrivateKey=n;var o=r.define("RSAPublicKey",(function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())}));e.RSAPublicKey=o;var a=r.define("SubjectPublicKeyInfo",(function(){this.seq().obj(this.key("algorithm").use(s),this.key("subjectPublicKey").bitstr())}));e.PublicKey=a;var s=r.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())})),h=r.define("PrivateKeyInfo",(function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(s),this.key("subjectPrivateKey").octstr())}));e.PrivateKey=h;var u=r.define("EncryptedPrivateKeyInfo",(function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())}));e.EncryptedPrivateKey=u;var l=r.define("DSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())}));e.DSAPrivateKey=l,e.DSAparam=r.define("DSAparam",(function(){this.int()}));var d=r.define("ECPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(f),this.key("publicKey").optional().explicit(1).bitstr())}));e.ECPrivateKey=d;var f=r.define("ECParameters",(function(){this.choice({namedCurve:this.objid()})}));e.signature=r.define("signature",(function(){this.seq().obj(this.key("r").int(),this.key("s").int())}))},function(t,e){},function(t,e,i){"use strict";var r=i(123),n=i(125),o=i(3);function a(t,e){this.name=t,this.body=e,this.decoders={},this.encoders={}}e.define=function(t,e){return new a(t,e)},a.prototype._createNamed=function(t){var e=this.name;function i(t){this._initNamed(t,e)}return o(i,t),i.prototype._initNamed=function(e,i){t.call(this,e,i)},new i(this)},a.prototype._getDecoder=function(t){return t=t||"der",this.decoders.hasOwnProperty(t)||(this.decoders[t]=this._createNamed(n[t])),this.decoders[t]},a.prototype.decode=function(t,e,i){return this._getDecoder(e).decode(t,i)},a.prototype._getEncoder=function(t){return t=t||"der",this.encoders.hasOwnProperty(t)||(this.encoders[t]=this._createNamed(r[t])),this.encoders[t]},a.prototype.encode=function(t,e,i){return this._getEncoder(e).encode(t,i)}},function(t,e,i){"use strict";var r=i(3),n=i(124);function o(t){n.call(this,t),this.enc="pem"}r(o,n),t.exports=o,o.prototype.encode=function(t,e){for(var i=n.prototype.encode.call(this,t).toString("base64"),r=["-----BEGIN "+e.label+"-----"],o=0;o<i.length;o+=64)r.push(i.slice(o,o+64));return r.push("-----END "+e.label+"-----"),r.join("\n")}},function(t,e,i){"use strict";var r=i(3),n=i(70).Buffer,o=i(126);function a(t){o.call(this,t),this.enc="pem"}r(a,o),t.exports=a,a.prototype.decode=function(t,e){for(var i=t.toString().split(/[\r\n]+/g),r=e.label.toUpperCase(),a=/^-----(BEGIN|END) ([^-]+)-----$/,s=-1,h=-1,u=0;u<i.length;u++){var l=i[u].match(a);if(null!==l&&l[2]===r){if(-1!==s){if("END"!==l[1])break;h=u;break}if("BEGIN"!==l[1])break;s=u}}if(-1===s||-1===h)throw new Error("PEM section not found for: "+r);var d=i.slice(s+1,h).join("");d.replace(/[^a-z0-9+/=]+/gi,"");var f=n.from(d,"base64");return o.prototype.decode.call(this,f,e)}},function(t,e,i){"use strict";var r=e;r.Reporter=i(72).Reporter,r.DecoderBuffer=i(39).DecoderBuffer,r.EncoderBuffer=i(39).EncoderBuffer,r.Node=i(71)},function(t,e,i){"use strict";var r=e;r._reverse=function(t){var e={};return Object.keys(t).forEach((function(i){(0|i)==i&&(i|=0);var r=t[i];e[r]=i})),e},r.der=i(73)},function(t,e,i){"use strict";var r=i(121),n=r.define("Time",(function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})})),o=r.define("AttributeTypeValue",(function(){this.seq().obj(this.key("type").objid(),this.key("value").any())})),a=r.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())})),s=r.define("SubjectPublicKeyInfo",(function(){this.seq().obj(this.key("algorithm").use(a),this.key("subjectPublicKey").bitstr())})),h=r.define("RelativeDistinguishedName",(function(){this.setof(o)})),u=r.define("RDNSequence",(function(){this.seqof(h)})),l=r.define("Name",(function(){this.choice({rdnSequence:this.use(u)})})),d=r.define("Validity",(function(){this.seq().obj(this.key("notBefore").use(n),this.key("notAfter").use(n))})),f=r.define("Extension",(function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())})),c=r.define("TBSCertificate",(function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(a),this.key("issuer").use(l),this.key("validity").use(d),this.key("subject").use(l),this.key("subjectPublicKeyInfo").use(s),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(f).optional())})),p=r.define("X509Certificate",(function(){this.seq().obj(this.key("tbsCertificate").use(c),this.key("signatureAlgorithm").use(a),this.key("signatureValue").bitstr())}));t.exports=p},function(t){t.exports=JSON.parse('{"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}')},function(t,e,i){var r=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m,n=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,o=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m,a=i(44),s=i(61),h=i(4).Buffer;t.exports=function(t,e){var i,u=t.toString(),l=u.match(r);if(l){var d="aes"+l[1],f=h.from(l[2],"hex"),c=h.from(l[3].replace(/[\r\n]/g,""),"base64"),p=a(e,f.slice(0,8),parseInt(l[1],10)).key,m=[],g=s.createDecipheriv(d,p,f);m.push(g.update(c)),m.push(g.final()),i=h.concat(m)}else{var v=u.match(o);i=h.from(v[2].replace(/[\r\n]/g,""),"base64")}return{tag:u.match(n)[1],data:i}}},function(t,e,i){var r=i(4).Buffer,n=i(66),o=i(67).ec,a=i(46),s=i(127);function h(t,e){if(t.cmpn(0)<=0)throw new Error("invalid sig");if(t.cmp(e)>=e)throw new Error("invalid sig")}t.exports=function(t,e,i,u,l){var d=a(i);if("ec"===d.type){if("ecdsa"!==u&&"ecdsa/rsa"!==u)throw new Error("wrong public key type");return function(t,e,i){var r=s[i.data.algorithm.curve.join(".")];if(!r)throw new Error("unknown curve "+i.data.algorithm.curve.join("."));var n=new o(r),a=i.data.subjectPrivateKey.data;return n.verify(e,t,a)}(t,e,d)}if("dsa"===d.type){if("dsa"!==u)throw new Error("wrong public key type");return function(t,e,i){var r=i.data.p,o=i.data.q,s=i.data.g,u=i.data.pub_key,l=a.signature.decode(t,"der"),d=l.s,f=l.r;h(d,o),h(f,o);var c=n.mont(r),p=d.invm(o);return 0===s.toRed(c).redPow(new n(e).mul(p).mod(o)).fromRed().mul(u.toRed(c).redPow(f.mul(p).mod(o)).fromRed()).mod(r).mod(o).cmp(f)}(t,e,d)}if("rsa"!==u&&"ecdsa/rsa"!==u)throw new Error("wrong public key type");e=r.concat([l,e]);for(var f=d.modulus.byteLength(),c=[1],p=0;e.length+c.length+2<f;)c.push(255),p++;c.push(0);for(var m=-1;++m<e.length;)c.push(e[m]);c=r.from(c);var g=n.mont(d.modulus);t=(t=new n(t).toRed(g)).redPow(new n(d.publicExponent)),t=r.from(t.fromRed().toArray());var v=p<8?1:0;for(f=Math.min(t.length,c.length),t.length!==c.length&&(v=1),m=-1;++m<f;)v|=t[m]^c[m];return 0===v}},function(t,e,i){(function(e){var r=i(67),n=i(239);t.exports=function(t){return new a(t)};var o={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};function a(t){this.curveType=o[t],this.curveType||(this.curveType={name:t}),this.curve=new r.ec(this.curveType.name),this.keys=void 0}function s(t,i,r){Array.isArray(t)||(t=t.toArray());var n=new e(t);if(r&&n.length<r){var o=new e(r-n.length);o.fill(0),n=e.concat([o,n])}return i?n.toString(i):n}o.p224=o.secp224r1,o.p256=o.secp256r1=o.prime256v1,o.p192=o.secp192r1=o.prime192v1,o.p384=o.secp384r1,o.p521=o.secp521r1,a.prototype.generateKeys=function(t,e){return this.keys=this.curve.genKeyPair(),this.getPublicKey(t,e)},a.prototype.computeSecret=function(t,i,r){return i=i||"utf8",e.isBuffer(t)||(t=new e(t,i)),s(this.curve.keyFromPublic(t).getPublic().mul(this.keys.getPrivate()).getX(),r,this.curveType.byteLength)},a.prototype.getPublicKey=function(t,e){var i=this.keys.getPublic("compressed"===e,!0);return"hybrid"===e&&(i[i.length-1]%2?i[0]=7:i[0]=6),s(i,t)},a.prototype.getPrivateKey=function(t){return s(this.keys.getPrivate(),t)},a.prototype.setPublicKey=function(t,i){return i=i||"utf8",e.isBuffer(t)||(t=new e(t,i)),this.keys._importPublic(t),this},a.prototype.setPrivateKey=function(t,i){i=i||"utf8",e.isBuffer(t)||(t=new e(t,i));var r=new n(t);return r=r.toString(16),this.keys=this.curve.genKeyPair(),this.keys._importPrivate(r),this}}).call(this,i(9).Buffer)},function(t,e,i){(function(t){!function(t,e){"use strict";function r(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var i=function(){};i.prototype=e.prototype,t.prototype=new i,t.prototype.constructor=t}function o(t,e,i){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(i=e,e=10),this._init(t||0,e||10,i||"be"))}var a;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{a="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:i(240).Buffer}catch(t){}function s(t,e){var i=t.charCodeAt(e);return i>=65&&i<=70?i-55:i>=97&&i<=102?i-87:i-48&15}function h(t,e,i){var r=s(t,i);return i-1>=e&&(r|=s(t,i-1)<<4),r}function u(t,e,i,r){for(var n=0,o=Math.min(t.length,i),a=e;a<o;a++){var s=t.charCodeAt(a)-48;n*=r,n+=s>=49?s-49+10:s>=17?s-17+10:s}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,i){if("number"==typeof t)return this._initNumber(t,e,i);if("object"==typeof t)return this._initArray(t,e,i);"hex"===e&&(e=16),r(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n<t.length&&(16===e?this._parseHex(t,n,i):(this._parseBase(t,e,n),"le"===i&&this._initArray(this.toArray(),e,i)))},o.prototype._initNumber=function(t,e,i){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(r(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===i&&this._initArray(this.toArray(),e,i)},o.prototype._initArray=function(t,e,i){if(r("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var n=0;n<this.length;n++)this.words[n]=0;var o,a,s=0;if("be"===i)for(n=t.length-1,o=0;n>=0;n-=3)a=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=a<<s&67108863,this.words[o+1]=a>>>26-s&67108863,(s+=24)>=26&&(s-=26,o++);else if("le"===i)for(n=0,o=0;n<t.length;n+=3)a=t[n]|t[n+1]<<8|t[n+2]<<16,this.words[o]|=a<<s&67108863,this.words[o+1]=a>>>26-s&67108863,(s+=24)>=26&&(s-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,i){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r<this.length;r++)this.words[r]=0;var n,o=0,a=0;if("be"===i)for(r=t.length-1;r>=e;r-=2)n=h(t,e,r)<<o,this.words[a]|=67108863&n,o>=18?(o-=18,a+=1,this.words[a]|=n>>>26):o+=8;else for(r=(t.length-e)%2==0?e+1:e;r<t.length;r+=2)n=h(t,e,r)<<o,this.words[a]|=67108863&n,o>=18?(o-=18,a+=1,this.words[a]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,i){this.words=[0],this.length=1;for(var r=0,n=1;n<=67108863;n*=e)r++;r--,n=n/e|0;for(var o=t.length-i,a=o%r,s=Math.min(o,o-a)+i,h=0,l=i;l<s;l+=r)h=u(t,l,l+r,e),this.imuln(n),this.words[0]+h<67108864?this.words[0]+=h:this._iaddn(h);if(0!==a){var d=1;for(h=u(t,l,t.length,e),l=0;l<a;l++)d*=e;this.imuln(d),this.words[0]+h<67108864?this.words[0]+=h:this._iaddn(h)}this.strip()},o.prototype.copy=function(t){t.words=new Array(this.length);for(var e=0;e<this.length;e++)t.words[e]=this.words[e];t.length=this.length,t.negative=this.negative,t.red=this.red},o.prototype.clone=function(){var t=new o(null);return this.copy(t),t},o.prototype._expand=function(t){for(;this.length<t;)this.words[this.length++]=0;return this},o.prototype.strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],d=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function c(t,e,i){i.negative=e.negative^t.negative;var r=t.length+e.length|0;i.length=r,r=r-1|0;var n=0|t.words[0],o=0|e.words[0],a=n*o,s=67108863&a,h=a/67108864|0;i.words[0]=s;for(var u=1;u<r;u++){for(var l=h>>>26,d=67108863&h,f=Math.min(u,e.length-1),c=Math.max(0,u-t.length+1);c<=f;c++){var p=u-c|0;l+=(a=(n=0|t.words[p])*(o=0|e.words[c])+d)/67108864|0,d=67108863&a}i.words[u]=0|d,h=0|l}return 0!==h?i.words[u]=0|h:i.length--,i.strip()}o.prototype.toString=function(t,e){var i;if(e=0|e||1,16===(t=t||10)||"hex"===t){i="";for(var n=0,o=0,a=0;a<this.length;a++){var s=this.words[a],h=(16777215&(s<<n|o)).toString(16);i=0!==(o=s>>>24-n&16777215)||a!==this.length-1?l[6-h.length]+h+i:h+i,(n+=2)>=26&&(n-=26,a--)}for(0!==o&&(i=o.toString(16)+i);i.length%e!=0;)i="0"+i;return 0!==this.negative&&(i="-"+i),i}if(t===(0|t)&&t>=2&&t<=36){var u=d[t],c=f[t];i="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modn(c).toString(t);i=(p=p.idivn(c)).isZero()?m+i:l[u-m.length]+m+i}for(this.isZero()&&(i="0"+i);i.length%e!=0;)i="0"+i;return 0!==this.negative&&(i="-"+i),i}r(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return r(void 0!==a),this.toArrayLike(a,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,i){var n=this.byteLength(),o=i||Math.max(1,n);r(n<=o,"byte array longer than desired length"),r(o>0,"Requested array length <= 0"),this.strip();var a,s,h="le"===e,u=new t(o),l=this.clone();if(h){for(s=0;!l.isZero();s++)a=l.andln(255),l.iushrn(8),u[s]=a;for(;s<o;s++)u[s]=0}else{for(s=0;s<o-n;s++)u[s]=0;for(s=0;!l.isZero();s++)a=l.andln(255),l.iushrn(8),u[o-s-1]=a}return u},Math.clz32?o.prototype._countBits=function(t){return 32-Math.clz32(t)}:o.prototype._countBits=function(t){var e=t,i=0;return e>=4096&&(i+=13,e>>>=13),e>=64&&(i+=7,e>>>=7),e>=8&&(i+=4,e>>>=4),e>=2&&(i+=2,e>>>=2),i+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,i=0;return 0==(8191&e)&&(i+=13,e>>>=13),0==(127&e)&&(i+=7,e>>>=7),0==(15&e)&&(i+=4,e>>>=4),0==(3&e)&&(i+=2,e>>>=2),0==(1&e)&&i++,i},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;e<this.length;e++){var i=this._zeroBits(this.words[e]);if(t+=i,26!==i)break}return t},o.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},o.prototype.toTwos=function(t){return 0!==this.negative?this.abs().inotn(t).iaddn(1):this.clone()},o.prototype.fromTwos=function(t){return this.testn(t-1)?this.notn(t).iaddn(1).ineg():this.clone()},o.prototype.isNeg=function(){return 0!==this.negative},o.prototype.neg=function(){return this.clone().ineg()},o.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},o.prototype.iuor=function(t){for(;this.length<t.length;)this.words[this.length++]=0;for(var e=0;e<t.length;e++)this.words[e]=this.words[e]|t.words[e];return this.strip()},o.prototype.ior=function(t){return r(0==(this.negative|t.negative)),this.iuor(t)},o.prototype.or=function(t){return this.length>t.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var i=0;i<e.length;i++)this.words[i]=this.words[i]&t.words[i];return this.length=e.length,this.strip()},o.prototype.iand=function(t){return r(0==(this.negative|t.negative)),this.iuand(t)},o.prototype.and=function(t){return this.length>t.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,i;this.length>t.length?(e=this,i=t):(e=t,i=this);for(var r=0;r<i.length;r++)this.words[r]=e.words[r]^i.words[r];if(this!==e)for(;r<e.length;r++)this.words[r]=e.words[r];return this.length=e.length,this.strip()},o.prototype.ixor=function(t){return r(0==(this.negative|t.negative)),this.iuxor(t)},o.prototype.xor=function(t){return this.length>t.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){r("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),i=t%26;this._expand(e),i>0&&e--;for(var n=0;n<e;n++)this.words[n]=67108863&~this.words[n];return i>0&&(this.words[n]=~this.words[n]&67108863>>26-i),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){r("number"==typeof t&&t>=0);var i=t/26|0,n=t%26;return this._expand(i+1),this.words[i]=e?this.words[i]|1<<n:this.words[i]&~(1<<n),this.strip()},o.prototype.iadd=function(t){var e,i,r;if(0!==this.negative&&0===t.negative)return this.negative=0,e=this.isub(t),this.negative^=1,this._normSign();if(0===this.negative&&0!==t.negative)return t.negative=0,e=this.isub(t),t.negative=1,e._normSign();this.length>t.length?(i=this,r=t):(i=t,r=this);for(var n=0,o=0;o<r.length;o++)e=(0|i.words[o])+(0|r.words[o])+n,this.words[o]=67108863&e,n=e>>>26;for(;0!==n&&o<i.length;o++)e=(0|i.words[o])+n,this.words[o]=67108863&e,n=e>>>26;if(this.length=i.length,0!==n)this.words[this.length]=n,this.length++;else if(i!==this)for(;o<i.length;o++)this.words[o]=i.words[o];return this},o.prototype.add=function(t){var e;return 0!==t.negative&&0===this.negative?(t.negative=0,e=this.sub(t),t.negative^=1,e):0===t.negative&&0!==this.negative?(this.negative=0,e=t.sub(this),this.negative=1,e):this.length>t.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var i,r,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(i=this,r=t):(i=t,r=this);for(var o=0,a=0;a<r.length;a++)o=(e=(0|i.words[a])-(0|r.words[a])+o)>>26,this.words[a]=67108863&e;for(;0!==o&&a<i.length;a++)o=(e=(0|i.words[a])+o)>>26,this.words[a]=67108863&e;if(0===o&&a<i.length&&i!==this)for(;a<i.length;a++)this.words[a]=i.words[a];return this.length=Math.max(this.length,a),i!==this&&(this.negative=1),this.strip()},o.prototype.sub=function(t){return this.clone().isub(t)};var p=function(t,e,i){var r,n,o,a=t.words,s=e.words,h=i.words,u=0,l=0|a[0],d=8191&l,f=l>>>13,c=0|a[1],p=8191&c,m=c>>>13,g=0|a[2],v=8191&g,y=g>>>13,b=0|a[3],_=8191&b,w=b>>>13,A=0|a[4],M=8191&A,E=A>>>13,S=0|a[5],k=8191&S,T=S>>>13,R=0|a[6],I=8191&R,C=R>>>13,P=0|a[7],x=8191&P,D=P>>>13,O=0|a[8],B=8191&O,L=O>>>13,W=0|a[9],N=8191&W,F=W>>>13,U=0|s[0],j=8191&U,V=U>>>13,H=0|s[1],z=8191&H,G=H>>>13,q=0|s[2],X=8191&q,Z=q>>>13,K=0|s[3],Q=8191&K,Y=K>>>13,J=0|s[4],$=8191&J,tt=J>>>13,et=0|s[5],it=8191&et,rt=et>>>13,nt=0|s[6],ot=8191&nt,at=nt>>>13,st=0|s[7],ht=8191&st,ut=st>>>13,lt=0|s[8],dt=8191<,ft=lt>>>13,ct=0|s[9],pt=8191&ct,mt=ct>>>13;i.negative=t.negative^e.negative,i.length=19;var gt=(u+(r=Math.imul(d,j))|0)+((8191&(n=(n=Math.imul(d,V))+Math.imul(f,j)|0))<<13)|0;u=((o=Math.imul(f,V))+(n>>>13)|0)+(gt>>>26)|0,gt&=67108863,r=Math.imul(p,j),n=(n=Math.imul(p,V))+Math.imul(m,j)|0,o=Math.imul(m,V);var vt=(u+(r=r+Math.imul(d,z)|0)|0)+((8191&(n=(n=n+Math.imul(d,G)|0)+Math.imul(f,z)|0))<<13)|0;u=((o=o+Math.imul(f,G)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,r=Math.imul(v,j),n=(n=Math.imul(v,V))+Math.imul(y,j)|0,o=Math.imul(y,V),r=r+Math.imul(p,z)|0,n=(n=n+Math.imul(p,G)|0)+Math.imul(m,z)|0,o=o+Math.imul(m,G)|0;var yt=(u+(r=r+Math.imul(d,X)|0)|0)+((8191&(n=(n=n+Math.imul(d,Z)|0)+Math.imul(f,X)|0))<<13)|0;u=((o=o+Math.imul(f,Z)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,r=Math.imul(_,j),n=(n=Math.imul(_,V))+Math.imul(w,j)|0,o=Math.imul(w,V),r=r+Math.imul(v,z)|0,n=(n=n+Math.imul(v,G)|0)+Math.imul(y,z)|0,o=o+Math.imul(y,G)|0,r=r+Math.imul(p,X)|0,n=(n=n+Math.imul(p,Z)|0)+Math.imul(m,X)|0,o=o+Math.imul(m,Z)|0;var bt=(u+(r=r+Math.imul(d,Q)|0)|0)+((8191&(n=(n=n+Math.imul(d,Y)|0)+Math.imul(f,Q)|0))<<13)|0;u=((o=o+Math.imul(f,Y)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,r=Math.imul(M,j),n=(n=Math.imul(M,V))+Math.imul(E,j)|0,o=Math.imul(E,V),r=r+Math.imul(_,z)|0,n=(n=n+Math.imul(_,G)|0)+Math.imul(w,z)|0,o=o+Math.imul(w,G)|0,r=r+Math.imul(v,X)|0,n=(n=n+Math.imul(v,Z)|0)+Math.imul(y,X)|0,o=o+Math.imul(y,Z)|0,r=r+Math.imul(p,Q)|0,n=(n=n+Math.imul(p,Y)|0)+Math.imul(m,Q)|0,o=o+Math.imul(m,Y)|0;var _t=(u+(r=r+Math.imul(d,$)|0)|0)+((8191&(n=(n=n+Math.imul(d,tt)|0)+Math.imul(f,$)|0))<<13)|0;u=((o=o+Math.imul(f,tt)|0)+(n>>>13)|0)+(_t>>>26)|0,_t&=67108863,r=Math.imul(k,j),n=(n=Math.imul(k,V))+Math.imul(T,j)|0,o=Math.imul(T,V),r=r+Math.imul(M,z)|0,n=(n=n+Math.imul(M,G)|0)+Math.imul(E,z)|0,o=o+Math.imul(E,G)|0,r=r+Math.imul(_,X)|0,n=(n=n+Math.imul(_,Z)|0)+Math.imul(w,X)|0,o=o+Math.imul(w,Z)|0,r=r+Math.imul(v,Q)|0,n=(n=n+Math.imul(v,Y)|0)+Math.imul(y,Q)|0,o=o+Math.imul(y,Y)|0,r=r+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,$)|0,o=o+Math.imul(m,tt)|0;var wt=(u+(r=r+Math.imul(d,it)|0)|0)+((8191&(n=(n=n+Math.imul(d,rt)|0)+Math.imul(f,it)|0))<<13)|0;u=((o=o+Math.imul(f,rt)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,r=Math.imul(I,j),n=(n=Math.imul(I,V))+Math.imul(C,j)|0,o=Math.imul(C,V),r=r+Math.imul(k,z)|0,n=(n=n+Math.imul(k,G)|0)+Math.imul(T,z)|0,o=o+Math.imul(T,G)|0,r=r+Math.imul(M,X)|0,n=(n=n+Math.imul(M,Z)|0)+Math.imul(E,X)|0,o=o+Math.imul(E,Z)|0,r=r+Math.imul(_,Q)|0,n=(n=n+Math.imul(_,Y)|0)+Math.imul(w,Q)|0,o=o+Math.imul(w,Y)|0,r=r+Math.imul(v,$)|0,n=(n=n+Math.imul(v,tt)|0)+Math.imul(y,$)|0,o=o+Math.imul(y,tt)|0,r=r+Math.imul(p,it)|0,n=(n=n+Math.imul(p,rt)|0)+Math.imul(m,it)|0,o=o+Math.imul(m,rt)|0;var At=(u+(r=r+Math.imul(d,ot)|0)|0)+((8191&(n=(n=n+Math.imul(d,at)|0)+Math.imul(f,ot)|0))<<13)|0;u=((o=o+Math.imul(f,at)|0)+(n>>>13)|0)+(At>>>26)|0,At&=67108863,r=Math.imul(x,j),n=(n=Math.imul(x,V))+Math.imul(D,j)|0,o=Math.imul(D,V),r=r+Math.imul(I,z)|0,n=(n=n+Math.imul(I,G)|0)+Math.imul(C,z)|0,o=o+Math.imul(C,G)|0,r=r+Math.imul(k,X)|0,n=(n=n+Math.imul(k,Z)|0)+Math.imul(T,X)|0,o=o+Math.imul(T,Z)|0,r=r+Math.imul(M,Q)|0,n=(n=n+Math.imul(M,Y)|0)+Math.imul(E,Q)|0,o=o+Math.imul(E,Y)|0,r=r+Math.imul(_,$)|0,n=(n=n+Math.imul(_,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,r=r+Math.imul(v,it)|0,n=(n=n+Math.imul(v,rt)|0)+Math.imul(y,it)|0,o=o+Math.imul(y,rt)|0,r=r+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,at)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,at)|0;var Mt=(u+(r=r+Math.imul(d,ht)|0)|0)+((8191&(n=(n=n+Math.imul(d,ut)|0)+Math.imul(f,ht)|0))<<13)|0;u=((o=o+Math.imul(f,ut)|0)+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,r=Math.imul(B,j),n=(n=Math.imul(B,V))+Math.imul(L,j)|0,o=Math.imul(L,V),r=r+Math.imul(x,z)|0,n=(n=n+Math.imul(x,G)|0)+Math.imul(D,z)|0,o=o+Math.imul(D,G)|0,r=r+Math.imul(I,X)|0,n=(n=n+Math.imul(I,Z)|0)+Math.imul(C,X)|0,o=o+Math.imul(C,Z)|0,r=r+Math.imul(k,Q)|0,n=(n=n+Math.imul(k,Y)|0)+Math.imul(T,Q)|0,o=o+Math.imul(T,Y)|0,r=r+Math.imul(M,$)|0,n=(n=n+Math.imul(M,tt)|0)+Math.imul(E,$)|0,o=o+Math.imul(E,tt)|0,r=r+Math.imul(_,it)|0,n=(n=n+Math.imul(_,rt)|0)+Math.imul(w,it)|0,o=o+Math.imul(w,rt)|0,r=r+Math.imul(v,ot)|0,n=(n=n+Math.imul(v,at)|0)+Math.imul(y,ot)|0,o=o+Math.imul(y,at)|0,r=r+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0;var Et=(u+(r=r+Math.imul(d,dt)|0)|0)+((8191&(n=(n=n+Math.imul(d,ft)|0)+Math.imul(f,dt)|0))<<13)|0;u=((o=o+Math.imul(f,ft)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,r=Math.imul(N,j),n=(n=Math.imul(N,V))+Math.imul(F,j)|0,o=Math.imul(F,V),r=r+Math.imul(B,z)|0,n=(n=n+Math.imul(B,G)|0)+Math.imul(L,z)|0,o=o+Math.imul(L,G)|0,r=r+Math.imul(x,X)|0,n=(n=n+Math.imul(x,Z)|0)+Math.imul(D,X)|0,o=o+Math.imul(D,Z)|0,r=r+Math.imul(I,Q)|0,n=(n=n+Math.imul(I,Y)|0)+Math.imul(C,Q)|0,o=o+Math.imul(C,Y)|0,r=r+Math.imul(k,$)|0,n=(n=n+Math.imul(k,tt)|0)+Math.imul(T,$)|0,o=o+Math.imul(T,tt)|0,r=r+Math.imul(M,it)|0,n=(n=n+Math.imul(M,rt)|0)+Math.imul(E,it)|0,o=o+Math.imul(E,rt)|0,r=r+Math.imul(_,ot)|0,n=(n=n+Math.imul(_,at)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,at)|0,r=r+Math.imul(v,ht)|0,n=(n=n+Math.imul(v,ut)|0)+Math.imul(y,ht)|0,o=o+Math.imul(y,ut)|0,r=r+Math.imul(p,dt)|0,n=(n=n+Math.imul(p,ft)|0)+Math.imul(m,dt)|0,o=o+Math.imul(m,ft)|0;var St=(u+(r=r+Math.imul(d,pt)|0)|0)+((8191&(n=(n=n+Math.imul(d,mt)|0)+Math.imul(f,pt)|0))<<13)|0;u=((o=o+Math.imul(f,mt)|0)+(n>>>13)|0)+(St>>>26)|0,St&=67108863,r=Math.imul(N,z),n=(n=Math.imul(N,G))+Math.imul(F,z)|0,o=Math.imul(F,G),r=r+Math.imul(B,X)|0,n=(n=n+Math.imul(B,Z)|0)+Math.imul(L,X)|0,o=o+Math.imul(L,Z)|0,r=r+Math.imul(x,Q)|0,n=(n=n+Math.imul(x,Y)|0)+Math.imul(D,Q)|0,o=o+Math.imul(D,Y)|0,r=r+Math.imul(I,$)|0,n=(n=n+Math.imul(I,tt)|0)+Math.imul(C,$)|0,o=o+Math.imul(C,tt)|0,r=r+Math.imul(k,it)|0,n=(n=n+Math.imul(k,rt)|0)+Math.imul(T,it)|0,o=o+Math.imul(T,rt)|0,r=r+Math.imul(M,ot)|0,n=(n=n+Math.imul(M,at)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,at)|0,r=r+Math.imul(_,ht)|0,n=(n=n+Math.imul(_,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,r=r+Math.imul(v,dt)|0,n=(n=n+Math.imul(v,ft)|0)+Math.imul(y,dt)|0,o=o+Math.imul(y,ft)|0;var kt=(u+(r=r+Math.imul(p,pt)|0)|0)+((8191&(n=(n=n+Math.imul(p,mt)|0)+Math.imul(m,pt)|0))<<13)|0;u=((o=o+Math.imul(m,mt)|0)+(n>>>13)|0)+(kt>>>26)|0,kt&=67108863,r=Math.imul(N,X),n=(n=Math.imul(N,Z))+Math.imul(F,X)|0,o=Math.imul(F,Z),r=r+Math.imul(B,Q)|0,n=(n=n+Math.imul(B,Y)|0)+Math.imul(L,Q)|0,o=o+Math.imul(L,Y)|0,r=r+Math.imul(x,$)|0,n=(n=n+Math.imul(x,tt)|0)+Math.imul(D,$)|0,o=o+Math.imul(D,tt)|0,r=r+Math.imul(I,it)|0,n=(n=n+Math.imul(I,rt)|0)+Math.imul(C,it)|0,o=o+Math.imul(C,rt)|0,r=r+Math.imul(k,ot)|0,n=(n=n+Math.imul(k,at)|0)+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,r=r+Math.imul(M,ht)|0,n=(n=n+Math.imul(M,ut)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,ut)|0,r=r+Math.imul(_,dt)|0,n=(n=n+Math.imul(_,ft)|0)+Math.imul(w,dt)|0,o=o+Math.imul(w,ft)|0;var Tt=(u+(r=r+Math.imul(v,pt)|0)|0)+((8191&(n=(n=n+Math.imul(v,mt)|0)+Math.imul(y,pt)|0))<<13)|0;u=((o=o+Math.imul(y,mt)|0)+(n>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,r=Math.imul(N,Q),n=(n=Math.imul(N,Y))+Math.imul(F,Q)|0,o=Math.imul(F,Y),r=r+Math.imul(B,$)|0,n=(n=n+Math.imul(B,tt)|0)+Math.imul(L,$)|0,o=o+Math.imul(L,tt)|0,r=r+Math.imul(x,it)|0,n=(n=n+Math.imul(x,rt)|0)+Math.imul(D,it)|0,o=o+Math.imul(D,rt)|0,r=r+Math.imul(I,ot)|0,n=(n=n+Math.imul(I,at)|0)+Math.imul(C,ot)|0,o=o+Math.imul(C,at)|0,r=r+Math.imul(k,ht)|0,n=(n=n+Math.imul(k,ut)|0)+Math.imul(T,ht)|0,o=o+Math.imul(T,ut)|0,r=r+Math.imul(M,dt)|0,n=(n=n+Math.imul(M,ft)|0)+Math.imul(E,dt)|0,o=o+Math.imul(E,ft)|0;var Rt=(u+(r=r+Math.imul(_,pt)|0)|0)+((8191&(n=(n=n+Math.imul(_,mt)|0)+Math.imul(w,pt)|0))<<13)|0;u=((o=o+Math.imul(w,mt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,r=Math.imul(N,$),n=(n=Math.imul(N,tt))+Math.imul(F,$)|0,o=Math.imul(F,tt),r=r+Math.imul(B,it)|0,n=(n=n+Math.imul(B,rt)|0)+Math.imul(L,it)|0,o=o+Math.imul(L,rt)|0,r=r+Math.imul(x,ot)|0,n=(n=n+Math.imul(x,at)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,at)|0,r=r+Math.imul(I,ht)|0,n=(n=n+Math.imul(I,ut)|0)+Math.imul(C,ht)|0,o=o+Math.imul(C,ut)|0,r=r+Math.imul(k,dt)|0,n=(n=n+Math.imul(k,ft)|0)+Math.imul(T,dt)|0,o=o+Math.imul(T,ft)|0;var It=(u+(r=r+Math.imul(M,pt)|0)|0)+((8191&(n=(n=n+Math.imul(M,mt)|0)+Math.imul(E,pt)|0))<<13)|0;u=((o=o+Math.imul(E,mt)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,r=Math.imul(N,it),n=(n=Math.imul(N,rt))+Math.imul(F,it)|0,o=Math.imul(F,rt),r=r+Math.imul(B,ot)|0,n=(n=n+Math.imul(B,at)|0)+Math.imul(L,ot)|0,o=o+Math.imul(L,at)|0,r=r+Math.imul(x,ht)|0,n=(n=n+Math.imul(x,ut)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,ut)|0,r=r+Math.imul(I,dt)|0,n=(n=n+Math.imul(I,ft)|0)+Math.imul(C,dt)|0,o=o+Math.imul(C,ft)|0;var Ct=(u+(r=r+Math.imul(k,pt)|0)|0)+((8191&(n=(n=n+Math.imul(k,mt)|0)+Math.imul(T,pt)|0))<<13)|0;u=((o=o+Math.imul(T,mt)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,r=Math.imul(N,ot),n=(n=Math.imul(N,at))+Math.imul(F,ot)|0,o=Math.imul(F,at),r=r+Math.imul(B,ht)|0,n=(n=n+Math.imul(B,ut)|0)+Math.imul(L,ht)|0,o=o+Math.imul(L,ut)|0,r=r+Math.imul(x,dt)|0,n=(n=n+Math.imul(x,ft)|0)+Math.imul(D,dt)|0,o=o+Math.imul(D,ft)|0;var Pt=(u+(r=r+Math.imul(I,pt)|0)|0)+((8191&(n=(n=n+Math.imul(I,mt)|0)+Math.imul(C,pt)|0))<<13)|0;u=((o=o+Math.imul(C,mt)|0)+(n>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,r=Math.imul(N,ht),n=(n=Math.imul(N,ut))+Math.imul(F,ht)|0,o=Math.imul(F,ut),r=r+Math.imul(B,dt)|0,n=(n=n+Math.imul(B,ft)|0)+Math.imul(L,dt)|0,o=o+Math.imul(L,ft)|0;var xt=(u+(r=r+Math.imul(x,pt)|0)|0)+((8191&(n=(n=n+Math.imul(x,mt)|0)+Math.imul(D,pt)|0))<<13)|0;u=((o=o+Math.imul(D,mt)|0)+(n>>>13)|0)+(xt>>>26)|0,xt&=67108863,r=Math.imul(N,dt),n=(n=Math.imul(N,ft))+Math.imul(F,dt)|0,o=Math.imul(F,ft);var Dt=(u+(r=r+Math.imul(B,pt)|0)|0)+((8191&(n=(n=n+Math.imul(B,mt)|0)+Math.imul(L,pt)|0))<<13)|0;u=((o=o+Math.imul(L,mt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863;var Ot=(u+(r=Math.imul(N,pt))|0)+((8191&(n=(n=Math.imul(N,mt))+Math.imul(F,pt)|0))<<13)|0;return u=((o=Math.imul(F,mt))+(n>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,h[0]=gt,h[1]=vt,h[2]=yt,h[3]=bt,h[4]=_t,h[5]=wt,h[6]=At,h[7]=Mt,h[8]=Et,h[9]=St,h[10]=kt,h[11]=Tt,h[12]=Rt,h[13]=It,h[14]=Ct,h[15]=Pt,h[16]=xt,h[17]=Dt,h[18]=Ot,0!==u&&(h[19]=u,i.length++),i};function m(t,e,i){return(new g).mulp(t,e,i)}function g(t,e){this.x=t,this.y=e}Math.imul||(p=c),o.prototype.mulTo=function(t,e){var i,r=this.length+t.length;return i=10===this.length&&10===t.length?p(this,t,e):r<63?c(this,t,e):r<1024?function(t,e,i){i.negative=e.negative^t.negative,i.length=t.length+e.length;for(var r=0,n=0,o=0;o<i.length-1;o++){var a=n;n=0;for(var s=67108863&r,h=Math.min(o,e.length-1),u=Math.max(0,o-t.length+1);u<=h;u++){var l=o-u,d=(0|t.words[l])*(0|e.words[u]),f=67108863&d;s=67108863&(f=f+s|0),n+=(a=(a=a+(d/67108864|0)|0)+(f>>>26)|0)>>>26,a&=67108863}i.words[o]=s,r=a,a=n}return 0!==r?i.words[o]=r:i.length--,i.strip()}(this,t,e):m(this,t,e),i},g.prototype.makeRBT=function(t){for(var e=new Array(t),i=o.prototype._countBits(t)-1,r=0;r<t;r++)e[r]=this.revBin(r,i,t);return e},g.prototype.revBin=function(t,e,i){if(0===t||t===i-1)return t;for(var r=0,n=0;n<e;n++)r|=(1&t)<<e-n-1,t>>=1;return r},g.prototype.permute=function(t,e,i,r,n,o){for(var a=0;a<o;a++)r[a]=e[t[a]],n[a]=i[t[a]]},g.prototype.transform=function(t,e,i,r,n,o){this.permute(o,t,e,i,r,n);for(var a=1;a<n;a<<=1)for(var s=a<<1,h=Math.cos(2*Math.PI/s),u=Math.sin(2*Math.PI/s),l=0;l<n;l+=s)for(var d=h,f=u,c=0;c<a;c++){var p=i[l+c],m=r[l+c],g=i[l+c+a],v=r[l+c+a],y=d*g-f*v;v=d*v+f*g,g=y,i[l+c]=p+g,r[l+c]=m+v,i[l+c+a]=p-g,r[l+c+a]=m-v,c!==s&&(y=h*d-u*f,f=h*f+u*d,d=y)}},g.prototype.guessLen13b=function(t,e){var i=1|Math.max(e,t),r=1&i,n=0;for(i=i/2|0;i;i>>>=1)n++;return 1<<n+1+r},g.prototype.conjugate=function(t,e,i){if(!(i<=1))for(var r=0;r<i/2;r++){var n=t[r];t[r]=t[i-r-1],t[i-r-1]=n,n=e[r],e[r]=-e[i-r-1],e[i-r-1]=-n}},g.prototype.normalize13b=function(t,e){for(var i=0,r=0;r<e/2;r++){var n=8192*Math.round(t[2*r+1]/e)+Math.round(t[2*r]/e)+i;t[r]=67108863&n,i=n<67108864?0:n/67108864|0}return t},g.prototype.convert13b=function(t,e,i,n){for(var o=0,a=0;a<e;a++)o+=0|t[a],i[2*a]=8191&o,o>>>=13,i[2*a+1]=8191&o,o>>>=13;for(a=2*e;a<n;++a)i[a]=0;r(0===o),r(0==(-8192&o))},g.prototype.stub=function(t){for(var e=new Array(t),i=0;i<t;i++)e[i]=0;return e},g.prototype.mulp=function(t,e,i){var r=2*this.guessLen13b(t.length,e.length),n=this.makeRBT(r),o=this.stub(r),a=new Array(r),s=new Array(r),h=new Array(r),u=new Array(r),l=new Array(r),d=new Array(r),f=i.words;f.length=r,this.convert13b(t.words,t.length,a,r),this.convert13b(e.words,e.length,u,r),this.transform(a,o,s,h,r,n),this.transform(u,o,l,d,r,n);for(var c=0;c<r;c++){var p=s[c]*l[c]-h[c]*d[c];h[c]=s[c]*d[c]+h[c]*l[c],s[c]=p}return this.conjugate(s,h,r),this.transform(s,h,f,o,r,n),this.conjugate(f,o,r),this.normalize13b(f,r),i.negative=t.negative^e.negative,i.length=t.length+e.length,i.strip()},o.prototype.mul=function(t){var e=new o(null);return e.words=new Array(this.length+t.length),this.mulTo(t,e)},o.prototype.mulf=function(t){var e=new o(null);return e.words=new Array(this.length+t.length),m(this,t,e)},o.prototype.imul=function(t){return this.clone().mulTo(t,this)},o.prototype.imuln=function(t){r("number"==typeof t),r(t<67108864);for(var e=0,i=0;i<this.length;i++){var n=(0|this.words[i])*t,o=(67108863&n)+(67108863&e);e>>=26,e+=n/67108864|0,e+=o>>>26,this.words[i]=67108863&o}return 0!==e&&(this.words[i]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),i=0;i<e.length;i++){var r=i/26|0,n=i%26;e[i]=(t.words[r]&1<<n)>>>n}return e}(t);if(0===e.length)return new o(1);for(var i=this,r=0;r<e.length&&0===e[r];r++,i=i.sqr());if(++r<e.length)for(var n=i.sqr();r<e.length;r++,n=n.sqr())0!==e[r]&&(i=i.mul(n));return i},o.prototype.iushln=function(t){r("number"==typeof t&&t>=0);var e,i=t%26,n=(t-i)/26,o=67108863>>>26-i<<26-i;if(0!==i){var a=0;for(e=0;e<this.length;e++){var s=this.words[e]&o,h=(0|this.words[e])-s<<i;this.words[e]=h|a,a=s>>>26-i}a&&(this.words[e]=a,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e<n;e++)this.words[e]=0;this.length+=n}return this.strip()},o.prototype.ishln=function(t){return r(0===this.negative),this.iushln(t)},o.prototype.iushrn=function(t,e,i){var n;r("number"==typeof t&&t>=0),n=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),s=67108863^67108863>>>o<<o,h=i;if(n-=a,n=Math.max(0,n),h){for(var u=0;u<a;u++)h.words[u]=this.words[u];h.length=a}if(0===a);else if(this.length>a)for(this.length-=a,u=0;u<this.length;u++)this.words[u]=this.words[u+a];else this.words[0]=0,this.length=1;var l=0;for(u=this.length-1;u>=0&&(0!==l||u>=n);u--){var d=0|this.words[u];this.words[u]=l<<26-o|d>>>o,l=d&s}return h&&0!==l&&(h.words[h.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,i){return r(0===this.negative),this.iushrn(t,e,i)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){r("number"==typeof t&&t>=0);var e=t%26,i=(t-e)/26,n=1<<e;return!(this.length<=i)&&!!(this.words[i]&n)},o.prototype.imaskn=function(t){r("number"==typeof t&&t>=0);var e=t%26,i=(t-e)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=i)return this;if(0!==e&&i++,this.length=Math.min(i,this.length),0!==e){var n=67108863^67108863>>>e<<e;this.words[this.length-1]&=n}return this.strip()},o.prototype.maskn=function(t){return this.clone().imaskn(t)},o.prototype.iaddn=function(t){return r("number"==typeof t),r(t<67108864),t<0?this.isubn(-t):0!==this.negative?1===this.length&&(0|this.words[0])<t?(this.words[0]=t-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(t),this.negative=1,this):this._iaddn(t)},o.prototype._iaddn=function(t){this.words[0]+=t;for(var e=0;e<this.length&&this.words[e]>=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(r("number"==typeof t),r(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e<this.length&&this.words[e]<0;e++)this.words[e]+=67108864,this.words[e+1]-=1;return this.strip()},o.prototype.addn=function(t){return this.clone().iaddn(t)},o.prototype.subn=function(t){return this.clone().isubn(t)},o.prototype.iabs=function(){return this.negative=0,this},o.prototype.abs=function(){return this.clone().iabs()},o.prototype._ishlnsubmul=function(t,e,i){var n,o,a=t.length+i;this._expand(a);var s=0;for(n=0;n<t.length;n++){o=(0|this.words[n+i])+s;var h=(0|t.words[n])*e;s=((o-=67108863&h)>>26)-(h/67108864|0),this.words[n+i]=67108863&o}for(;n<this.length-i;n++)s=(o=(0|this.words[n+i])+s)>>26,this.words[n+i]=67108863&o;if(0===s)return this.strip();for(r(-1===s),s=0,n=0;n<this.length;n++)s=(o=-(0|this.words[n])+s)>>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var i=(this.length,t.length),r=this.clone(),n=t,a=0|n.words[n.length-1];0!==(i=26-this._countBits(a))&&(n=n.ushln(i),r.iushln(i),a=0|n.words[n.length-1]);var s,h=r.length-n.length;if("mod"!==e){(s=new o(null)).length=h+1,s.words=new Array(s.length);for(var u=0;u<s.length;u++)s.words[u]=0}var l=r.clone()._ishlnsubmul(n,1,h);0===l.negative&&(r=l,s&&(s.words[h]=1));for(var d=h-1;d>=0;d--){var f=67108864*(0|r.words[n.length+d])+(0|r.words[n.length+d-1]);for(f=Math.min(f/a|0,67108863),r._ishlnsubmul(n,f,d);0!==r.negative;)f--,r.negative=0,r._ishlnsubmul(n,1,d),r.isZero()||(r.negative^=1);s&&(s.words[d]=f)}return s&&s.strip(),r.strip(),"div"!==e&&0!==i&&r.iushrn(i),{div:s||null,mod:r}},o.prototype.divmod=function(t,e,i){return r(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(s=this.neg().divmod(t,e),"mod"!==e&&(n=s.div.neg()),"div"!==e&&(a=s.mod.neg(),i&&0!==a.negative&&a.iadd(t)),{div:n,mod:a}):0===this.negative&&0!==t.negative?(s=this.divmod(t.neg(),e),"mod"!==e&&(n=s.div.neg()),{div:n,mod:s.mod}):0!=(this.negative&t.negative)?(s=this.neg().divmod(t.neg(),e),"div"!==e&&(a=s.mod.neg(),i&&0!==a.negative&&a.isub(t)),{div:s.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,a,s},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var i=0!==e.div.negative?e.mod.isub(t):e.mod,r=t.ushrn(1),n=t.andln(1),o=i.cmp(r);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){r(t<=67108863);for(var e=(1<<26)%t,i=0,n=this.length-1;n>=0;n--)i=(e*i+(0|this.words[n]))%t;return i},o.prototype.idivn=function(t){r(t<=67108863);for(var e=0,i=this.length-1;i>=0;i--){var n=(0|this.words[i])+67108864*e;this.words[i]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){r(0===t.negative),r(!t.isZero());var e=this,i=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),a=new o(0),s=new o(0),h=new o(1),u=0;e.isEven()&&i.isEven();)e.iushrn(1),i.iushrn(1),++u;for(var l=i.clone(),d=e.clone();!e.isZero();){for(var f=0,c=1;0==(e.words[0]&c)&&f<26;++f,c<<=1);if(f>0)for(e.iushrn(f);f-- >0;)(n.isOdd()||a.isOdd())&&(n.iadd(l),a.isub(d)),n.iushrn(1),a.iushrn(1);for(var p=0,m=1;0==(i.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(i.iushrn(p);p-- >0;)(s.isOdd()||h.isOdd())&&(s.iadd(l),h.isub(d)),s.iushrn(1),h.iushrn(1);e.cmp(i)>=0?(e.isub(i),n.isub(s),a.isub(h)):(i.isub(e),s.isub(n),h.isub(a))}return{a:s,b:h,gcd:i.iushln(u)}},o.prototype._invmp=function(t){r(0===t.negative),r(!t.isZero());var e=this,i=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,a=new o(1),s=new o(0),h=i.clone();e.cmpn(1)>0&&i.cmpn(1)>0;){for(var u=0,l=1;0==(e.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(e.iushrn(u);u-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);for(var d=0,f=1;0==(i.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(i.iushrn(d);d-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);e.cmp(i)>=0?(e.isub(i),a.isub(s)):(i.isub(e),s.isub(a))}return(n=0===e.cmpn(1)?a:s).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),i=t.clone();e.negative=0,i.negative=0;for(var r=0;e.isEven()&&i.isEven();r++)e.iushrn(1),i.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;i.isEven();)i.iushrn(1);var n=e.cmp(i);if(n<0){var o=e;e=i,i=o}else if(0===n||0===i.cmpn(1))break;e.isub(i)}return i.iushln(r)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){r("number"==typeof t);var e=t%26,i=(t-e)/26,n=1<<e;if(this.length<=i)return this._expand(i+1),this.words[i]|=n,this;for(var o=n,a=i;0!==o&&a<this.length;a++){var s=0|this.words[a];o=(s+=o)>>>26,s&=67108863,this.words[a]=s}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,i=t<0;if(0!==this.negative&&!i)return-1;if(0===this.negative&&i)return 1;if(this.strip(),this.length>1)e=1;else{i&&(t=-t),r(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:n<t?-1:1}return 0!==this.negative?0|-e:e},o.prototype.cmp=function(t){if(0!==this.negative&&0===t.negative)return-1;if(0===this.negative&&0!==t.negative)return 1;var e=this.ucmp(t);return 0!==this.negative?0|-e:e},o.prototype.ucmp=function(t){if(this.length>t.length)return 1;if(this.length<t.length)return-1;for(var e=0,i=this.length-1;i>=0;i--){var r=0|this.words[i],n=0|t.words[i];if(r!==n){r<n?e=-1:r>n&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new M(t)},o.prototype.toRed=function(t){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return r(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return r(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var v={k256:null,p224:null,p192:null,p25519:null};function y(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function b(){y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function _(){y.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){y.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function A(){y.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function M(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else r(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function E(t){M.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}y.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},y.prototype.ireduce=function(t){var e,i=t;do{this.split(i,this.tmp),e=(i=(i=this.imulK(i)).iadd(this.tmp)).bitLength()}while(e>this.n);var r=e<this.n?-1:i.ucmp(this.p);return 0===r?(i.words[0]=0,i.length=1):r>0?i.isub(this.p):void 0!==i.strip?i.strip():i._strip(),i},y.prototype.split=function(t,e){t.iushrn(this.n,0,e)},y.prototype.imulK=function(t){return t.imul(this.k)},n(b,y),b.prototype.split=function(t,e){for(var i=4194303,r=Math.min(t.length,9),n=0;n<r;n++)e.words[n]=t.words[n];if(e.length=r,t.length<=9)return t.words[0]=0,void(t.length=1);var o=t.words[9];for(e.words[e.length++]=o&i,n=10;n<t.length;n++){var a=0|t.words[n];t.words[n-10]=(a&i)<<4|o>>>22,o=a}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},b.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,i=0;i<t.length;i++){var r=0|t.words[i];e+=977*r,t.words[i]=67108863&e,e=64*r+(e/67108864|0)}return 0===t.words[t.length-1]&&(t.length--,0===t.words[t.length-1]&&t.length--),t},n(_,y),n(w,y),n(A,y),A.prototype.imulK=function(t){for(var e=0,i=0;i<t.length;i++){var r=19*(0|t.words[i])+e,n=67108863&r;r>>>=26,t.words[i]=n,e=r}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(v[t])return v[t];var e;if("k256"===t)e=new b;else if("p224"===t)e=new _;else if("p192"===t)e=new w;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new A}return v[t]=e,e},M.prototype._verify1=function(t){r(0===t.negative,"red works only with positives"),r(t.red,"red works only with red numbers")},M.prototype._verify2=function(t,e){r(0==(t.negative|e.negative),"red works only with positives"),r(t.red&&t.red===e.red,"red works only with red numbers")},M.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},M.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},M.prototype.add=function(t,e){this._verify2(t,e);var i=t.add(e);return i.cmp(this.m)>=0&&i.isub(this.m),i._forceRed(this)},M.prototype.iadd=function(t,e){this._verify2(t,e);var i=t.iadd(e);return i.cmp(this.m)>=0&&i.isub(this.m),i},M.prototype.sub=function(t,e){this._verify2(t,e);var i=t.sub(e);return i.cmpn(0)<0&&i.iadd(this.m),i._forceRed(this)},M.prototype.isub=function(t,e){this._verify2(t,e);var i=t.isub(e);return i.cmpn(0)<0&&i.iadd(this.m),i},M.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},M.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},M.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},M.prototype.isqr=function(t){return this.imul(t,t.clone())},M.prototype.sqr=function(t){return this.mul(t,t)},M.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(r(e%2==1),3===e){var i=this.m.add(new o(1)).iushrn(2);return this.pow(t,i)}for(var n=this.m.subn(1),a=0;!n.isZero()&&0===n.andln(1);)a++,n.iushrn(1);r(!n.isZero());var s=new o(1).toRed(this),h=s.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);0!==this.pow(l,u).cmp(h);)l.redIAdd(h);for(var d=this.pow(l,n),f=this.pow(t,n.addn(1).iushrn(1)),c=this.pow(t,n),p=a;0!==c.cmp(s);){for(var m=c,g=0;0!==m.cmp(s);g++)m=m.redSqr();r(g<p);var v=this.pow(d,new o(1).iushln(p-g-1));f=f.redMul(v),d=v.redSqr(),c=c.redMul(d),p=g}return f},M.prototype.invm=function(t){var e=t._invmp(this.m);return 0!==e.negative?(e.negative=0,this.imod(e).redNeg()):this.imod(e)},M.prototype.pow=function(t,e){if(e.isZero())return new o(1).toRed(this);if(0===e.cmpn(1))return t.clone();var i=new Array(16);i[0]=new o(1).toRed(this),i[1]=t;for(var r=2;r<i.length;r++)i[r]=this.mul(i[r-1],t);var n=i[0],a=0,s=0,h=e.bitLength()%26;for(0===h&&(h=26),r=e.length-1;r>=0;r--){for(var u=e.words[r],l=h-1;l>=0;l--){var d=u>>l&1;n!==i[0]&&(n=this.sqr(n)),0!==d||0!==a?(a<<=1,a|=d,(4===++s||0===r&&0===l)&&(n=this.mul(n,i[a]),s=0,a=0)):s=0}h=26}return n},M.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},M.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new E(t)},n(E,M),E.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},E.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},E.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var i=t.imul(e),r=i.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=i.isub(r).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},E.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var i=t.mul(e),r=i.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=i.isub(r).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},E.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t,this)}).call(this,i(20)(t))},function(t,e){},function(t,e,i){e.publicEncrypt=i(242),e.privateDecrypt=i(244),e.privateEncrypt=function(t,i){return e.publicEncrypt(t,i,!0)},e.publicDecrypt=function(t,i){return e.privateDecrypt(t,i,!0)}},function(t,e,i){var r=i(46),n=i(25),o=i(35),a=i(128),s=i(129),h=i(74),u=i(130),l=i(65),d=i(4).Buffer;t.exports=function(t,e,i){var f;f=t.padding?t.padding:i?1:4;var c,p=r(t);if(4===f)c=function(t,e){var i=t.modulus.byteLength(),r=e.length,u=o("sha1").update(d.alloc(0)).digest(),l=u.length,f=2*l;if(r>i-f-2)throw new Error("message too long");var c=d.alloc(i-r-f-2),p=i-l-1,m=n(l),g=s(d.concat([u,c,d.alloc(1,1),e],p),a(m,p)),v=s(m,a(g,l));return new h(d.concat([d.alloc(1),v,g],i))}(p,e);else if(1===f)c=function(t,e,i){var r,o=e.length,a=t.modulus.byteLength();if(o>a-11)throw new Error("message too long");r=i?d.alloc(a-o-3,255):function(t){var e,i=d.allocUnsafe(t),r=0,o=n(2*t),a=0;for(;r<t;)a===o.length&&(o=n(2*t),a=0),(e=o[a++])&&(i[r++]=e);return i}(a-o-3);return new h(d.concat([d.from([0,i?1:2]),r,d.alloc(1),e],a))}(p,e,i);else{if(3!==f)throw new Error("unknown padding");if((c=new h(e)).cmp(p.modulus)>=0)throw new Error("data too long for modulus")}return i?l(c,p):u(c,p)}},function(t,e){},function(t,e,i){var r=i(46),n=i(128),o=i(129),a=i(74),s=i(65),h=i(35),u=i(130),l=i(4).Buffer;t.exports=function(t,e,i){var d;d=t.padding?t.padding:i?1:4;var f,c=r(t),p=c.modulus.byteLength();if(e.length>p||new a(e).cmp(c.modulus)>=0)throw new Error("decryption error");f=i?u(new a(e),c):s(e,c);var m=l.alloc(p-f.length);if(f=l.concat([m,f],p),4===d)return function(t,e){var i=t.modulus.byteLength(),r=h("sha1").update(l.alloc(0)).digest(),a=r.length;if(0!==e[0])throw new Error("decryption error");var s=e.slice(1,a+1),u=e.slice(a+1),d=o(s,n(u,a)),f=o(u,n(d,i-a-1));if(function(t,e){t=l.from(t),e=l.from(e);var i=0,r=t.length;t.length!==e.length&&(i++,r=Math.min(t.length,e.length));var n=-1;for(;++n<r;)i+=t[n]^e[n];return i}(r,f.slice(0,a)))throw new Error("decryption error");var c=a;for(;0===f[c];)c++;if(1!==f[c++])throw new Error("decryption error");return f.slice(c)}(c,f);if(1===d)return function(t,e,i){var r=e.slice(0,2),n=2,o=0;for(;0!==e[n++];)if(n>=e.length){o++;break}var a=e.slice(2,n-1);("0002"!==r.toString("hex")&&!i||"0001"!==r.toString("hex")&&i)&&o++;a.length<8&&o++;if(o)throw new Error("decryption error");return e.slice(n)}(0,f,i);if(3===d)return f;throw new Error("unknown padding")}},function(t,e,i){"use strict";(function(t,r){function n(){throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11")}var o=i(4),a=i(25),s=o.Buffer,h=o.kMaxLength,u=t.crypto||t.msCrypto,l=Math.pow(2,32)-1;function d(t,e){if("number"!=typeof t||t!=t)throw new TypeError("offset must be a number");if(t>l||t<0)throw new TypeError("offset must be a uint32");if(t>h||t>e)throw new RangeError("offset out of range")}function f(t,e,i){if("number"!=typeof t||t!=t)throw new TypeError("size must be a number");if(t>l||t<0)throw new TypeError("size must be a uint32");if(t+e>i||t>h)throw new RangeError("buffer too small")}function c(t,e,i,n){if(r.browser){var o=t.buffer,s=new Uint8Array(o,e,i);return u.getRandomValues(s),n?void r.nextTick((function(){n(null,t)})):t}if(!n)return a(i).copy(t,e),t;a(i,(function(i,r){if(i)return n(i);r.copy(t,e),n(null,t)}))}u&&u.getRandomValues||!r.browser?(e.randomFill=function(e,i,r,n){if(!(s.isBuffer(e)||e instanceof t.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if("function"==typeof i)n=i,i=0,r=e.length;else if("function"==typeof r)n=r,r=e.length-i;else if("function"!=typeof n)throw new TypeError('"cb" argument must be a function');return d(i,e.length),f(r,i,e.length),c(e,i,r,n)},e.randomFillSync=function(e,i,r){void 0===i&&(i=0);if(!(s.isBuffer(e)||e instanceof t.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');d(i,e.length),void 0===r&&(r=e.length-i);return f(r,i,e.length),c(e,i,r)}):(e.randomFill=n,e.randomFillSync=n)}).call(this,i(10),i(8))},function(t,e,i){"use strict";i.r(e);var r=i(0),n=i(40);e.default=function(t){t._requestAbort=!1,t.soundPlayer=null,t.audioSampleQueue=[];t.addEventListener("message",(function(e){switch(e.data.cmd){case r.tOpenStream:!function(e,i,r){if(null==t.soundPlayer){var o="16bitInt";switch(e){case 0:o="8bitInt";break;case 1:o="16bitInt";break;case 2:o="32bitInt";break;case 3:o="32bitFloat";break;default:this.logger.logError("Unsupported audio sampleFmt "+e+"!")}t.soundPlayer=new n.a,t.soundPlayer.init({encoding:o,channels:i,sampleRate:r,flushingTime:5e3})}}(1,2,8e3);break;case r.tFrameData:break;case r.tCloseStream:t._requestAbort=!0}}))}},function(t,e,i){var r=i(47),n=i(248);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var o={insert:"head",singleton:!1};r(n,o);t.exports=n.locals||{}},function(t,e,i){var r=i(48),n=i(249),o=i(250),a=i(251);e=r(!1);var s=n(o),h=n(a);e.push([t.i,'@font-face{font-family:"vssfont";src:url("data:application/x-font-woff2;charset=utf-8;base64,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") format("woff2"),url('+s+') format("woff"),url('+h+') format("truetype")}.vssfont{font-family:"vssfont" !important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.vss-video-ratio-1:before{content:"\\ea41"}.vss-fullscreen1:before{content:"\\e60a"}.vss-video-ratio:before{content:"\\e661"}.vss-video-fill:before{content:"\\e671"}.vss-video-fill-1:before{content:"\\e600"}.vss-mute:before{content:"\\e851"}.vss-pause:before{content:"\\ea8a"}.vss-play:before{content:"\\e653"}.vss-open-voice:before{content:"\\e753"}.vss-snapshot:before{content:"\\e604"}.vss-stop:before{content:"\\e611"}.vss-mode:before{content:"\\e61e"}.vss-cancel-fullscreen:before{content:"\\e61f"}.vss-fullscreen:before{content:"\\e620"}\n',""]),t.exports=e},function(t,e,i){"use strict";t.exports=function(t,e){return e||(e={}),"string"!=typeof(t=t&&t.__esModule?t.default:t)?t:(/^['"].*['"]$/.test(t)&&(t=t.slice(1,-1)),e.hash&&(t+=e.hash),/["'() \t\n]/.test(t)||e.needQuotes?'"'.concat(t.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):t)}},function(t,e,i){"use strict";i.r(e),e.default="data:font/woff;base64,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"},function(t,e,i){"use strict";i.r(e),e.default="data:font/ttf;base64,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"},function(t,e,i){var r=i(47),n=i(253);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var o={insert:"head",singleton:!1};r(n,o);t.exports=n.locals||{}},function(t,e,i){(e=i(48)(!1)).push([t.i,".vss-loading{position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;background-color:rgba(0,0,0,0.6);z-index:9}.vss-loading-center{position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);display:flex;align-items:center;flex-direction:column;justify-content:center}.vss-loading-icon{display:block;margin-bottom:5px;border:3px solid #f3f3f3;border-radius:50%;border-top:3px solid #ad2605;width:25px;height:25px;animation:load .5s linear infinite}.vss-loading-img{margin-bottom:5px;width:40px;height:40px}.vss-loading-text{color:#ffffff;font-size:14px}.vss-canvas{width:100%;height:100%;position:absolute;top:0;left:0;background:#000000}.vss-big-play-button{position:absolute;z-index:100;top:0;bottom:0;left:0;right:0;width:50px;height:50px;display:flex;align-items:center;justify-content:center;margin:auto;color:#ffffff;border-radius:50%;background-color:rgba(255,255,255,0.4)}.vss-big-play-icon{font-size:24px;margin-left:3px}.vss-pointer{cursor:pointer}.vss-control-show .vss-control-bar{opacity:1;visibility:visible}.vss-control-bar{height:34px;position:absolute;bottom:0;width:100%;display:flex;align-items:center;justify-content:space-between;color:#ffffff;background-color:rgba(43,51,63,0.7);z-index:20;opacity:0;visibility:hidden;transition:all .2s ease-in-out}.vss-control-bar-right,.vss-control-bar-left{display:flex;align-items:center;flex-shrink:0}.vss-full-screen-btn{width:34px;height:34px;display:flex;align-items:center;justify-content:center}.vss-control-btn{width:34px;height:34px;display:flex;align-items:center;justify-content:center}.vss-item-box{height:34px;display:flex;align-items:center;justify-content:center;padding:0 5px}.vss-control-bar-conter{width:100%}.vss-time-box{display:flex;align-items:center;justify-content:space-between;color:#ffffff}.vss-time-left-text,.vss-time-right-text{flex-shrink:0;font-size:13px;margin:0 5px}.vss-time-schedule{width:100%;padding:0 5px}.vss-time-track-out{position:relative;width:100%;height:3px;vertical-align:middle}.vss-time-track{position:relative;width:100%;height:3px;background-color:#ffffff;vertical-align:middle;cursor:pointer;border-radius:3px}.vss-time-progress{position:absolute;left:0;top:0;height:100%;width:0;background-color:#00ABBE;border-top-left-radius:3px;border-bottom-left-radius:3px;user-select:none}.vss-time-button-wrapper{height:12px;width:12px;position:absolute;z-index:1001;top:-5px;transform:translateX(-50%);background-color:transparent;text-align:center;user-select:none;line-height:normal;cursor:pointer}.vss-time-button-wrapper:hover .vss-time-button-wrapper_tip:not(.vss-hide){display:block}.vss-time-button-wrapper_tip{display:none;position:absolute;top:-30px;background-color:rgba(0,0,0,0.5);border:1px solid rgba(0,0,0,0.6);padding:2px 5px;color:#ffffff;height:16px;z-index:10;border-radius:3px;transform:translateX(calc(-50% + 6px));white-space:nowrap}.vss-time-button-wrapper_tip:after{position:absolute;content:'';left:0;right:0;margin:0 auto;width:0;bottom:-6px;border-top:5px solid rgba(0,0,0,0.5);border-left:5px solid transparent;border-right:5px solid transparent}.vss-time-button-wrapper_button{width:12px;height:12px;border:1px solid #333;background-color:#fff;border-radius:50%;transition:.2s;user-select:none}.vss-time-button-wrapper_button:hover{transform:scale(1.2)}.vss-full-screen-btn span{font-size:18px}.vss-poster-box{width:100%;height:100%;position:absolute;top:0;left:0;overflow:hidden}.vss-poster-image{width:100%;height:100%}@keyframes load{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}\n",""]),t.exports=e},function(t,e,i){var r=i(47),n=i(255);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var o={insert:"head",singleton:!1};r(n,o);t.exports=n.locals||{}},function(t,e,i){(e=i(48)(!1)).push([t.i,"input[type=range]{-webkit-appearance:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none}input[type=range]::-webkit-slider-runnable-track{height:15px;border-radius:10px}input[type=range]:focus{outline:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;height:15px;width:15px;margin-top:-2px;background:#ffffff;border-radius:50%}.conter{position:absolute;left:50%;top:50%;transform:translate(-50%, -50%)}.Loding{margin:0 auto;margin-bottom:5px;border:3px solid #f3f3f3;border-radius:50%;border-top:3px solid #2e8e9a;width:25px;height:25px;animation:load .5s linear infinite}.LodingTitle{margin-top:20px;color:#fff;font-size:14px}@keyframes load{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.bigPlayBox{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);background-color:rgba(0,0,0,0.5);cursor:pointer;width:80px;height:80px;border-radius:40px;text-align:center;line-height:80px;font-size:36px;color:#fff;z-index:9}\n",""]),t.exports=e},function(t,e,i){var r=i(47),n=i(257);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[t.i,n,""]]);var o={insert:"head",singleton:!1};r(n,o);t.exports=n.locals||{}},function(t,e,i){(e=i(48)(!1)).push([t.i,".vss-player{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;-khtml-user-select:none;-o-user-select:none;user-select:none;z-index:5}.vss-player:after{position:absolute;content:'';top:0;bottom:0;left:0;right:0;margin:auto;z-index:10}.vss-shade{box-shadow:0 0 5px rgba(0,0,0,0.5)}.vss-mask{position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;background-color:rgba(0,0,0,0.6);z-index:9}.vss-mask-center{position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);display:flex;align-items:center;flex-direction:column;justify-content:center}.vss-loading-logo-img{display:block;width:240px;margin-bottom:5px}.vss-loading-logo-text{letter-spacing:2px;text-align:center;font-size:18px;font-weight:600;background:linear-gradient(90deg, #833ab4 0%, #fd1d1d 33.3%, #fcb045 66.6%, #833ab4 100%);-webkit-background-clip:text;color:transparent;background-size:300% 100%;animation:logoText-animation 4s infinite linear}@keyframes logoText-animation{0%{background-position:0 0}100%{background-position:-150% 0}}.vss-show{display:block !important}.vss-hide{display:none !important}.no-copy{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;-khtml-user-select:none;-o-user-select:none;user-select:none}.vss-contextm-menu{position:absolute;top:0;left:0;color:#333;background-color:#ffffff;padding:5px 0;opacity:0;visibility:hidden;margin:0;border-radius:2px;z-index:10005;list-style:none;box-shadow:0 1.5px 4px rgba(0,0,0,0.24),0 1.5px 6px rgba(0,0,0,0.12);font-family:Roboto-Medium, 'Noto Sans CJK DemiLight', 'Microsoft YaHei', Arial, Helvetica, sans-serif;box-sizing:initial}.vss-contextm-menu.vss-contextm-menu-show{opacity:1;visibility:visible}.vss-contextm-menu li{position:relative;max-width:360px;padding:5px 15px;text-align:left;white-space:nowrap;text-overflow:ellipsis;font-size:14px;color:#383838;transition:all .2s;user-select:none;cursor:pointer}.vss-contextm-menu li:hover{background-color:#c8c8c8}.vss-message-box{position:absolute;bottom:34px;left:0;z-index:10;max-height:200px;padding:0 15px;opacity:1;visibility:visible;transition:all .2s ease-in-out}.vss-message-box .vss-message-item{color:#c1c1c1;font-size:12px;text-shadow:1px 1px 2px #000000}.vss-message-box.vss-message-hide{opacity:0;visibility:hidden}.vss-export-message-box{position:absolute;bottom:34px;right:0;z-index:10;max-height:200px;max-width:200px;padding:0 15px;opacity:1;visibility:visible;transition:all .2s ease-in-out}.vss-export-message-box .vss-export-message-item{color:#c1c1c1;font-size:12px;text-shadow:1px 1px 2px #000000}.vss-export-message-box.vss-export-message-hide{opacity:0;visibility:hidden}.vss-osd-message-box{position:absolute;background-color:rgba(0,0,0,0.5);z-index:10;max-height:15em;max-width:30em;overflow:hidden;padding:1em;opacity:1;visibility:visible;height:fit-content;color:#c1c1c1}.vss-osd-message-box.pos_righttop{right:1em;top:1em}.vss-osd-message-box.pos_lefttop{left:1em;top:1em}.vss-osd-message-box.pos_rightbottom{right:1em;bottom:40px}.vss-osd-message-box.pos_leftbottom{left:1em;bottom:40px}.vss-osd-message-box.pos_center{left:50%;top:50%;transform:translate(-50%, -50%)}.vss-osd-message-box .vss-osd-message-item{font-size:12px}.vss-osd-message-box .vss-osd-message-item.vss-move-top{margin-top:-1em}.vss-osd-message-box.vss-osd-message-hide{opacity:0;visibility:hidden}\n",""]),t.exports=e},function(t,e){},function(t,e,i){var r;t.exports=(r=i(5),function(){if("function"==typeof ArrayBuffer){var t=r.lib.WordArray,e=t.init,i=t.init=function(t){if(t instanceof ArrayBuffer&&(t=new Uint8Array(t)),(t instanceof Int8Array||"undefined"!=typeof Uint8ClampedArray&&t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array||t instanceof Float64Array)&&(t=new Uint8Array(t.buffer,t.byteOffset,t.byteLength)),t instanceof Uint8Array){for(var i=t.byteLength,r=[],n=0;n<i;n++)r[n>>>2]|=t[n]<<24-n%4*8;e.call(this,r,i)}else e.apply(this,arguments)};i.prototype=t}}(),r.lib.WordArray)},function(t,e,i){var r;t.exports=(r=i(5),function(){var t=r,e=t.lib.WordArray,i=t.enc;function n(t){return t<<8&4278255360|t>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(t){for(var e=t.words,i=t.sigBytes,r=[],n=0;n<i;n+=2){var o=e[n>>>2]>>>16-n%4*8&65535;r.push(String.fromCharCode(o))}return r.join("")},parse:function(t){for(var i=t.length,r=[],n=0;n<i;n++)r[n>>>1]|=t.charCodeAt(n)<<16-n%2*16;return e.create(r,2*i)}},i.Utf16LE={stringify:function(t){for(var e=t.words,i=t.sigBytes,r=[],o=0;o<i;o+=2){var a=n(e[o>>>2]>>>16-o%4*8&65535);r.push(String.fromCharCode(a))}return r.join("")},parse:function(t){for(var i=t.length,r=[],o=0;o<i;o++)r[o>>>1]|=n(t.charCodeAt(o)<<16-o%2*16);return e.create(r,2*i)}}}(),r.enc.Utf16)},function(t,e,i){var r;t.exports=(r=i(5),function(){var t=r,e=t.lib.WordArray;function i(t,i,r){for(var n=[],o=0,a=0;a<i;a++)if(a%4){var s=r[t.charCodeAt(a-1)]<<a%4*2|r[t.charCodeAt(a)]>>>6-a%4*2;n[o>>>2]|=s<<24-o%4*8,o++}return e.create(n,o)}t.enc.Base64url={stringify:function(t,e){void 0===e&&(e=!0);var i=t.words,r=t.sigBytes,n=e?this._safe_map:this._map;t.clamp();for(var o=[],a=0;a<r;a+=3)for(var s=(i[a>>>2]>>>24-a%4*8&255)<<16|(i[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|i[a+2>>>2]>>>24-(a+2)%4*8&255,h=0;h<4&&a+.75*h<r;h++)o.push(n.charAt(s>>>6*(3-h)&63));var u=n.charAt(64);if(u)for(;o.length%4;)o.push(u);return o.join("")},parse:function(t,e){void 0===e&&(e=!0);var r=t.length,n=e?this._safe_map:this._map,o=this._reverseMap;if(!o){o=this._reverseMap=[];for(var a=0;a<n.length;a++)o[n.charCodeAt(a)]=a}var s=n.charAt(64);if(s){var h=t.indexOf(s);-1!==h&&(r=h)}return i(t,r,o)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",_safe_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"}}(),r.enc.Base64url)},function(t,e,i){var r,n,o,a,s,h;t.exports=(h=i(5),i(131),n=(r=h).lib.WordArray,o=r.algo,a=o.SHA256,s=o.SHA224=a.extend({_doReset:function(){this._hash=new n.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var t=a._doFinalize.call(this);return t.sigBytes-=4,t}}),r.SHA224=a._createHelper(s),r.HmacSHA224=a._createHmacHelper(s),h.SHA224)},function(t,e,i){var r,n,o,a,s,h,u,l;t.exports=(l=i(5),i(49),i(132),n=(r=l).x64,o=n.Word,a=n.WordArray,s=r.algo,h=s.SHA512,u=s.SHA384=h.extend({_doReset:function(){this._hash=new a.init([new o.init(3418070365,3238371032),new o.init(1654270250,914150663),new o.init(2438529370,812702999),new o.init(355462360,4144912697),new o.init(1731405415,4290775857),new o.init(2394180231,1750603025),new o.init(3675008525,1694076839),new o.init(1203062813,3204075428)])},_doFinalize:function(){var t=h._doFinalize.call(this);return t.sigBytes-=16,t}}),r.SHA384=h._createHelper(u),r.HmacSHA384=h._createHmacHelper(u),l.SHA384)},function(t,e,i){var r;t.exports=(r=i(5),i(49),function(t){var e=r,i=e.lib,n=i.WordArray,o=i.Hasher,a=e.x64.Word,s=e.algo,h=[],u=[],l=[];!function(){for(var t=1,e=0,i=0;i<24;i++){h[t+5*e]=(i+1)*(i+2)/2%64;var r=(2*t+3*e)%5;t=e%5,e=r}for(t=0;t<5;t++)for(e=0;e<5;e++)u[t+5*e]=e+(2*t+3*e)%5*5;for(var n=1,o=0;o<24;o++){for(var s=0,d=0,f=0;f<7;f++){if(1&n){var c=(1<<f)-1;c<32?d^=1<<c:s^=1<<c-32}128&n?n=n<<1^113:n<<=1}l[o]=a.create(s,d)}}();var d=[];!function(){for(var t=0;t<25;t++)d[t]=a.create()}();var f=s.SHA3=o.extend({cfg:o.cfg.extend({outputLength:512}),_doReset:function(){for(var t=this._state=[],e=0;e<25;e++)t[e]=new a.init;this.blockSize=(1600-2*this.cfg.outputLength)/32},_doProcessBlock:function(t,e){for(var i=this._state,r=this.blockSize/2,n=0;n<r;n++){var o=t[e+2*n],a=t[e+2*n+1];o=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(R=i[n]).high^=a,R.low^=o}for(var s=0;s<24;s++){for(var f=0;f<5;f++){for(var c=0,p=0,m=0;m<5;m++)c^=(R=i[f+5*m]).high,p^=R.low;var g=d[f];g.high=c,g.low=p}for(f=0;f<5;f++){var v=d[(f+4)%5],y=d[(f+1)%5],b=y.high,_=y.low;for(c=v.high^(b<<1|_>>>31),p=v.low^(_<<1|b>>>31),m=0;m<5;m++)(R=i[f+5*m]).high^=c,R.low^=p}for(var w=1;w<25;w++){var A=(R=i[w]).high,M=R.low,E=h[w];E<32?(c=A<<E|M>>>32-E,p=M<<E|A>>>32-E):(c=M<<E-32|A>>>64-E,p=A<<E-32|M>>>64-E);var S=d[u[w]];S.high=c,S.low=p}var k=d[0],T=i[0];for(k.high=T.high,k.low=T.low,f=0;f<5;f++)for(m=0;m<5;m++){var R=i[w=f+5*m],I=d[w],C=d[(f+1)%5+5*m],P=d[(f+2)%5+5*m];R.high=I.high^~C.high&P.high,R.low=I.low^~C.low&P.low}R=i[0];var x=l[s];R.high^=x.high,R.low^=x.low}},_doFinalize:function(){var e=this._data,i=e.words,r=(this._nDataBytes,8*e.sigBytes),o=32*this.blockSize;i[r>>>5]|=1<<24-r%32,i[(t.ceil((r+1)/o)*o>>>5)-1]|=128,e.sigBytes=4*i.length,this._process();for(var a=this._state,s=this.cfg.outputLength/8,h=s/8,u=[],l=0;l<h;l++){var d=a[l],f=d.high,c=d.low;f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),c=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8),u.push(c),u.push(f)}return new n.init(u,s)},clone:function(){for(var t=o.clone.call(this),e=t._state=this._state.slice(0),i=0;i<25;i++)e[i]=e[i].clone();return t}});e.SHA3=o._createHelper(f),e.HmacSHA3=o._createHmacHelper(f)}(Math),r.SHA3)},function(t,e,i){var r;t.exports=(r=i(5),function(t){var e=r,i=e.lib,n=i.WordArray,o=i.Hasher,a=e.algo,s=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),h=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),u=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),l=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),d=n.create([0,1518500249,1859775393,2400959708,2840853838]),f=n.create([1352829926,1548603684,1836072691,2053994217,0]),c=a.RIPEMD160=o.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(t,e){for(var i=0;i<16;i++){var r=e+i,n=t[r];t[r]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var o,a,c,_,w,A,M,E,S,k,T,R=this._hash.words,I=d.words,C=f.words,P=s.words,x=h.words,D=u.words,O=l.words;for(A=o=R[0],M=a=R[1],E=c=R[2],S=_=R[3],k=w=R[4],i=0;i<80;i+=1)T=o+t[e+P[i]]|0,T+=i<16?p(a,c,_)+I[0]:i<32?m(a,c,_)+I[1]:i<48?g(a,c,_)+I[2]:i<64?v(a,c,_)+I[3]:y(a,c,_)+I[4],T=(T=b(T|=0,D[i]))+w|0,o=w,w=_,_=b(c,10),c=a,a=T,T=A+t[e+x[i]]|0,T+=i<16?y(M,E,S)+C[0]:i<32?v(M,E,S)+C[1]:i<48?g(M,E,S)+C[2]:i<64?m(M,E,S)+C[3]:p(M,E,S)+C[4],T=(T=b(T|=0,O[i]))+k|0,A=k,k=S,S=b(E,10),E=M,M=T;T=R[1]+c+S|0,R[1]=R[2]+_+k|0,R[2]=R[3]+w+A|0,R[3]=R[4]+o+M|0,R[4]=R[0]+a+E|0,R[0]=T},_doFinalize:function(){var t=this._data,e=t.words,i=8*this._nDataBytes,r=8*t.sigBytes;e[r>>>5]|=128<<24-r%32,e[14+(r+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),t.sigBytes=4*(e.length+1),this._process();for(var n=this._hash,o=n.words,a=0;a<5;a++){var s=o[a];o[a]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}return n},clone:function(){var t=o.clone.call(this);return t._hash=this._hash.clone(),t}});function p(t,e,i){return t^e^i}function m(t,e,i){return t&e|~t&i}function g(t,e,i){return(t|~e)^i}function v(t,e,i){return t&i|e&~i}function y(t,e,i){return t^(e|~i)}function b(t,e){return t<<e|t>>>32-e}e.RIPEMD160=o._createHelper(c),e.HmacRIPEMD160=o._createHmacHelper(c)}(Math),r.RIPEMD160)},function(t,e,i){var r,n,o,a,s,h,u,l,d;t.exports=(d=i(5),i(75),i(76),n=(r=d).lib,o=n.Base,a=n.WordArray,s=r.algo,h=s.SHA1,u=s.HMAC,l=s.PBKDF2=o.extend({cfg:o.extend({keySize:4,hasher:h,iterations:1}),init:function(t){this.cfg=this.cfg.extend(t)},compute:function(t,e){for(var i=this.cfg,r=u.create(i.hasher,t),n=a.create(),o=a.create([1]),s=n.words,h=o.words,l=i.keySize,d=i.iterations;s.length<l;){var f=r.update(e).finalize(o);r.reset();for(var c=f.words,p=c.length,m=f,g=1;g<d;g++){m=r.finalize(m),r.reset();for(var v=m.words,y=0;y<p;y++)c[y]^=v[y]}n.concat(f),h[0]++}return n.sigBytes=4*l,n}}),r.PBKDF2=function(t,e,i){return l.create(i).compute(t,e)},d.PBKDF2)},function(t,e,i){var r;t.exports=(r=i(5),i(11),r.mode.CFB=function(){var t=r.lib.BlockCipherMode.extend();function e(t,e,i,r){var n,o=this._iv;o?(n=o.slice(0),this._iv=void 0):n=this._prevBlock,r.encryptBlock(n,0);for(var a=0;a<i;a++)t[e+a]^=n[a]}return t.Encryptor=t.extend({processBlock:function(t,i){var r=this._cipher,n=r.blockSize;e.call(this,t,i,n,r),this._prevBlock=t.slice(i,i+n)}}),t.Decryptor=t.extend({processBlock:function(t,i){var r=this._cipher,n=r.blockSize,o=t.slice(i,i+n);e.call(this,t,i,n,r),this._prevBlock=o}}),t}(),r.mode.CFB)},function(t,e,i){var r,n,o;t.exports=(o=i(5),i(11),o.mode.CTR=(r=o.lib.BlockCipherMode.extend(),n=r.Encryptor=r.extend({processBlock:function(t,e){var i=this._cipher,r=i.blockSize,n=this._iv,o=this._counter;n&&(o=this._counter=n.slice(0),this._iv=void 0);var a=o.slice(0);i.encryptBlock(a,0),o[r-1]=o[r-1]+1|0;for(var s=0;s<r;s++)t[e+s]^=a[s]}}),r.Decryptor=n,r),o.mode.CTR)},function(t,e,i){var r;t.exports=(r=i(5),i(11),r.mode.CTRGladman=function(){var t=r.lib.BlockCipherMode.extend();function e(t){if(255==(t>>24&255)){var e=t>>16&255,i=t>>8&255,r=255&t;255===e?(e=0,255===i?(i=0,255===r?r=0:++r):++i):++e,t=0,t+=e<<16,t+=i<<8,t+=r}else t+=1<<24;return t}function i(t){return 0===(t[0]=e(t[0]))&&(t[1]=e(t[1])),t}var n=t.Encryptor=t.extend({processBlock:function(t,e){var r=this._cipher,n=r.blockSize,o=this._iv,a=this._counter;o&&(a=this._counter=o.slice(0),this._iv=void 0),i(a);var s=a.slice(0);r.encryptBlock(s,0);for(var h=0;h<n;h++)t[e+h]^=s[h]}});return t.Decryptor=n,t}(),r.mode.CTRGladman)},function(t,e,i){var r,n,o;t.exports=(o=i(5),i(11),o.mode.OFB=(r=o.lib.BlockCipherMode.extend(),n=r.Encryptor=r.extend({processBlock:function(t,e){var i=this._cipher,r=i.blockSize,n=this._iv,o=this._keystream;n&&(o=this._keystream=n.slice(0),this._iv=void 0),i.encryptBlock(o,0);for(var a=0;a<r;a++)t[e+a]^=o[a]}}),r.Decryptor=n,r),o.mode.OFB)},function(t,e,i){var r,n;t.exports=(n=i(5),i(11),n.mode.ECB=((r=n.lib.BlockCipherMode.extend()).Encryptor=r.extend({processBlock:function(t,e){this._cipher.encryptBlock(t,e)}}),r.Decryptor=r.extend({processBlock:function(t,e){this._cipher.decryptBlock(t,e)}}),r),n.mode.ECB)},function(t,e,i){var r;t.exports=(r=i(5),i(11),r.pad.AnsiX923={pad:function(t,e){var i=t.sigBytes,r=4*e,n=r-i%r,o=i+n-1;t.clamp(),t.words[o>>>2]|=n<<24-o%4*8,t.sigBytes+=n},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},r.pad.Ansix923)},function(t,e,i){var r;t.exports=(r=i(5),i(11),r.pad.Iso10126={pad:function(t,e){var i=4*e,n=i-t.sigBytes%i;t.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},r.pad.Iso10126)},function(t,e,i){var r;t.exports=(r=i(5),i(11),r.pad.Iso97971={pad:function(t,e){t.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(t,e)},unpad:function(t){r.pad.ZeroPadding.unpad(t),t.sigBytes--}},r.pad.Iso97971)},function(t,e,i){var r;t.exports=(r=i(5),i(11),r.pad.ZeroPadding={pad:function(t,e){var i=4*e;t.clamp(),t.sigBytes+=i-(t.sigBytes%i||i)},unpad:function(t){var e=t.words,i=t.sigBytes-1;for(i=t.sigBytes-1;i>=0;i--)if(e[i>>>2]>>>24-i%4*8&255){t.sigBytes=i+1;break}}},r.pad.ZeroPadding)},function(t,e,i){var r;t.exports=(r=i(5),i(11),r.pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)},function(t,e,i){var r,n,o,a;t.exports=(a=i(5),i(11),n=(r=a).lib.CipherParams,o=r.enc.Hex,r.format.Hex={stringify:function(t){return t.ciphertext.toString(o)},parse:function(t){var e=o.parse(t);return n.create({ciphertext:e})}},a.format.Hex)},function(t,e,i){var r;t.exports=(r=i(5),i(31),i(32),i(21),i(11),function(){var t=r,e=t.lib.BlockCipher,i=t.algo,n=[],o=[],a=[],s=[],h=[],u=[],l=[],d=[],f=[],c=[];!function(){for(var t=[],e=0;e<256;e++)t[e]=e<128?e<<1:e<<1^283;var i=0,r=0;for(e=0;e<256;e++){var p=r^r<<1^r<<2^r<<3^r<<4;p=p>>>8^255&p^99,n[i]=p,o[p]=i;var m=t[i],g=t[m],v=t[g],y=257*t[p]^16843008*p;a[i]=y<<24|y>>>8,s[i]=y<<16|y>>>16,h[i]=y<<8|y>>>24,u[i]=y,y=16843009*v^65537*g^257*m^16843008*i,l[p]=y<<24|y>>>8,d[p]=y<<16|y>>>16,f[p]=y<<8|y>>>24,c[p]=y,i?(i=m^t[t[t[v^m]]],r^=t[t[r]]):i=r=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=e.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var t=this._keyPriorReset=this._key,e=t.words,i=t.sigBytes/4,r=4*((this._nRounds=i+6)+1),o=this._keySchedule=[],a=0;a<r;a++)a<i?o[a]=e[a]:(u=o[a-1],a%i?i>6&&a%i==4&&(u=n[u>>>24]<<24|n[u>>>16&255]<<16|n[u>>>8&255]<<8|n[255&u]):(u=n[(u=u<<8|u>>>24)>>>24]<<24|n[u>>>16&255]<<16|n[u>>>8&255]<<8|n[255&u],u^=p[a/i|0]<<24),o[a]=o[a-i]^u);for(var s=this._invKeySchedule=[],h=0;h<r;h++){if(a=r-h,h%4)var u=o[a];else u=o[a-4];s[h]=h<4||a<=4?u:l[n[u>>>24]]^d[n[u>>>16&255]]^f[n[u>>>8&255]]^c[n[255&u]]}}},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._keySchedule,a,s,h,u,n)},decryptBlock:function(t,e){var i=t[e+1];t[e+1]=t[e+3],t[e+3]=i,this._doCryptBlock(t,e,this._invKeySchedule,l,d,f,c,o),i=t[e+1],t[e+1]=t[e+3],t[e+3]=i},_doCryptBlock:function(t,e,i,r,n,o,a,s){for(var h=this._nRounds,u=t[e]^i[0],l=t[e+1]^i[1],d=t[e+2]^i[2],f=t[e+3]^i[3],c=4,p=1;p<h;p++){var m=r[u>>>24]^n[l>>>16&255]^o[d>>>8&255]^a[255&f]^i[c++],g=r[l>>>24]^n[d>>>16&255]^o[f>>>8&255]^a[255&u]^i[c++],v=r[d>>>24]^n[f>>>16&255]^o[u>>>8&255]^a[255&l]^i[c++],y=r[f>>>24]^n[u>>>16&255]^o[l>>>8&255]^a[255&d]^i[c++];u=m,l=g,d=v,f=y}m=(s[u>>>24]<<24|s[l>>>16&255]<<16|s[d>>>8&255]<<8|s[255&f])^i[c++],g=(s[l>>>24]<<24|s[d>>>16&255]<<16|s[f>>>8&255]<<8|s[255&u])^i[c++],v=(s[d>>>24]<<24|s[f>>>16&255]<<16|s[u>>>8&255]<<8|s[255&l])^i[c++],y=(s[f>>>24]<<24|s[u>>>16&255]<<16|s[l>>>8&255]<<8|s[255&d])^i[c++],t[e]=m,t[e+1]=g,t[e+2]=v,t[e+3]=y},keySize:8});t.AES=e._createHelper(m)}(),r.AES)},function(t,e,i){var r;t.exports=(r=i(5),i(31),i(32),i(21),i(11),function(){var t=r,e=t.lib,i=e.WordArray,n=e.BlockCipher,o=t.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],s=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],h=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],u=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],l=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],d=o.DES=n.extend({_doReset:function(){for(var t=this._key.words,e=[],i=0;i<56;i++){var r=a[i]-1;e[i]=t[r>>>5]>>>31-r%32&1}for(var n=this._subKeys=[],o=0;o<16;o++){var u=n[o]=[],l=h[o];for(i=0;i<24;i++)u[i/6|0]|=e[(s[i]-1+l)%28]<<31-i%6,u[4+(i/6|0)]|=e[28+(s[i+24]-1+l)%28]<<31-i%6;for(u[0]=u[0]<<1|u[0]>>>31,i=1;i<7;i++)u[i]=u[i]>>>4*(i-1)+3;u[7]=u[7]<<5|u[7]>>>27}var d=this._invSubKeys=[];for(i=0;i<16;i++)d[i]=n[15-i]},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._subKeys)},decryptBlock:function(t,e){this._doCryptBlock(t,e,this._invSubKeys)},_doCryptBlock:function(t,e,i){this._lBlock=t[e],this._rBlock=t[e+1],f.call(this,4,252645135),f.call(this,16,65535),c.call(this,2,858993459),c.call(this,8,16711935),f.call(this,1,1431655765);for(var r=0;r<16;r++){for(var n=i[r],o=this._lBlock,a=this._rBlock,s=0,h=0;h<8;h++)s|=u[h][((a^n[h])&l[h])>>>0];this._lBlock=a,this._rBlock=o^s}var d=this._lBlock;this._lBlock=this._rBlock,this._rBlock=d,f.call(this,1,1431655765),c.call(this,8,16711935),c.call(this,2,858993459),f.call(this,16,65535),f.call(this,4,252645135),t[e]=this._lBlock,t[e+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function f(t,e){var i=(this._lBlock>>>t^this._rBlock)&e;this._rBlock^=i,this._lBlock^=i<<t}function c(t,e){var i=(this._rBlock>>>t^this._lBlock)&e;this._lBlock^=i,this._rBlock^=i<<t}t.DES=n._createHelper(d);var p=o.TripleDES=n.extend({_doReset:function(){var t=this._key.words;if(2!==t.length&&4!==t.length&&t.length<6)throw new Error("Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.");var e=t.slice(0,2),r=t.length<4?t.slice(0,2):t.slice(2,4),n=t.length<6?t.slice(0,2):t.slice(4,6);this._des1=d.createEncryptor(i.create(e)),this._des2=d.createEncryptor(i.create(r)),this._des3=d.createEncryptor(i.create(n))},encryptBlock:function(t,e){this._des1.encryptBlock(t,e),this._des2.decryptBlock(t,e),this._des3.encryptBlock(t,e)},decryptBlock:function(t,e){this._des3.decryptBlock(t,e),this._des2.encryptBlock(t,e),this._des1.decryptBlock(t,e)},keySize:6,ivSize:2,blockSize:2});t.TripleDES=n._createHelper(p)}(),r.TripleDES)},function(t,e,i){var r;t.exports=(r=i(5),i(31),i(32),i(21),i(11),function(){var t=r,e=t.lib.StreamCipher,i=t.algo,n=i.RC4=e.extend({_doReset:function(){for(var t=this._key,e=t.words,i=t.sigBytes,r=this._S=[],n=0;n<256;n++)r[n]=n;n=0;for(var o=0;n<256;n++){var a=n%i,s=e[a>>>2]>>>24-a%4*8&255;o=(o+r[n]+s)%256;var h=r[n];r[n]=r[o],r[o]=h}this._i=this._j=0},_doProcessBlock:function(t,e){t[e]^=o.call(this)},keySize:8,ivSize:0});function o(){for(var t=this._S,e=this._i,i=this._j,r=0,n=0;n<4;n++){i=(i+t[e=(e+1)%256])%256;var o=t[e];t[e]=t[i],t[i]=o,r|=t[(t[e]+t[i])%256]<<24-8*n}return this._i=e,this._j=i,r}t.RC4=e._createHelper(n);var a=i.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var t=this.cfg.drop;t>0;t--)o.call(this)}});t.RC4Drop=e._createHelper(a)}(),r.RC4)},function(t,e,i){var r;t.exports=(r=i(5),i(31),i(32),i(21),i(11),function(){var t=r,e=t.lib.StreamCipher,i=t.algo,n=[],o=[],a=[],s=i.Rabbit=e.extend({_doReset:function(){for(var t=this._key.words,e=this.cfg.iv,i=0;i<4;i++)t[i]=16711935&(t[i]<<8|t[i]>>>24)|4278255360&(t[i]<<24|t[i]>>>8);var r=this._X=[t[0],t[3]<<16|t[2]>>>16,t[1],t[0]<<16|t[3]>>>16,t[2],t[1]<<16|t[0]>>>16,t[3],t[2]<<16|t[1]>>>16],n=this._C=[t[2]<<16|t[2]>>>16,4294901760&t[0]|65535&t[1],t[3]<<16|t[3]>>>16,4294901760&t[1]|65535&t[2],t[0]<<16|t[0]>>>16,4294901760&t[2]|65535&t[3],t[1]<<16|t[1]>>>16,4294901760&t[3]|65535&t[0]];for(this._b=0,i=0;i<4;i++)h.call(this);for(i=0;i<8;i++)n[i]^=r[i+4&7];if(e){var o=e.words,a=o[0],s=o[1],u=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),l=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),d=u>>>16|4294901760&l,f=l<<16|65535&u;for(n[0]^=u,n[1]^=d,n[2]^=l,n[3]^=f,n[4]^=u,n[5]^=d,n[6]^=l,n[7]^=f,i=0;i<4;i++)h.call(this)}},_doProcessBlock:function(t,e){var i=this._X;h.call(this),n[0]=i[0]^i[5]>>>16^i[3]<<16,n[1]=i[2]^i[7]>>>16^i[5]<<16,n[2]=i[4]^i[1]>>>16^i[7]<<16,n[3]=i[6]^i[3]>>>16^i[1]<<16;for(var r=0;r<4;r++)n[r]=16711935&(n[r]<<8|n[r]>>>24)|4278255360&(n[r]<<24|n[r]>>>8),t[e+r]^=n[r]},blockSize:4,ivSize:2});function h(){for(var t=this._X,e=this._C,i=0;i<8;i++)o[i]=e[i];for(e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0<o[0]>>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0<o[1]>>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0<o[2]>>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0<o[3]>>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0<o[4]>>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0<o[5]>>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0<o[6]>>>0?1:0)|0,this._b=e[7]>>>0<o[7]>>>0?1:0,i=0;i<8;i++){var r=t[i]+e[i],n=65535&r,s=r>>>16,h=((n*n>>>17)+n*s>>>15)+s*s,u=((4294901760&r)*r|0)+((65535&r)*r|0);a[i]=h^u}t[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,t[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,t[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,t[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,t[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,t[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,t[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,t[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}t.Rabbit=e._createHelper(s)}(),r.Rabbit)},function(t,e,i){var r;t.exports=(r=i(5),i(31),i(32),i(21),i(11),function(){var t=r,e=t.lib.StreamCipher,i=t.algo,n=[],o=[],a=[],s=i.RabbitLegacy=e.extend({_doReset:function(){var t=this._key.words,e=this.cfg.iv,i=this._X=[t[0],t[3]<<16|t[2]>>>16,t[1],t[0]<<16|t[3]>>>16,t[2],t[1]<<16|t[0]>>>16,t[3],t[2]<<16|t[1]>>>16],r=this._C=[t[2]<<16|t[2]>>>16,4294901760&t[0]|65535&t[1],t[3]<<16|t[3]>>>16,4294901760&t[1]|65535&t[2],t[0]<<16|t[0]>>>16,4294901760&t[2]|65535&t[3],t[1]<<16|t[1]>>>16,4294901760&t[3]|65535&t[0]];this._b=0;for(var n=0;n<4;n++)h.call(this);for(n=0;n<8;n++)r[n]^=i[n+4&7];if(e){var o=e.words,a=o[0],s=o[1],u=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),l=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),d=u>>>16|4294901760&l,f=l<<16|65535&u;for(r[0]^=u,r[1]^=d,r[2]^=l,r[3]^=f,r[4]^=u,r[5]^=d,r[6]^=l,r[7]^=f,n=0;n<4;n++)h.call(this)}},_doProcessBlock:function(t,e){var i=this._X;h.call(this),n[0]=i[0]^i[5]>>>16^i[3]<<16,n[1]=i[2]^i[7]>>>16^i[5]<<16,n[2]=i[4]^i[1]>>>16^i[7]<<16,n[3]=i[6]^i[3]>>>16^i[1]<<16;for(var r=0;r<4;r++)n[r]=16711935&(n[r]<<8|n[r]>>>24)|4278255360&(n[r]<<24|n[r]>>>8),t[e+r]^=n[r]},blockSize:4,ivSize:2});function h(){for(var t=this._X,e=this._C,i=0;i<8;i++)o[i]=e[i];for(e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0<o[0]>>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0<o[1]>>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0<o[2]>>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0<o[3]>>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0<o[4]>>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0<o[5]>>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0<o[6]>>>0?1:0)|0,this._b=e[7]>>>0<o[7]>>>0?1:0,i=0;i<8;i++){var r=t[i]+e[i],n=65535&r,s=r>>>16,h=((n*n>>>17)+n*s>>>15)+s*s,u=((4294901760&r)*r|0)+((65535&r)*r|0);a[i]=h^u}t[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,t[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,t[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,t[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,t[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,t[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,t[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,t[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}t.RabbitLegacy=e._createHelper(s)}(),r.RabbitLegacy)},function(t,e,i){"use strict";i.r(e),i.d(e,"default",(function(){return Re}));var r=i(0),n=i(34),o=i.n(n),a=i(133),s=i.n(a),h=function(){function t(t){this.enableTextTexture=0,this.canvas=t,this.yuv=s.a.attach(t,{webGL:!1}),this.format=null}var e=t.prototype;return e.destroy=function(){},e.renderFrame=function(t,e,i,r,n){this.format||(this.format=o.a.format({width:e,height:i,chromaWidth:e/2,chromaHeight:i/2}));var a=o.a.lumaPlane(this.format,new Uint8Array(t.subarray(0,r))),s=o.a.chromaPlane(this.format,new Uint8Array(t.subarray(r,r+n))),h=o.a.chromaPlane(this.format,new Uint8Array(t.subarray(r+n,t.length))),u=o.a.frame(this.format,a,s,h);this.yuv.drawFrame(u)},e.renderVideoFrame=function(t,e,i){if(t){var r=e*i,n=e/2*(i/2);this.renderFrame(t,e,i,r,n)}},t}(),u=i(22),l=i(40),d=i(6),f=i.n(d),c=i(1),p={};!function(){var t=self.navigator.userAgent.toLowerCase(),e=/(edge)\/([\w.]+)/.exec(t)||/(opr)[\/]([\w.]+)/.exec(t)||/(chrome)[ \/]([\w.]+)/.exec(t)||/(iemobile)[\/]([\w.]+)/.exec(t)||/(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(t)||/(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(t)||/(webkit)[ \/]([\w.]+)/.exec(t)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(t)||/(msie) ([\w.]+)/.exec(t)||t.indexOf("trident")>=0&&/(rv)(?::| )([\w.]+)/.exec(t)||t.indexOf("compatible")<0&&/(firefox)[ \/]([\w.]+)/.exec(t)||[],i=/(ipad)/.exec(t)||/(ipod)/.exec(t)||/(windows phone)/.exec(t)||/(iphone)/.exec(t)||/(kindle)/.exec(t)||/(android)/.exec(t)||/(windows)/.exec(t)||/(mac)/.exec(t)||/(linux)/.exec(t)||/(cros)/.exec(t)||[],r={browser:e[5]||e[3]||e[1]||"",version:e[2]||e[4]||"0",majorVersion:e[4]||e[2]||"0",platform:i[0]||""},n={};if(r.browser){n[r.browser]=!0;var o=r.majorVersion.split(".");n.version={major:parseInt(r.majorVersion,10),string:r.version},o.length>1&&(n.version.minor=parseInt(o[1],10)),o.length>2&&(n.version.build=parseInt(o[2],10))}if(r.platform&&(n[r.platform]=!0),(n.chrome||n.opr||n.safari)&&(n.webkit=!0),n.rv||n.iemobile){n.rv&&delete n.rv;var a="msie";r.browser=a,n.msie=!0}if(n.edge){delete n.edge;var s="msedge";r.browser=s,n.msedge=!0}if(n.opr){var h="opera";r.browser=h,n.opera=!0}if(n.safari&&n.android){var u="android";r.browser=u,n.android=!0}for(var l in n.name=r.browser,n.platform=r.platform,p)p.hasOwnProperty(l)&&delete p[l];Object.assign(p,n)}();var m=p,g={ERROR:"error",LOADING_COMPLETE:"loading_complete",RECOVERED_EARLY_EOF:"recovered_early_eof",MEDIA_INFO:"media_info",METADATA_ARRIVED:"metadata_arrived",SCRIPTDATA_ARRIVED:"scriptdata_arrived",STATISTICS_INFO:"statistics_info"};function v(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var y=function(){function t(){}var e,i,r;return t.getConfig=function(){return{globalTag:c.a.GLOBAL_TAG,forceGlobalTag:c.a.FORCE_GLOBAL_TAG,enableVerbose:c.a.ENABLE_VERBOSE,enableDebug:c.a.ENABLE_DEBUG,enableInfo:c.a.ENABLE_INFO,enableWarn:c.a.ENABLE_WARN,enableError:c.a.ENABLE_ERROR,enableCallback:c.a.ENABLE_CALLBACK}},t.applyConfig=function(t){c.a.GLOBAL_TAG=t.globalTag,c.a.FORCE_GLOBAL_TAG=t.forceGlobalTag,c.a.ENABLE_VERBOSE=t.enableVerbose,c.a.ENABLE_DEBUG=t.enableDebug,c.a.ENABLE_INFO=t.enableInfo,c.a.ENABLE_WARN=t.enableWarn,c.a.ENABLE_ERROR=t.enableError,c.a.ENABLE_CALLBACK=t.enableCallback},t._notifyChange=function(){var e=t.emitter;if(e.listenerCount("change")>0){var i=t.getConfig();e.emit("change",i)}},t.registerListener=function(e){t.emitter.addListener("change",e)},t.removeListener=function(e){t.emitter.removeListener("change",e)},t.addLogListener=function(e){c.a.emitter.addListener("log",e),c.a.emitter.listenerCount("log")>0&&(c.a.ENABLE_CALLBACK=!0,t._notifyChange())},t.removeLogListener=function(e){c.a.emitter.removeListener("log",e),0===c.a.emitter.listenerCount("log")&&(c.a.ENABLE_CALLBACK=!1,t._notifyChange())},e=t,r=[{key:"forceGlobalTag",get:function(){return c.a.FORCE_GLOBAL_TAG},set:function(e){c.a.FORCE_GLOBAL_TAG=e,t._notifyChange()}},{key:"globalTag",get:function(){return c.a.GLOBAL_TAG},set:function(e){c.a.GLOBAL_TAG=e,t._notifyChange()}},{key:"enableAll",get:function(){return c.a.ENABLE_VERBOSE&&c.a.ENABLE_DEBUG&&c.a.ENABLE_INFO&&c.a.ENABLE_WARN&&c.a.ENABLE_ERROR},set:function(e){c.a.ENABLE_VERBOSE=e,c.a.ENABLE_DEBUG=e,c.a.ENABLE_INFO=e,c.a.ENABLE_WARN=e,c.a.ENABLE_ERROR=e,t._notifyChange()}},{key:"enableDebug",get:function(){return c.a.ENABLE_DEBUG},set:function(e){c.a.ENABLE_DEBUG=e,t._notifyChange()}},{key:"enableVerbose",get:function(){return c.a.ENABLE_VERBOSE},set:function(e){c.a.ENABLE_VERBOSE=e,t._notifyChange()}},{key:"enableInfo",get:function(){return c.a.ENABLE_INFO},set:function(e){c.a.ENABLE_INFO=e,t._notifyChange()}},{key:"enableWarn",get:function(){return c.a.ENABLE_WARN},set:function(e){c.a.ENABLE_WARN=e,t._notifyChange()}},{key:"enableError",get:function(){return c.a.ENABLE_ERROR},set:function(e){c.a.ENABLE_ERROR=e,t._notifyChange()}}],(i=null)&&v(e.prototype,i),r&&v(e,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();y.emitter=new f.a;var b=y,_=i(12),w=i(50),A=function(){function t(){}return t.init=function(){for(var e in t.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],".mp3":[]},t.types)t.types.hasOwnProperty(e)&&(t.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);var i=t.constants={};i.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),i.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),i.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),i.STSC=i.STCO=i.STTS,i.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),i.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),i.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),i.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),i.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),i.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])},t.box=function(t){for(var e=8,i=null,r=Array.prototype.slice.call(arguments,1),n=r.length,o=0;o<n;o++)e+=r[o].byteLength;(i=new Uint8Array(e))[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(t,4);for(var a=8,s=0;s<n;s++)i.set(r[s],a),a+=r[s].byteLength;return i},t.generateInitSegment=function(e){var i=t.box(t.types.ftyp,t.constants.FTYP),r=t.moov(e),n=new Uint8Array(i.byteLength+r.byteLength);return n.set(i,0),n.set(r,i.byteLength),n},t.moov=function(e){var i=t.mvhd(e.timescale,e.duration),r=t.trak(e),n=t.mvex(e);return t.box(t.types.moov,i,r,n)},t.mvhd=function(e,i){return t.box(t.types.mvhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))},t.trak=function(e){return t.box(t.types.trak,t.tkhd(e),t.mdia(e))},t.tkhd=function(e){var i=e.id,r=e.duration,n=e.presentWidth,o=e.presentHeight;return t.box(t.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,n>>>8&255,255&n,0,0,o>>>8&255,255&o,0,0]))},t.mdia=function(e){return t.box(t.types.mdia,t.mdhd(e),t.hdlr(e),t.minf(e))},t.mdhd=function(e){var i=e.timescale,r=e.duration;return t.box(t.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,r>>>24&255,r>>>16&255,r>>>8&255,255&r,85,196,0,0]))},t.hdlr=function(e){var i=null;return i="audio"===e.type?t.constants.HDLR_AUDIO:t.constants.HDLR_VIDEO,t.box(t.types.hdlr,i)},t.minf=function(e){var i=null;return i="audio"===e.type?t.box(t.types.smhd,t.constants.SMHD):t.box(t.types.vmhd,t.constants.VMHD),t.box(t.types.minf,i,t.dinf(),t.stbl(e))},t.dinf=function(){return t.box(t.types.dinf,t.box(t.types.dref,t.constants.DREF))},t.stbl=function(e){return t.box(t.types.stbl,t.stsd(e),t.box(t.types.stts,t.constants.STTS),t.box(t.types.stsc,t.constants.STSC),t.box(t.types.stsz,t.constants.STSZ),t.box(t.types.stco,t.constants.STCO))},t.stsd=function(e){return"audio"===e.type?"mp3"===e.codec?t.box(t.types.stsd,t.constants.STSD_PREFIX,t.mp3(e)):t.box(t.types.stsd,t.constants.STSD_PREFIX,t.mp4a(e)):t.box(t.types.stsd,t.constants.STSD_PREFIX,t.avc1(e))},t.mp3=function(e){var i=e.channelCount,r=e.audioSampleRate,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,i,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return t.box(t.types[".mp3"],n)},t.mp4a=function(e){var i=e.channelCount,r=e.audioSampleRate,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,i,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return t.box(t.types.mp4a,n,t.esds(e))},t.esds=function(e){var i=e.config||[],r=i.length,n=new Uint8Array([0,0,0,0,3,23+r,0,1,0,4,15+r,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([r]).concat(i).concat([6,1,2]));return t.box(t.types.esds,n)},t.avc1=function(e){var i=e.avcc,r=e.codecWidth,n=e.codecHeight,o=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,n>>>8&255,255&n,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return t.box(t.types.avc1,o,t.box(t.types.avcC,i))},t.mvex=function(e){return t.box(t.types.mvex,t.trex(e))},t.trex=function(e){var i=e.id,r=new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return t.box(t.types.trex,r)},t.moof=function(e,i){return t.box(t.types.moof,t.mfhd(e.sequenceNumber),t.traf(e,i))},t.mfhd=function(e){var i=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return t.box(t.types.mfhd,i)},t.traf=function(e,i){var r=e.id,n=t.box(t.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),o=t.box(t.types.tfdt,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),a=t.sdtp(e),s=t.trun(e,a.byteLength+16+16+8+16+8+8);return t.box(t.types.traf,n,o,s,a)},t.sdtp=function(e){for(var i=e.samples||[],r=i.length,n=new Uint8Array(4+r),o=0;o<r;o++){var a=i[o].flags;n[o+4]=a.isLeading<<6|a.dependsOn<<4|a.isDependedOn<<2|a.hasRedundancy}return t.box(t.types.sdtp,n)},t.trun=function(e,i){var r=e.samples||[],n=r.length,o=12+16*n,a=new Uint8Array(o);i+=8+o,a.set([0,0,15,1,n>>>24&255,n>>>16&255,n>>>8&255,255&n,i>>>24&255,i>>>16&255,i>>>8&255,255&i],0);for(var s=0;s<n;s++){var h=r[s].duration,u=r[s].size,l=r[s].flags,d=r[s].cts;a.set([h>>>24&255,h>>>16&255,h>>>8&255,255&h,u>>>24&255,u>>>16&255,u>>>8&255,255&u,l.isLeading<<2|l.dependsOn,l.isDependedOn<<6|l.hasRedundancy<<4|l.isNonSync,0,0,d>>>24&255,d>>>16&255,d>>>8&255,255&d],12+16*s)}return t.box(t.types.trun,a)},t.mdat=function(e){return t.box(t.types.mdat,e)},t}();A.init();var M=A,E=function(){function t(){}return t.getSilentFrame=function(t,e){if("mp4a.40.2"===t){if(1===e)return new Uint8Array([0,200,0,128,35,128]);if(2===e)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===e)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===e)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===e)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}return null},t}();function S(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var k=function(t,e,i,r,n){this.dts=t,this.pts=e,this.duration=i,this.originalDts=r,this.isSyncPoint=n,this.fileposition=null},T=function(){function t(){this.beginDts=0,this.endDts=0,this.beginPts=0,this.endPts=0,this.originalBeginDts=0,this.originalEndDts=0,this.syncPoints=[],this.firstSample=null,this.lastSample=null}return t.prototype.appendSyncPoint=function(t){t.isSyncPoint=!0,this.syncPoints.push(t)},t}(),R=function(){function t(){this._list=[]}var e=t.prototype;return e.clear=function(){this._list=[]},e.appendArray=function(t){var e=this._list;0!==t.length&&(e.length>0&&t[0].originalDts<e[e.length-1].originalDts&&this.clear(),Array.prototype.push.apply(e,t))},e.getLastSyncPointBeforeDts=function(t){if(0==this._list.length)return null;var e=this._list,i=0,r=e.length-1,n=0,o=0,a=r;for(t<e[0].dts&&(i=0,o=a+1);o<=a;){if((n=o+Math.floor((a-o)/2))===r||t>=e[n].dts&&t<e[n+1].dts){i=n;break}e[n].dts<t?o=n+1:a=n-1}return this._list[i]},t}(),I=function(){function t(t){this._type=t,this._list=[],this._lastAppendLocation=-1}var e,i,r,n=t.prototype;return n.isEmpty=function(){return 0===this._list.length},n.clear=function(){this._list=[],this._lastAppendLocation=-1},n._searchNearestSegmentBefore=function(t){var e=this._list;if(0===e.length)return-2;var i=e.length-1,r=0,n=0,o=i,a=0;if(t<e[0].originalBeginDts)return a=-1;for(;n<=o;){if((r=n+Math.floor((o-n)/2))===i||t>e[r].lastSample.originalDts&&t<e[r+1].originalBeginDts){a=r;break}e[r].originalBeginDts<t?n=r+1:o=r-1}return a},n._searchNearestSegmentAfter=function(t){return this._searchNearestSegmentBefore(t)+1},n.append=function(t){var e=this._list,i=t,r=this._lastAppendLocation,n=0;-1!==r&&r<e.length&&i.originalBeginDts>=e[r].lastSample.originalDts&&(r===e.length-1||r<e.length-1&&i.originalBeginDts<e[r+1].originalBeginDts)?n=r+1:e.length>0&&(n=this._searchNearestSegmentBefore(i.originalBeginDts)+1),this._lastAppendLocation=n,this._list.splice(n,0,i)},n.getLastSegmentBefore=function(t){var e=this._searchNearestSegmentBefore(t);return e>=0?this._list[e]:null},n.getLastSampleBefore=function(t){var e=this.getLastSegmentBefore(t);return null!=e?e.lastSample:null},n.getLastSyncPointBefore=function(t){for(var e=this._searchNearestSegmentBefore(t),i=this._list[e].syncPoints;0===i.length&&e>0;)e--,i=this._list[e].syncPoints;return i.length>0?i[i.length-1]:null},e=t,(i=[{key:"type",get:function(){return this._type}},{key:"length",get:function(){return this._list.length}}])&&S(e.prototype,i),r&&S(e,r),Object.defineProperty(e,"prototype",{writable:!1}),t}(),C=i(2);function P(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var x=function(){function t(t){this.TAG="MP4Remuxer",this._config=t,this._isLive=!0===t.isLive,this._dtsBase=-1,this._dtsBaseInited=!1,this._audioDtsBase=1/0,this._videoDtsBase=1/0,this._audioNextDts=void 0,this._videoNextDts=void 0,this._audioStashedLastSample=null,this._videoStashedLastSample=null,this._audioMeta=null,this._videoMeta=null,this._adjustPts=0,this._lastAdjustVideoPts=0,this._lastVideoPts=0,this._audioSegmentInfoList=new I("audio"),this._videoSegmentInfoList=new I("video"),this._onInitSegment=null,this._onMediaSegment=null,this._forceFirstIDR=!(!m.chrome||!(m.version.major<50||50===m.version.major&&m.version.build<2661)),this._fillSilentAfterSeek=m.msedge||m.msie,this._mp3UseMpegAudio=!m.firefox,this._fillAudioTimestampGap=this._config.fixAudioTimestampGap}var e,i,r,n=t.prototype;return n.destroy=function(){this._dtsBase=-1,this._dtsBaseInited=!1,this._audioMeta=null,this._videoMeta=null,this._audioSegmentInfoList.clear(),this._audioSegmentInfoList=null,this._videoSegmentInfoList.clear(),this._videoSegmentInfoList=null,this._onInitSegment=null,this._onMediaSegment=null},n.bindDataSource=function(t){return t.onDataAvailable=this.remux.bind(this),t.onTrackMetadata=this._onTrackMetadataReceived.bind(this),this},n.insertDiscontinuity=function(){this._audioNextDts=this._videoNextDts=void 0},n.changeSpeed=function(t){this._adjustPts=t},n.seek=function(t){this._audioStashedLastSample=null,this._videoStashedLastSample=null,this._videoSegmentInfoList.clear(),this._audioSegmentInfoList.clear(),this._dtsBase=-1,this._dtsBaseInited=!1,this._audioDtsBase=1/0,this._videoDtsBase=1/0,this._audioNextDts=void 0,this._videoNextDts=void 0,this._audioStashedLastSample=null,this._videoStashedLastSample=null,this._adjustPts=0,this._lastAdjustVideoPts=0,this._lastVideoPts=0},n.remux=function(t,e){if(!this._onMediaSegment)throw new C.a("MP4Remuxer: onMediaSegment callback must be specificed!");if(!this._dtsBaseInited&&!this._calculateDtsBase(t,e))return e.samples=[],void(t.samples=[]);this._remuxVideo(e),this._remuxAudio(t)},n._onTrackMetadataReceived=function(t,e){var i=null,r="mp4",n=e.codec;if("audio"===t)this._audioMeta=e,"mp3"===e.codec&&this._mp3UseMpegAudio?(r="mpeg",n="",i=new Uint8Array):i=M.generateInitSegment(e);else{if("video"!==t)return;this._videoMeta=e,i=M.generateInitSegment(e)}if(!this._onInitSegment)throw new C.a("MP4Remuxer: onInitSegment callback must be specified!");this._onInitSegment(t,{type:t,data:i.buffer,codec:n,container:t+"/"+r,mediaDuration:e.duration})},n._calculateDtsBase=function(t,e){if(!this._dtsBaseInited)return t.samples&&t.samples.length&&(this._audioDtsBase=t.samples[0].dts),e.samples&&e.samples.length&&(this._videoDtsBase=e.samples[0].dts),this._dtsBase=Math.min(this._audioDtsBase,this._videoDtsBase),this._dtsBaseInited=!0,!(this._dtsBase<0)},n.flushStashedSamples=function(){var t=this._videoStashedLastSample,e=this._audioStashedLastSample,i={type:"video",id:1,sequenceNumber:0,samples:[],length:0};null!=t&&(i.samples.push(t),i.length=t.length);var r={type:"audio",id:2,sequenceNumber:0,samples:[],length:0};null!=e&&(r.samples.push(e),r.length=e.length),this._videoStashedLastSample=null,this._audioStashedLastSample=null,this._remuxVideo(i,!0),this._remuxAudio(r,!0)},n._remuxAudio=function(t,e){if(null!=this._audioMeta){var i,r=t,n=r.samples,o=void 0,a=-1,s=this._audioMeta.refSampleDuration,h="mp3"===this._audioMeta.codec&&this._mp3UseMpegAudio,u=this._dtsBaseInited&&void 0===this._audioNextDts,l=!1;if(n&&0!==n.length&&(1!==n.length||e)){var d=0,f=null,p=0;h?(d=0,p=r.length):(d=8,p=8+r.length);var g=null;if(n.length>1&&(p-=(g=n.pop()).length),null!=this._audioStashedLastSample){var v=this._audioStashedLastSample;this._audioStashedLastSample=null,n.unshift(v),p+=v.length}null!=g&&(this._audioStashedLastSample=g);var y=n[0].dts-this._dtsBase;if(this._audioNextDts)o=y-this._audioNextDts;else if(this._audioSegmentInfoList.isEmpty())o=0,this._fillSilentAfterSeek&&!this._videoSegmentInfoList.isEmpty()&&"mp3"!==this._audioMeta.originalCodec&&(l=!0);else{var b=this._audioSegmentInfoList.getLastSampleBefore(y);if(null!=b){var _=y-(b.originalDts+b.duration);_<=3&&(_=0),o=y-(b.dts+b.duration+_)}else o=0}if(l){var w=y-o,A=this._videoSegmentInfoList.getLastSegmentBefore(y);if(null!=A&&A.beginDts<w){var S=E.getSilentFrame(this._audioMeta.originalCodec,this._audioMeta.channelCount);if(S){var R=A.beginDts,I=w-A.beginDts;c.a.v(this.TAG,"InsertPrefixSilentAudio: dts: "+R+", duration: "+I),n.unshift({unit:S,dts:R,pts:R}),p+=S.byteLength}}else l=!1}for(var C=[],P=0;P<n.length;P++){var x=n[P],D=x.unit,O=x.dts-this._dtsBase,B=O-o;-1===a&&(a=B);var L=0;if(P!==n.length-1)L=n[P+1].dts-this._dtsBase-o-B;else if(null!=g)L=g.dts-this._dtsBase-o-B;else L=C.length>=1?C[C.length-1].duration:Math.floor(s);var W=!1,N=null;if(L>1.5*s&&"mp3"!==this._audioMeta.codec&&this._fillAudioTimestampGap&&!m.safari){W=!0;var F=Math.abs(L-s),U=Math.ceil(F/s),j=B+s;c.a.w(this.TAG,"Large audio timestamp gap detected, may cause AV sync to drift. Silent frames will be generated to avoid unsync.\ndts: "+(B+L)+" ms, expected: "+(B+Math.round(s))+" ms, delta: "+Math.round(F)+" ms, generate: "+U+" framessampleDuration: "+L+" ms, refSampleDuration: "+s);var V=E.getSilentFrame(this._audioMeta.originalCodec,this._audioMeta.channelCount);null==V&&(c.a.w(this.TAG,"Unable to generate silent frame for "+this._audioMeta.originalCodec+" with "+this._audioMeta.channelCount+" channels, repeat last frame"),V=D),N=[];for(var H=0;H<U;H++){var z=Math.round(j);if(N.length>0){var G=N[N.length-1];G.duration=z-G.dts}var q={dts:z,pts:z,cts:0,unit:V,size:V.byteLength,duration:0,originalDts:O,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}};N.push(q),p+=q.size,j+=s}var X=N[N.length-1];X.duration=B+L-X.dts,L=Math.round(s)}C.push({dts:B,pts:B,cts:0,unit:x.unit,size:x.unit.byteLength,duration:L,originalDts:O,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}),W&&C.push.apply(C,N)}h?f=new Uint8Array(p):((f=new Uint8Array(p))[0]=p>>>24&255,f[1]=p>>>16&255,f[2]=p>>>8&255,f[3]=255&p,f.set(M.types.mdat,4));for(var Z=0;Z<C.length;Z++){var K=C[Z].unit;f.set(K,d),d+=K.byteLength}var Q=C[C.length-1];i=Q.dts+Q.duration,this._audioNextDts=i;var Y=new T;Y.beginDts=a,Y.endDts=i,Y.beginPts=a,Y.endPts=i,Y.originalBeginDts=C[0].originalDts,Y.originalEndDts=Q.originalDts+Q.duration,Y.firstSample=new k(C[0].dts,C[0].pts,C[0].duration,C[0].originalDts,!1),Y.lastSample=new k(Q.dts,Q.pts,Q.duration,Q.originalDts,!1),this._isLive||this._audioSegmentInfoList.append(Y),r.samples=C,r.sequenceNumber++;var J=null;J=h?new Uint8Array:M.moof(r,a),r.samples=[],r.length=0;var $={type:"audio",data:this._mergeBoxes(J,f).buffer,sampleCount:C.length,info:Y};h&&u&&($.timestampOffset=a),this._onMediaSegment("audio",$)}}},n._remuxVideo=function(t,e){if(null!=this._videoMeta){var i,r,n=t,o=n.samples,a=void 0,s=-1,h=-1;if(o&&0!==o.length){o.length;var u=8,l=null,d=8+t.length,f=null;if(o.length>0&&(d-=(f=o.pop()).length),null!=this._videoStashedLastSample){var c=this._videoStashedLastSample;this._videoStashedLastSample=null,o.unshift(c),d+=c.length}if(null!=f&&(this._videoStashedLastSample=f),!(o.length<1)){var p=o[0].dts-this._dtsBase;if(this._videoNextDts)a=p-this._videoNextDts;else if(this._videoSegmentInfoList.isEmpty())a=0;else{var m=this._videoSegmentInfoList.getLastSampleBefore(p);if(null!=m){var g=p-(m.originalDts+m.duration);g<=3&&(g=0),a=p-(m.dts+m.duration+g)}else a=0}var v=!1;this._adjustPts>0&&(a=10,v=!0);for(var y=new T,b=[],_=0;_<o.length;_++){var w=o[_],A=w.dts-this._dtsBase,E=w.isKeyframe,S=A-a,R=w.cts,I=S+R;-1===s&&(s=S,h=I);var C=0;if(_!==o.length-1)C=o[_+1].dts-this._dtsBase-a-S;else if(null!=f)C=f.dts-this._dtsBase-a-S;else C=b.length>=1?b[b.length-1].duration:Math.floor(this._videoMeta.refSampleDuration);if(E){var P=new k(S,I,C,w.dts,!0);P.fileposition=w.fileposition,y.appendSyncPoint(P)}v&&(C=Math.floor(.8*C)),b.push({dts:S,pts:I,cts:R,units:w.units,size:w.length,isKeyframe:E,duration:C,originalDts:A,flags:{isLeading:0,dependsOn:E?2:1,isDependedOn:E?1:0,hasRedundancy:0,isNonSync:E?0:1}})}(l=new Uint8Array(d))[0]=d>>>24&255,l[1]=d>>>16&255,l[2]=d>>>8&255,l[3]=255&d,l.set(M.types.mdat,4);for(var x=0;x<b.length;x++)for(var D=b[x].units;D.length;){var O=D.shift().data;l.set(O,u),u+=O.byteLength}var B=b[b.length-1];if(i=B.dts+B.duration,r=B.pts+B.duration,this._videoNextDts=i,y.beginDts=s,y.endDts=i,y.beginPts=h,y.endPts=r,y.originalBeginDts=b[0].originalDts,y.originalEndDts=B.originalDts+B.duration,y.firstSample=new k(b[0].dts,b[0].pts,b[0].duration,b[0].originalDts,b[0].isKeyframe),y.lastSample=new k(B.dts,B.pts,B.duration,B.originalDts,B.isKeyframe),this._isLive||this._videoSegmentInfoList.append(y),n.samples=b,n.sequenceNumber++,this._forceFirstIDR){var L=b[0].flags;L.dependsOn=2,L.isNonSync=0}var W=M.moof(n,s);n.samples=[],n.length=0,this._onMediaSegment("video",{type:"video",data:this._mergeBoxes(W,l).buffer,sampleCount:b.length,info:y})}}}},n._mergeBoxes=function(t,e){var i=new Uint8Array(t.byteLength+e.byteLength);return i.set(t,0),i.set(e,t.byteLength),i},e=t,(i=[{key:"onInitSegment",get:function(){return this._onInitSegment},set:function(t){this._onInitSegment=t}},{key:"onMediaSegment",get:function(){return this._onMediaSegment},set:function(t){this._onMediaSegment=t}}])&&P(e.prototype,i),r&&P(e,r),Object.defineProperty(e,"prototype",{writable:!1}),t}(),D=i(7);function O(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var B=function(){function t(){this._firstCheckpoint=0,this._lastCheckpoint=0,this._intervalBytes=0,this._totalBytes=0,this._lastSecondBytes=0,self.performance&&self.performance.now?this._now=self.performance.now.bind(self.performance):this._now=Date.now}var e,i,r,n=t.prototype;return n.reset=function(){this._firstCheckpoint=this._lastCheckpoint=0,this._totalBytes=this._intervalBytes=0,this._lastSecondBytes=0},n.addBytes=function(t){0===this._firstCheckpoint?(this._firstCheckpoint=this._now(),this._lastCheckpoint=this._firstCheckpoint,this._intervalBytes+=t,this._totalBytes+=t):this._now()-this._lastCheckpoint<1e3?(this._intervalBytes+=t,this._totalBytes+=t):(this._lastSecondBytes=this._intervalBytes,this._intervalBytes=t,this._totalBytes+=t,this._lastCheckpoint=this._now())},e=t,(i=[{key:"currentKBps",get:function(){this.addBytes(0);var t=(this._now()-this._lastCheckpoint)/1e3;return 0==t&&(t=1),this._intervalBytes/t/1024}},{key:"lastSecondKBps",get:function(){return this.addBytes(0),0!==this._lastSecondBytes?this._lastSecondBytes/1024:this._now()-this._lastCheckpoint>=500?this.currentKBps:0}},{key:"averageKBps",get:function(){var t=(this._now()-this._firstCheckpoint)/1e3;return this._totalBytes/t/1024}}])&&O(e.prototype,i),r&&O(e,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();function L(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var W=0,N=1,F=2,U=3,j=4,V="Exception",H="HttpStatusCodeInvalid",z="EarlyEof",G="UnrecoverableEarlyEof",q=function(){function t(t){this._type=t||"undefined",this._status=W,this._needStash=!1,this._onContentLengthKnown=null,this._onURLRedirect=null,this._onDataArrival=null,this._onError=null,this._onComplete=null}var e,i,r,n=t.prototype;return n.destroy=function(){this._status=W,this._onContentLengthKnown=null,this._onURLRedirect=null,this._onDataArrival=null,this._onError=null,this._onComplete=null},n.isWorking=function(){return this._status===N||this._status===F},n.open=function(t,e){throw new C.c("Unimplemented abstract function!")},n.abort=function(){throw new C.c("Unimplemented abstract function!")},e=t,(i=[{key:"type",get:function(){return this._type}},{key:"status",get:function(){return this._status}},{key:"needStashBuffer",get:function(){return this._needStash}},{key:"onContentLengthKnown",get:function(){return this._onContentLengthKnown},set:function(t){this._onContentLengthKnown=t}},{key:"onURLRedirect",get:function(){return this._onURLRedirect},set:function(t){this._onURLRedirect=t}},{key:"onDataArrival",get:function(){return this._onDataArrival},set:function(t){this._onDataArrival=t}},{key:"onError",get:function(){return this._onError},set:function(t){this._onError=t}},{key:"onComplete",get:function(){return this._onComplete},set:function(t){this._onComplete=t}}])&&L(e.prototype,i),r&&L(e,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();function X(t,e){return X=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},X(t,e)}var Z=function(t){var e,i;function n(e,i){var r;return(r=t.call(this,"fetch-stream-loader")||this).TAG="FetchStreamLoader",r._seekHandler=e,r._config=i,r._needStash=!0,r._requestAbort=!1,r._contentLength=null,r._receivedLength=0,r._retryConnectTimes=0,r._fetchUrl=null,r._fetchParam=null,r._triggerReconnectingNotify=!0,r._triggerReconnectSuccessNotify=!0,r}i=t,(e=n).prototype=Object.create(i.prototype),e.prototype.constructor=e,X(e,i),n.isSupported=function(){try{var t=m.msedge&&m.version.minor>=15048,e=!m.msedge||t;return self.fetch&&self.ReadableStream&&e}catch(t){return!1}};var o=n.prototype;return o.destroy=function(){this.isWorking()&&this.abort(),t.prototype.destroy.call(this)},o.fetchStream=function(){var t=this,e=this._fetchParam;this._retryConnectTimes++,this._triggerReconnectingNotify&&(this._triggerReconnectingNotify=!1,this._onDataArrival&&this._onDataArrival(null,-this._retryConnectTimes,0)),this._triggerReconnectSuccessNotify=!0,self.fetch(this._fetchUrl,e).then((function(e){if(t._requestAbort)return t._requestAbort=!1,void(t._status=W);if(e.ok&&e.status>=200&&e.status<=299){if(e.url!==t._fetchUrl&&t._onURLRedirect){var i=t._seekHandler.removeURLParameters(e.url);t._onURLRedirect(i)}var n=e.headers.get("Content-Length");return null!=n&&(t._contentLength=parseInt(n),0!==t._contentLength&&t._onContentLengthKnown&&t._onContentLengthKnown(t._contentLength)),t._triggerReconnectingNotify=!0,t._pump.call(t,e.body.getReader())}t._status=U,t._onError,r.MediaWorkerLog("fetch-stream: code:"+e.status+" msg:"+e.statusText);var o=t;r.sleep(3e3).then((function(){o.fetchStream()}))})).catch((function(e){if(t._status=U,!t._onError)throw e;t._onError(V,{code:-1,msg:e.message});var i=t;r.sleep(3e3).then((function(){i.fetchStream()}))}))},o.open=function(t,e){this._dataSource=t,this._range=e;var i=t.url;this._config.reuseRedirectedURL&&null!=t.redirectedURL&&(i=t.redirectedURL);var r=this._seekHandler.getConfig(i,e),n=new self.Headers;if("object"==typeof r.headers){var o=r.headers;for(var a in o)o.hasOwnProperty(a)&&n.append(a,o[a])}var s={method:"GET",headers:n,mode:"cors",cache:"default",referrerPolicy:"no-referrer-when-downgrade"};if("object"==typeof this._config.headers)for(var h in this._config.headers)n.append(h,this._config.headers[h]);!1===t.cors&&(s.mode="same-origin"),t.withCredentials&&(s.credentials="include"),t.referrerPolicy&&(s.referrerPolicy=t.referrerPolicy),this._status=N,this._fetchUrl=r.url,this._fetchParam=s,this.fetchStream()},o.abort=function(){this._requestAbort=!0},o._pump=function(t){var e=this;return t.read().then((function(i){if(i.done)if(null!==e._contentLength&&e._receivedLength<e._contentLength){e._status=U;var n=z,o={code:-1,msg:"Fetch stream meet Early-EOF"};if(!e._onError)throw new C.d(o.msg);e._onError(n,o),null!==e._contentLength&&e._receivedLength===e._contentLength&&e._receivedLength>0?(r.setLiveStreamType(!1),e._onComplete(e._range.from,e._range.from+e._receivedLength-1)):e._onComplete(-1,-1)}else e._status=j,e._onComplete&&(null!==e._contentLength&&e._receivedLength===e._contentLength&&e._receivedLength>0?(r.setLiveStreamType(!1),e._onComplete(e._range.from,e._range.from+e._receivedLength-1)):e._onComplete(-1,-1));else{if(!0===e._requestAbort)return e._requestAbort=!1,e._status=j,t.cancel();e._status=F;var a=i.value.buffer,s=e._range.from+e._receivedLength;e._receivedLength+=a.byteLength,e._onDataArrival&&e._onDataArrival(a,s,e._receivedLength),e._triggerReconnectSuccessNotify&&(e._triggerReconnectSuccessNotify=!1,e._onDataArrival&&(e._onDataArrival(null,e._retryConnectTimes,0),e._retryConnectTimes++)),e._pump(t)}})).catch((function(t){e._onComplete(-1,-1)}))},n}(q);function K(t,e){return K=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},K(t,e)}var Q=function(t){var e,i;function r(e,i){var r;return(r=t.call(this,"xhr-moz-chunked-loader")||this).TAG="MozChunkedLoader",r._seekHandler=e,r._config=i,r._needStash=!0,r._xhr=null,r._requestAbort=!1,r._contentLength=null,r._receivedLength=0,r}i=t,(e=r).prototype=Object.create(i.prototype),e.prototype.constructor=e,K(e,i),r.isSupported=function(){try{var t=new XMLHttpRequest;return t.open("GET","https://example.com",!0),t.responseType="moz-chunked-arraybuffer","moz-chunked-arraybuffer"===t.responseType}catch(t){return c.a.w("MozChunkedLoader",t.message),!1}};var n=r.prototype;return n.destroy=function(){this.isWorking()&&this.abort(),this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onloadend=null,this._xhr.onerror=null,this._xhr=null),t.prototype.destroy.call(this)},n.open=function(t,e){this._dataSource=t,this._range=e;var i=t.url;this._config.reuseRedirectedURL&&null!=t.redirectedURL&&(i=t.redirectedURL);var r=this._seekHandler.getConfig(i,e);this._requestURL=r.url;var n=this._xhr=new XMLHttpRequest;if(n.open("GET",r.url,!0),n.responseType="moz-chunked-arraybuffer",n.onreadystatechange=this._onReadyStateChange.bind(this),n.onprogress=this._onProgress.bind(this),n.onloadend=this._onLoadEnd.bind(this),n.onerror=this._onXhrError.bind(this),t.withCredentials&&(n.withCredentials=!0),"object"==typeof r.headers){var o=r.headers;for(var a in o)o.hasOwnProperty(a)&&n.setRequestHeader(a,o[a])}if("object"==typeof this._config.headers){var s=this._config.headers;for(var h in s)s.hasOwnProperty(h)&&n.setRequestHeader(h,s[h])}this._status=N,n.send()},n.abort=function(){this._requestAbort=!0,this._xhr&&this._xhr.abort(),this._status=j},n._onReadyStateChange=function(t){var e=t.target;if(2===e.readyState){if(null!=e.responseURL&&e.responseURL!==this._requestURL&&this._onURLRedirect){var i=this._seekHandler.removeURLParameters(e.responseURL);this._onURLRedirect(i)}if(0!==e.status&&(e.status<200||e.status>299)){if(this._status=U,!this._onError)throw new C.d("MozChunkedLoader: Http code invalid, "+e.status+" "+e.statusText);this._onError(H,{code:e.status,msg:e.statusText})}else this._status=F}},n._onProgress=function(t){if(this._status!==U){null===this._contentLength&&null!==t.total&&0!==t.total&&(this._contentLength=t.total,this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength));var e=t.target.response,i=this._range.from+this._receivedLength;this._receivedLength+=e.byteLength,this._onDataArrival&&this._onDataArrival(e,i,this._receivedLength)}},n._onLoadEnd=function(t){!0!==this._requestAbort?this._status!==U&&(this._status=j,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1)):this._requestAbort=!1},n._onXhrError=function(t){this._status=U;var e=0,i=null;if(this._contentLength&&t.loaded<this._contentLength?(e=z,i={code:-1,msg:"Moz-Chunked stream meet Early-Eof"}):(e=V,i={code:-1,msg:t.constructor.name+" "+t.type}),!this._onError)throw new C.d(i.msg);this._onError(e,i)},r}(q);function Y(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function J(t,e){return J=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},J(t,e)}var $=function(t){var e,i;function r(e,i){var r;return(r=t.call(this,"xhr-range-loader")||this).TAG="RangeLoader",r._seekHandler=e,r._config=i,r._needStash=!1,r._chunkSizeKBList=[128,256,384,512,768,1024,1536,2048,3072,4096,5120,6144,7168,8192],r._currentChunkSizeKB=384,r._currentSpeedNormalized=0,r._zeroSpeedChunkCount=0,r._xhr=null,r._speedSampler=new B,r._requestAbort=!1,r._waitForTotalLength=!1,r._totalLengthReceived=!1,r._currentRequestURL=null,r._currentRedirectedURL=null,r._currentRequestRange=null,r._totalLength=null,r._contentLength=null,r._receivedLength=0,r._lastTimeLoaded=0,r}i=t,(e=r).prototype=Object.create(i.prototype),e.prototype.constructor=e,J(e,i),r.isSupported=function(){try{var t=new XMLHttpRequest;return t.open("GET","https://example.com",!0),t.responseType="arraybuffer","arraybuffer"===t.responseType}catch(t){return c.a.w("RangeLoader",t.message),!1}};var n,o,a,s=r.prototype;return s.destroy=function(){this.isWorking()&&this.abort(),this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onload=null,this._xhr.onerror=null,this._xhr=null),t.prototype.destroy.call(this)},s.open=function(t,e){this._dataSource=t,this._range=e,this._status=N;var i=!1;null!=this._dataSource.filesize&&0!==this._dataSource.filesize&&(i=!0,this._totalLength=this._dataSource.filesize),this._totalLengthReceived||i?this._openSubRange():(this._waitForTotalLength=!0,this._internalOpen(this._dataSource,{from:0,to:-1}))},s._openSubRange=function(){var t=1024*this._currentChunkSizeKB,e=this._range.from+this._receivedLength,i=e+t;null!=this._contentLength&&i-this._range.from>=this._contentLength&&(i=this._range.from+this._contentLength-1),this._currentRequestRange={from:e,to:i},this._internalOpen(this._dataSource,this._currentRequestRange)},s._internalOpen=function(t,e){this._lastTimeLoaded=0;var i=t.url;this._config.reuseRedirectedURL&&(null!=this._currentRedirectedURL?i=this._currentRedirectedURL:null!=t.redirectedURL&&(i=t.redirectedURL));var r=this._seekHandler.getConfig(i,e);this._currentRequestURL=r.url;var n=this._xhr=new XMLHttpRequest;if(n.open("GET",r.url,!0),n.responseType="arraybuffer",n.onreadystatechange=this._onReadyStateChange.bind(this),n.onprogress=this._onProgress.bind(this),n.onload=this._onLoad.bind(this),n.onerror=this._onXhrError.bind(this),t.withCredentials&&(n.withCredentials=!0),"object"==typeof r.headers){var o=r.headers;for(var a in o)o.hasOwnProperty(a)&&n.setRequestHeader(a,o[a])}if("object"==typeof this._config.headers){var s=this._config.headers;for(var h in s)s.hasOwnProperty(h)&&n.setRequestHeader(h,s[h])}n.send()},s.abort=function(){this._requestAbort=!0,this._internalAbort(),this._status=j},s._internalAbort=function(){this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onload=null,this._xhr.onerror=null,this._xhr.abort(),this._xhr=null)},s._onReadyStateChange=function(t){var e=t.target;if(2===e.readyState){if(null!=e.responseURL){var i=this._seekHandler.removeURLParameters(e.responseURL);e.responseURL!==this._currentRequestURL&&i!==this._currentRedirectedURL&&(this._currentRedirectedURL=i,this._onURLRedirect&&this._onURLRedirect(i))}if(e.status>=200&&e.status<=299){if(this._waitForTotalLength)return;this._status=F}else{if(this._status=U,!this._onError)throw new C.d("RangeLoader: Http code invalid, "+e.status+" "+e.statusText);this._onError(H,{code:e.status,msg:e.statusText})}}},s._onProgress=function(t){if(this._status!==U){if(null===this._contentLength){var e=!1;if(this._waitForTotalLength){this._waitForTotalLength=!1,this._totalLengthReceived=!0,e=!0;var i=t.total;this._internalAbort(),null!=i&0!==i&&(this._totalLength=i)}if(-1===this._range.to?this._contentLength=this._totalLength-this._range.from:this._contentLength=this._range.to-this._range.from+1,e)return void this._openSubRange();this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength)}var r=t.loaded-this._lastTimeLoaded;this._lastTimeLoaded=t.loaded,this._speedSampler.addBytes(r)}},s._normalizeSpeed=function(t){var e=this._chunkSizeKBList,i=e.length-1,r=0,n=0,o=i;if(t<e[0])return e[0];for(;n<=o;){if((r=n+Math.floor((o-n)/2))===i||t>=e[r]&&t<e[r+1])return e[r];e[r]<t?n=r+1:o=r-1}},s._onLoad=function(t){if(this._status!==U)if(this._waitForTotalLength)this._waitForTotalLength=!1;else{this._lastTimeLoaded=0;var e=this._speedSampler.lastSecondKBps;if(0===e&&(this._zeroSpeedChunkCount++,this._zeroSpeedChunkCount>=3&&(e=this._speedSampler.currentKBps)),0!==e){var i=this._normalizeSpeed(e);this._currentSpeedNormalized!==i&&(this._currentSpeedNormalized=i,this._currentChunkSizeKB=i)}var r=t.target.response,n=this._range.from+this._receivedLength;this._receivedLength+=r.byteLength;var o=!1;null!=this._contentLength&&this._receivedLength<this._contentLength?this._openSubRange():o=!0,this._onDataArrival&&this._onDataArrival(r,n,this._receivedLength),o&&(this._status=j,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1))}},s._onXhrError=function(t){this._status=U;var e=0,i=null;if(this._contentLength&&this._receivedLength>0&&this._receivedLength<this._contentLength?(e=z,i={code:-1,msg:"RangeLoader meet Early-Eof"}):(e=V,i={code:-1,msg:t.constructor.name+" "+t.type}),!this._onError)throw new C.d(i.msg);this._onError(e,i)},n=r,(o=[{key:"currentSpeed",get:function(){return this._speedSampler.lastSecondKBps}}])&&Y(n.prototype,o),a&&Y(n,a),Object.defineProperty(n,"prototype",{writable:!1}),r}(q);function tt(t,e){return tt=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},tt(t,e)}var et=function(t){var e,i;function r(){var e;return(e=t.call(this,"websocket-loader")||this).TAG="WebSocketLoader",e._needStash=!0,e._ws=null,e._requestAbort=!1,e._receivedLength=0,e._retryConnectTimes=0,e._triggerReconnectingNotify=!0,e._triggerReconnectSuccessNotify=!0,e}i=t,(e=r).prototype=Object.create(i.prototype),e.prototype.constructor=e,tt(e,i),r.isSupported=function(){try{return void 0!==self.WebSocket}catch(t){return!1}};var n=r.prototype;return n.destroy=function(){this._ws&&this.abort(),t.prototype.destroy.call(this)},n.open=function(t){try{this._retryConnectTimes++,this._triggerReconnectingNotify&&(this._triggerReconnectingNotify=!1,this._onDataArrival&&this._onDataArrival(null,-this._retryConnectTimes,0)),this._triggerReconnectSuccessNotify=!0;var e=this._ws=new self.WebSocket(t.url);e.binaryType="arraybuffer",e.onopen=this._onWebSocketOpen.bind(this),e.onclose=this._onWebSocketClose.bind(this),e.onmessage=this._onWebSocketMessage.bind(this),e.onerror=this._onWebSocketError.bind(this),this._status=N}catch(t){this._status=U;var i={code:t.code,msg:t.message};if(!this._onError)throw new C.d(i.msg);this._onError(V,i)}},n.abort=function(){var t=this._ws;!t||0!==t.readyState&&1!==t.readyState||(this._requestAbort=!0,t.close()),this._ws=null,this._status=j},n._onWebSocketOpen=function(t){this._status=F},n._onWebSocketClose=function(t){!0!==this._requestAbort?(this._status=j,this._onComplete&&this._onComplete(-1,-1)):this._requestAbort=!1},n._onWebSocketMessage=function(t){var e=this;if(t.data instanceof ArrayBuffer)this._dispatchArrayBuffer(t.data);else if(t.data instanceof Blob){var i=new FileReader;i.onload=function(){e._dispatchArrayBuffer(i.result)},i.readAsArrayBuffer(t.data)}else{this._status=U;var r={code:-1,msg:"Unsupported WebSocket message type: "+t.data.constructor.name};if(!this._onError)throw new C.d(r.msg);this._onError(V,r)}},n._dispatchArrayBuffer=function(t){var e=t,i=this._receivedLength;this._receivedLength+=e.byteLength,this._onDataArrival&&this._onDataArrival(e,i,this._receivedLength),this._triggerReconnectSuccessNotify&&(this._triggerReconnectSuccessNotify=!1,this._onDataArrival&&(this._onDataArrival(null,this._retryConnectTimes,0),this._retryConnectTimes++))},n._onWebSocketError=function(t){this._status=U;var e={code:t.code,msg:t.message};if(!this._onError)throw new C.d(e.msg);this._onError(V,e)},r}(q),it=function(){function t(t){this._zeroStart=t||!1}var e=t.prototype;return e.getConfig=function(t,e){var i,r={};0!==e.from||-1!==e.to?(i=-1!==e.to?"bytes="+e.from.toString()+"-"+e.to.toString():"bytes="+e.from.toString()+"-",r.Range=i):this._zeroStart&&(r.Range="bytes=0-");return{url:t,headers:r}},e.removeURLParameters=function(t){return t},t}(),rt=function(){function t(t,e){this._startName=t,this._endName=e}var e=t.prototype;return e.getConfig=function(t,e){var i=t;if(0!==e.from||-1!==e.to){var r=!0;-1===i.indexOf("?")&&(i+="?",r=!1),r&&(i+="&"),i+=this._startName+"="+e.from.toString(),-1!==e.to&&(i+="&"+this._endName+"="+e.to.toString())}return{url:i,headers:{}}},e.removeURLParameters=function(t){var e=t.split("?")[0],i=void 0,r=t.indexOf("?");-1!==r&&(i=t.substring(r+1));var n="";if(null!=i&&i.length>0)for(var o=i.split("&"),a=0;a<o.length;a++){var s=o[a].split("="),h=a>0;s[0]!==this._startName&&s[0]!==this._endName&&(h&&(n+="&"),n+=o[a])}return 0===n.length?e:e+"?"+n},t}();function nt(t,e){return nt=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},nt(t,e)}var ot=function(t){var e,i;function n(){var e;return(e=t.call(this,"m3u8-loader")||this).TAG="M3U8Loader",e._needStash=!0,e.url="",e.startPlayTime=0,e._requestAbort=!1,e._receivedLength=0,e.getNextFileFlag=!0,e.pauseDisplay=!1,e.totalDuration=0,e.seeking=!1,e}i=t,(e=n).prototype=Object.create(i.prototype),e.prototype.constructor=e,nt(e,i),n.isSupported=function(){return!0};var o=n.prototype;return o.destroy=function(){this.abort(),t.prototype.destroy.call(this)},o.GetM3u8TotalDuration=function(){return this.totalDuration},o.createDownloadWorker=function(){var t;if(!this.downloadWorker&&"undefined"!=typeof Worker)try{t=this.downloadWorker=u(284),this.onwmsg=this.onWorkerMessage.bind(this);var e={cmd:r.tOpenStream,url:this.url,time:this.startPlayTime};t.postMessage(e),t.addEventListener("message",this.onwmsg),t.onerror=function(t){}}catch(t){this.downloadWorker=void 0}},o.setStartPlaySecs=function(t){this.startPlayTime=t},o.open=function(t){try{this.url=t.url,this.createDownloadWorker(),this._status=N}catch(t){this._status=U;var e={code:t.code,msg:t.message};if(!this._onError)throw new C.d(e.msg);this._onError(V,e)}},o.abort=function(){var t={cmd:r.tCloseStream};this.downloadWorker&&void 0!==this.downloadWorker&&this.downloadWorker.postMessage(t),this._status=j},o._onWebSocketOpen=function(t){this._status=F},o._onWebSocketClose=function(t){!0!==this._requestAbort?(this._status=j,this._onComplete&&this._onComplete(0,this._receivedLength-1)):this._requestAbort=!1},o.seek=function(t,e){this.pauseDisplay=!1;var i={cmd:r.tSeekStream,type:e,time:t};this.downloadWorker&&void 0!==this.downloadWorker&&(this.downloadWorker.postMessage(i),this.seeking=!0)},o.pause=function(){this.pauseDisplay=!0;var t={cmd:r.tPauseStream};this.downloadWorker&&void 0!==this.downloadWorker&&this.downloadWorker.postMessage(t)},o.resume=function(){this.pauseDisplay=!1;var t={cmd:r.tResumeStream};this.downloadWorker&&void 0!==this.downloadWorker&&this.downloadWorker.postMessage(t)},o.onWorkerMessage=function(t){var e=t.data;switch(e.cmd){case r.tOpenStream:var i={cmd:r.tGetTsStream,t:0};this.downloadWorker.postMessage(i);break;case r.tGetTsStreamRsp:this.getNextFileFlag=!0;break;case r.tGetTsComplete:this.playComplete=!0;break;case r.tDisconnect:i={cmd:r.tReOpenStream};this.downloadWorker.postMessage(i);break;case r.tCloseStream:e.workerId==r.DOWNLOAD_WORKER_ID?(this.downloadWorker.terminate(),this.downloadWorker=null):e.workerId==r.DECODE_WORKER_ID?(this.decodeWorker.terminate(),this.decodeWorker=null,this.soundPlayer&&(this.soundPlayer.destroy(),delete this.soundPlayer,this.soundPlayer=null),this.webGLPlayer&&this.webGLPlayer.renderVideoFrame(null,0,0)):e.workerId==r.RENDER_WORKER_ID&&(this.renderWorker.terminate(),this.renderWorker=null);break;case r.tFrameData:if(e.workerId==r.DOWNLOAD_WORKER_ID){var n=e.dat,o=this._receivedLength;this._receivedLength+=n.byteLength,this._onDataArrival&&this._onDataArrival(n,o,this._receivedLength);break}if(e.workerId==r.DECODE_WORKER_ID){if(this.pauseDisplay)break;1==e.mediaType?(this.canvas.width=e.width,this.canvas.height=e.height,this.webGLPlayer.renderVideoFrame(e.dat,e.width,e.height),this.OnUpdatePlayInfo(e.playTimeSec,e.frameNum)):2==e.mediaType&&(null==this.soundPlayer&&this.OpenAudioPlayer(e.fmt,e.ch,e.samplerate),null!=this.soundPlayer&&this.soundPlayer.play(e.dat))}break;case r.tMediaInfo:this.totalDuration=e.duration,r.setLiveStreamType(e.live);break;case r.tGetTsStream:this.pauseDisplay||this.getNextFileFlag&&(this.downloadWorker.postMessage(e),this.getNextFileFlag=!1);break;case r.tSeekStream:this.seeking=!1;break;case r.tResetMSE:this._onDataArrival&&(this._receivedLength=0,this._onDataArrival(null,e.fileSequence,0))}},o._dispatchArrayBuffer=function(t){var e=t,i=this._receivedLength;this._receivedLength+=e.byteLength,this._onDataArrival&&this._onDataArrival(e,i,this._receivedLength)},o._onWebSocketError=function(t){this._status=U;var e={code:t.code,msg:t.message};if(!this._onError)throw new C.d(e.msg);this._onError(V,e)},n}(q),at="SYNC RTSP CLIENT v2020.07.10",st=function(){function t(t,e,i,r,n){this.TAG="RtspHandler",this._ws=e,this.rtspUrl=t,this.rtspSeq=1,this.state=0,this.authType=1,this.username="",this.realm="",this.nonce="",this.authBasicStr="",this.authDigestStr="",this.videoTrack="",this.audioTrack="",this.metadataTrack="",this.contentBaseStr="",this.setupStreamNum=0,this.videoSessionId="",this.audioSessionId="",this.metadataSessionId="",this.mediaInfo={videoCodecId:0,audioCodecId:0},this.RTSP_VER_STR="RTSP/1.0",this.callbackPtr=i,this.userPtr=r,this.dataSource=n}var e=t.prototype;return e.destroy=function(){},e.getMediaInfo=function(){return this.mediaInfo},e.sendPacket=function(t){this._ws.send(t)},e.makeHeader=function(t,e){var i="";if(i=""==this.contentBaseStr?t+" "+this.rtspUrl:t+" "+this.contentBaseStr,e&&null!=e){var r=this.contentBaseStr.length;"/"!=this.contentBaseStr[r-1]?i+="/"+e:i+=e}return i+=" "+this.RTSP_VER_STR+"\r\n",i+="CSeq: "+this.rtspSeq+"\r\n",this.rtspSeq++,i},e.getLineString=function(t,e){var i=0,r="";for(i=0;i<t.length;i++){if("\r"==t[i]||"\n"==t[i]||e&&null!=e&&e==t[i]||i+1==t.length)return r;r+=t[i]}return r},e.FindStringByStr=function(t,e){var i=t.indexOf(e);return i>=0?t.substr(i):null},e.rtspParseDESCRIBE=function(t){var e="",i="",n="",o="",a="",s="",h=t.indexOf("RTSP/1.0 401 Unauthorized");if(h>=0){var u=t.indexOf("WWW-Authenticate: Digest");return u>0||(u=t.indexOf("WWW-Authenticate: Basic")),401}if((h=t.indexOf("RTSP/1.0 302"))>=0){var l="";if((h=t.indexOf("Location: "))>=0){var d=t.substring(h,t.length),f=d.indexOf("\r",0);l=d.substring(10,f)}return this.callbackPtr&&this.userPtr&&this.callbackPtr(this.userPtr,302,l,this.dataSource),302}if((h=t.indexOf("200 OK"))<0)return c.a.e(this.TAG,"DESCRIBE ERROR"),-1;var p=this.FindStringByStr(t,"m=video");if(p){if(g=this.FindStringByStr(p,"a=rtpmap")){if((b=this.getLineString(g).split(" ")).length>0){var m=b[0].substr(9);parseInt(m)}if(b.length>1)(_=b[1].split("/")).length>0&&(e=_[0])}if(v=this.FindStringByStr(p,"trackID="))c.a.w(this.TAG,"not process");else if(v=this.FindStringByStr(p,"a=control:"))(y=this.getLineString(v).split(":")).length>1&&(n=y[1])}if(p=this.FindStringByStr(t,"m=audio")){if(g=this.FindStringByStr(p,"a=rtpmap")){if((b=this.getLineString(g).split(" ")).length>0){m=b[0].substr(9);parseInt(m)}if(b.length>1)(_=b[1].split("/")).length>0&&(i=_[0])}if(v=this.FindStringByStr(p,"trackID="))c.a.w(this.TAG,"not process");else if(v=this.FindStringByStr(p,"a=control:"))(y=this.getLineString(v).split(":")).length>1&&(o=y[1])}if(p=this.FindStringByStr(t,"m=metadata")){var g,v,y;if(g=this.FindStringByStr(p,"a=rtpmap")){var b,_;if((b=this.getLineString(g).split(" ")).length>0){m=b[0].substr(9);parseInt(m)}if(b.length>1)(_=b[1].split("/")).length>0&&_[0]}if(v=this.FindStringByStr(p,"trackID="))c.a.w(this.TAG,"not process");else if(v=this.FindStringByStr(p,"a=control:"))(y=this.getLineString(v).split(":")).length>1&&(a=y[1])}(p=this.FindStringByStr(t,"Content-Base: "))&&(s=this.getLineString(p).substr(14));return"H264"==e?(this.mediaInfo.videoCodecId=7,r.setCodecTypeStr("H264")):"H265"==e&&(this.mediaInfo.videoCodecId=12,r.setCodecTypeStr("H265")),"MPEG4-GENERIC"==i?this.mediaInfo.audioCodecId=10:"PCMU"==i?this.mediaInfo.audioCodecId=1:"PCMA"==i&&(this.mediaInfo.audioCodecId=2),this.videoTrack=n,this.audioTrack=o,this.metadataTrack=a,this.contentBaseStr=s,0},e.rtspParseSETUP=function(t){var e="0",i=this.FindStringByStr(t,"Session:");if(i){var r=this.getLineString(i).split(";");if(r.length>0)e=r[0].substr(9);1==this.setupStreamNum?this.videoSessionId=e:2==this.setupStreamNum?this.audioSessionId=e:3==this.setupStreamNum&&(this.metadataSessionId=e)}},e.rtspParsePLAY=function(t){var e="0";if(t.indexOf("200 OK")<0)return c.a.e(this.TAG,"PLAY ERROR: "+t),-1;var i=this.FindStringByStr(t,"Session:");if(i){var r=this.getLineString(i).split(";");if(r.length>0)e=r[0].substr(9);this.videoSessionId=e}this.state=7},e.sendOptions=function(){var t=this.makeHeader("OPTIONS",null);1==this.authType?t+="WWW-Authorization: Basic "+this.authBasicStr+"\r\n":2==this.authType&&(t+="WWW-Authorization: Digest ",t+='username = "'+this.username+'",',t+='realm = "'+this.realm+'",',t+='nonce = "'+this.nonce+'",',t+='uri = "'+this.rtspUrl+'",',t+='response = "'+this.authDigestStr+'"\r\n'),t+="\r\n",this.sendPacket(t)},e.sendDescribe=function(){var t=this.makeHeader("DESCRIBE",null);1==this.authType?t+="WWW-Authorization: Basic "+this.authBasicStr+"\r\n":2==this.authType&&(t+="WWW-Authorization: Digest ",t+='username = "'+this.username+'",',t+='realm = "'+this.realm+'",',t+='nonce = "'+this.nonce+'",',t+='uri = "'+this.rtspUrl+'",',t+='response = "'+this.authDigestStr+'"\r\n'),t+="Accept: application/sdp\r\n",t+="User-Agent: "+at+"\r\n",t+="\r\n",this.sendPacket(t),this.state=2},e.sendSetup=function(t){var e=this.makeHeader("SETUP",t);""!=this.videoSessionId&&(e+="Session: "+this.videoSessionId+"\r\n"),e+="User-Agent: "+at+"\r\n",t==this.videoTrack?(e+="Transport: RTP/AVP/TCP;unicast;interleaved=0-1\r\n\r\n",this.audioTrack,this.setupStreamNum++):t==this.audioTrack?(e+="Transport: RTP/AVP/TCP;unicast;interleaved=2-3\r\n\r\n",this.setupStreamNum++):t==this.metadataTrack&&(e+="Transport: RTP/AVP/TCP;unicast;interleaved=4-5\r\n\r\n",this.setupStreamNum++),this.state=3,this.sendPacket(e)},e.sendPlay=function(){var t=this.makeHeader("PLAY",null);t+="Session: "+this.videoSessionId+"\r\n",1==this.authType?t+="WWW-Authorization: Basic "+this.authBasicStr+"\r\n":2==this.authType&&(t+="WWW-Authorization: Digest ",t+='username = "'+this.username+'",',t+='realm = "'+this.realm+'",',t+='nonce = "'+this.nonce+'",',t+='uri = "'+this.rtspUrl+'",',t+='response = "'+this.authDigestStr+'"\r\n'),t+="Range: npt=0.000-\r\n\r\n",this.state=4,this.sendPacket(t)},e.sendPause=function(){var t=this.makeHeader("PAUSE",null);t+="Session: "+this.videoSessionId+"\r\n",1==this.authType?t+="WWW-Authorization: Basic "+this.authBasicStr+"\r\n":2==this.authType&&(t+="WWW-Authorization: Digest ",t+='username = "'+this.username+'",',t+='realm = "'+this.realm+'",',t+='nonce = "'+this.nonce+'",',t+='uri = "'+this.rtspUrl+'",',t+='response = "'+this.authDigestStr+'"\r\n'),this.state=5,this.sendPacket(t)},e.sendScale=function(t){var e=this.makeHeader("PLAY",null);e+="Session: "+this.videoSessionId+"\r\n",1==this.authType?e+="WWW-Authorization: Basic "+this.authBasicStr+"\r\n":2==this.authType&&(e+="WWW-Authorization: Digest ",e+='username = "'+this.username+'",',e+='realm = "'+this.realm+'",',e+='nonce = "'+this.nonce+'",',e+='uri = "'+this.rtspUrl+'",',e+='response = "'+this.authDigestStr+'"\r\n'),e+="Scale: "+t+"\r\n",e+="Range: npt=0.000-\r\n\r\n",this.state=4,this.sendPacket(e)},e.abort=function(){var t=this._ws;!t||0!==t.readyState&&1!==t.readyState||(this._requestAbort=!0,t.close()),this._ws=null,this._status=LoaderStatus.kComplete},e._onWebSocketOpen=function(t){this._status=LoaderStatus.kBuffering,c.a.e(this.TAG,"_onWebSocketOpen: "+t.target.url)},e._onWebSocketClose=function(t){c.a.e(this.TAG,"onWebSocketClose"),!0!==this._requestAbort?(this._status=LoaderStatus.kComplete,this._onComplete&&this._onComplete(-1,-1)):this._requestAbort=!1},e._onWebSocketMessage=function(t){var e=this;if(t.data instanceof ArrayBuffer)this._dispatchArrayBuffer(t.data);else if(t.data instanceof Blob){var i=new FileReader;i.onload=function(){e._dispatchArrayBuffer(i.result)},i.readAsArrayBuffer(t.data)}else{this._status=LoaderStatus.kError;var r={code:-1,msg:"Unsupported WebSocket message type: "+t.data.constructor.name};if(!this._onError)throw new C.d(r.msg);this._onError(LoaderErrors.EXCEPTION,r)}},e._dispatchArrayBuffer=function(t){var e=t,i=this._receivedLength;this._receivedLength+=e.byteLength,this._onDataArrival&&this._onDataArrival(e,i,this._receivedLength),this._triggerReconnectSuccessNotify&&(this._triggerReconnectSuccessNotify=!1,this._onDataArrival&&(this._onDataArrival(null,this._retryConnectTimes,0),this._retryConnectTimes++))},e._onWebSocketError=function(t){c.a.e(this.TAG,"_onWebSocketError: "+t),this._status=LoaderStatus.kError;var e={code:t.code,msg:t.message};if(!this._onError)throw new C.d(e.msg);this._onError(LoaderErrors.EXCEPTION,e)},e.parseResponseStr=function(t){2==this.state?0==this.rtspParseDESCRIBE(t)&&this.sendSetup(this.videoTrack):3==this.state?(this.rtspParseSETUP(t),this.setupStreamNum<2&&""!=this.audioTrack?this.sendSetup(this.audioTrack):this.setupStreamNum<3&&""!=this.metadataTrack?this.sendSetup(this.metadataTrack):this.sendPlay()):4==this.state?this.rtspParsePLAY(t):7==this.state||this.state},t}();function ht(t,e){return ht=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},ht(t,e)}var ut=function(t){var e,i;function r(){var e;return(e=t.call(this,"RtspStream-loader")||this).TAG="RtspStreamLoader",e._needStash=!0,e._ws=null,e._RtspHandler=null,e._requestAbort=!1,e._receivedLength=0,e._retryConnectTimes=0,e._triggerReconnectingNotify=!0,e._triggerReconnectSuccessNotify=!0,e._procMediaInfo=!0,e._heartbeatTime=0,e}i=t,(e=r).prototype=Object.create(i.prototype),e.prototype.constructor=e,ht(e,i),r.isSupported=function(){try{return void 0!==self.WebSocket}catch(t){return!1}};var n=r.prototype;return n.destroy=function(){this._ws&&this.abort(),t.prototype.destroy.call(this)},n.rtspCallbackEvent=function(t,e,i,r){t.abort(),r.url=i,t.open(r)},n.open=function(t){try{this._retryConnectTimes++,this._triggerReconnectingNotify&&(this._triggerReconnectingNotify=!1,this._onDataArrival&&this._onDataArrival(null,-this._retryConnectTimes,0)),this._triggerReconnectSuccessNotify=!0;var e=t.url.replace("rtsp","ws"),i=this._ws=new self.WebSocket(e);this._RtspHandler=new st(t.url,i,this.rtspCallbackEvent,this,t),i.onopen=this._onWebSocketOpen.bind(this),i.onclose=this._onWebSocketClose.bind(this),i.onmessage=this._onWebSocketMessage.bind(this),i.onerror=this._onWebSocketError.bind(this),this._status=N}catch(t){this._status=U;var r={code:t.code,msg:t.message};if(!this._onError)throw new C.d(r.msg);this._onError(V,r)}},n.abort=function(){var t=this._ws;!t||0!==t.readyState&&1!==t.readyState||(this._requestAbort=!0,t.close()),this._ws=null,this._status=j},n.pause=function(){this._RtspHandler&&this._RtspHandler.sendPause()},n.resume=function(){this._RtspHandler&&this._RtspHandler.sendPlay()},n.scale=function(t){this._RtspHandler&&this._RtspHandler.sendScale(t)},n._onWebSocketOpen=function(t){this._status=F,this._RtspHandler.sendDescribe()},n._onWebSocketClose=function(t){c.a.e(this.TAG,"onWebSocketClose"),!0!==this._requestAbort?(this._status=j,this._onComplete&&this._onComplete(-1,-1)):this._requestAbort=!1},n._onWebSocketMessage=function(t){var e=this;if(t.data instanceof ArrayBuffer)this._dispatchArrayBuffer(t.data);else if(t.data instanceof Blob){var i=new FileReader;i.onload=function(){e._dispatchArrayBuffer(i.result)},i.readAsArrayBuffer(t.data)}else if(t.data instanceof String)c.a.d(this.TAG,"response:"+t.data);else if("message"==t.type)c.a.d(this.TAG,"response message:"+t.data),this._RtspHandler.parseResponseStr(t.data);else{this._status=U;var r={code:-1,msg:"Unsupported WebSocket message type: "+t.data.constructor.name};if(!this._onError)throw new C.d(r.msg);this._onError(V,r)}},n._dispatchArrayBuffer=function(t){var e=t,i=this._receivedLength;if(this._receivedLength+=e.byteLength,this._procMediaInfo){this._procMediaInfo=!1;var r=this._RtspHandler.getMediaInfo();this._onDataArrival&&this._onDataArrival(r,i,1)}this._heartbeatTime<1&&(this._heartbeatTime=Date.parse(new Date));var n=Date.parse(new Date);(n-this._heartbeatTime)/1e3>10&&(this._heartbeatTime=n),this._onDataArrival&&this._onDataArrival(e,i,this._receivedLength),this._triggerReconnectSuccessNotify&&(this._triggerReconnectSuccessNotify=!1,this._onDataArrival&&(this._onDataArrival(null,this._retryConnectTimes,0),this._retryConnectTimes++))},n._onWebSocketError=function(t){c.a.e(this.TAG,"_onWebSocketError: "+t),this._status=U;var e={code:t.code,msg:t.message};if(!this._onError)throw new C.d(e.msg);this._onError(V,e)},r}(q);function lt(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var dt=function(){function t(t,e,i,r){this.TAG="IOController",this._config=e,this._extraData=i,this._stashInitialSize=393216,null!=e.stashInitialSize&&e.stashInitialSize>0&&(this._stashInitialSize=e.stashInitialSize),this._stashUsed=0,this._stashSize=this._stashInitialSize,this._bufferSize=3145728,this._stashBuffer=new ArrayBuffer(this._bufferSize),this._stashByteStart=0,this._enableStash=!0,!1===e.enableStashBuffer&&(this._enableStash=!1),"soft"===e.decodeType&&(this._enableStash=!1),this._loader=null,this._loaderClass=null,this._seekHandler=null,this._dataSource=t,this._isWebSocketURL=/wss?:\/\/(.+?)/.test(t.url),this._refTotalLength=t.filesize?t.filesize:null,this._totalLength=this._refTotalLength,this._fullRequestFlag=!1,this._currentRange=null,this._redirectedURL=null,this._speedNormalized=0,this._speedSampler=new B,this._speedNormalizeList=[64,128,256,384,512,768,1024,1536,2048,3072,4096],this._isEarlyEofReconnecting=!1,this._paused=!1,this._resumeFrom=0,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._selectSeekHandler(),this._selectLoader(),this._createLoader(r)}var e,i,r,n=t.prototype;return n.destroy=function(){this._loader.isWorking()&&this._loader.abort(),this._stashBuffer&&(delete this._stashBuffer,this._stashBuffer=null),this._loader.destroy(),this._loader=null,this._loaderClass=null,this._dataSource=null,this._stashBuffer=null,this._stashUsed=this._stashSize=this._bufferSize=this._stashByteStart=0,this._currentRange=null,this._speedSampler=null,this._isEarlyEofReconnecting=!1,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._extraData=null},n.isWorking=function(){return this._loader&&this._loader.isWorking()&&!this._paused},n.isPaused=function(){return this._paused},n._selectSeekHandler=function(){var t=this._config;if("range"===t.seekType)this._seekHandler=new it(this._config.rangeLoadZeroStart);else if("param"===t.seekType){var e=t.seekParamStart||"bstart",i=t.seekParamEnd||"bend";this._seekHandler=new rt(e,i)}else{if("custom"!==t.seekType)throw new C.b("Invalid seekType in config: "+t.seekType);if("function"!=typeof t.customSeekHandler)throw new C.b("Custom seekType specified in config but invalid customSeekHandler!");this._seekHandler=new t.customSeekHandler}},n._selectLoader=function(){if(null!=this._config.customLoader)this._loaderClass=this._config.customLoader;else if("m3u8"===this._config.streamType)this._loaderClass=ot;else if("rtsp"===this._config.streamType)this._loaderClass=ut;else if(this._isWebSocketURL)this._loaderClass=et;else if(Z.isSupported())this._loaderClass=Z;else if(Q.isSupported())this._loaderClass=Q;else{if(!$.isSupported())throw new C.d("Your browser doesn't support xhr with arraybuffer responseType!");this._loaderClass=$}},n._IsM3u8Loader=function(){return this._loaderClass==ot},n._GetM3u8Loader=function(){return this._loaderClass==ot?this._loader:null},n._IsRtspLoader=function(){return this._loaderClass==ut},n._createLoader=function(t){this._loader=new this._loaderClass(this._seekHandler,this._config),!1===this._loader.needStashBuffer&&(this._enableStash=!1),this._loaderClass==ot&&this._loader.setStartPlaySecs(t),this._loader.onContentLengthKnown=this._onContentLengthKnown.bind(this),this._loader.onURLRedirect=this._onURLRedirect.bind(this),this._loader.onDataArrival=this._onLoaderChunkArrival.bind(this),this._loader.onComplete=this._onLoaderComplete.bind(this),this._loader.onError=this._onLoaderError.bind(this)},n.open=function(t){this._currentRange={from:0,to:-1},t&&(this._currentRange.from=t),this._speedSampler.reset(),t||(this._fullRequestFlag=!0),this._loader.open(this._dataSource,Object.assign({},this._currentRange))},n.abort=function(){this._loader.abort(),this._paused&&(this._paused=!1,this._resumeFrom=0)},n.pause=function(){this._IsRtspLoader()?this._loader&&this._loader.pause():this.isWorking()&&(this._loader.abort(),0!==this._stashUsed?(this._resumeFrom=this._stashByteStart,this._currentRange.to=this._stashByteStart-1):this._resumeFrom=this._currentRange.to+1,this._stashUsed=0,this._stashByteStart=0,this._paused=!0)},n.resume=function(){if(this._IsRtspLoader())this._loader&&this._loader.resume();else if(this._paused){this._paused=!1;var t=this._resumeFrom;this._resumeFrom=0,this._internalSeek(t,!0)}},n.rtspScale=function(t){this._IsRtspLoader()&&this._loader&&this._loader.scale(t)},n.seek=function(t){this._paused=!1,this._stashUsed=0,this._stashByteStart=0,this._internalSeek(t,!0)},n._internalSeek=function(t,e){this._loader.isWorking()&&this._loader.abort(),this._flushStashBuffer(e),this._loader.destroy(),this._loader=null;var i={from:t,to:-1};this._currentRange={from:i.from,to:-1},this._speedSampler.reset(),this._stashSize=this._stashInitialSize,this._createLoader(),this._loader.open(this._dataSource,i),this._onSeeked&&this._onSeeked()},n.updateUrl=function(t){if(!t||"string"!=typeof t||0===t.length)throw new C.b("Url must be a non-empty string!");this._dataSource.url=t},n._expandBuffer=function(t){for(var e=this._stashSize;e+1048576<t;)e*=2;if((e+=1048576)!==this._bufferSize){var i=new ArrayBuffer(e);if(this._stashUsed>0){var r=new Uint8Array(this._stashBuffer,0,this._stashUsed);new Uint8Array(i,0,e).set(r,0)}this._stashBuffer&&(delete this._stashBuffer,this._stashBuffer=null),this._stashBuffer=i,this._bufferSize=e}},n._normalizeSpeed=function(t){var e=this._speedNormalizeList,i=e.length-1,r=0,n=0,o=i;if(t<e[0])return e[0];for(;n<=o;){if((r=n+Math.floor((o-n)/2))===i||t>=e[r]&&t<e[r+1])return e[r];e[r]<t?n=r+1:o=r-1}},n._adjustStashSize=function(t){var e=0;(e=this._config.isLive||t<512?t:t>=512&&t<=1024?Math.floor(1.5*t):2*t)>8192&&(e=8192);var i=1024*e+1048576;this._bufferSize<i&&this._expandBuffer(i),this._stashSize=1024*e},n._dispatchChunks=function(t,e){return null===t?this._IsM3u8Loader()?void(e>1&&this._onComplete&&this._onComplete(-1)):this._onDataArrival(t,e):(this._currentRange.to=e+t.byteLength-1,this._onDataArrival(t,e))},n._onURLRedirect=function(t){this._redirectedURL=t,this._onRedirect&&this._onRedirect(t)},n._onContentLengthKnown=function(t){t&&this._fullRequestFlag&&(this._totalLength=t,this._fullRequestFlag=!1)},n._onLoaderChunkArrival=function(t,e,i){if(!this._onDataArrival)throw new C.a("IOController: No existing consumer (onDataArrival) callback!");if(!this._paused)if(this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,this._onRecoveredEarlyEof&&this._onRecoveredEarlyEof()),null===t&&i<1)this._dispatchChunks(t,e);else{this._speedSampler.addBytes(t.byteLength);var r=this._speedSampler.lastSecondKBps;if(0!==r){var n=this._normalizeSpeed(r);this._speedNormalized!==n&&(this._speedNormalized=n,this._adjustStashSize(n))}if(this._enableStash)if(0===this._stashUsed&&0===this._stashByteStart&&(this._stashByteStart=e),this._stashUsed+t.byteLength<=this._stashSize){new Uint8Array(this._stashBuffer,0,this._stashSize).set(new Uint8Array(t),this._stashUsed),this._stashUsed+=t.byteLength}else{var o=new Uint8Array(this._stashBuffer,0,this._bufferSize);if(this._stashUsed>0){var a=this._stashBuffer.slice(0,this._stashUsed),s=this._dispatchChunks(a,this._stashByteStart);if(s<a.byteLength){if(s>0){var h=new Uint8Array(a,s);o.set(h,0),this._stashUsed=h.byteLength,this._stashByteStart+=s}}else this._stashUsed=0,this._stashByteStart+=s;this._stashUsed+t.byteLength>this._bufferSize&&(this._expandBuffer(this._stashUsed+t.byteLength),o=new Uint8Array(this._stashBuffer,0,this._bufferSize)),o.set(new Uint8Array(t),this._stashUsed),this._stashUsed+=t.byteLength}else{var u=this._dispatchChunks(t,e);if(u<t.byteLength){var l=t.byteLength-u;l>this._bufferSize&&(this._expandBuffer(l),o=new Uint8Array(this._stashBuffer,0,this._bufferSize)),o.set(new Uint8Array(t,u),0),this._stashUsed+=l,this._stashByteStart=e+u}}}else if(0===this._stashUsed){var d=this._dispatchChunks(t,e);if(d<t.byteLength){var f=t.byteLength-d;f>this._bufferSize&&this._expandBuffer(f),new Uint8Array(this._stashBuffer,0,this._bufferSize).set(new Uint8Array(t,d),0),this._stashUsed+=f,this._stashByteStart=e+d}}else{this._stashUsed+t.byteLength>this._bufferSize&&(c.a.w(this.TAG,"_expandBuffer... "+(this._stashUsed+t.byteLength)),this._expandBuffer(this._stashUsed+t.byteLength));var p=new Uint8Array(this._stashBuffer,0,this._bufferSize);p.set(new Uint8Array(t),this._stashUsed),this._stashUsed+=t.byteLength;var m=this._dispatchChunks(this._stashBuffer.slice(0,this._stashUsed),this._stashByteStart);if(m<this._stashUsed&&m>0){var g=new Uint8Array(this._stashBuffer,m);p.set(g,0)}this._stashUsed-=m,this._stashByteStart+=m}}},n._flushStashBuffer=function(t){if(this._stashUsed>0){var e=this._stashBuffer.slice(0,this._stashUsed),i=this._dispatchChunks(e,this._stashByteStart),r=e.byteLength-i;if(i<e.byteLength){if(!t){if(i>0){var n=new Uint8Array(this._stashBuffer,0,this._bufferSize),o=new Uint8Array(e,i);n.set(o,0),this._stashUsed=o.byteLength,this._stashByteStart+=i}return 0}c.a.w(this.TAG,r+" bytes unconsumed data remain when flush buffer, dropped")}return this._stashUsed=0,this._stashByteStart=0,r}return 0},n._onLoaderComplete=function(t,e){this._flushStashBuffer(!0),t!=e||-1!=e?this._onComplete&&this._onComplete(this._extraData):this._onComplete&&this._onComplete(-1)},n._onLoaderError=function(t,e){if(c.a.e(this.TAG,"Loader error, code = "+e.code+", msg = "+e.msg),this._flushStashBuffer(!1),this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,t=G),t===z){if(!this._config.isLive&&this._totalLength){var i=this._currentRange.to+1;return void(i<this._totalLength&&(c.a.w(this.TAG,"Connection lost, trying reconnect..."),this._isEarlyEofReconnecting=!0,this._internalSeek(i,!1)))}t=G}if(!this._onError)throw new C.d("IOException: "+e.msg);this._onError(t,e)},e=t,(i=[{key:"status",get:function(){return this._loader.status}},{key:"extraData",get:function(){return this._extraData},set:function(t){this._extraData=t}},{key:"onDataArrival",get:function(){return this._onDataArrival},set:function(t){this._onDataArrival=t}},{key:"onSeeked",get:function(){return this._onSeeked},set:function(t){this._onSeeked=t}},{key:"onError",get:function(){return this._onError},set:function(t){this._onError=t}},{key:"onComplete",get:function(){return this._onComplete},set:function(t){this._onComplete=t}},{key:"onRedirect",get:function(){return this._onRedirect},set:function(t){this._onRedirect=t}},{key:"onRecoveredEarlyEof",get:function(){return this._onRecoveredEarlyEof},set:function(t){this._onRecoveredEarlyEof=t}},{key:"currentURL",get:function(){return this._dataSource.url}},{key:"hasRedirect",get:function(){return null!=this._redirectedURL||null!=this._dataSource.redirectedURL}},{key:"currentRedirectedURL",get:function(){return this._redirectedURL||this._dataSource.redirectedURL}},{key:"currentSpeed",get:function(){return this._loaderClass===$?this._loader.currentSpeed:this._speedSampler.lastSecondKBps}},{key:"loaderType",get:function(){return this._loader.type}}])&<(e.prototype,i),r&<(e,r),Object.defineProperty(e,"prototype",{writable:!1}),t}(),ft={IO_ERROR:"io_error",DEMUX_ERROR:"demux_error",INIT_SEGMENT:"init_segment",MEDIA_SEGMENT:"media_segment",LOADING_COMPLETE:"loading_complete",RECOVERED_EARLY_EOF:"recovered_early_eof",MEDIA_INFO:"media_info",METADATA_ARRIVED:"metadata_arrived",SCRIPTDATA_ARRIVED:"scriptdata_arrived",STATISTICS_INFO:"statistics_info",RECOMMEND_SEEKPOINT:"recommend_seekpoint",RECONNECT_ING:"reconnect_ing",RECONNECT_SUCCESS:"reconnect_success"},ct=i(77),pt=i(23);function mt(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function gt(t,e){return t[e]<<24|t[e+1]<<16|t[e+2]<<8|t[e+3]}var vt=function(){function t(t,e,i,r,n,o,a){var s;this.TAG="RTSPDemuxer",this._config=e,this._onError=null,this._onMediaInfo=null,this._onMetaDataArrived=null,this._onScriptDataArrived=null,this._onTrackMetadata=null,this._onDataAvailable=null,this._dataOffset=t.dataOffset,this._firstParse=!0,this._dispatch=!1,this._hasAudio=t.hasAudioTrack,this._hasVideo=t.hasVideoTrack,this._hasAudioFlagOverrided=!1,this._hasVideoFlagOverrided=!1,this._audioInitialMetadataDispatched=!1,this._videoInitialMetadataDispatched=!1,this._initVideoMetadata=!1,this._initAudioMetadata=!1,this._mediaInfo=new _.a,this._mediaInfo.hasAudio=this._hasAudio,this._mediaInfo.hasVideo=this._hasVideo,this._metadata=null,this._audioMetadata=null,this._videoMetadata=null,this._naluLengthSize=4,this._timestampBase=0,this._timescale=1e3,this._duration=0,this._durationOverrided=!1,this._referenceFrameRate={fixed:!0,fps:23.976,fps_num:23976,fps_den:1e3},this._flvSoundRateTable=[5500,11025,22050,44100,48e3],this._mpegSamplingRates=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],this._mpegAudioV10SampleRateTable=[44100,48e3,32e3,0],this._mpegAudioV20SampleRateTable=[22050,24e3,16e3,0],this._mpegAudioV25SampleRateTable=[11025,12e3,8e3,0],this._mpegAudioL1BitRateTable=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],this._mpegAudioL2BitRateTable=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],this._mpegAudioL3BitRateTable=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1],this._videoTrack={type:"video",id:1,sequenceNumber:0,samples:[],length:0},this._audioTrack={type:"audio",id:2,sequenceNumber:0,samples:[],length:0},this._littleEndian=(s=new ArrayBuffer(2),new DataView(s).setInt16(0,256,!0),256===new Int16Array(s)[0]),this.videoCodecId=t.videoCodecId,this.audioCodecId=t.audioCodecId,this._AVC_SPS=null,this._AVC_PPS=null,this._HEVC_VPS=null,this._HEVC_SPS=null,this._HEVC_PPS=null,this._StartCode=[0,0,0,1],this._SampleRate=8e3,this._ChannelNum=1,this._AVC_Config=null,this._pause=!1,this._callbackInitFlag=!1,this._callbackMediaDataFunc=i,this._callbackMediaDataUserPtr=r,this._callbackPlaybackTimePtr=n,this._callbackPlaybackTimeUserPtr=o,this.getVideoInfoCallbackFunc=a,this._debugProcCount=0,this.ptsInterval=40,this.packetData=null,this.packetPos=0,this.frameData=new Uint8Array(2097152),this.fullFrameData=null,this.fullFramePos=0,this.snapshotCount=0,this.framePos=0,this.lastTimestamp=0,this.currentIsKeyFrame=!1,this.reset=0,this.findKeyframe=!0,this.syncVideoPts=0,this.syncAudioPts=0,this.startVideoPts=0,this.startAudioPts=0,this.lastNALType=0,this._fileposition=0,this._DebugBuf=null,this._DebugBufPos=0}var e,i,r,n=t.prototype;return n.destroy=function(){this._mediaInfo=null,this._metadata=null,this._audioMetadata=null,this._videoMetadata=null,this._videoTrack=null,this._audioTrack=null,this._onError=null,this._onMediaInfo=null,this._onMetaDataArrived=null,this._onScriptDataArrived=null,this._onTrackMetadata=null,this._onDataAvailable=null,this.packetData&&(delete this.packetData,this.packetData=null),this.frameData&&(delete this.frameData,this.frameData=null),this.fullFrameData&&(delete this.fullFrameData,this.fullFrameData=null)},t.probe=function(t){if(t.videoCodecId>0)return{match:!0,consumed:0,dataOffset:0,hasAudioTrack:t.audioCodecId>0,hasVideoTrack:t.videoCodecId>0,videoCodecId:t.videoCodecId,audioCodecId:t.audioCodecId};var e=new Uint8Array(t),i={match:!1};if("$"!==e[0])return i;var r=(4&e[4])>>>2!=0,n=0!=(1&e[4]),o=gt(e,5);return o<9?i:{match:!0,consumed:o,dataOffset:o,hasAudioTrack:r,hasVideoTrack:n}},n.bindDataSource=function(t){return t.onDataArrival=this.parseChunks.bind(this),this},n.resetMediaInfo=function(){this._mediaInfo=new _.a},n.pause=function(){this._pause=!0},n.resume=function(){this._pause=!1},n._onDataAvailableToSoftwareDecodeVideo=function(t,e){var i=e.samples,r=-1;for(i.length>1&&(r=0);i.length;){for(var n=i.shift(),o=0,a=0;a<n.units.length;a++)o+=n.units[a].data.length;for(var s=0,h=new Uint8Array(o);n.units.length;){var u=n.units.shift();27==t&&(u.data[0]=0,u.data[1]=0,u.data[2]=0,u.data[3]=1),h.set(u.data,s),s+=u.data.length}this._callbackMediaDataFunc&&(r>=0&&r++,this._callbackMediaDataFunc(this._callbackMediaDataUserPtr,!0,1,t,n.isKeyframe,h,o,n.pts,0,0))}},n._onDataAvailableToSoftwareDecodeAudio=function(t,e){var i=e.samples,r=-1;for(i.length>1&&(r=0);i.length;){var n=i.shift();this._callbackMediaDataFunc&&(r>=0&&r++,this._callbackMediaDataFunc(this._callbackMediaDataUserPtr,!0,2,t,0,n.unit,n.length,this._SampleRate,this._ChannelNum,this._SampleRate>=44100?32:16))}},n._isInitialMetadataDispatched=function(){return this._hasAudio&&this._hasVideo?this._audioInitialMetadataDispatched&&this._videoInitialMetadataDispatched:this._hasAudio&&!this._hasVideo?this._audioInitialMetadataDispatched:!(this._hasAudio||!this._hasVideo)&&this._videoInitialMetadataDispatched},n.procH264Packet=function(t,e){var i=[0,0,0,1],r=0,n=!1,o=31&t[0];o>=1&&o<=23&&(5==o&&(n=!0),o=1);var a={length:0,keyframe:n,endBit:0};switch(o){case 0:default:break;case 1:this.frameData.set(i,this.framePos),this.framePos+=4,this.frameData.set(t,this.framePos),this.framePos+=t.length,a.length=4+t.length,this._AVC_SPS&&this._AVC_PPS&&a.length>this._AVC_SPS.length+this._AVC_PPS.length+8&&(a.endBit=1);break;case 24:r++;for(var s=0;s<2;s++){var h=this.framePos-r;do{t[r],t[r+1];r+=2,h-=2}while(h>2)}break;case 25:case 26:case 27:case 29:c.a.e(this.TAG,"Unhandled type("+o+") (See RFC for implementation details");break;case 28:var u=o,l=t[++r],d=l>>7,f=(64&l)>>6,p=31&l;o;var m=224&u|31&l;if(r++,5!=p&&6!=p||(a.keyframe=!0),1==f){var g=t.subarray(r);this.frameData.set(g,this.framePos),this.framePos+=g.length,a.endBit=1}else if(1==d){var v=224&t[0]|31&t[1];this._AVC_SPS&&this._AVC_PPS&&this._AVC_SPS[4]!=v&&5==m&&(this.frameData[4]!=this._AVC_SPS[4]||this.frameData[4]==this._AVC_SPS[4]&&this.framePos<1)&&(this.frameData.set(this._AVC_SPS,this._AVC_SPS.length),this.framePos+=this._AVC_SPS.length,this.frameData.set(this._AVC_PPS,this._AVC_PPS.length),this.framePos+=this._AVC_PPS.length),this.frameData.set(i,this.framePos),this.framePos+=4,this.frameData[this.framePos]=224&t[0]|31&t[1],this.framePos+=1;var y=t.subarray(2,t.length);this.frameData.set(y,this.framePos),this.framePos+=y.length}else{var b=t.subarray(2);this.frameData.set(b,this.framePos),this.framePos+=b.length}break;case 30:case 31:c.a.e(this.TAG,"Undefined type: "+o)}return a},n.procH264NALHeader=function(t){var e=31&t[0];if(this.lastNALType=e,(7==e||8==e||6==e||5==e)&&t.length<256){var i=[0,0,0,1];if(this.currentIsKeyFrame=!0,7==e){if(!this._initVideoMetadata){this._AVC_Config=pt.a.parseSPS(t);var r=this._AVC_Config,n="avc1.";if(r)for(var o=t.subarray(1,4),a=0;a<3;a++){var s=o[a].toString(16);s.length<2&&(s="0"+s),n+=s}null==this._AVC_SPS&&(this._AVC_SPS=new Uint8Array(t.length+4),this._AVC_SPS.set(i,0),this._AVC_SPS.set(t,4));var h=this._videoMetadata,u=this._videoTrack;if(h?void 0!==h.avcc&&c.a.w(this.TAG,"Found another AVCDecoderConfigurationRecord!"):(!1===this._hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),(h=this._videoMetadata={}).type="video",h.id=u.id,h.timescale=this._timescale,h.duration=this._duration),h.codecWidth=r.codec_size.width,h.codecHeight=r.codec_size.height,h.presentWidth=r.present_size.width,h.presentHeight=r.present_size.height,this.getVideoInfoCallbackFunc&&null!=this.getVideoInfoCallbackFunc&&this.getVideoInfoCallbackFunc(this._callbackPlaybackTimeUserPtr,"H264",h.codecWidth,h.codecHeight),h.profile=r.profile_string,h.level=r.level_string,h.bitDepth=r.bit_depth,h.chromaFormat=r.chroma_format,h.sarRatio=r.sar_ratio,h.frameRate=r.frame_rate,!1!==r.frame_rate.fixed&&0!==r.frame_rate.fps_num&&0!==r.frame_rate.fps_den||(h.frameRate=this._referenceFrameRate),void 0!==h.frameRate){var l=h.frameRate.fps_den,d=h.frameRate.fps_num;h.refSampleDuration=h.timescale*(l/d)}h.codec=n;var f=this._mediaInfo;f.width=h.codecWidth,f.height=h.codecHeight,void 0!==h.frameRate&&(f.fps=h.frameRate.fps),f.profile=h.profile,f.level=h.level,f.refFrames=r.ref_frames,f.chromaFormat=r.chroma_format_string,f.sarNum=h.sarRatio.width,f.sarDen=h.sarRatio.height,f.videoCodec=n,f.hasAudio?null!=f.audioCodec&&(f.mimeType='video/x-flv; codecs="'+f.videoCodec+","+f.audioCodec+'"'):f.mimeType='video/x-flv; codecs="'+f.videoCodec+'"',f.isComplete()&&this._onMediaInfo(f)}}else if(8==e&&(null==this._AVC_PPS&&(this._AVC_PPS=new Uint8Array(t.length+4),this._AVC_PPS.set(i,0),this._AVC_PPS.set(t,4)),!this._initVideoMetadata)){var p=this._videoMetadata;if(null==p.avcc){var m=0,g=this._AVC_SPS.length-4+8+1+2+(this._AVC_PPS.length-4);p.avcc=new Uint8Array(g+1),p.avcc[0]=1,p.avcc[1]=this._AVC_SPS[5],p.avcc[2]=this._AVC_SPS[6],p.avcc[3]=this._AVC_SPS[7],p.avcc[4]=255,p.avcc[5]=225,m=6,p.avcc[m++]=this._AVC_SPS.length-4>>8,p.avcc[m++]=this._AVC_SPS.length-4&255;var v=this._AVC_SPS.subarray(4,this._AVC_SPS.length);p.avcc.set(v,m),m+=v.length,p.avcc[m++]=1,p.avcc[m++]=this._AVC_PPS.length-4>>8,p.avcc[m++]=this._AVC_PPS.length-4&255;var y=this._AVC_PPS.subarray(4,this._AVC_PPS.length);p.avcc.set(y,m),m+=y.length,p.avcc[g]=1}this._onTrackMetadata("video",p),this._initVideoMetadata=!0}}},n.procH265Packet=function(t,e,i){var r=[0,0,0,1],n=t[0]>>1&63,o={length:0,keyframe:!1,endBit:0};if(49==n){var a=t[2],s=128&a,h=64&a,u=(n=63&a)<<1;16!=n&&17!=n&&18!=n&&19!=n&&20!=n&&21!=n&&39!=n||(o.keyframe=!0);var l=3;0!=s&&(this.framePos=0,this.frameData.set(r,this.framePos),this.framePos+=4,t[1]=u,t[2]=1,l=1),0!=h&&(o.endBit=1);var d=t.subarray(l);this.frameData.set(d,this.framePos),this.framePos+=d.length,o.length=this.framePos,38==this.frameData[4]&&(o.keyframe=!0)}else if(48==n);else if(1==n||19==n||32==n||33==n||34==n||39==n){var f=!1;if(32==n)null==this._AVC_VPS&&(this._AVC_VPS=new Uint8Array(t.length+4)),this._AVC_VPS.set(r,0),this._AVC_VPS.set(t,4),f=!0;else if(33==n)null==this._AVC_SPS&&(this._AVC_SPS=new Uint8Array(t.length+4)),this._AVC_SPS.set(r,0),this._AVC_SPS.set(t,4),f=!0;else if(34==n)null==this._AVC_PPS&&(this._AVC_PPS=new Uint8Array(t.length+4)),this._AVC_PPS.set(r,0),this._AVC_PPS.set(t,4),f=!0;else if(39==n);else if(1==n){this.framePos=0,this.frameData.set(r,this.framePos),this.framePos+=4;var c=t.subarray(0);this.frameData.set(c,this.framePos),this.framePos+=c.length,o.length=this.framePos,o.endBit=1}f&&(o.length=4+t.length,o.keyframe=!0)}return o},n.uint8arrayToBase64=function(t){for(var e,i=0,r=t.length,n="";i<r;)e=t.subarray(i,Math.min(i+32768,r)),n+=String.fromCharCode.apply(null,e),i+=32768;return btoa(n)},n.parseVideoRTPPacket=function(t){var e=t.length,i=0,r=gt(t,i)>>>0,n=(8388608&r)>>23;gt(t,i+=4),gt(t,i+=4);i+=4;var o=r>>24&15;if(!(t.length<o)){if(268435456&r){if(t.length<4)return;var a=gt(t,i)>>>0;i+=4;var s=4*(65535&a);if(t.length<s)return;i+=s}if(536870912&r){if(t.length<1)return;var h=t[t.length-1];if(t.length<h)return;e-=h}var u=t.subarray(i,e),l=null;if(7==this.videoCodecId?(this.procH264NALHeader(u),l=this.procH264Packet(u,u.length)):12==this.videoCodecId&&(l=this.procH265Packet(u,u.length,n)),null!=l&&(1==n||1==l.endBit)){var d=[],f=0,c=0,p=1,m=!1;m=l.keyframe;var g=!0;if(7==this.videoCodecId?"auto"!==this._config.decodeType&&"hard"!==this._config.decodeType||(g=!1):12==this.videoCodecId&&(m=l.keyframe),m){if(this.findKeyframe=!1,this.fullFramePos=0,12==this.videoCodecId&&this._AVC_VPS){var v=new Uint8Array(this._AVC_VPS.length);g&&v.set(this._AVC_VPS,0);var y={type:7,data:v};d.push(y),c=f+=v.length,this.snapshotCount>0&&this.fullFrameData&&null!=this.fullFrameData&&(this.fullFrameData.set(this._AVC_VPS,0),this.fullFramePos=this._AVC_VPS.length),this._DebugBuf&&(this._DebugBuf.set(v,this._DebugBufPos),this._DebugBufPos+=v.length)}if(this._AVC_SPS){var b=new Uint8Array(this._AVC_SPS.length);if(g)b.set(this._AVC_SPS,0);else{var _=this._AVC_SPS.length-4;b.set(this._AVC_SPS,0),b[0]=_>>24&255,b[1]=_>>16&255,b[2]=_>>8&255,b[3]=255&_}this.snapshotCount>0&&this.fullFrameData&&null!=this.fullFrameData&&(this.fullFrameData.set(this._AVC_SPS,this.fullFramePos),this.fullFramePos+=this._AVC_SPS.length);var w={type:7,data:b};if(d.push(w),f+=b.length,c+=b.length,this._DebugBuf&&(this._DebugBuf.set(b,this._DebugBufPos),this._DebugBufPos+=b.length),this._AVC_PPS){var A=new Uint8Array(this._AVC_PPS.length);if(g)A.set(this._AVC_PPS,0);else{var M=this._AVC_PPS.length-4;A.set(this._AVC_PPS,0),A[0]=M>>24&255,A[1]=M>>16&255,A[2]=M>>8&255,A[3]=255&M}this.snapshotCount>0&&this.fullFrameData&&null!=this.fullFrameData&&(this.fullFrameData.set(this._AVC_PPS,this.fullFramePos),this.fullFramePos+=this._AVC_PPS.length);var E={type:8,data:A};d.push(E),f+=A.length,c+=A.length,this._DebugBuf&&(this._DebugBuf.set(A,this._DebugBufPos),this._DebugBufPos+=A.length)}}if(6==this.frameData[f+4])for(var S=0;S<f+32;S++){if(0==this.frameData[S+f+4]&&0==this.frameData[S+f+4+1]&&0==this.frameData[S+f+4+2]&&1==this.frameData[S+f+4+3]){f=f+S+4;break}if(0==this.frameData[S+f+4]&&0==this.frameData[S+f+4+1]&&1==this.frameData[S+f+4+2]){f=f+S+3;break}}p=5,this._videoInitialMetadataDispatched=!0}if(12==this.videoCodecId&&(f=0),0==l.endBit)return;var k=this.frameData.subarray(f,this.framePos),T=new Uint8Array(k);if(m&&this.snapshotCount>0&&this.fullFrameData&&null!=this.fullFrameData&&this.fullFramePos>0&&window.vssModuleInitialized){this.snapshotCount--,this.fullFrameData.set(T,this.fullFramePos),this.fullFramePos+=T.length;var R=window.vssPlayerModule,I=window.VssPlayerWasmKits;if(R&&null!=R&&I&&null!=I){var C=new Uint8Array(this.fullFrameData);if(C.length>0){var P=R._malloc(C.length);R.HEAP8.set(C,P);var x=I.convertFrame2Image(0,P,this.fullFramePos,I.yuvData,0);if(x<1);else{var D=R.HEAPU8.subarray(I.yuvData,I.yuvData+x),O=this.uint8arrayToBase64(D),B=document.createElement("a");document.body.append(B),B.href="data:image/jpeg;base64,"+O,B.download="snapshot.jpg",B.rel="noopener noreferrer",B.click(),document.body.removeChild(B)}R._free(P)}}this.fullFramePos=0}if(c+=T.length,g);else{var L=T.length-4;T[0]=L>>24&255,T[1]=L>>16&255,T[2]=L>>8&255,T[3]=255&L}if(this._DebugBuf){if(this._DebugBufPos+T.length<1048576&&(this._DebugBufPos>0||5==p||1==l.keyframe)&&(this._DebugBuf.set(T,this._DebugBufPos),this._DebugBufPos+=T.length),this._DebugBufPos>0)this._DebugBuf.subarray(0,this._DebugBufPos);this._DebugBufPos=0}var W={type:p,data:T};d.push(W),f+=T.length,this.findKeyframe;var N=this.startVideoPts;this.startVideoPts+=this.ptsInterval,this.startVideoPts>=2147483647&&(this.startVideoPts=0);var F=this._videoTrack,U={units:d,length:c,isKeyframe:m,dts:N,cts:0,pts:N,fileposition:this._fileposition};m&&(this._fileposition=0,U.fileposition=0),this._fileposition+=c,!this._callbackInitFlag&&this._callbackMediaDataFunc&&(this._callbackInitFlag=!0,12==this.videoCodecId?this._callbackMediaDataFunc(this._callbackMediaDataUserPtr,!0,1,0,0,null,0,0,0,0):"auto"===this._config.decodeType||"hard"===this._config.decodeType?this._callbackMediaDataFunc(this._callbackMediaDataUserPtr,!1,1,0,0,null,0,0,0,0):this._callbackMediaDataFunc(this._callbackMediaDataUserPtr,!0,1,0,0,null,0,0,0,0)),7==this.videoCodecId||0==this.videoCodecId?"auto"===this._config.decodeType||"hard"===this._config.decodeType?this._videoTrack.length>0&&(this._videoTrack.samples.length>=1&&!this.findKeyframe||m)&&this._onDataAvailable(this._audioTrack,this._videoTrack):(this._videoTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeVideo(27,this._videoTrack),this._audioTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeAudio(86018,this._audioTrack)):12==this.videoCodecId&&(this._videoTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeVideo(173,this._videoTrack),this._audioTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeAudio(10==this.audioCodecId?86018:0,this._audioTrack)),0!==this.reset||this.findKeyframe||(F.samples.push(U),F.length+=f),this.framePos=0,d.length>1&&(this.currentIsKeyFrame=!1)}}},n._parseAACAudioSpecificConfig=function(t){var e=t,i=null,r=0,n=null;if(r=2,5,!(5>=this._mpegSamplingRates.length)){0,5===r&&(n=(7&e[1])<<1|e[2]>>>7,(124&e[2])>>>2);var o=self.navigator.userAgent.toLowerCase();return-1!==o.indexOf("firefox")||-1!==o.indexOf("android")?(r=2,i=new Array(2),n=5):(r=5,n=5,i=new Array(4)),i[0]=r<<3,i[0]|=2,i[1]=640,i[1]|=16,5===r&&(i[1]|=(15&n)>>>1,i[2]=(1&n)<<7,i[2]|=8,i[3]=0),{config:i,samplingRate:32e3,channelCount:2,codec:"mp4a.40."+r,originalCodec:"mp4a.40.2"}}this._onError(D.a.FORMAT_ERROR,"Flv: AAC invalid sampling frequency index!")},n.procAACHeader=function(t,e,i){var r={};if(!this._initAudioMetadata){var n=this._audioMetadata,o=this._audioTrack;if(n||(!1===this._hasAudio&&!1===this._hasAudioFlagOverrided&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),(n=this._audioMetadata={}).type="audio",n.id=o.id,n.timescale=this._timescale>0?this._timescale:1e3,n.duration=this._duration>0?this._duration:32,n.audioSampleRate=32e3,n.channelCount=2),r.data=this._parseAACAudioSpecificConfig(t,e+1,i-1),!this._initAudioMetadata&&this._initVideoMetadata){if(null==r.data)return 0;var a=r.data;n.audioSampleRate=a.samplingRate,n.channelCount=a.channelCount,n.codec=a.codec,n.originalCodec=a.originalCodec,n.config=a.config,n.refSampleDuration=1024/n.audioSampleRate*n.timescale,c.a.v(this.TAG,"Parsed AudioSpecificConfig"),this._SampleRate=a.samplingRate,this._ChannelNum=a.channelCount,this._duration=0,this._isInitialMetadataDispatched()?this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack):this._audioInitialMetadataDispatched=!0,this._dispatch=!1,this._onTrackMetadata("audio",n);var s=this._mediaInfo;s.audioCodec=n.originalCodec,s.audioSampleRate=n.audioSampleRate,s.audioChannelCount=n.channelCount,s.hasVideo?null!=s.videoCodec&&(s.mimeType='video/x-flv; codecs="'+s.videoCodec+","+s.audioCodec+'"'):s.mimeType='video/x-flv; codecs="'+s.audioCodec+'"',s.isComplete()&&(this._onMediaInfo(s),this._initAudioMetadata=!0),this._initAudioMetadata=!0}}},n.parseAudioRTPPacket=function(t){t.length;var e=0,i=gt(t,e)>>>0;gt(t,e+=4),gt(t,e+=4);e+=4;var r=i>>24&15;if(!(t.length<r)){if(268435456&i){if(t.length<4)return;var n=gt(t,e)>>>0;e+=4;var o=4*(65535&n);if(t.length<o)return;e+=o}if(536870912&i){if(t.length<1)return;var a=t[t.length-1];if(t.length<a)return;a}}},n.parseChunks=function(t,e){if(null===t)return 0;if(t.byteLength<1)return 0;var i=new Uint8Array(t),r=0;if(36!=i[r]){for(var n=0;n<i.length;n++){var o=i[n+2]<<8|i[n+3];if(36==i[n]&&0==i[n+1]&&o<=1460){r=n;break}}if(r<1)return 0}var a=i[r+1],s=i[r+2]<<8|i[r+3];if(i.length-r<s+4)return 0;if(0==a){var h=i.subarray(4,s+4);this.parseVideoRTPPacket(h)}else if(1==a);else if(2==a){var u=i.subarray(4,s+4);this.parseAudioRTPPacket(u)}else if(3==a);else if(4==a){var l=i.subarray(48,s+4+12+32);this._callbackPlaybackTimePtr&&this._callbackPlaybackTimePtr(this._callbackPlaybackTimeUserPtr,"rtspPlaybackTime",l)}return i.length,s+4},n._makeH265Header=function(t){var e=2;switch(t){case 78:case 80:case 64:case 66:case 32:case 34:case 36:case 38:case 40:case 42:e=1}return e},n.snapshot=function(){null==this.fullFrameData&&(this.fullFrameData=new Uint8Array(2097152)),this.snapshotCount++},n.changeSpeed=function(t){this.ptsInterval=t},e=t,(i=[{key:"onTrackMetadata",get:function(){return this._onTrackMetadata},set:function(t){this._onTrackMetadata=t}},{key:"onMediaInfo",get:function(){return this._onMediaInfo},set:function(t){this._onMediaInfo=t}},{key:"onMetaDataArrived",get:function(){return this._onMetaDataArrived},set:function(t){this._onMetaDataArrived=t}},{key:"onScriptDataArrived",get:function(){return this._onScriptDataArrived},set:function(t){this._onScriptDataArrived=t}},{key:"onError",get:function(){return this._onError},set:function(t){this._onError=t}},{key:"onDataAvailable",get:function(){return this._onDataAvailable},set:function(t){this._onDataAvailable=t}},{key:"timestampBase",get:function(){return this._timestampBase},set:function(t){this._timestampBase=t}},{key:"overridedDuration",get:function(){return this._duration},set:function(t){this._durationOverrided=!0,this._duration=t,this._mediaInfo.duration=t}},{key:"overridedHasAudio",set:function(t){this._hasAudioFlagOverrided=!0,this._hasAudio=t,this._mediaInfo.hasAudio=t}},{key:"overridedHasVideo",set:function(t){this._hasVideoFlagOverrided=!0,this._hasVideo=t,this._mediaInfo.hasVideo=t}}])&&mt(e.prototype,i),r&&mt(e,r),Object.defineProperty(e,"prototype",{writable:!1}),t}(),yt=function(){function t(t,e){this.TAG="TransmuxingController",this._emitter=new f.a,this._config=e,t.segments||(t.segments=[{duration:t.duration,filesize:t.filesize,url:t.url}]),"boolean"!=typeof t.cors&&(t.cors=!0),"boolean"!=typeof t.withCredentials&&(t.withCredentials=!1),this._mediaDataSource=t,this._currentSegmentIndex=0;var i=0;this._mediaDataSource.segments.forEach((function(r){r.timestampBase=i,i+=r.duration,r.cors=t.cors,r.withCredentials=t.withCredentials,e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy)})),isNaN(i)||this._mediaDataSource.duration===i||(this._mediaDataSource.duration=i),this._mediaInfo=null,this._demuxer=null,this._remuxer=null,this._ioctl=null,this._pendingSeekTime=null,this._pendingResolveSeekPoint=null,this._statisticsReporter=null,this._callbackMediaData=null,this._callbackUserPtr=null,this._callbackPlaybackTimePtr=null,this._callbackPlaybackTimeUserPtr=null,this.getVideoInfoCallbackFunc=null,this._isM3u8=!1,this._isRtsp=!1,this._reconnectTimes=0}var e=t.prototype;return e.destroy=function(){this._mediaInfo=null,this._mediaDataSource=null,this._statisticsReporter&&this._disableStatisticsReporter(),this._ioctl&&(this._ioctl.destroy(),this._ioctl=null),this._demuxer&&(this._demuxer.destroy(),this._demuxer=null),this._remuxer&&(this._remuxer.destroy(),this._remuxer=null),this._emitter.removeAllListeners(),this._emitter=null},e.on=function(t,e){this._emitter.addListener(t,e)},e.off=function(t,e){this._emitter.removeListener(t,e)},e.setMediaSourceCallback=function(t,e,i,r,n){this._callbackMediaData=t,this._callbackUserPtr=e,this._callbackPlaybackTimePtr=i,this._callbackPlaybackTimeUserPtr=r,this.getVideoInfoCallbackFunc=n},e.start=function(){this._loadSegment(0),this._enableStatisticsReporter()},e._loadSegment=function(t,e){if(this._currentSegmentIndex=t,null!=this._mediaDataSource.segments){var i=this._mediaDataSource.segments[t],r=this._ioctl=new dt(i,this._config,t,this._mediaDataSource.startPlaySecs);r.onError=this._onIOException.bind(this),r.onSeeked=this._onIOSeeked.bind(this),r.onComplete=this._onIOComplete.bind(this),r.onRedirect=this._onIORedirect.bind(this),r.onRecoveredEarlyEof=this._onIORecoveredEarlyEof.bind(this),e?this._demuxer.bindDataSource(this._ioctl):r.onDataArrival=this._onInitChunkArrival.bind(this),r.open(e),this._isM3u8=r._IsM3u8Loader(),this._isRtsp=r._IsRtspLoader()}},e.stop=function(){this._internalAbort(),this._disableStatisticsReporter()},e._internalAbort=function(){this._ioctl&&(this._ioctl.destroy(),this._ioctl=null)},e.pauseOrResume=function(t){null!=this._demuxer&&(this._isM3u8||(this._isRtsp&&(t?this._ioctl.pause():this._ioctl.resume()),t?this._demuxer.pause():(this._remuxer.seek(0),this._demuxer.resume())))},e.pause=function(){this._ioctl&&this._ioctl.isWorking()&&(this._ioctl.pause(),this._disableStatisticsReporter())},e.resume=function(){this._ioctl&&this._ioctl.isPaused()&&(this._ioctl.resume(),this._enableStatisticsReporter())},e.rtspScale=function(t,e){this._isRtsp&&(this._ioctl.rtspScale(t),this._demuxer&&null!=this._demuxer&&this._demuxer.changeSpeed(e))},e.changeSpeed=function(t){this._remuxer&&this._remuxer.changeSpeed(t)},e.seekToSecs=function(t,e){var i=this._ioctl._GetM3u8Loader();i&&(i.seek(t,e),this._demuxer&&this._demuxer.resetMediaPts(1)),this._remuxer&&this._remuxer.seek(0),i&&this._demuxer&&this._demuxer.resetMediaPts(0)},e.seek=function(t){if(null!=this._mediaInfo&&this._mediaInfo.isSeekable()){var e=this._searchSegmentIndexContains(t);if(e===this._currentSegmentIndex){var i=this._mediaInfo.segments[e];if(null==i)this._pendingSeekTime=t;else{var r=i.getNearestKeyframe(t);this._remuxer.seek(r.milliseconds),this._ioctl.seek(r.fileposition),this._pendingResolveSeekPoint=r.milliseconds}}else{var n=this._mediaInfo.segments[e];if(null==n)this._pendingSeekTime=t,this._internalAbort(),this._remuxer.seek(),this._remuxer.insertDiscontinuity(),this._loadSegment(e);else{var o=n.getNearestKeyframe(t);this._internalAbort(),this._remuxer.seek(t),this._remuxer.insertDiscontinuity(),this._demuxer.resetMediaInfo(),this._demuxer.timestampBase=this._mediaDataSource.segments[e].timestampBase,this._loadSegment(e,o.fileposition),this._pendingResolveSeekPoint=o.milliseconds,this._reportSegmentMediaInfo(e)}}this._enableStatisticsReporter()}},e._searchSegmentIndexContains=function(t){for(var e=this._mediaDataSource.segments,i=e.length-1,r=0;r<e.length;r++)if(t<e[r].timestampBase){i=r-1;break}return i},e._onInitChunkArrival=function(t,e){var i=this;if(this._isM3u8||this._isRtsp){if(this._isRtsp){var r=null,n=0;if(null==t&&e<0)return void this._emitter.emit(ft.RECONNECT_ING,e);if(null==t&&e>0)return;if(e>0)this._demuxer.bindDataSource(this._ioctl),this._demuxer.timestampBase=this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase,n=this._demuxer.parseChunks(t,e);else if((r=vt.probe(t)).match){this._demuxer=new vt(r,this._config,this._callbackMediaData,this._callbackUserPtr,this._callbackPlaybackTimePtr,this._callbackPlaybackTimeUserPtr,this.getVideoInfoCallbackFunc),this._remuxer||(this._remuxer=new x(this._config));var o=this._mediaDataSource;null==o.duration||isNaN(o.duration)||(this._demuxer.overridedDuration=o.duration),"boolean"==typeof o.hasAudio&&(this._demuxer.overridedHasAudio=o.hasAudio),"boolean"==typeof o.hasVideo&&(this._demuxer.overridedHasVideo=o.hasVideo),this._demuxer.timestampBase=o.segments[this._currentSegmentIndex].timestampBase,this._demuxer.onError=this._onDemuxException.bind(this),this._demuxer.onMediaInfo=this._onMediaInfo.bind(this),this._demuxer.onMetaDataArrived=this._onMetaDataArrived.bind(this),this._demuxer.onScriptDataArrived=this._onScriptDataArrived.bind(this),this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl)),this._remuxer.onInitSegment=this._onRemuxerInitSegmentArrival.bind(this),this._remuxer.onMediaSegment=this._onRemuxerMediaSegmentArrival.bind(this),this._reconnectTimes>0&&this._emitter.emit(ft.RECONNECT_SUCCESS,this._reconnectTimes),this._reconnectTimes++}else r=null,c.a.e(this.TAG,"Non-RTSP, Unsupported media type!"),Promise.resolve().then((function(){i._internalAbort()})),this._emitter.emit(ft.DEMUX_ERROR,D.a.FORMAT_UNSUPPORTED,"Non-RTSP, Unsupported media type"),n=0;return n}if(null==t&&e<0)return void this._emitter.emit(ft.RECONNECT_ING,e);if(null==t&&e>0)return;var a=0;if(e>0)this._demuxer.bindDataSource(this._ioctl),this._demuxer.timestampBase=this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase,this._demuxer.append(t,e,0),a=t.length;else{this._demuxer=new ct.a(this._config,this._callbackMediaData,this._callbackUserPtr),this._remuxer||(this._remuxer=new x(this._config));var s=this._mediaDataSource;null==s.duration||isNaN(s.duration)||(this._demuxer.overridedDuration=s.duration),"boolean"==typeof s.hasAudio&&(this._demuxer.overridedHasAudio=s.hasAudio),"boolean"==typeof s.hasVideo&&(this._demuxer.overridedHasVideo=s.hasVideo),this._demuxer.timestampBase=s.segments[this._currentSegmentIndex].timestampBase,this._demuxer.onError=this._onDemuxException.bind(this),this._demuxer.onMediaInfo=this._onMediaInfo.bind(this),this._demuxer.onMetaDataArrived=this._onMetaDataArrived.bind(this),this._demuxer.onScriptDataArrived=this._onScriptDataArrived.bind(this),this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl)),this._remuxer.onInitSegment=this._onRemuxerInitSegmentArrival.bind(this),this._remuxer.onMediaSegment=this._onRemuxerMediaSegmentArrival.bind(this),this._demuxer.append(t,e,0),a=t.length}return a}var h=null,u=0;if(null==t&&e<0)this._emitter.emit(ft.RECONNECT_ING,e);else if(!(null==t&&e>0)){if(e>0)this._demuxer.bindDataSource(this._ioctl),this._demuxer.timestampBase=this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase,u=this._demuxer.parseChunks(t,e);else if((h=w.a.probe(t)).match){this._demuxer=new w.a(h,this._config,this._callbackMediaData,this._callbackUserPtr,this._callbackPlaybackTimeUserPtr,this.getVideoInfoCallbackFunc),this._remuxer||(this._remuxer=new x(this._config));var l=this._mediaDataSource;null==l.duration||isNaN(l.duration)||(this._demuxer.overridedDuration=l.duration),"boolean"==typeof l.hasAudio&&(this._demuxer.overridedHasAudio=l.hasAudio),"boolean"==typeof l.hasVideo&&(this._demuxer.overridedHasVideo=l.hasVideo),this._demuxer.timestampBase=l.segments[this._currentSegmentIndex].timestampBase,this._demuxer.onError=this._onDemuxException.bind(this),this._demuxer.onMediaInfo=this._onMediaInfo.bind(this),this._demuxer.onMetaDataArrived=this._onMetaDataArrived.bind(this),this._demuxer.onScriptDataArrived=this._onScriptDataArrived.bind(this),this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl)),this._remuxer.onInitSegment=this._onRemuxerInitSegmentArrival.bind(this),this._remuxer.onMediaSegment=this._onRemuxerMediaSegmentArrival.bind(this),u=this._demuxer.parseChunks(t,e),this._reconnectTimes>0&&this._emitter.emit(ft.RECONNECT_SUCCESS,this._reconnectTimes),this._reconnectTimes++}else h=null,c.a.e(this.TAG,"Non-FLV, Unsupported media type!"),Promise.resolve().then((function(){i._internalAbort()})),this._emitter.emit(ft.DEMUX_ERROR,D.a.FORMAT_UNSUPPORTED,"Non-FLV, Unsupported media type"),u=0;return u}},e._GetM3u8Loader=function(){if(null==this._ioctl)return null;var t=this._ioctl._GetM3u8Loader();return t||null},e._GetM3u8TotalDuration=function(){if(null==this._ioctl)return 0;var t=this._ioctl._GetM3u8Loader();return t?t.GetM3u8TotalDuration():0},e._onMediaInfo=function(t){var e=this;null==this._mediaInfo&&(this._mediaInfo=Object.assign({},t),this._mediaInfo.keyframesIndex=null,this._mediaInfo.segments=[],this._mediaInfo.segmentCount=this._mediaDataSource.segments.length,Object.setPrototypeOf(this._mediaInfo,_.a.prototype));var i=Object.assign({},t);Object.setPrototypeOf(i,_.a.prototype),this._mediaInfo.segments[this._currentSegmentIndex]=i,this._reportSegmentMediaInfo(this._currentSegmentIndex),null!=this._pendingSeekTime&&Promise.resolve().then((function(){var t=e._pendingSeekTime;e._pendingSeekTime=null,e.seek(t)}))},e._onMetaDataArrived=function(t){this._emitter.emit(ft.METADATA_ARRIVED,t)},e._onScriptDataArrived=function(t){this._emitter.emit(ft.SCRIPTDATA_ARRIVED,t)},e._onIOSeeked=function(){this._remuxer.insertDiscontinuity()},e._onIOComplete=function(t){var e=t+1;if(this._ioctl&&this._ioctl._IsM3u8Loader()){this._ioctl._GetM3u8Loader();r.GetLiveStreamType()&&(this._emitter.emit(ft.RECONNECT_SUCCESS,2),this._demuxer&&(this._demuxer.destroy(),this._demuxer=null),this._remuxer&&(this._remuxer.destroy(),this._remuxer=null),this._ioctl&&(this._ioctl.destroy(),this._ioctl=null),this.start())}else if(e<this._mediaDataSource.segments.length){if(this._internalAbort(),this._remuxer&&this._remuxer.flushStashedSamples(),-1===t){this._demuxer&&(this._demuxer.destroy(),this._demuxer=null),this._remuxer&&(this._remuxer.destroy(),this._remuxer=null),this._ioctl&&(this._ioctl.destroy(),this._ioctl=null);var i=this;r.sleep(3e3).then((function(){i.start()}))}}else if(this._remuxer&&(this._remuxer.flushStashedSamples(),this._emitter.emit(ft.LOADING_COMPLETE),this._disableStatisticsReporter()),-1===t){this._demuxer&&(this._demuxer.destroy(),this._demuxer=null),this._remuxer&&(this._remuxer.destroy(),this._remuxer=null),this._ioctl&&(this._ioctl.destroy(),this._ioctl=null);var n=this;r.sleep(3e3).then((function(){n.start()}))}},e._onIORedirect=function(t){var e=this._ioctl.extraData;this._mediaDataSource.segments[e].redirectedURL=t},e._onIORecoveredEarlyEof=function(){this._emitter.emit(ft.RECOVERED_EARLY_EOF)},e._onIOException=function(t,e){c.a.e(this.TAG,"IOException: type = "+t+", code = "+e.code+", msg = "+e.msg),this._emitter.emit(ft.IO_ERROR,t,e),this._disableStatisticsReporter()},e._onDemuxException=function(t,e){c.a.e(this.TAG,"DemuxException: type = "+t+", info = "+e),this._emitter.emit(ft.DEMUX_ERROR,t,e)},e._onRemuxerInitSegmentArrival=function(t,e){this._emitter.emit(ft.INIT_SEGMENT,t,e)},e._onRemuxerMediaSegmentArrival=function(t,e){if(null==this._pendingSeekTime&&(this._emitter.emit(ft.MEDIA_SEGMENT,t,e),null!=this._pendingResolveSeekPoint&&"video"===t)){var i=e.info.syncPoints,r=this._pendingResolveSeekPoint;this._pendingResolveSeekPoint=null,m.safari&&i.length>0&&i[0].originalDts===r&&(r=i[0].pts),this._emitter.emit(ft.RECOMMEND_SEEKPOINT,r)}},e._enableStatisticsReporter=function(){null==this._statisticsReporter&&(this._statisticsReporter=self.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval))},e._disableStatisticsReporter=function(){this._statisticsReporter&&(self.clearInterval(this._statisticsReporter),this._statisticsReporter=null)},e._reportSegmentMediaInfo=function(t){var e=this._mediaInfo.segments[t],i=Object.assign({},e);i.duration=this._mediaInfo.duration,i.segmentCount=this._mediaInfo.segmentCount,delete i.segments,delete i.keyframesIndex,this._emitter.emit(ft.MEDIA_INFO,i)},e._reportStatisticsInfo=function(){var t={};null!=this._ioctl&&(t.url=this._ioctl.currentURL,t.hasRedirect=this._ioctl.hasRedirect,t.hasRedirect&&(t.redirectedURL=this._ioctl.currentRedirectedURL),t.speed=this._ioctl.currentSpeed,t.loaderType=this._ioctl.loaderType,t.currentSegmentIndex=this._currentSegmentIndex,t.totalSegmentCount=this._mediaDataSource.segments.length,this._emitter.emit(ft.STATISTICS_INFO,t))},e.snapshot=function(){this._demuxer&&null!=this._demuxer&&this._demuxer.snapshot()},t}(),bt=function(){function t(){}return t.install=function(){Object.setPrototypeOf=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},Object.assign=Object.assign||function(t){if(null==t)throw new TypeError("Cannot convert undefined or null to object");for(var e=Object(t),i=1;i<arguments.length;i++){var r=arguments[i];if(null!=r)for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n])}return e},"function"!=typeof self.Promise&&i(143).polyfill()},t}();bt.install();var _t=bt,wt=function(t){var e=null,i=function(e,i){t.postMessage({msg:"logcat_callback",data:{type:e,logcat:i}})}.bind(this);function r(e,i){var r={msg:ft.INIT_SEGMENT,data:{type:e,data:i}};t.postMessage(r,[i.data])}function n(e,i){var r={msg:ft.MEDIA_SEGMENT,data:{type:e,data:i}};t.postMessage(r,[i.data])}function o(){var e={msg:ft.LOADING_COMPLETE};t.postMessage(e)}function a(){var e={msg:ft.RECOVERED_EARLY_EOF};t.postMessage(e)}function s(e){var i={msg:ft.MEDIA_INFO,data:e};t.postMessage(i)}function h(e){var i={msg:ft.METADATA_ARRIVED,data:e};t.postMessage(i)}function u(e){var i={msg:ft.SCRIPTDATA_ARRIVED,data:e};t.postMessage(i)}function l(e){var i={msg:ft.STATISTICS_INFO,data:e};t.postMessage(i)}function d(e,i){t.postMessage({msg:ft.IO_ERROR,data:{type:e,info:i}})}function f(e,i){t.postMessage({msg:ft.DEMUX_ERROR,data:{type:e,info:i}})}function c(e){t.postMessage({msg:ft.RECOMMEND_SEEKPOINT,data:e})}_t.install(),t.addEventListener("message",(function(p){switch(p.data.cmd){case"init":(e=new yt(p.data.param[0],p.data.param[1])).on(ft.IO_ERROR,d.bind(this)),e.on(ft.DEMUX_ERROR,f.bind(this)),e.on(ft.INIT_SEGMENT,r.bind(this)),e.on(ft.MEDIA_SEGMENT,n.bind(this)),e.on(ft.LOADING_COMPLETE,o.bind(this)),e.on(ft.RECOVERED_EARLY_EOF,a.bind(this)),e.on(ft.MEDIA_INFO,s.bind(this)),e.on(ft.METADATA_ARRIVED,h.bind(this)),e.on(ft.SCRIPTDATA_ARRIVED,u.bind(this)),e.on(ft.STATISTICS_INFO,l.bind(this)),e.on(ft.RECOMMEND_SEEKPOINT,c.bind(this));break;case"destroy":e&&(e.destroy(),e=null),t.postMessage({msg:"destroyed"});break;case"start":e.start();break;case"stop":e.stop();break;case"seek":e.seek(p.data.param);break;case"pause":e.pause();break;case"resume":e.resume();break;case"logging_config":var m=p.data.param;b.applyConfig(m),!0===m.enableCallback?b.addLogListener(i):b.removeLogListener(i)}}))},At={ERROR:"error",SOURCE_OPEN:"source_open",UPDATE_END:"update_end",BUFFER_FULL:"buffer_full",CB_PLAY_INFO:"play_info",CHANGE_SPEED:"change_speed"},Mt=function(){function t(t,e,r,n,o,a,s,h){this.TAG="Transmuxer",this._emitter=new f.a,this._config=e,this.soundPlayer=null,this._webGLPlayer=null,this._mediaCanvas=r,this.pauseDisplay=!1,this.enableAudio=!1,this.audioFmt=0,this.audioSamplerate=0,this.audioChannelNum=2,this.initAudioPlayer=!1,this.totalDuration=0,this.initDuration=0,this.currentPlayTime=0,"m3u8"===t.type&&(this.currentPlayTime=t.startPlaySecs),this._callbackPlaybackTimePtr=a,this._callbackPlaybackTimeUserPtr=s,this.getVideoInfoCallbackFunc=h,this.getVideoInfoCB=!0;var u=navigator.userAgent;this.isAndroid=u.indexOf("Android")>-1||u.indexOf("Adr")>-1,this.isiOS=!!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),this.isiPad=!1;var l=navigator.userAgent;if(("iPad"==l.match(/iPad/i)||l.indexOf("Macintosh;")>-1&&l.indexOf("AppleWebKit/"))&&(this.isiPad=!0),this._callbackUserPtr=n,this._callbackWasmTypePtr=o,e.enableWorker&&"undefined"!=typeof Worker)try{var d=i(144);this._worker=d(wt),this._workerDestroying=!1,this._worker.addEventListener("message",this._onWorkerMessage.bind(this)),this._worker.postMessage({cmd:"init",param:[t,e]}),this.e={onLoggingConfigChanged:this._onLoggingConfigChanged.bind(this)},b.registerListener(this.e.onLoggingConfigChanged),this._worker.postMessage({cmd:"logging_config",param:b.getConfig()})}catch(i){c.a.e(this.TAG,"Error while initialize transmuxing worker, fallback to inline transmuxing"),this._worker=null,this._controller=new yt(t,e)}else this._controller=new yt(t,e);if(this._controller){var p=this._controller;p.on(ft.IO_ERROR,this._onIOError.bind(this)),p.on(ft.DEMUX_ERROR,this._onDemuxError.bind(this)),p.on(ft.INIT_SEGMENT,this._onInitSegment.bind(this)),p.on(ft.MEDIA_SEGMENT,this._onMediaSegment.bind(this)),p.on(ft.LOADING_COMPLETE,this._onLoadingComplete.bind(this)),p.on(ft.RECOVERED_EARLY_EOF,this._onRecoveredEarlyEof.bind(this)),p.on(ft.MEDIA_INFO,this._onMediaInfo.bind(this)),p.on(ft.METADATA_ARRIVED,this._onMetaDataArrived.bind(this)),p.on(ft.SCRIPTDATA_ARRIVED,this._onScriptDataArrived.bind(this)),p.on(ft.STATISTICS_INFO,this._onStatisticsInfo.bind(this)),p.on(ft.RECOMMEND_SEEKPOINT,this._onRecommendSeekpoint.bind(this)),p.on(ft.RECONNECT_ING,this._onReconnecting.bind(this)),p.on(ft.RECONNECT_SUCCESS,this._onReconnectSuccess.bind(this))}}var e=t.prototype;return e.destroy=function(){this._worker?this._workerDestroying||(this._workerDestroying=!0,this._worker.postMessage({cmd:"destroy"}),b.removeListener(this.e.onLoggingConfigChanged),this.e=null):(this._controller.destroy(),this._controller=null),this._emitter.removeAllListeners(),this._emitter=null,this.soundPlayer&&(this.soundPlayer.destroy(),delete this.soundPlayer,this.soundPlayer=null)},e.on=function(t,e){this._emitter.addListener(t,e)},e.off=function(t,e){this._emitter.removeListener(t,e)},e.hasWorker=function(){return null!=this._worker},e.OpenAudioPlayer=function(t,e,i){if(null==this.soundPlayer){1;var r="16bitInt";r="16bitInt",this.soundPlayer=new l.a,this.soundPlayer.init({encoding:r,channels:e,sampleRate:i,flushingTime:1e3}),this.initAudioPlayer=!0}},e.createDecodeWorker=function(){var t;if(this.decodeWorker=null,"undefined"!=typeof Worker)try{t=this.decodeWorker=u(41),this.onwmsg=this.onWorkerMessage.bind(this);var e={cmd:r.tOpenStream,url:r.getFullURL(),isFlv:!this._controller._isM3u8};t.postMessage(e),t.addEventListener("message",this.onwmsg),t.onerror=function(t){}}catch(t){this.w=void 0}else this.decodeWorker=null;this.decodeWorker&&null==this._webGLPlayer&&(this._webGLPlayer=new h(this._mediaCanvas))},e.getCurrentPlayTime=function(){return this.currentPlayTime},e.getTotalDuration=function(){return this._controller?this._controller._GetM3u8TotalDuration():this.totalDuration},e._onMediaDataCallback=function(t,e,i,n,o,a,s,h,u,l){if(!(n<1)||e||1!==s)if(e){null==t.decodeWorker&&(t.createDecodeWorker(),t._callbackWasmTypePtr&&t._callbackWasmTypePtr(t._callbackUserPtr,!0));var d=new Uint8Array(a);if(t.decodeWorker){var f={cmd:r.tFrameData,mediaType:i,codecId:n,frameType:o,samplerate:h,channelNum:u,bitPerSample:l,playTimeSec:h,dat:d};t.decodeWorker.postMessage(f,[f.dat.buffer])}}else t._callbackWasmTypePtr&&t._callbackWasmTypePtr(t._callbackUserPtr,!1)},e.onWorkerMessage=function(t){var e=t.data;switch(e.cmd){case r.tDisconnect:var i={cmd:r.tReOpenStream};this.downloadWorker.postMessage(i);break;case r.tCloseStream:e.workerId==r.DOWNLOAD_WORKER_ID?(this.downloadWorker.terminate(),this.downloadWorker=null):e.workerId==r.DECODE_WORKER_ID?(this.decodeWorker.terminate(),this.decodeWorker=null,this.soundPlayer&&(this.soundPlayer.destroy(),delete this.soundPlayer,this.soundPlayer=null),this._webGLPlayer&&this._webGLPlayer.renderVideoFrame(null,0,0)):e.workerId==r.RENDER_WORKER_ID&&(this.renderWorker.terminate(),this.renderWorker=null);break;case r.tDecoderWorkerStartup:this.enableAudio&&this.openAudio();break;case r.tFrameData:if(e.workerId==r.DOWNLOAD_WORKER_ID)this.decodeWorker;else if(e.workerId==r.DECODE_WORKER_ID){if(this.pauseDisplay)break;if(1==e.mediaType){if(this._mediaCanvas.width=e.width,this._mediaCanvas.height=e.height,this.getVideoInfoCB&&this.getVideoInfoCallbackFunc&&null!=this.getVideoInfoCallbackFunc&&(this.getVideoInfoCallbackFunc(this._callbackPlaybackTimeUserPtr,"H265",e.width,e.height),this.getVideoInfoCB=!1),e.playTimeSec>0){var n=Math.floor((e.playTimeSec+1e3)/1e3);this.currentPlayTime!==n&&(this.initDuration>0&&(this.currentPlayTime+=n-this.initDuration),this.initDuration!==n&&(this.initDuration=n,this._emitter&&this._emitter.emit(At.CB_PLAY_INFO)))}this._webGLPlayer&&this._webGLPlayer.renderVideoFrame(e.dat,e.width,e.height)}else 2==e.mediaType&&(null==this.soundPlayer&&(null!=this.soundPlayer||this.isiOS||this.isiPad?(this.audioFmt=e.fmt,this.audioSamplerate=e.samplerate,this.audioChannelNum=e.ch,44100==this.audioSamplerate&&(this.audioFmt=1)):this.OpenAudioPlayer(e.fmt,e.samplerate>=16e3?2:e.ch,e.samplerate)),this.enableAudio&&this.soundPlayer&&this.initAudioPlayer&&this.soundPlayer.play(e.dat))}break;case r.tDecode:this.avQueue.length>0&&this.pauseDisplay}},e.openAudio=function(){var t={cmd:r.tOpenAudio};if(this.decodeWorker&&void 0!==this.decodeWorker&&this.decodeWorker.postMessage(t),this.enableAudio=!0,null==this.soundPlayer&&(this.isiOS||this.isiPad)){if(!(this.audioSamplerate>0))return!1;this.OpenAudioPlayer(this.audioFmt,this.audioSamplerate>=16e3?2:this.audioChannelNum,this.audioSamplerate)}return!0},e.closeAudio=function(){var t={cmd:r.tCloseAudio};return this.decodeWorker&&void 0!==this.decodeWorker&&this.decodeWorker.postMessage(t),this.soundPlayer&&this.initAudioPlayer&&this.soundPlayer.clearAudioBuffer(),this.enableAudio=!1,!0},e.open=function(){this._worker?this._worker.postMessage({cmd:"start"}):(this._controller.setMediaSourceCallback(this._onMediaDataCallback,this,this._callbackPlaybackTimePtr,this._callbackPlaybackTimeUserPtr,this.getVideoInfoCallbackFunc),this._controller.start())},e.close=function(){var t={cmd:r.tCloseStream};this.decodeWorker&&void 0!==this.decodeWorker&&this.decodeWorker.postMessage(t),this._webGLPlayer&&(this._webGLPlayer.renderVideoFrame(null,0,0),this._webGLPlayer.destroy(),delete this._webGLPlayer,this._webGLPlayer=null),this._worker?this._worker.postMessage({cmd:"stop"}):this._controller.stop()},e.changeSpeed=function(t){this._controller&&this._controller.changeSpeed(t)},e.seekToSecs=function(t,e){var i={cmd:r.tSeekStream,type:e,time:t};this.decodeWorker&&void 0!==this.decodeWorker&&this.decodeWorker.postMessage(i),this._controller.seekToSecs(t,e)},e.seek=function(t){this._worker?this._worker.postMessage({cmd:"seek",param:t}):this._controller.seek(t)},e.isPaused=function(){return this.pauseDisplay},e.pause=function(){this.pauseDisplay=!0;var t={cmd:r.tPauseStream};if(this.decodeWorker&&void 0!==this.decodeWorker&&this.decodeWorker.postMessage(t),this._controller){var e=this._controller._GetM3u8Loader();e?e.pause():this._controller.pauseOrResume(!0)}this._worker&&this._worker.postMessage({cmd:"pause"})},e.resume=function(){this.pauseDisplay=!1;var t={cmd:r.tResumeStream};if(this.decodeWorker&&void 0!==this.decodeWorker&&this.decodeWorker.postMessage(t),this._controller){var e=this._controller._GetM3u8Loader();e?e.resume():this._controller.pauseOrResume(!1)}this._worker?this._worker.postMessage({cmd:"resume"}):this._controller.resume()},e.rtspScale=function(t,e){this._controller&&this._controller.rtspScale(t,e)},e._onReconnecting=function(t){var e=this;Promise.resolve().then((function(){e._emitter.emit(ft.RECONNECT_ING,t)}))},e._onReconnectSuccess=function(t){var e=this;Promise.resolve().then((function(){e._emitter.emit(ft.RECONNECT_SUCCESS,t)}))},e._onInitSegment=function(t,e){var i=this;Promise.resolve().then((function(){i._emitter.emit(ft.INIT_SEGMENT,t,e)}))},e._onMediaSegment=function(t,e){var i=this;Promise.resolve().then((function(){i._emitter.emit(ft.MEDIA_SEGMENT,t,e)}))},e._onLoadingComplete=function(){var t=this;Promise.resolve().then((function(){t._emitter.emit(ft.LOADING_COMPLETE)}))},e._onRecoveredEarlyEof=function(){var t=this;Promise.resolve().then((function(){t._emitter.emit(ft.RECOVERED_EARLY_EOF)}))},e._onMediaInfo=function(t){var e=this;Promise.resolve().then((function(){e._emitter.emit(ft.MEDIA_INFO,t)}))},e._onMetaDataArrived=function(t){var e=this;Promise.resolve().then((function(){e._emitter.emit(ft.METADATA_ARRIVED,t)}))},e._onScriptDataArrived=function(t){var e=this;Promise.resolve().then((function(){e._emitter.emit(ft.SCRIPTDATA_ARRIVED,t)}))},e._onStatisticsInfo=function(t){var e=this;Promise.resolve().then((function(){e._emitter.emit(ft.STATISTICS_INFO,t)}))},e._onIOError=function(t,e){var i=this;Promise.resolve().then((function(){i._emitter.emit(ft.IO_ERROR,t,e)}))},e._onDemuxError=function(t,e){var i=this;Promise.resolve().then((function(){i._emitter.emit(ft.DEMUX_ERROR,t,e)}))},e._onRecommendSeekpoint=function(t){var e=this;Promise.resolve().then((function(){e._emitter.emit(ft.RECOMMEND_SEEKPOINT,t)}))},e._onLoggingConfigChanged=function(t){this._worker&&this._worker.postMessage({cmd:"logging_config",param:t})},e._onWorkerMessage=function(t){var e=t.data,i=e.data;if("destroyed"===e.msg||this._workerDestroying)return this._workerDestroying=!1,this._worker.terminate(),void(this._worker=null);switch(e.msg){case ft.INIT_SEGMENT:case ft.MEDIA_SEGMENT:this._emitter.emit(e.msg,i.type,i.data);break;case ft.LOADING_COMPLETE:case ft.RECOVERED_EARLY_EOF:this._emitter.emit(e.msg);break;case ft.MEDIA_INFO:Object.setPrototypeOf(i,_.a.prototype),this._emitter.emit(e.msg,i);break;case ft.METADATA_ARRIVED:case ft.SCRIPTDATA_ARRIVED:case ft.STATISTICS_INFO:this._emitter.emit(e.msg,i);break;case ft.IO_ERROR:case ft.DEMUX_ERROR:this._emitter.emit(e.msg,i.type,i.info);break;case ft.RECOMMEND_SEEKPOINT:this._emitter.emit(e.msg,i);break;case"logcat_callback":c.a.emitter.emit("log",i.type,i.logcat)}},e.snapshot=function(){this._controller&&null!=this._controller&&this._controller.snapshot()},t}(),Et=function(){function t(t){this.TAG="MSEController",this._config=t,this._emitter=new f.a,this._currentPlayTime=0,this._hlsSeekTime=0,this._lastPlayTime=0,this._waitingData=!1,this._pause=!1,this._lastSpeed=0,this._config.isLive&&null==this._config.autoCleanupSourceBuffer&&(this._config.autoCleanupSourceBuffer=!0),this.e={onSourceOpen:this._onSourceOpen.bind(this),onSourceEnded:this._onSourceEnded.bind(this),onSourceClose:this._onSourceClose.bind(this),onSourceBufferError:this._onSourceBufferError.bind(this),onSourceBufferUpdateEnd:this._onSourceBufferUpdateEnd.bind(this)},this._mediaSource=null,this._mediaSourceObjectURL=null,this._mediaElement=null,this._isBufferFull=!1,this._hasPendingEos=!1,this._seek=!1,this._requireSetMediaDuration=!1,this._pendingMediaDuration=0,this._pendingSourceBufferInit=[],this._mimeTypes={video:null,audio:null},this._sourceBuffers={video:null,audio:null},this._lastInitSegments={video:null,audio:null},this._pendingSegments={video:[],audio:[]},this._pendingRemoveRanges={video:[],audio:[]},this._idrList=new R}var e=t.prototype;return e.destroy=function(){(this._mediaElement||this._mediaSource)&&this.detachMediaElement(),this.e=null,this._emitter.removeAllListeners(),this._emitter=null},e.on=function(t,e){this._emitter.addListener(t,e)},e.off=function(t,e){this._emitter.removeListener(t,e)},e.setSeekPlayTime=function(t){this._mediaElement&&(this._lastPlayTime=Math.floor(this._mediaElement.currentTime)),this._hlsSeekTime=t},e.pause=function(){this._pause=!0},e.resume=function(){this._pause=!1},e.attachMediaElement=function(t){if(this._mediaSource)throw new C.a("MediaSource has been attached to an HTMLMediaElement!");var e=this._mediaSource=new window.MediaSource;e.addEventListener("sourceopen",this.e.onSourceOpen),e.addEventListener("sourceended",this.e.onSourceEnded),e.addEventListener("sourceclose",this.e.onSourceClose),this._mediaElement=t,this._mediaSourceObjectURL=window.URL.createObjectURL(this._mediaSource),t.src=this._mediaSourceObjectURL;var i=this;t.addEventListener("timeupdate",(function(){var e=Math.floor(t.currentTime);i._hlsSeekTime>0&&(e=e-i._lastPlayTime+i._hlsSeekTime),i._currentPlayTime!=e&&(i._currentPlayTime=e,i._emitter&&i._emitter.emit(At.CB_PLAY_INFO))}),!1)},e.getCurrentPlayTime=function(){return this._currentPlayTime},e.getTotalDuration=function(){return this._mediaElement.duration},e.detachMediaElement=function(){if(this._mediaSource){var t=this._mediaSource;for(var e in this._sourceBuffers){var i=this._pendingSegments[e];i.splice(0,i.length),this._pendingSegments[e]=null,this._pendingRemoveRanges[e]=null,this._lastInitSegments[e]=null;var r=this._sourceBuffers[e];if(r){if("closed"!==t.readyState){try{t.removeSourceBuffer(r)}catch(t){c.a.e(this.TAG,t.message)}r.removeEventListener("error",this.e.onSourceBufferError),r.removeEventListener("updateend",this.e.onSourceBufferUpdateEnd)}this._mimeTypes[e]=null,this._sourceBuffers[e]=null}}if("open"===t.readyState)try{t.endOfStream()}catch(t){c.a.e(this.TAG,t.message)}t.removeEventListener("sourceopen",this.e.onSourceOpen),t.removeEventListener("sourceended",this.e.onSourceEnded),t.removeEventListener("sourceclose",this.e.onSourceClose),this._pendingSourceBufferInit=[],this._isBufferFull=!1,this._idrList.clear(),this._mediaSource=null}this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src"),this._mediaElement=null),this._mediaSourceObjectURL&&(window.URL.revokeObjectURL(this._mediaSourceObjectURL),this._mediaSourceObjectURL=null)},e.appendInitSegment=function(t,e){if(!this._mediaSource||"open"!==this._mediaSource.readyState)return this._pendingSourceBufferInit.push(t),void this._pendingSegments[t.type].push(t);var i=t,r=""+i.container;i.codec&&i.codec.length>0&&(r+=";codecs="+i.codec);var n=!1;if(this._lastInitSegments[i.type]=i,r!==this._mimeTypes[i.type]){if(this._mimeTypes[i.type])c.a.v(this.TAG,"Notice: "+i.type+" mimeType changed, origin: "+this._mimeTypes[i.type]+", target: "+r);else{n=!0;try{var o=this._sourceBuffers[i.type]=this._mediaSource.addSourceBuffer(r);o.addEventListener("error",this.e.onSourceBufferError),o.addEventListener("updateend",this.e.onSourceBufferUpdateEnd)}catch(t){return c.a.e(this.TAG,t.message),void this._emitter.emit(At.ERROR,{code:t.code,msg:t.message})}}this._mimeTypes[i.type]=r}e||this._pendingSegments[i.type].push(i),n||this._sourceBuffers[i.type]&&!this._sourceBuffers[i.type].updating&&this._doAppendSegments(),m.safari&&"audio/mpeg"===i.container&&i.mediaDuration>0&&(this._requireSetMediaDuration=!0,this._pendingMediaDuration=i.mediaDuration/1e3,this._updateMediaSourceDuration())},e.appendMediaSegment=function(t){var e=t;this._pendingSegments[e.type].push(e),(this._config.autoCleanupSourceBuffer&&this._needCleanupSourceBuffer()||this._seek)&&(this._doCleanupSourceBuffer(),this._seek=!1);var i=this._sourceBuffers[e.type];!i||i.updating||this._hasPendingRemoveRanges()||this._doAppendSegments()},e.reset=function(t){for(var e in this._sourceBuffers){var i=this._sourceBuffers[e];if(i){for(var r=i.buffered,n=!1,o=0;o<r.length;o++){var a=r.start(o),s=r.end(o);n=!0,this._pendingRemoveRanges[e].push({start:a,end:s})}n&&!i.updating&&this._doRemoveRanges()}}this._mediaElement.currentTime=1,t&&this._mediaElement.play()},e.seek=function(t){for(var e in this._sourceBuffers)if(this._sourceBuffers[e]){var i=this._sourceBuffers[e];if("open"===this._mediaSource.readyState)try{i.abort()}catch(t){c.a.e(this.TAG,t.message)}this._idrList.clear();var r=this._pendingSegments[e];if(r.splice(0,r.length),"closed"!==this._mediaSource.readyState){for(var n=0;n<i.buffered.length;n++){var o=i.buffered.start(n),a=i.buffered.end(n);this._pendingRemoveRanges[e].push({start:o,end:a})}if(i.updating||this._doRemoveRanges(),m.safari){var s=this._lastInitSegments[e];s&&(this._pendingSegments[e].push(s),i.updating||this._doAppendSegments())}}}},e.endOfStream=function(){var t=this._mediaSource,e=this._sourceBuffers;t&&"open"===t.readyState?e.video&&e.video.updating||e.audio&&e.audio.updating?this._hasPendingEos=!0:(this._hasPendingEos=!1,t.endOfStream()):t&&"closed"===t.readyState&&this._hasPendingSegments()&&(this._hasPendingEos=!0)},e.getNearestKeyframe=function(t){return this._idrList.getLastSyncPointBeforeDts(t)},e._needCleanupSourceBuffer=function(){if(!this._config.autoCleanupSourceBuffer)return!1;var t=this._mediaElement.currentTime;for(var e in this._sourceBuffers){var i=this._sourceBuffers[e];if(i){var r=i.buffered;if(r.length>=1&&t-r.start(0)>=this._config.autoCleanupMaxBackwardDuration)return!0}}return!1},e.GetSourceBufferStartTime=function(){for(var t in this._sourceBuffers){var e=this._sourceBuffers[t];if(e)for(var i=e.buffered,r=0;r<i.length;r++){var n=i.start(r);return n+(i.end(r)-n)/2}}},e._doCleanupSourceBuffer=function(){var t=this._mediaElement.currentTime;for(var e in this._sourceBuffers){var i=this._sourceBuffers[e];if(i){for(var r=i.buffered,n=!1,o=0;o<r.length;o++){var a=r.start(o),s=r.end(o);if(a<=t&&t<s+3){if(t-a>=this._config.autoCleanupMaxBackwardDuration){n=!0;var h=t-this._config.autoCleanupMinBackwardDuration;this._pendingRemoveRanges[e].push({start:a,end:h})}}else s<t&&(n=!0,this._pendingRemoveRanges[e].push({start:a,end:s}))}n&&!i.updating&&this._doRemoveRanges()}}},e.__ClearAllSourceBuffer=function(){for(var t in this._sourceBuffers){var e=this._sourceBuffers[t];if(e){for(var i=e.buffered,r=!1,n=0;n<i.length;n++){var o=i.start(n),a=i.end(n);r=!0,this._pendingRemoveRanges[t].push({start:o,end:a})}r&&!e.updating&&this._doRemoveRanges()}}},e._updateMediaSourceDuration=function(){var t=this._sourceBuffers;if(0!==this._mediaElement.readyState&&"open"===this._mediaSource.readyState&&!(t.video&&t.video.updating||t.audio&&t.audio.updating)){var e=this._mediaSource.duration,i=this._pendingMediaDuration;i>0&&(isNaN(e)||i>e)&&(c.a.v(this.TAG,"Update MediaSource duration from "+e+" to "+i),this._mediaSource.duration=i),this._requireSetMediaDuration=!1,this._pendingMediaDuration=0}},e._doRemoveRanges=function(){for(var t in this._pendingRemoveRanges)if(this._sourceBuffers[t]&&!this._sourceBuffers[t].updating)for(var e=this._sourceBuffers[t],i=this._pendingRemoveRanges[t];i.length&&!e.updating;){var r=i.shift();e.remove(r.start,r.end)}},e._doAppendSegments=function(){var t=this._pendingSegments;for(var e in t)if(this._sourceBuffers[e]&&!this._sourceBuffers[e].updating&&t[e].length>0){var i=t[e].shift();if(i.timestampOffset){var n=this._sourceBuffers[e].timestampOffset,o=i.timestampOffset/1e3;Math.abs(n-o)>.1&&(c.a.v(this.TAG,"Update MPEG audio timestampOffset from "+n+" to "+o),this._sourceBuffers[e].timestampOffset=o),delete i.timestampOffset}if(!i.data||0===i.data.byteLength)continue;try{this._sourceBuffers[e].appendBuffer(i.data),this._isBufferFull=!1,"video"===e&&i.hasOwnProperty("info")&&this._idrList.appendArray(i.info.syncPoints),r.ClearAppendBufferError()}catch(t){this._pendingSegments[e].unshift(i),r.SetAppendBufferError(e),this.__ClearAllSourceBuffer(),22===t.code?(this._isBufferFull||this._emitter.emit(At.BUFFER_FULL),this._isBufferFull=!0):(c.a.e(this.TAG,t.message),this._emitter.emit(At.ERROR,{code:t.code,msg:t.message}))}}},e._onSourceOpen=function(){if(this._mediaSource.removeEventListener("sourceopen",this.e.onSourceOpen),this._pendingSourceBufferInit.length>0)for(var t=this._pendingSourceBufferInit;t.length;){var e=t.shift();this.appendInitSegment(e,!0)}this._hasPendingSegments()&&this._doAppendSegments(),this._emitter.emit(At.SOURCE_OPEN)},e._onSourceEnded=function(){c.a.v(this.TAG,"MediaSource onSourceEnded")},e._onSourceClose=function(){c.a.v(this.TAG,"MediaSource onSourceClose"),this._mediaSource&&null!=this.e&&(this._mediaSource.removeEventListener("sourceopen",this.e.onSourceOpen),this._mediaSource.removeEventListener("sourceended",this.e.onSourceEnded),this._mediaSource.removeEventListener("sourceclose",this.e.onSourceClose))},e._hasPendingSegments=function(){var t=this._pendingSegments;return t.video.length>0||t.audio.length>0},e._hasPendingRemoveRanges=function(){var t=this._pendingRemoveRanges;return t.video.length>0||t.audio.length>0},e._onSourceBufferUpdateEnd=function(){this._requireSetMediaDuration?this._updateMediaSourceDuration():this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this._hasPendingEos&&this.endOfStream(),this._emitter.emit(At.UPDATE_END)},e._onSourceBufferError=function(t){c.a.e(this.TAG,"SourceBuffer Error: "+t)},t}(),St="NetworkError",kt="MediaError",Tt=(D.a.FORMAT_ERROR,D.a.FORMAT_UNSUPPORTED,D.a.CODEC_UNSUPPORTED,{enableWorker:!1,enableStashBuffer:!0,stashInitialSize:void 0,isLive:!1,lazyLoad:!0,lazyLoadMaxDuration:180,lazyLoadRecoverDuration:30,deferLoadAfterSourceOpen:!0,autoCleanupMaxBackwardDuration:180,autoCleanupMinBackwardDuration:120,statisticsInfoReportInterval:600,fixAudioTimestampGap:!0,accurateSeek:!1,seekType:"range",seekParamStart:"bstart",seekParamEnd:"bend",rangeLoadZeroStart:!1,customSeekHandler:void 0,reuseRedirectedURL:!1,headers:void 0,customLoader:void 0});function Rt(){return Object.assign({},Tt)}function It(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var Ct=function(){function t(t,e){if(this.TAG="FlvPlayer",this._type="FlvPlayer",this._emitter=new f.a,this._IsWasm=!1,this.callbackFunc=null,this.callbackPlayTimeFunc=null,this.callbackConnectStatusFunc=null,this.callbackUserPtr=null,this.getVideoInfoCallbackFunc=null,this.needCallPlay=!1,this.waitingForData=!1,this.playTally=0,this._config=Rt(),"object"==typeof e&&Object.assign(this._config,e),"soft"===e.decodeType&&(this._IsWasm=!0),"flv"!==t.type.toLowerCase()&&"m3u8"!==t.type.toLowerCase()&&"rtsp"!==t.type.toLowerCase())throw new C.b("FlvPlayer requires an flv MediaDataSource input!");this.isFlv=!0,"m3u8"===t.type.toLowerCase()&&(this.isFlv=!1),!0===t.isLive&&(this._config.isLive=!0),this.e={onvLoadedMetadata:this._onvLoadedMetadata.bind(this),onvSeeking:this._onvSeeking.bind(this),onvCanPlay:this._onvCanPlay.bind(this),onvStalled:this._onvStalled.bind(this),onvProgress:this._onvProgress.bind(this),onvWaiting:this._onvWaiting.bind(this),onvPlaying:this._onvPlaying.bind(this)},self.performance&&self.performance.now?this._now=self.performance.now.bind(self.performance):this._now=Date.now,this._pendingSeekTime=null,this._requestSetTime=!1,this._seekpointRecord=null,this._progressChecker=null,this._mediaDataSource=t,this._mediaCanvas=null,this._mediaElement=null,this._msectl=null,this._transmuxer=null,this._initFlag=!1,this._msectlInitSegmentVideoParams=null,this._msectlInitSegmentAudioParams=null,this._msectlResetComplete=!0,this._mseSourceOpened=!1,this._hasPendingLoad=!1,this._receivedCanPlay=!1,this._mediaInfo=null,this._statisticsInfo=null;var i=m.chrome&&(m.version.major<50||50===m.version.major&&m.version.build<2661);this._alwaysSeekKeyframe=!!(i||m.msedge||m.msie),this._alwaysSeekKeyframe&&(this._config.accurateSeek=!1)}var e,i,n,o=t.prototype;return o.destroy=function(){null!=this._progressChecker&&(window.clearInterval(this._progressChecker),this._progressChecker=null),this._transmuxer&&this.unload(),this._mediaElement&&this.detachMediaElement(),this.e=null,this._mediaDataSource=null,this._emitter.removeAllListeners(),this._emitter=null},o.on=function(t,e){var i=this;t===g.MEDIA_INFO?null!=this._mediaInfo&&Promise.resolve().then((function(){i._emitter.emit(g.MEDIA_INFO,i.mediaInfo)})):t===g.STATISTICS_INFO&&null!=this._statisticsInfo&&Promise.resolve().then((function(){i._emitter.emit(g.STATISTICS_INFO,i.statisticsInfo)})),this._emitter.addListener(t,e)},o.off=function(t,e){this._emitter.removeListener(t,e)},o.attachMediaElement=function(t,e){var i=this;if(this._mediaCanvas=e,!this._IsWasm&&(this._mediaElement=t,t.addEventListener("loadedmetadata",this.e.onvLoadedMetadata),t.addEventListener("seeking",this.e.onvSeeking),t.addEventListener("canplay",this.e.onvCanPlay),t.addEventListener("stalled",this.e.onvStalled),t.addEventListener("progress",this.e.onvProgress),t.addEventListener("waiting",this.e.onvWaiting),t.addEventListener("playing",this.e.onvPlaying),this._msectl=new Et(this._config),this._msectl.setSeekPlayTime(this._mediaDataSource.startPlaySecs),this._msectl.on(At.CB_PLAY_INFO,this._onmseCbPlayInfo.bind(this)),this._msectl.on(At.UPDATE_END,this._onmseUpdateEnd.bind(this)),this._msectl.on(At.BUFFER_FULL,this._onmseBufferFull.bind(this)),this._msectl.on(At.SOURCE_OPEN,(function(){i._mseSourceOpened=!0,i._hasPendingLoad&&(i._hasPendingLoad=!1,i.load())})),this._msectl.on(At.ERROR,(function(t){i.ReCreateMSECtl()})),this._msectl.on(At.CHANGE_SPEED,(function(t){i._transmuxer&&i._transmuxer.changeSpeed(t.speed)})),this._msectl.attachMediaElement(t),null!=this._pendingSeekTime))try{t.currentTime=this._pendingSeekTime,this._pendingSeekTime=null}catch(t){}},o.detachMediaElement=function(){this._IsWasm||(this._mediaElement&&(this._msectl.detachMediaElement(),this._mediaElement.removeEventListener("loadedmetadata",this.e.onvLoadedMetadata),this._mediaElement.removeEventListener("seeking",this.e.onvSeeking),this._mediaElement.removeEventListener("canplay",this.e.onvCanPlay),this._mediaElement.removeEventListener("stalled",this.e.onvStalled),this._mediaElement.removeEventListener("progress",this.e.onvProgress),this._mediaElement=null),this._msectl&&(this._msectl.destroy(),this._msectl=null))},o.ReCreateMSECtl=function(){var t=this;this._msectlResetComplete=!1,this._msectl&&(this._mediaElement&&this._msectl.detachMediaElement(),this._msectl.destroy(),this._msectl=null),this._msectl=new Et(this._config),this._msectl.setSeekPlayTime(this._mediaDataSource.startPlaySecs),this._msectl.on(At.CB_PLAY_INFO,this._onmseCbPlayInfo.bind(this)),this._msectl.on(At.UPDATE_END,this._onmseUpdateEnd.bind(this)),this._msectl.on(At.BUFFER_FULL,this._onmseBufferFull.bind(this)),this._msectl.on(At.SOURCE_OPEN,(function(){t._mseSourceOpened=!0,t._msectlInitSegmentVideoParams&&t._msectl.appendInitSegment(t._msectlInitSegmentVideoParams),t._msectlInitSegmentAudioParams&&!r.GetAppendBufferError().audio?t._msectl.appendInitSegment(t._msectlInitSegmentAudioParams):t._msectlInitSegmentAudioParams&&r.GetAppendBufferError().audio&&r.SetEnableAudio(!1),r.ClearAppendBufferError(),t._msectlResetComplete=!0})),this._msectl.on(At.ERROR,(function(e){t.ReCreateMSECtl()})),this._msectl.on(At.CHANGE_SPEED,(function(e){t._transmuxer&&t._transmuxer.changeSpeed(e.speed)})),this._msectl.attachMediaElement(this._mediaElement),this._transmuxer&&this._transmuxer.seekToSecs(0,0)},o.callbackWasmType=function(t,e){t._IsWasm=e,t.callbackToParent(),t.needCallPlay&&(t.needCallPlay=!1,e||t.play())},o.callbackToParent=function(){this.callbackFunc&&this.callbackFunc(this.callbackUserPtr,this.isFlv?"flv":"m3u8",this._IsWasm)},o.setCallback=function(t,e,i,r,n){this.callbackFunc=t,this.callbackPlayTimeFunc=e,this.callbackConnectStatusFunc=i,this.callbackUserPtr=r,this.getVideoInfoCallbackFunc=n},o.load=function(){var t=this;if(!this._IsWasm){if(!this._mediaElement)throw new C.a("HTMLMediaElement must be attached before load()!");if(this._transmuxer)throw new C.a("FlvPlayer.load() has been called, please call unload() first!");if(this._hasPendingLoad)return;if(this._config.deferLoadAfterSourceOpen&&!1===this._mseSourceOpened)return void(this._hasPendingLoad=!0);this._mediaElement.readyState>0&&(this._requestSetTime=!0,this._mediaElement.currentTime=0)}this._transmuxer=new Mt(this._mediaDataSource,this._config,this._mediaCanvas,this,this.callbackWasmType,this.callbackPlayTimeFunc,this.callbackUserPtr,this.getVideoInfoCallbackFunc),this._transmuxer.on(ft.INIT_SEGMENT,(function(e,i){t._IsWasm||(t._initFlag=!0,t._msectl.appendInitSegment(i),"video"===e?t._msectlInitSegmentVideoParams=i:"audio"===e&&(t._msectlInitSegmentAudioParams=i))})),this._transmuxer.on(ft.MEDIA_SEGMENT,(function(e,i){if(t._IsWasm||t._msectlResetComplete&&t._msectl.appendMediaSegment(i),t._config.lazyLoad&&!t._config.isLive){var r=t._mediaElement.currentTime;i.info.endDts>=1e3*(r+t._config.lazyLoadMaxDuration)&&null==t._progressChecker&&(c.a.v(t.TAG,"Maximum buffering duration exceeded, suspend transmuxing task"),t._suspendTransmuxer())}})),this._transmuxer.on(ft.LOADING_COMPLETE,(function(){t._IsWasm||t._msectl.endOfStream(),t._emitter.emit(g.LOADING_COMPLETE)})),this._transmuxer.on(ft.RECOVERED_EARLY_EOF,(function(){t._emitter.emit(g.RECOVERED_EARLY_EOF)})),this._transmuxer.on(ft.IO_ERROR,(function(e,i){t._emitter.emit(g.ERROR,St,e,i)})),this._transmuxer.on(ft.DEMUX_ERROR,(function(e,i){t._emitter.emit(g.ERROR,kt,e,{code:-1,msg:i})})),this._transmuxer.on(ft.MEDIA_INFO,(function(e){t._mediaInfo=e,t._emitter.emit(g.MEDIA_INFO,Object.assign({},e))})),this._transmuxer.on(ft.METADATA_ARRIVED,(function(e){t._emitter.emit(g.METADATA_ARRIVED,e)})),this._transmuxer.on(ft.SCRIPTDATA_ARRIVED,(function(e){t._emitter.emit(g.SCRIPTDATA_ARRIVED,e)})),this._transmuxer.on(ft.STATISTICS_INFO,(function(e){t._statisticsInfo=t._fillStatisticsInfo(e),t._emitter.emit(g.STATISTICS_INFO,Object.assign({},t._statisticsInfo))})),this._transmuxer.on(ft.RECOMMEND_SEEKPOINT,(function(e){t._mediaElement&&!t._config.accurateSeek&&(t._requestSetTime=!0,t._mediaElement.currentTime=e/1e3)})),this._transmuxer.on(ft.RECONNECT_ING,(function(e){t.callbackConnectStatusFunc&&t.callbackConnectStatusFunc(t.callbackUserPtr,0)})),this._transmuxer.on(ft.RECONNECT_SUCCESS,(function(e){t._IsWasm||(e>1&&t._msectl&&(t._transmuxer.seekToSecs(0,0),t._msectl.reset(!0)),t._mediaElement),t.callbackConnectStatusFunc&&t.callbackConnectStatusFunc(t.callbackUserPtr,1)})),this._transmuxer.on(At.CB_PLAY_INFO,this._onmseCbPlayInfo.bind(this)),this._transmuxer.open()},o.unload=function(){this._IsWasm||(this._mediaElement&&this._mediaElement.pause(),this._msectl&&this._msectl.seek(0)),this._transmuxer&&(this._transmuxer.close(),this._transmuxer.destroy(),this._transmuxer=null),this._initFlag=!1},o.play=function(){return null==this._transmuxer?(this.needCallPlay=!0,this._mediaElement&&(this._mediaElement.volume=0),!1):this._mediaElement?(this.needCallPlay=!1,this._mediaElement.play()):void 0},o.pause=function(){this._transmuxer&&this._transmuxer.pause(),this._mediaElement&&this._mediaElement.pause(),this._msectl&&this._msectl.pause()},o.resume=function(){this._transmuxer&&this._transmuxer.resume(),this._msectl&&(r.GetLiveStreamType()&&this._msectl.reset(!1),this._msectl.resume()),this._mediaElement&&this._mediaElement.play()},o.rtspScale=function(t,e){this._transmuxer&&this._transmuxer.rtspScale(t,e)},o.openAudio=function(){if(this._IsWasm){if(this._transmuxer)return this._transmuxer.openAudio()}else if(this._mediaElement)return this._mediaElement.volume=1,!0;return!1},o.closeAudio=function(){if(this._IsWasm){if(this._transmuxer)return this._transmuxer.closeAudio()}else if(this._mediaElement)return this._mediaElement.volume=0,!0;return!1},o.seek=function(t,e){if(!this._IsWasm&&this.isFlv&&this._mediaElement&&this._mediaElement.duration>0){var i=Math.floor(t/100*this._mediaElement.duration);return this._mediaElement?this._internalSeek(i):this._pendingSeekTime=i,!0}if(this._transmuxer){var r=Math.floor(t/100*this._transmuxer.getTotalDuration());return this._msectl&&this._msectl.getCurrentPlayTime()==r||(this._transmuxer.seekToSecs(t,e),this._msectl&&(this._msectl.setSeekPlayTime(r),this._msectl.reset(!0)),this._mediaElement?(Math.floor(this._mediaElement.currentTime),Math.floor(r),this._progressChecker):this._pendingSeekTime=r),!0}},o._fillStatisticsInfo=function(t){if(t.playerType=this._type,!(this._mediaElement instanceof HTMLVideoElement))return t;var e=!0,i=0,r=0;if(this._mediaElement.getVideoPlaybackQuality){var n=this._mediaElement.getVideoPlaybackQuality();i=n.totalVideoFrames,r=n.droppedVideoFrames}else null!=this._mediaElement.webkitDecodedFrameCount?(i=this._mediaElement.webkitDecodedFrameCount,r=this._mediaElement.webkitDroppedFrameCount):e=!1;return e&&(t.decodedFrames=i,t.droppedFrames=r),t},o._onmseCbPlayInfo=function(){if(this._transmuxer){var t=0,e=0;!this._IsWasm&&this._msectl?(t=this._msectl.getCurrentPlayTime(),(e=this._msectl.getTotalDuration())!=1/0||r.GetLiveStreamType()||(e=this._transmuxer.getTotalDuration())):((t=this._transmuxer.getCurrentPlayTime())<0&&(t=0),e=this._transmuxer.getTotalDuration()),this.callbackPlayTimeFunc&&this.callbackPlayTimeFunc(this.callbackUserPtr,this.isFlv?"flv":"m3u8",t,e)}},o._onmseUpdateEnd=function(){if(this._config.lazyLoad&&!this._config.isLive){for(var t=this._mediaElement.buffered,e=this._mediaElement.currentTime,i=0,r=0;r<t.length;r++){var n=t.start(r),o=t.end(r);if(n<=e&&e<o){n,i=o;break}}i>=e+this._config.lazyLoadMaxDuration&&null==this._progressChecker&&(c.a.v(this.TAG,"onmseUpdateEnd::Maximum buffering duration exceeded, suspend transmuxing task"),this._suspendTransmuxer())}},o._onmseBufferFull=function(){c.a.v(this.TAG,"MSE SourceBuffer is full, suspend transmuxing task"),null==this._progressChecker&&this._suspendTransmuxer()},o._suspendTransmuxer=function(){this._transmuxer&&(this._transmuxer.pause(),null==this._progressChecker&&(this._progressChecker=window.setInterval(this._checkProgressAndResume.bind(this),1e3)))},o._checkProgressAndResume=function(){if(null!=this._mediaElement){for(var t=this._mediaElement.currentTime,e=this._mediaElement.buffered,i=!1,r=0;r<e.length;r++){var n=e.start(r),o=e.end(r);if(t>=n&&t<o){t>=o-this._config.lazyLoadRecoverDuration&&(i=!0);break}}i&&(window.clearInterval(this._progressChecker),this._progressChecker=null,i&&(c.a.v(this.TAG,"Continue loading from paused position"),this._transmuxer.resume()))}},o._isTimepointBuffered=function(t){for(var e=this._mediaElement.buffered,i=0;i<e.length;i++){var r=e.start(i),n=e.end(i);if(t>=r&&t<n)return!0}return!1},o._internalSeek=function(t){var e=this._isTimepointBuffered(t),i=!1,r=0;if(t<1&&this._mediaElement.buffered.length>0){var n=this._mediaElement.buffered.start(0);(n<1&&t<n||m.safari)&&(i=!0,r=m.safari?.1:n)}if(i)this._requestSetTime=!0,this._mediaElement.currentTime=r;else if(e){if(this._alwaysSeekKeyframe){var o=this._msectl.getNearestKeyframe(Math.floor(1e3*t));this._requestSetTime=!0,this._mediaElement.currentTime=null!=o?o.dts/1e3:t}else this._requestSetTime=!0,this._mediaElement.currentTime=t;null!=this._progressChecker&&this._checkProgressAndResume()}else null!=this._progressChecker&&(window.clearInterval(this._progressChecker),this._progressChecker=null),this._msectl.seek(t),this._transmuxer.seek(Math.floor(1e3*t)),this._config.accurateSeek&&(this._requestSetTime=!0,this._mediaElement.currentTime=t)},o._checkAndApplyUnbufferedSeekpoint=function(){},o._checkAndResumeStuckPlayback=function(t){},o._onvLoadedMetadata=function(t){null!=this._pendingSeekTime&&(this._mediaElement.currentTime=this._pendingSeekTime,this._pendingSeekTime=null)},o._onvSeeking=function(t){var e=this._mediaElement.currentTime,i=this._mediaElement.buffered;if(this._requestSetTime)this._requestSetTime=!1;else{if(e<1&&i.length>0){var r=i.start(0);if(r<1&&e<r||m.safari)return this._requestSetTime=!0,void(this._mediaElement.currentTime=m.safari?.1:r)}if(this._isTimepointBuffered(e)){if(this._alwaysSeekKeyframe){var n=this._msectl.getNearestKeyframe(Math.floor(1e3*e));null!=n&&(this._requestSetTime=!0,this._mediaElement.currentTime=n.dts/1e3)}null!=this._progressChecker&&this._checkProgressAndResume()}else this._seekpointRecord={seekPoint:e,recordTime:this._now()},window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this),50)}},o._onvCanPlay=function(t){this._receivedCanPlay=!0,this._mediaElement.removeEventListener("canplay",this.e.onvCanPlay)},o._onvStalled=function(t){this._checkAndResumeStuckPlayback(!0)},o._onvProgress=function(t){this._checkAndResumeStuckPlayback()},o._onvWaiting=function(t){},o._onvPlaying=function(t){this.waitingForData=!1,this.playTally++},o.snapshot=function(){this._transmuxer&&null!=this._transmuxer&&this._transmuxer.snapshot()},e=t,(i=[{key:"type",get:function(){return this._type}},{key:"buffered",get:function(){return this._mediaElement.buffered}},{key:"duration",get:function(){return this._mediaElement.duration}},{key:"volume",get:function(){return this._mediaElement.volume},set:function(t){this._mediaElement.volume=t}},{key:"muted",get:function(){return this._mediaElement.muted},set:function(t){this._mediaElement.muted=t}},{key:"currentTime",get:function(){return this._mediaElement?this._mediaElement.currentTime:0},set:function(t){this._mediaElement?this._internalSeek(t):this._pendingSeekTime=t}},{key:"mediaInfo",get:function(){return Object.assign({},this._mediaInfo)}},{key:"statisticsInfo",get:function(){return null==this._statisticsInfo&&(this._statisticsInfo={}),this._statisticsInfo=this._fillStatisticsInfo(this._statisticsInfo),Object.assign({},this._statisticsInfo)}}])&&It(e.prototype,i),n&&It(e,n),Object.defineProperty(e,"prototype",{writable:!1}),t}();function Pt(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var xt=function(){function t(t,e,i,r,n,o,a,s,h){var u=this;this.url="",this.downloadWorker=null,this.decodeWorker=null,this.renderWorker=null,this.audioWorker=null,this.printStatInfo=!1,this.pauseDisplay=!1,this.enableLog=!1,this.streamType=t,this.h5Video=e,this.canvas=i,this.flvPlayer=null,this.decodeType=r,this.callbackFunc=n,this.callbackPlayTimeFunc=o,this.callbackConnectStatusFunc=a,this.callbackUserPtr=s,this.getVideoInfoCallbackFunc=h,this.avQueue=[],this.webGLPlayer=null,this.soundPlayer=null,this.fullScreenFlag=!1,this._statisticsInfo=null,this._mediaInfo=null,this._emitter=new f.a,this.skipTimer=null,this.h5Video.addEventListener("play",(function(t){u.manualFrameSkipping()})),this.h5Video.addEventListener("pause",(function(t){u.skipTimer&&(clearInterval(u.skipTimer),u.skipTimer=null)}))}var e,i,n,o=t.prototype;return o.manualFrameSkipping=function(){var t=this;if("m3u8"===this.streamType)return!1;this.skipTimer&&(clearInterval(this.skipTimer),this.skipTimer=null),this.skipTimer=setInterval((function(){t.flvPlayer&&t.flvPlayer.buffered.length&&(t.flvPlayer.buffered.end(0)-t.flvPlayer.currentTime>=.7?t.flvPlayer.currentTime=t.flvPlayer.buffered.end(0)-.3:t.flvPlayer.playbackRate=1)}),2e3)},o.destroy=function(){if(this.webGLPlayer&&this.webGLPlayer.renderVideoFrame(null,0,0),this.renderWorker){var t={cmd:r.tCloseStream};this.renderWorker.postMessage(t)}this.soundPlayer&&(this.soundPlayer.destroy(),delete this.soundPlayer,this.soundPlayer=null),this.webGLPlayer&&this.webGLPlayer.destroy(),this.flvPlayer&&(this.flvPlayer.destroy(),this.flvPlayer=null),this._emitter&&(this._emitter.removeAllListeners(),this._emitter=null),this.skipTimer&&(clearInterval(this.skipTimer),this.skipTimer=null)},o.on=function(t,e){var i=this;t===g.MEDIA_INFO?null!=this._mediaInfo&&Promise.resolve().then((function(){i._emitter.emit(g.MEDIA_INFO,i.mediaInfo)})):t===g.STATISTICS_INFO&&null!=this._statisticsInfo&&Promise.resolve().then((function(){i._emitter.emit(g.STATISTICS_INFO,i.statisticsInfo)})),this._emitter.addListener(t,e)},o.off=function(t,e){this._emitter.removeListener(t,e)},o.logD=function(t){this.enableLog},o.createDecodeWorker=function(){var t;if(this.logD("create decode worker..."),this.decodeWorker=void 0,"undefined"!=typeof Worker)try{t=this.decodeWorker=u(41),this.onwmsg=this.onWorkerMessage.bind(this);var e={cmd:r.tOpenStream,url:r.getFullURL(),isFlv:!0};t.postMessage(e),t.addEventListener("message",this.onwmsg),t.onerror=function(t){}}catch(t){this.w=void 0}},o.createAudioWorker=function(){var t;if(this.logD("create audio play worker..."),this.audioWorker=void 0,"undefined"!=typeof Worker)try{t=this.audioWorker=u(246),this.onwmsg=this.onWorkerMessage.bind(this);var e={cmd:r.tOpenStream};t.postMessage(e),t.addEventListener("message",this.onwmsg),t.onerror=function(t){}}catch(t){this.audioWorker=void 0}this.audioWorker},o.decodeAndDisplayLoop=function(){if(!(this.avQueue.length<1))for(;this.avQueue.length>0;){this.avQueue[0];this.avQueue.shift()}},o.play=function(t,e){var i=this;return this.pauseDisplay?this.resume():(this.url=t,null==this.flvPlayer&&(this.flvPlayer=new Ct({type:this.streamType,isLive:!0,url:t,startPlaySecs:e,hasAudio:!0,withCredentials:!1},{streamType:this.streamType,enableWorker:!1,lazyLoadMaxDuration:"flv"===this.streamType||"rtsp"===this.streamType?2:180,lazyLoadRecoverDuration:"flv"===this.streamType||"rtsp"===this.streamType?1:30,deferLoadAfterSourceOpen:!0,autoCleanupMaxBackwardDuration:"flv"===this.streamType||"rtsp"===this.streamType?5:180,autoCleanupMinBackwardDuration:"flv"===this.streamType||"rtsp"===this.streamType?3:120,seekType:"range",enableStashBuffer:!1,decodeType:this.decodeType}),"flv"!==this.streamType&&"rtsp"!==this.streamType||r.setLiveStreamType(!0)),this.flvPlayer.setCallback(this.callbackFunc,this.callbackPlayTimeFunc,this.callbackConnectStatusFunc,this.callbackUserPtr,this.getVideoInfoCallbackFunc),this.flvPlayer.attachMediaElement(this.h5Video,this.canvas),this.flvPlayer.load(),this.flvPlayer.play(),this.flvPlayer.on("statistics_info",(function(t){i._statisticsInfo=t,i._emitter.emit(g.STATISTICS_INFO,t)}))),!0},o.stop=function(){return this.pauseDisplay=!1,this.destroy(),!0},o.isPause=function(){return this.pauseDisplay},o.pause=function(){this.pauseDisplay=!0,this.flvPlayer&&this.flvPlayer.pause()},o.resume=function(){this.pauseDisplay=!1,this.flvPlayer&&this.flvPlayer.resume()},o.rtspScale=function(t,e){this.flvPlayer&&this.flvPlayer.rtspScale(t,e)},o.seek=function(t,e){this.pauseDisplay=!1,this.flvPlayer&&this.flvPlayer.seek(t,e)},o.setTrack=function(t,e){},o.openAudio=function(){return!!this.flvPlayer&&this.flvPlayer.openAudio()},o.closeAudio=function(){return!!this.flvPlayer&&this.flvPlayer.closeAudio()},o.openStatinfo=function(){return this.printStatInfo=!0,!0},o.closeStatinfo=function(){return this.printStatInfo=!1,!0},o.snapshot=function(){this.flvPlayer&&null!=this.flvPlayer&&this.flvPlayer.snapshot()},o.isFullScreen=function(){return this.fullScreenFlag},o.canvasFullscreen=function(){var t=this.canvas;t.RequestFullScreen?t.RequestFullScreen():t.webkitRequestFullScreen?t.webkitRequestFullScreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen?t.msRequestFullscreen():r.MediaWorkerLog("This browser doesn't supporter fullscreen")},o.canvasExitFullscreen=function(){document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen?document.msExitFullscreen():r.MediaWorkerLog("Exit fullscreen doesn't work")},o.fullscreen=function(t){if(1==t){if(!this.fullScreenFlag)return this.canvasFullscreen(),this.fullScreenFlag=!0,!0}else if(this.fullScreenFlag)return this.canvasExitFullscreen(),this.fullScreenFlag=!1,!0;return!1},e=t,(i=[{key:"mediaInfo",get:function(){return Object.assign({},this._mediaInfo)}},{key:"statisticsInfo",get:function(){return Object.assign({},this._statisticsInfo)}}])&&Pt(e.prototype,i),n&&Pt(e,n),Object.defineProperty(e,"prototype",{writable:!1}),t}();function Dt(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var Ot=function(){function t(t,e,i,r,n){if(this.TAG="NativePlayer",this._type="NativePlayer",this._emitter=new f.a,this._config=Rt(),"object"==typeof n&&Object.assign(this._config,n),"flv"===t.type.toLowerCase())throw new C.b("NativePlayer does't support flv MediaDataSource input!");if(t.hasOwnProperty("segments"))throw new C.b("NativePlayer("+t.type+") doesn't support multipart playback!");this.e={onvLoadedMetadata:this._onvLoadedMetadata.bind(this)},this._pendingSeekTime=null,this._statisticsReporter=null,this._mediaDataSource=t,this._mediaElement=null,this.pauseDisplay=!1,this.h5Video=e,this.callbackPlayTimeFunc=i,this.callbackUserPtr=r}var e,i,r,n=t.prototype;return n.destroy=function(){this._mediaElement&&(this.unload(),this.detachMediaElement()),this.e=null,this._mediaDataSource=null,this._emitter.removeAllListeners(),this._emitter=null},n.on=function(t,e){var i=this;t===g.MEDIA_INFO?null!=this._mediaElement&&0!==this._mediaElement.readyState&&Promise.resolve().then((function(){i._emitter.emit(g.MEDIA_INFO,i.mediaInfo)})):t===g.STATISTICS_INFO&&null!=this._mediaElement&&0!==this._mediaElement.readyState&&Promise.resolve().then((function(){i._emitter.emit(g.STATISTICS_INFO,i.statisticsInfo)})),this._emitter.addListener(t,e)},n.off=function(t,e){this._emitter.removeListener(t,e)},n.attachMediaElement=function(t){if(this._mediaElement=t,t.addEventListener("loadedmetadata",this.e.onvLoadedMetadata),null!=this._pendingSeekTime)try{t.currentTime=this._pendingSeekTime,this._pendingSeekTime=null}catch(t){}},n.detachMediaElement=function(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src"),this._mediaElement.removeEventListener("loadedmetadata",this.e.onvLoadedMetadata),this._mediaElement=null),null!=this._statisticsReporter&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)},n.load=function(){if(!this._mediaElement)throw new C.a("HTMLMediaElement must be attached before load()!");this._mediaElement.src=this._mediaDataSource.url,this._mediaElement.readyState>0&&(this._mediaElement.currentTime=0),this._mediaElement.preload="auto",this._mediaElement.load(),this._statisticsReporter=window.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval)},n.unload=function(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src")),null!=this._statisticsReporter&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)},n.play=function(){return this.pauseDisplay||(this.attachMediaElement(this.h5Video),this.load()),this.pauseDisplay=!1,this._mediaElement.play()},n.stop=function(){this.unload(),this.detachMediaElement()},n.pause=function(){this._mediaElement.pause(),this.pauseDisplay=!0},n.isPause=function(){return this.pauseDisplay},n.openAudio=function(){return this._mediaElement.volume=1,!0},n.closeAudio=function(){return this._mediaElement.volume=0,!0},n.seek=function(t,e){var i=t;1==e&&(i=t/100*this._mediaElement.duration),this._mediaElement?this._mediaElement.currentTime=i:this._pendingSeekTime=i},n._onvLoadedMetadata=function(t){null!=this._pendingSeekTime&&(this._mediaElement.currentTime=this._pendingSeekTime,this._pendingSeekTime=null),this._emitter.emit(g.MEDIA_INFO,this.mediaInfo)},n._reportStatisticsInfo=function(){this._emitter.emit(g.STATISTICS_INFO,this.statisticsInfo)},e=t,(i=[{key:"type",get:function(){return this._type}},{key:"buffered",get:function(){return this._mediaElement.buffered}},{key:"duration",get:function(){return this._mediaElement.duration}},{key:"volume",get:function(){return this._mediaElement.volume},set:function(t){this._mediaElement.volume=t}},{key:"muted",get:function(){return this._mediaElement.muted},set:function(t){this._mediaElement.muted=t}},{key:"currentTime",get:function(){return this._mediaElement?this._mediaElement.currentTime:0},set:function(t){this._mediaElement?this._mediaElement.currentTime=t:this._pendingSeekTime=t}},{key:"mediaInfo",get:function(){var t={mimeType:(this._mediaElement instanceof HTMLAudioElement?"audio/":"video/")+this._mediaDataSource.type};if(this._mediaElement){t.duration=Math.floor(1e3*this._mediaElement.duration),this._mediaElement instanceof HTMLVideoElement&&(t.width=this._mediaElement.videoWidth,t.height=this._mediaElement.videoHeight),this.callbackPlayTimeFunc&&this.callbackPlayTimeFunc(this.callbackUserPtr,"mp4",this._mediaElement.currentTime,t.duration/1e3);var e=this,i=0,r=t.duration/1e3;this._mediaElement.addEventListener("timeupdate",(function(){if(e._mediaElement){var t=e._mediaElement.currentTime;if(null!=t){var n=Math.floor(t);i!=n&&(i=n,e.callbackPlayTimeFunc(e.callbackUserPtr,"mp4",i,r))}}}),!1)}return t}},{key:"statisticsInfo",get:function(){var t={playerType:this._type,url:this._mediaDataSource.url};if(!(this._mediaElement instanceof HTMLVideoElement))return t;var e=!0,i=0,r=0;if(this._mediaElement.getVideoPlaybackQuality){var n=this._mediaElement.getVideoPlaybackQuality();i=n.totalVideoFrames,r=n.droppedVideoFrames}else null!=this._mediaElement.webkitDecodedFrameCount?(i=this._mediaElement.webkitDecodedFrameCount,r=this._mediaElement.webkitDroppedFrameCount):e=!1;return e&&(t.decodedFrames=i,t.droppedFrames=r),t}}])&&Dt(e.prototype,i),r&&Dt(e,r),Object.defineProperty(e,"prototype",{writable:!1}),t}(),Bt=i(41);function Lt(t){return typeof t===Ft(214,"Fiv!")&&!isNaN(t)}function Wt(){var t=["WRBcPCkmtJHRW4mMWPpcI8o8ofi","sNNdOeVdSCkC","w1vfnmoInW","ithcJN09","WRCsWQifbq","WR4nWQeD","WP/dLCo3a0VdQgb0WRr0WR10","WPPAjmk2mMyIn8kyo8kn","W7ddR8kuASkZAa","w0ldSdCJWR/cI8kd","WQNdNCk7WOSqWRG+hvmmjXC","xqL2WQ0","khtdL8oCW6pdIstdLW","W6XZW67cMgbaWOlcJq","WP3dNCoZa0xcN258WOHYWOK","meFdLcldMCoxW71Dcuu3nW","mYxcLh/cKmkVW44","FbVcRNi","W6ldPSorfN44W7ubWRFcLCoRaq","W7BcJCoWW5O","WPldLSk5zd3cOKbl","BqKLWRBcPa","x8kJWOddTG","A8kwW6pcOmoLfgJdICkKWRZcUG9D","uSo2W5CWW6NdHq","c8k2WO9JWRJcN3G4xCkwW4al","WQhcPCkirIbNW6GT","eemwrW","WRi7WOnAW7ajW70","ySonE0LCb0C","mSoFW61+WQRdHtS","exrsj8oSed8","tCkQea","u2xcJem","AXWHWO7cTfZdVq","thJcL1dcMmo/","WROhWRmnfsXQ","kZ49W5ldMq3cQbW","W7BcTSkY","W6BdKSo1hehdTgRdUs8","gqasC8k5z0pdNCkWWR1VpWe","w1hdQYSIWR3cICkk","t1vqeSoOmH4","fc7cUXNcS8kDcCo4msNcRW","tSoRdwJdMJtdHSoOEexdIG","ef4avq","jYtcIKuTWRvZ","pbmjs8k8W6m","b2PgW50"];return(Wt=function(){return t})()}function Nt(t){if(!Lt(t))return 0;var e=parseInt(t/36e5),i=parseInt(t%36e5/6e4),r=parseInt(t%6e4/1e3);return(e<10?"0"+e:e)+":"+(i<10?"0"+i:i)+":"+(r<10?"0"+r:r)}function Ft(t,e){var i=Wt();return Ft=function(e,r){var n=i[e-=175];if(void 0===Ft.RuwVZq){var o=function(t){for(var e,i,r="",n="",o=0,a=0;i=t.charAt(a++);~i&&(e=o%4?64*e+i:i,o++%4)?r+=String.fromCharCode(255&e>>(-2*o&6)):0)i="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(i);for(var s=0,h=r.length;s<h;s++)n+="%"+("00"+r.charCodeAt(s).toString(16)).slice(-2);return decodeURIComponent(n)},a=function(t,e){var i,r,n=[],a=0,s="";for(t=o(t),r=0;r<256;r++)n[r]=r;for(r=0;r<256;r++)a=(a+n[r]+e.charCodeAt(r%e.length))%256,i=n[r],n[r]=n[a],n[a]=i;r=0,a=0;for(var h=0;h<t.length;h++)a=(a+n[r=(r+1)%256])%256,i=n[r],n[r]=n[a],n[a]=i,s+=String.fromCharCode(t.charCodeAt(h)^n[(n[r]+n[a])%256]);return s};Ft.wksTNG=a,t=arguments,Ft.RuwVZq=!0}var s=i[0],h=e+s,u=t[h];return u?n=u:(void 0===Ft.DqbBAI&&(Ft.DqbBAI=!0),n=Ft.wksTNG(n,r),t[h]=n),n},Ft(t,e)}function Ut(t){var e=Ft;return new Date(t||new Date)[e(191,"TOkq")]()}!function(t,e){for(var i=Ft,r=t();;)try{if(212490===parseInt(i(212,"r%hu"))/1+-parseInt(i(200,"dzzP"))/2*(parseInt(i(194,"SLqP"))/3)+parseInt(i(182,"Z1qM"))/4+parseInt(i(185,"^iAT"))/5*(-parseInt(i(175,"&vJN"))/6)+parseInt(i(180,"[OC1"))/7+parseInt(i(197,"R)EY"))/8*(parseInt(i(188,"R)EY"))/9)+parseInt(i(196,"cfLC"))/10*(-parseInt(i(201,"INWl"))/11))break;r.push(r.shift())}catch(t){r.push(r.shift())}}(Wt);var jt=function(){function t(){}return t.supportMSEH264Playback=function(){return window.MediaSource&&window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"')},t.supportNetworkStreamIO=function(){var t=new dt({},Rt()),e=t.loaderType;return t.destroy(),"fetch-stream-loader"==e||"xhr-moz-chunked-loader"==e},t.getNetworkLoaderTypeName=function(){var t=new dt({},Rt()),e=t.loaderType;return t.destroy(),e},t.supportNativeMediaPlayback=function(e){null==t.videoElement&&(t.videoElement=window.document.createElement("video"));var i=t.videoElement.canPlayType(e);return"probably"===i||"maybe"==i},t.getFeatureList=function(){var e={mseFlvPlayback:!1,mseLiveFlvPlayback:!1,networkStreamIO:!1,networkLoaderName:"",nativeMP4H264Playback:!1,nativeWebmVP8Playback:!1,nativeWebmVP9Playback:!1};return e.mseFlvPlayback=t.supportMSEH264Playback(),e.networkStreamIO=t.supportNetworkStreamIO(),e.networkLoaderName=t.getNetworkLoaderTypeName(),e.mseLiveFlvPlayback=e.mseFlvPlayback&&e.networkStreamIO,e.nativeMP4H264Playback=t.supportNativeMediaPlayback('video/mp4; codecs="avc1.42001E, mp4a.40.2"'),e.nativeWebmVP8Playback=t.supportNativeMediaPlayback('video/webm; codecs="vp8.0, vorbis"'),e.nativeWebmVP9Playback=t.supportNativeMediaPlayback('video/webm; codecs="vp9"'),e},t}(),Vt=jt,Ht=(Object.prototype.toString,function(t){return qt(t)?Object.keys(t):[]});function zt(t,e){Ht(t).forEach((function(i){return e(t[i],i)}))}function Gt(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),r=1;r<e;r++)i[r-1]=arguments[r];return Object.assign?Object.assign.apply(Object,[t].concat(i)):(i.forEach((function(e){e&&zt(e,(function(e,i){t[i]=e}))})),t)}function qt(t){return!!t&&"object"==typeof t}function Xt(t){return"function"==typeof t&&(t=t()),(Array.isArray(t)?t:[t]).map((function(t){return"function"==typeof t&&(t=t()),function(t){return qt(t)&&1===t.nodeType}(t)||function(t){return qt(t)&&3===t.nodeType}(t)?t:"string"==typeof t&&/\S/.test(t)?document.createTextNode(t):void 0})).filter((function(t){return t}))}function Zt(t,e,i,r){void 0===t&&(t="div"),void 0===e&&(e={}),void 0===i&&(i={});var n=document.createElement(t);return Object.getOwnPropertyNames(e).forEach((function(t){var i=e[t];-1!==t.indexOf("aria-")||"role"===t||"type"===t?n.setAttribute(t,i):"textContent"===t||n[t]===i&&"tabIndex"!==t||(n[t]=i)})),Object.getOwnPropertyNames(i).forEach((function(t){n.setAttribute(t,i[t])})),r&&function(t,e){Xt(e).forEach((function(e){return t.appendChild(e)}))}(n,r),n}var Kt=function(t,e){var i=this;this.boxDom=t.boxDom,this.isFill=t.showMode,this.fillModeBtnEl=Zt("div",{className:"vss-control-btn vss-control-fill-btn vss-pointer"},{}),this.fillModeIconEl=Zt("span",{className:"vssfont "+(t.showMode?"vss-video-ratio":"vss-video-fill")},{title:t.showMode?"按比例显示":"铺满窗口"}),this.fillModeBtnEl.appendChild(this.fillModeIconEl),e.appendChild(this.fillModeBtnEl),this.fillModeBtnEl.onclick=function(e){i.isFill?(i.isFill=!1,t.callbackFunc("ratio"),i.fillModeIconEl.title="铺满窗口",i.fillModeIconEl.classList.remove("vss-video-ratio"),i.fillModeIconEl.classList.add("vss-video-fill"),t.videoEl.style.objectFit=""):(i.isFill=!0,t.callbackFunc("fill"),i.fillModeIconEl.title="按比例显示",i.fillModeIconEl.classList.remove("vss-video-fill"),i.fillModeIconEl.classList.add("vss-video-ratio"),t.videoEl.style.objectFit="fill")}},Qt=function(){function t(t,e){var i=this;this.boxDom=t.boxDom,this.isFill=!1,this.fillModeBtnEl=Zt("div",{className:"vss-control-btn vss-control-snap-btn vss-pointer"},{}),this.fillModeIconEl=Zt("span",{className:"vssfont vss-snapshot"},{title:"快照"}),this.fillModeBtnEl.appendChild(this.fillModeIconEl),e.appendChild(this.fillModeBtnEl),this.fillModeBtnEl.onclick=function(e){i.snapshotDown(t)}}return t.prototype.snapshotDown=function(t){window.VssPlayerWasmKits?t.playerInstance&&t.playerInstance.snapshot():(t.InitWasmModule(),this.snapshotDown(t))},t}();function Yt(t,e){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(i)return(i=i.call(t)).next.bind(i);if(Array.isArray(t)||(i=function(t,e){if(!t)return;if("string"==typeof t)return Jt(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);"Object"===i&&t.constructor&&(i=t.constructor.name);if("Map"===i||"Set"===i)return Array.from(t);if("Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return Jt(t,e)}(t))||e&&t&&"number"==typeof t.length){i&&(t=i);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Jt(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,r=new Array(e);i<e;i++)r[i]=t[i];return r}var $t=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],te=function(){for(var t,e=$t[0],i={},r=Yt($t);!(t=r()).done;){var n=t.value;if((null==n?void 0:n[1])in document){for(var o,a=Yt(n.entries());!(o=a()).done;){var s=o.value,h=s[0],u=s[1];i[e[h]]=u}return i}}return!1}(),ee={change:te.fullscreenchange,error:te.fullscreenerror},ie={request:function(t,e){return void 0===t&&(t=document.documentElement),new Promise((function(i,r){var n=function t(){ie.off("change",t),i()};ie.on("change",n);var o=t[te.requestFullscreen](e);o instanceof Promise&&o.then(n).catch(r)}))},exit:function(){return new Promise((function(t,e){if(ie.isFullscreen){var i=function e(){ie.off("change",e),t()};ie.on("change",i);var r=document[te.exitFullscreen]();r instanceof Promise&&r.then(i).catch(e)}else t()}))},toggle:function(t,e){return ie.isFullscreen?ie.exit():ie.request(t,e)},onchange:function(t){ie.on("change",t)},onerror:function(t){ie.on("error",t)},on:function(t,e){var i=ee[t];i&&document.addEventListener(i,e,!1)},off:function(t,e){var i=ee[t];i&&document.removeEventListener(i,e,!1)},raw:te};Object.defineProperties(ie,{isFullscreen:{get:function(){return Boolean(document[te.fullscreenElement])}},element:{enumerable:!0,get:function(){var t;return null!=(t=document[te.fullscreenElement])?t:void 0}},isEnabled:{enumerable:!0,get:function(){return Boolean(document[te.fullscreenEnabled])}}}),te||(ie={isEnabled:!1});var re=ie,ne=function(){function t(t,e){var i=this;this.boxDom=t.boxDom,this.isFullScreen=!1,this.fullScreenBtnEl=Zt("div",{className:"vss-control-btn vss-control-full-btn vss-pointer"},{}),this.fullScreenIconEl=Zt("span",{className:"vssfont vss-fullscreen"},{title:"全屏"}),this.fullScreenBtnEl.appendChild(this.fullScreenIconEl),e.appendChild(this.fullScreenBtnEl),this.fullScreenBtnEl.onclick=function(t){i.isFullScreen?i.exitFullScreen():i.requestFullscreen()},re.isEnabled&&re.on("change",this.screenfullChange.bind(this))}var e=t.prototype;return e.requestFullscreen=function(){if(!re.isEnabled)return!1;re.request(this.boxDom)},e.exitFullScreen=function(){re.toggle()},e.screenfullChange=function(){this.isFullScreen=re.isFullscreen,this.isFullScreen?(this.fullScreenIconEl.title="取消全屏",this.fullScreenIconEl.classList.remove("vss-fullscreen"),this.fullScreenIconEl.classList.add("vss-cancel-fullscreen")):(this.fullScreenIconEl.title="全屏",this.fullScreenIconEl.classList.remove("vss-cancel-fullscreen"),this.fullScreenIconEl.classList.add("vss-fullscreen"))},t}(),oe=function(){function t(t,e){var i=this;this.boxDom=t.boxDom,this.isFill=!1,this.isPlaying=!1,this.fillModeBtnEl=Zt("div",{className:"vss-control-btn vss-control-play-btn vss-pointer"},{}),this.fillModeIconEl=Zt("span",{className:"vssfont vss-play"},{title:"播放"}),this.fillModeBtnEl.appendChild(this.fillModeIconEl),e.appendChild(this.fillModeBtnEl),this.fillModeBtnEl.onclick=function(e){t.url&&(i.isPlaying?(i.isPlaying=!1,i.fillModeIconEl.title="播放",i.fillModeIconEl.classList.remove("vss-pause"),i.fillModeIconEl.classList.add("vss-play"),i.pause(t)):(i.isPlaying=!0,i.fillModeIconEl.title="暂停",i.fillModeIconEl.classList.remove("vss-play"),i.fillModeIconEl.classList.add("vss-pause"),i.play(t)))},t.on("status",(function(t){100===t&&(i.isPlaying=!0,i.fillModeIconEl.title="暂停",i.fillModeIconEl.classList.remove("vss-play"),i.fillModeIconEl.classList.add("vss-pause"))}))}var e=t.prototype;return e.play=function(t){t.play(t.url,1,t.seekTimeSecs)},e.pause=function(t){t.pause()},t}(),ae=function(t,e){var i=this;this.boxDom=t.boxDom,this.isFill=!1,this.isPlaying=!1,this.fillModeBtnEl=Zt("div",{className:"vss-control-btn vss-control-stop-btn vss-pointer"},{}),this.fillModeIconEl=Zt("span",{className:"vssfont vss-stop"},{title:"停止"}),this.fillModeBtnEl.appendChild(this.fillModeIconEl),e.appendChild(this.fillModeBtnEl),this.fillModeBtnEl.onclick=function(e){i.isPlaying&&(i.isPlaying=!1,t.callbackFunc("stop"),t.stop())},t.on("status",(function(t){i.isPlaying=100===t}))},se=function(){function t(t,e){var i=this;this.boxDom=t.boxDom,this.isFill=!1,this.isPlaying=!1,this.fillModeBtnEl=Zt("div",{className:"vss-control-btn vss-control-audio-btn vss-pointer"},{}),this.fillModeIconEl=Zt("span",{className:"vssfont "+(t.enableAudio?"vss-open-voice":"vss-mute")},{title:t.enableAudio?"静音":"声音"}),this.fillModeBtnEl.appendChild(this.fillModeIconEl),e.appendChild(this.fillModeBtnEl),this.fillModeBtnEl.onclick=function(e){t.enableAudio?(i.fillModeIconEl.title="声音",i.fillModeIconEl.classList.remove("vss-open-voice"),i.fillModeIconEl.classList.add("vss-mute"),i.closeAudio(t)):(i.fillModeIconEl.title="静音",i.fillModeIconEl.classList.remove("vss-mute"),i.fillModeIconEl.classList.add("vss-open-voice"),i.openAudio(t))},t.on("audio",(function(t){t?(i.fillModeIconEl.title="静音",i.fillModeIconEl.classList.remove("vss-mute"),i.fillModeIconEl.classList.add("vss-open-voice")):(i.fillModeIconEl.title="声音",i.fillModeIconEl.classList.remove("vss-open-voice"),i.fillModeIconEl.classList.add("vss-mute"))}))}var e=t.prototype;return e.openAudio=function(t){t.openAudio()},e.closeAudio=function(t){t.closeAudio()},t}(),he=function(t,e){var i=this;this.boxDom=t.boxDom,this.isFill=!1,this.isPlaying=!1,this.fillModeBtnEl=Zt("div",{className:"vss-item-box"},{}),this.fillModeIconEl=Zt("span",{className:""},{},""),this.fillModeBtnEl.appendChild(this.fillModeIconEl),e.appendChild(this.fillModeBtnEl),t.on("resolutionRatio",(function(t){i.fillModeIconEl.innerText="LIVE ["+t.code+":"+t.width+"×"+t.height+"]"}))},ue=function(){function t(t,e){var i=this;this.boxDom=t.boxDom,this.isFill=!1,this.isPlaying=!1,this.duration=0,this.isMousedown=!1,this.isMousemove=!1,this.mousedownCursor=0,this.show=!1,this.timeBoxEl=Zt("div",{className:"vss-item-box vss-time-box vss-hide"},{}),this.timeScheduleEl=Zt("div",{className:"vss-time-schedule"},{}),this.leftTimeEl=Zt("div",{className:"vss-time-left-text"},{},"00:00:00"),this.rightTimeEl=Zt("div",{className:"vss-time-right-text"},{},"00:00:00"),this.timeBoxEl.appendChild(this.leftTimeEl),this.timeBoxEl.appendChild(this.timeScheduleEl),this.timeBoxEl.appendChild(this.rightTimeEl),this.timeTrackOutEl=Zt("div",{className:"vss-time-track-out"},{}),this.timeTrackEl=Zt("div",{className:"vss-time-track"},{}),this.timeProgressEl=Zt("div",{className:"vss-time-progress"},{}),this.timeProgressButtonBoxEl=Zt("div",{className:"vss-time-button-wrapper"},{}),this.timeProgressButtonEl=Zt("div",{className:"vss-time-button-wrapper_button"},{}),this.timeProgressTipEl=Zt("span",{className:"vss-time-button-wrapper_tip vss-hide"},{}),this.timeProgressButtonBoxEl.appendChild(this.timeProgressButtonEl),this.timeProgressButtonBoxEl.appendChild(this.timeProgressTipEl),this.timeTrackEl.appendChild(this.timeProgressEl),this.timeTrackOutEl.appendChild(this.timeTrackEl),this.timeTrackOutEl.appendChild(this.timeProgressButtonBoxEl),this.timeScheduleEl.appendChild(this.timeTrackOutEl),e.appendChild(this.timeBoxEl),this.timeTrackEl.onmousedown=function(e){if((e=e||window.event).stopPropagation(),0!==e.button)return!1;if(i.isPlaying){var r=e.layerX,n=i.timeTrackEl.offsetWidth,o=r/n*100;o<=0?o=0:o>=100&&(o=100);var a=parseInt(i.duration*(r/n)*1e3)/1e3;return i.leftTimeEl.innerText=Nt(1e3*a),i.timeProgressTipEl.innerText=Nt(1e3*a),i.isMousemove||(i.timeProgressEl.style.width=o+"%",i.timeProgressButtonBoxEl.style.left=o+"%"),document.onmouseup=function(e){return i.seekToPre(t,o),e.stopPropagation(),document.onmouseup=null,!1},!1}return!1},this.timeProgressButtonEl.onmousedown=function(e){if((e=e||window.event).stopPropagation(),0!==e.button)return!1;i.isMousedown=!0,i.mousedownCursor=i.getCursorPositionX(e);var r=i.timeTrackEl.offsetWidth,n=0,o=parseFloat(i.timeProgressButtonBoxEl.style.left||0);document.onmousemove=function(t,e,i){var r,n,o,a=0;i||(i={});var s=function(){var e=Ft;a=!1===i.leading?0:(new Date)[e(199,"R)EY")](),r=null,t[e(209,"UCj3")](n,o),r||(n=o=null)};return function(){var h=Ft,u=(new Date)[h(203,"UCj3")]();a||!1!==i[h(193,"yeBN")]||(a=u);var l=e-(u-a);n=this,o=arguments,l<=0||l>e?(r&&(clearTimeout(r),r=null),a=u,t[h(178,"TOkq")](n,o),r||(n=o=null)):!r&&!1!==i[h(183,"&vJN")]&&(r=setTimeout(s,l))}}((function(e){e.stopPropagation(),i.isMousemove=!0;var a=i.getCursorPositionX(e)-i.mousedownCursor,s=o/100*r;(s+=a)>=r?s=r:s<=0&&(s=0);var h=s/r;n=100*h;var u=parseInt(i.duration*h*1e3)/1e3;i.timeProgressEl.style.width=n+"%",i.leftTimeEl.innerText=Nt(1e3*u),i.timeProgressButtonBoxEl.style.left=n+"%",i.timeProgressTipEl.innerText=Nt(1e3*u),i.seekToPre(t,n)}),25),document.onmouseup=function(e){e.stopPropagation(),i.isMousedown=!1,i.isMousemove=!1;var r=parseFloat(i.timeProgressButtonBoxEl.style.left||0);return i.seekToPre(t,r),document.onmousemove=null,document.onmouseup=null,!1}},t.on("timeSchedule",(function(e){i.show||i.timeBoxEl.classList.remove("vss-hide"),t.emit("status",100),i.isPlaying=!0,i.duration=e.duration,i.timeProgressTipEl.classList.remove("vss-hide"),i.leftTimeEl.innerText=Nt(1e3*e.currentTime),i.rightTimeEl.innerText=Nt(1e3*e.duration),i.timeProgressTipEl.innerText=Nt(1e3*e.currentTime),i.isMousemove||(i.timeProgressEl.style.width=1e3*e.currentTime/(1e3*e.duration)*100+"%",i.timeProgressButtonBoxEl.style.left=1e3*e.currentTime/(1e3*e.duration)*100+"%")})),t.on("timeended",(function(t){i.isPlaying=!1,i.timeProgressTipEl.classList.add("vss-hide"),i.leftTimeEl.innerText=Nt(1e3*t.currentTime),i.rightTimeEl.innerText=Nt(1e3*t.duration),i.timeProgressTipEl.innerText=Nt(1e3*t.currentTime),i.isMousemove||(i.timeProgressEl.style.width=1e3*t.currentTime/(1e3*t.duration)*100+"%",i.timeProgressButtonBoxEl.style.left=1e3*t.currentTime/(1e3*t.duration)*100+"%")}))}var e=t.prototype;return e.getCursorPositionX=function(t){var e=0;return t||(t=window.event),t.pageX||t.pageY?e=t.pageX:(t.clientX||t.clientY)&&(e=t.clientX+document.body.scrollLeft+document.documentElement.scrollLeft),e},e.seekToPre=function(t,e){t.seekToPercent(e)},t}(),le=ue,de=function(){function t(t,e,i){var r=this,n=this.createEl("div",{className:"vss-control-bar"}),o=this.createEl("div",{className:"vss-control-bar-left"}),a=this.createEl("div",{className:"vss-control-bar-conter"}),s=this.createEl("div",{className:"vss-control-bar-right"});n.appendChild(o),n.appendChild(a),n.appendChild(s),e.appendChild(n),new oe(t,o),new ae(t,o),new se(t,o),new he(t,o),new le(t,a),new Kt(t,s),new Qt(t,s),new ne(t,s),this.Timer=null,e.onmousemove=function(){clearTimeout(r.Timer),e.classList.add("vss-control-show")},e.onmouseout=function(){clearTimeout(r.Timer),r.Timer=setTimeout((function(){e.classList.remove("vss-control-show"),clearTimeout(r.Timer)}),2e3)}}return t.prototype.createEl=function(t,e,i){return void 0===e&&(e={}),void 0===i&&(i={}),"div",Zt("div",e=Gt({},e),i)},t}(),fe=function(){function t(t,e){var i=this;this.loadingEl=this.createEl(),e.appendChild(this.loadingEl),t.on("status",(function(t){i.open(t)}))}var e=t.prototype;return e.createEl=function(t,e,i){void 0===e&&(e={}),void 0===i&&(i={});var r=Zt("div",e=Gt({className:this.buildCSSClass()},e),i=Gt({type:"loading"},i));return this.center=Zt("div",{className:"vss-loading-center"},{"aria-type":"center"}),this.loading=Zt("img",{className:"vss-loading-img"},{src:"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIKICAgICBjbGFzcz0idWlsLWRlZmF1bHQiPgogICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9Im5vbmUiIGNsYXNzPSJiayIvPgogICAgPHJlY3QgeD0iNDciIHk9IjQwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyMCIgcng9IjUiIHJ5PSI1IiBmaWxsPSIjZmZmZmZmIiB0cmFuc2Zvcm09InJvdGF0ZSgwIDUwIDUwKSB0cmFuc2xhdGUoMCAtMzApIj4KICAgICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJvcGFjaXR5IiBmcm9tPSIxIiB0bz0iMCIgZHVyPSIxcyIgYmVnaW49Ii0xcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiLz4KICAgIDwvcmVjdD4KICAgIDxyZWN0IHg9IjQ3IiB5PSI0MCIgd2lkdGg9IjYiIGhlaWdodD0iMjAiIHJ4PSI1IiByeT0iNSIgZmlsbD0iI2ZmZmZmZiIKICAgICAgICAgIHRyYW5zZm9ybT0icm90YXRlKDMwIDUwIDUwKSB0cmFuc2xhdGUoMCAtMzApIj4KICAgICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJvcGFjaXR5IiBmcm9tPSIxIiB0bz0iMCIgZHVyPSIxcyIgYmVnaW49Ii0wLjkxNjY2NjY2NjY2NjY2NjZzIgogICAgICAgICAgICAgICAgIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIi8+CiAgICA8L3JlY3Q+CiAgICA8cmVjdCB4PSI0NyIgeT0iNDAiIHdpZHRoPSI2IiBoZWlnaHQ9IjIwIiByeD0iNSIgcnk9IjUiIGZpbGw9IiNmZmZmZmYiCiAgICAgICAgICB0cmFuc2Zvcm09InJvdGF0ZSg2MCA1MCA1MCkgdHJhbnNsYXRlKDAgLTMwKSI+CiAgICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgZnJvbT0iMSIgdG89IjAiIGR1cj0iMXMiIGJlZ2luPSItMC44MzMzMzMzMzMzMzMzMzM0cyIKICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIvPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0iNDciIHk9IjQwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyMCIgcng9IjUiIHJ5PSI1IiBmaWxsPSIjZmZmZmZmIgogICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoOTAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCkiPgogICAgICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9Im9wYWNpdHkiIGZyb209IjEiIHRvPSIwIiBkdXI9IjFzIiBiZWdpbj0iLTAuNzVzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIvPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0iNDciIHk9IjQwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyMCIgcng9IjUiIHJ5PSI1IiBmaWxsPSIjZmZmZmZmIgogICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDUwIDUwKSB0cmFuc2xhdGUoMCAtMzApIj4KICAgICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJvcGFjaXR5IiBmcm9tPSIxIiB0bz0iMCIgZHVyPSIxcyIgYmVnaW49Ii0wLjY2NjY2NjY2NjY2NjY2NjZzIgogICAgICAgICAgICAgICAgIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIi8+CiAgICA8L3JlY3Q+CiAgICA8cmVjdCB4PSI0NyIgeT0iNDAiIHdpZHRoPSI2IiBoZWlnaHQ9IjIwIiByeD0iNSIgcnk9IjUiIGZpbGw9IiNmZmZmZmYiCiAgICAgICAgICB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCkiPgogICAgICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9Im9wYWNpdHkiIGZyb209IjEiIHRvPSIwIiBkdXI9IjFzIiBiZWdpbj0iLTAuNTgzMzMzMzMzMzMzMzMzNHMiCiAgICAgICAgICAgICAgICAgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiLz4KICAgIDwvcmVjdD4KICAgIDxyZWN0IHg9IjQ3IiB5PSI0MCIgd2lkdGg9IjYiIGhlaWdodD0iMjAiIHJ4PSI1IiByeT0iNSIgZmlsbD0iI2ZmZmZmZiIKICAgICAgICAgIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA1MCkgdHJhbnNsYXRlKDAgLTMwKSI+CiAgICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgZnJvbT0iMSIgdG89IjAiIGR1cj0iMXMiIGJlZ2luPSItMC41cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiLz4KICAgIDwvcmVjdD4KICAgIDxyZWN0IHg9IjQ3IiB5PSI0MCIgd2lkdGg9IjYiIGhlaWdodD0iMjAiIHJ4PSI1IiByeT0iNSIgZmlsbD0iI2ZmZmZmZiIKICAgICAgICAgIHRyYW5zZm9ybT0icm90YXRlKDIxMCA1MCA1MCkgdHJhbnNsYXRlKDAgLTMwKSI+CiAgICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgZnJvbT0iMSIgdG89IjAiIGR1cj0iMXMiIGJlZ2luPSItMC40MTY2NjY2NjY2NjY2NjY3cyIKICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIvPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0iNDciIHk9IjQwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyMCIgcng9IjUiIHJ5PSI1IiBmaWxsPSIjZmZmZmZmIgogICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoMjQwIDUwIDUwKSB0cmFuc2xhdGUoMCAtMzApIj4KICAgICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJvcGFjaXR5IiBmcm9tPSIxIiB0bz0iMCIgZHVyPSIxcyIgYmVnaW49Ii0wLjMzMzMzMzMzMzMzMzMzMzNzIgogICAgICAgICAgICAgICAgIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIi8+CiAgICA8L3JlY3Q+CiAgICA8cmVjdCB4PSI0NyIgeT0iNDAiIHdpZHRoPSI2IiBoZWlnaHQ9IjIwIiByeD0iNSIgcnk9IjUiIGZpbGw9IiNmZmZmZmYiCiAgICAgICAgICB0cmFuc2Zvcm09InJvdGF0ZSgyNzAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCkiPgogICAgICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9Im9wYWNpdHkiIGZyb209IjEiIHRvPSIwIiBkdXI9IjFzIiBiZWdpbj0iLTAuMjVzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIvPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0iNDciIHk9IjQwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyMCIgcng9IjUiIHJ5PSI1IiBmaWxsPSIjZmZmZmZmIgogICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoMzAwIDUwIDUwKSB0cmFuc2xhdGUoMCAtMzApIj4KICAgICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJvcGFjaXR5IiBmcm9tPSIxIiB0bz0iMCIgZHVyPSIxcyIgYmVnaW49Ii0wLjE2NjY2NjY2NjY2NjY2NjY2cyIKICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIvPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0iNDciIHk9IjQwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyMCIgcng9IjUiIHJ5PSI1IiBmaWxsPSIjZmZmZmZmIgogICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoMzMwIDUwIDUwKSB0cmFuc2xhdGUoMCAtMzApIj4KICAgICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJvcGFjaXR5IiBmcm9tPSIxIiB0bz0iMCIgZHVyPSIxcyIgYmVnaW49Ii0wLjA4MzMzMzMzMzMzMzMzMzMzcyIKICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIvPgogICAgPC9yZWN0Pgo8L3N2Zz4K"}),this.loadingText=Zt("span",{className:"vss-loading-text"},{},"视频加载中..."),this.center.appendChild(this.loading),r.appendChild(this.center),r},e.buildCSSClass=function(){return"vss-loading vss-hide"},e.open=function(t){this.loadingEl&&(100===t?(this.loadingText.innerHTML="播放中...",this.hide()):99===t?(this.hide(),this.loadingText.innerHTML="已停止"):0===t?(this.loadingText.innerHTML="连接中...",this.show()):1===t?(this.loadingText.innerHTML="视频加载中...",this.hide()):2===t?(this.loadingText.innerHTML="状态为2",this.show()):(this.loadingText.innerHTML="未知状态:"+t,this.show()))},e.show=function(){this.loadingEl.classList.remove("vss-hide"),this.loadingEl.classList.add("vss-show")},e.hide=function(){this.loadingEl.classList.remove("vss-show"),this.loadingEl.classList.add("vss-hide")},t}(),ce=function(){function t(t,e){this.canvas=this.createEl(),e.appendChild(this.canvas)}return t.prototype.createEl=function(t,e,i){return void 0===e&&(e={}),void 0===i&&(i={}),"canvas",Zt("canvas",e=Gt({className:"vss-canvas"},e),i)},t}(),pe=function(t,e){var i=this;this.Timer=null,this.messageBoxDom=Zt("div",{className:"vss-message-box"}),e.appendChild(this.messageBoxDom),t.on("message",(function(t){r.setMessage(t),i.messageBoxDom.appendChild(Zt("div",{className:"vss-message-item"},{},"[播放器]:"+t.name))})),t.on("play",(function(t){i.Timer=setTimeout((function(){i.messageBoxDom.classList.add("vss-message-hide"),clearTimeout(i.Timer)}),5e3)}))},me=function(){function t(t,e){var i=this;this.Timer=null,this.exportMessageDom=Zt("div",{className:"vss-export-message-box"}),e.appendChild(this.exportMessageDom),this.messageLists=[],this.index=0,t.on("exportMessage",(function(t){i.messageLists[i.index]=Zt("div",{className:"vss-export-message-item"},{},""+t.message),i.exportMessageDom.appendChild(i.messageLists[i.index]),t.duration>0&&i.removeChildDom(i.index,t.duration),t.callback(i.index),i.index++})),t.on("clearMessage",(function(t){t>=0?i.messageLists[t]&&(i.exportMessageDom.removeChild(i.messageLists[t]),i.messageLists.splice(t,1)):(i.exportMessageDom.innerHTML="",i.messageLists=[])}))}return t.prototype.removeChildDom=function(t,e){var i=this;setTimeout((function(){i.messageLists[t]&&(i.exportMessageDom.removeChild(i.messageLists[t]),i.messageLists.splice(t,1))}),e)},t}(),ge=function(){function t(t,e){var i=this;this.Timer=null,this.osdMessageDom=Zt("div",{className:"vss-osd-message-box vss-osd-message-hide"}),e.appendChild(this.osdMessageDom),this.messageLists=[],this.index=0,t.on("osdMessage",(function(t,e,r){return t instanceof Array&&(!!t.length&&(e=e||"lefttop",i.osdMessageDom.innerHTML="",i.osdMessageDom.classList.remove("pos_lefttop"),i.osdMessageDom.classList.remove("pos_leftbottom"),i.osdMessageDom.classList.remove("pos_righttop"),i.osdMessageDom.classList.remove("pos_rightbottom"),i.osdMessageDom.classList.remove("pos_center"),t.forEach((function(t,e){i.osdMessageDom.appendChild(Zt("div",{className:"vss-osd-message-item"},{"data-index":e},t.name+":"+t.value))})),i.osdMessageDom.classList.add("pos_"+e),void i.osdMessageDom.classList.remove("vss-osd-message-hide")))}))}return t.prototype.removeChildDom=function(t){var e=this;setTimeout((function(){e.osdMessageDom.classList.add("vss-osd-message-hide"),setTimeout((function(){e.osdMessageDom.innerHTML=""}),200)}),t)},t}(),ve=function(){function t(t,e,i){var r=this,n=i.height,o=i.isFill;if(!e)return"";n?(e.style.position="relative",e.style.backgroundColor="#000000",e.style.overflow="hidden",e.style.paddingTop="56.25%"):(e.style.position="relative",e.style.backgroundColor="#000000",e.style.width="100%",e.style.height="100%",e.style.overflow="hidden"),e.classList.add("vss-shade"),e.classList.add("vss-player"),this.elDom=e,this.isFill=o,this.videoEl=null,this.videoEl=document.createElement("video"),this.videoEl.style.width="100%",this.videoEl.style.height="100%",this.videoEl.style.position="absolute",this.videoEl.style.top="0",this.videoEl.style.left="0",this.videoEl.style.background="#000000",this.elDom.appendChild(this.videoEl),this.fill(),this.InitMessage=new pe(t,e),this.ExportMessage=new me(t,e),this.OsdMessage=new ge(t,e),t.on("play",(function(){})),t.on("setfill",(function(){r.isFill=!0,r.fill()}))}return t.prototype.fill=function(){this.videoEl&&this.isFill?this.videoEl.style.objectFit="fill":this.videoEl.style.objectFit=""},t}(),ye=function(){function t(t,e,i){var r=this;return this.isBigButton=i,i?(this.bigPlayBox=this.createEl("div"),e.appendChild(this.bigPlayBox),this.bigPlayBox.onclick=function(){t.play("",!0),r.hide()},this.bigPlayBox):null}var e=t.prototype;return e.createEl=function(t,e,i){void 0===e&&(e={}),void 0===i&&(i={});var r=Zt("div",e=Gt({className:"vss-big-play-button vss-pointer"},e),i=Gt({type:"button"},i));return this.iconEl=Zt("span",{className:"vss-big-play-icon vssfont vss-play"}),r.appendChild(this.iconEl),r},e.show=function(){this.isBigButton&&(this.bigPlayBox.classList.remove("vss-hide"),this.bigPlayBox.classList.add("vss-show"))},e.hide=function(){this.isBigButton&&(this.bigPlayBox.classList.remove("vss-show"),this.bigPlayBox.classList.add("vss-hide"))},t}(),be=function(){function t(t,e){var i=this;this.loadingLogoDom=this.createEl(),e.appendChild(this.loadingLogoDom),this.boxDom=e,t.on("status",(function(t){i.open(t)}))}var e=t.prototype;return e.createEl=function(){var t=Zt("div",{className:"vss-mask vss-show"});return this.center=Zt("div",{className:"vss-mask-center"}),this.loadingLogoImg=Zt("img",{className:"vss-loading-logo-img"},{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANkAAAAnCAMAAAC1+B0tAAAC7lBMVEUAAAD/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////jtXoAAAA+XRSTlMAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE5PUFFSU1RVVldYWVpbXF1eX2Bh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"}),this.loadingLogoText=Zt("span",{className:"vss-loading-logo-text"},{},"成都视开信息科技"),this.center.appendChild(this.loadingLogoImg),this.center.appendChild(this.loadingLogoText),t.appendChild(this.center),t},e.open=function(t){this.loadingLogoDom&&99===t&&this.hide()},e.show=function(){this.loadingLogoDom.classList.remove("vss-hide"),this.loadingLogoDom.classList.add("vss-show")},e.hide=function(){this.loadingLogoDom.classList.remove("vss-show"),this.loadingLogoDom.classList.add("vss-hide")},t}(),_e=function(){function t(){}var e=t.prototype;return e.on=function(t,e,i){var r=this.e||(this.e={});return(r[t]||(r[t]=[])).push({fn:e,ctx:i}),this},e.once=function(t,e,i){var r=this;function n(){r.off(t,n);for(var o=arguments.length,a=new Array(o),s=0;s<o;s++)a[s]=arguments[s];e.apply(i,a)}return n._=e,this.on(t,n,i)},e.emit=function(t){for(var e=((this.e||(this.e={}))[t]||[]).slice(),i=arguments.length,r=new Array(i>1?i-1:0),n=1;n<i;n++)r[n-1]=arguments[n];for(var o=0;o<e.length;o+=1)e[o].fn.apply(e[o].ctx,r);return this},e.off=function(t,e){var i=this.e||(this.e={}),r=i[t],n=[];if(r&&e)for(var o=0,a=r.length;o<a;o+=1)r[o].fn!==e&&r[o].fn._!==e&&n.push(r[o]);return n.length?i[t]=n:delete i[t],this},t}();i(247),i(252),i(254),i(256);function we(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var Ae=function(){function t(t,e){if(this.TAG="WebRtcPlayer",this._type="WebRtcPlayer",this._emitter=new f.a,this.pc=null,this._mediaElement=null,this.url=t,this.autoplay=!!e.autoplay||!1,this.typeCallback=e.typeCallback,this.statusCallback=e.statusCallback,!t.match(/^webrtc?:\/\/||^webrtcs?:\/\//))throw"JSWebrtc just work with webrtc";this.timer=null,this.sendChannel=null,this._mediaInfo=null,this._statisticsInfo=null,this.isPlaying=!1,this._isLoad=!1,this._isDestroy=!1,this.e={onvLoadedMetadata:this._onvLoadedMetadata.bind(this),onvSeeking:this._onvSeeking.bind(this),onvCanPlay:this._onvCanPlay.bind(this),onvPlay:this._onvPlay.bind(this),onvStalled:this._onvStalled.bind(this),onvProgress:this._onvProgress.bind(this),onvWaiting:this._onvWaiting.bind(this),onvPlaying:this._onvPlaying.bind(this)},this.attachMediaElement(e.mediaElement,t)}var e,i,n,o=t.prototype;return o.on=function(t,e){var i=this;t===g.MEDIA_INFO?null!=this._mediaInfo&&Promise.resolve().then((function(){i._emitter.emit(g.MEDIA_INFO,i.mediaInfo)})):t===g.STATISTICS_INFO&&null!=this._statisticsInfo&&Promise.resolve().then((function(){i._emitter.emit(g.STATISTICS_INFO,i.statisticsInfo)})),this._emitter.addListener(t,e)},o.off=function(t,e){this._emitter.removeListener(t,e)},o.attachMediaElement=function(t,e){this._mediaElement=t,this._mediaElement=t,t.addEventListener("loadedmetadata",this.e.onvLoadedMetadata),t.addEventListener("seeking",this.e.onvSeeking),t.addEventListener("canplay",this.e.onvCanPlay),t.addEventListener("play",this.e.onvPlay),t.addEventListener("stalled",this.e.onvStalled),t.addEventListener("progress",this.e.onvProgress),t.addEventListener("waiting",this.e.onvWaiting),t.addEventListener("playing",this.e.onvPlaying),this.typeCallback(!0),this.load(e)},o.load=function(t){var e=this;this.statusCallback(0),this.pc&&this.pc.close(),this.pc=new RTCPeerConnection(null),this.pc.ontrack=function(t){e._mediaElement.srcObject=t.streams[0]},this.pc.addTransceiver("audio",{direction:"recvonly"}),this.pc.addTransceiver("video",{direction:"recvonly"}),this.sendChannel=this.pc.createDataChannel("keepalive"),this.sendChannel.onclose=this.onChannelClose.bind(this),this.sendChannel.onopen=this.onChannelOpen.bind(this),this.sendChannel.onmessage=this.onChannelMessage.bind(this),this.pc.createOffer({offerToReceiveVideo:!0,offerToReceiveAudio:!0}).then((function(t){return e.pc.setLocalDescription(t).then((function(){return t}))})).then((function(i){return new Promise((function(r,n){e.HttpPost(t,window.btoa(i.sdp)).then((function(t){r(t)}),(function(t){n(t)}))}))})).then((function(t){return e.pc.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:window.atob(t)}))})).then((function(){e._isLoad=!0})).catch((function(t){throw t}))},o.onChannelClose=function(){var t=this;clearInterval(this.timer),this._isDestroy||r.sleep(3e3).then((function(){t.load(t.url)}))},o.onChannelOpen=function(){var t=this;this.timer=setInterval((function(){t.sendChannel&&t.sendChannel.send("ping")}),3e3)},o.onChannelMessage=function(){},o.HttpPost=function(t,e){return new Promise((function(i,r){var n=new XMLHttpRequest;n.onreadystatechange=function(){if(4===n.readyState&&n.status>=200&&n.status<300){var t=n.responseText;n.onreadystatechange=new Function,n=null,i(t)}},n.open("POST",t.replace("webrtc","http"),!0),n.send(e)}))},o._onvLoadedMetadata=function(){},o._onvSeeking=function(){},o._onvCanPlay=function(){this.autoplay&&this._mediaElement.play()},o._onvPlay=function(){this.isPlaying=!0,this.statusCallback(100)},o._onvStalled=function(){},o._onvProgress=function(){},o._onvWaiting=function(){},o._onvPlaying=function(){},o.unload=function(){},o.play=function(){this.isPlaying||(this._mediaElement.play(),this.isPlaying=!0)},o.pause=function(){this.isPlaying&&(this._mediaElement.pause(),this.isPlaying=!1)},o.resume=function(){},o.openAudio=function(){},o.closeAudio=function(){},o.seek=function(){},o.stop=function(){this.destroy()},o.destroy=function(){this._isDestroy=!0,this.pc&&(this.pc.close(),this.pc=null),this._mediaElement&&(this._mediaElement=null),this.sendChannel&&(this.sendChannel=null),this.autoplay=null,this.typeCallback=null,this.statusCallback=null,this.isPlaying=!1,this._isLoad=!1,clearInterval(this.timer)},e=t,(i=[{key:"isLoad",get:function(){return this._isLoad}}])&&we(e.prototype,i),n&&we(e,n),Object.defineProperty(e,"prototype",{writable:!1}),t}(),Me=i(24),Ee=i.n(Me);function Se(t){if(void 0===t)throw new ReferenceError(Te(765,"n[BW"));return t}function ke(t,e){return(ke=Object[Te(550,"e54v")]||function(t,e){return t.__proto__=e,t})(t,e)}function Te(t,e){var i=Ie();return Te=function(e,r){var n=i[e-=469];if(void 0===Te.ILWeBe){var o=function(t){for(var e,i,r="",n="",o=0,a=0;i=t.charAt(a++);~i&&(e=o%4?64*e+i:i,o++%4)?r+=String.fromCharCode(255&e>>(-2*o&6)):0)i="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(i);for(var s=0,h=r.length;s<h;s++)n+="%"+("00"+r.charCodeAt(s).toString(16)).slice(-2);return decodeURIComponent(n)},a=function(t,e){var i,r,n=[],a=0,s="";for(t=o(t),r=0;r<256;r++)n[r]=r;for(r=0;r<256;r++)a=(a+n[r]+e.charCodeAt(r%e.length))%256,i=n[r],n[r]=n[a],n[a]=i;r=0,a=0;for(var h=0;h<t.length;h++)a=(a+n[r=(r+1)%256])%256,i=n[r],n[r]=n[a],n[a]=i,s+=String.fromCharCode(t.charCodeAt(h)^n[(n[r]+n[a])%256]);return s};Te.yLFdNq=a,t=arguments,Te.ILWeBe=!0}var s=i[0],h=e+s,u=t[h];return u?n=u:(void 0===Te.CeQIkv&&(Te.CeQIkv=!0),n=Te.yLFdNq(n,r),t[h]=n),n},Te(t,e)}!function(t,e){for(var i=Te,r=t();;)try{if(264984===-parseInt(i(485,"GV(q"))/1+parseInt(i(634,"m23]"))/2*(-parseInt(i(666,"4V[I"))/3)+parseInt(i(817,"n[BW"))/4*(parseInt(i(783,"gN$k"))/5)+parseInt(i(891,"GV(q"))/6*(-parseInt(i(846,"WqFg"))/7)+-parseInt(i(874,"n[BW"))/8*(-parseInt(i(596,"e^)J"))/9)+-parseInt(i(728,"C)3J"))/10*(-parseInt(i(885,"e54v"))/11)+parseInt(i(628,"4V[I"))/12)break;r.push(r.shift())}catch(t){r.push(r.shift())}}(Ie);var Re=function(t){var e,i,n,o=Te;function a(e,i,r,n){var o,a=Te;void 0===n&&(n={}),o=t[a(518,"JAzB")](this)||this;var s=n,h=s.cbUserPtr,u=s[a(780,"0R(A")],l=s[a(679,"5n5*")],d=s[a(770,"JAzB")],f=void 0!==d&&d,c=s[a(695,"c#1J")],p=void 0!==c&&c,m=s[a(827,"1i%J")],g=void 0!==m&&m,v=s[a(700,"4V[I")],y=void 0!==v&&v,b=s.playbackRecord,_=void 0!==b&&b;if(o[a(743,"e54v")]=null,o[a(590,"FHP5")]=e,o[a(580,"gN$k")]=r,o[a(696,"63En")]=h,o[a(534,"e^)J")]=p,o[a(630,"9D1T")]=f,o[a(514,"cdCG")]=y,o[a(655,"Wnj0")]=a(642,"nsHP"),o[a(512,"7So$")]="2.0.1",(u===a(832,"HW@j")||u===a(825,"uC!F"))&&(o[a(494,"cdCG")]=u),!Vt.supportMSEH264Playback()&&(o[a(654,"[uf*")]=a(482,"#8CZ")),o.internalTriggerPlay=!0,o[a(620,"FHP5")]=g,o[a(681,"4V[I")]=_,o[a(470,"5PPf")]="",o[a(551,"GV(q")]=0,o[a(740,"ML(c")]=0,o[a(549,"#oec")]=!1,o[a(513,"HW@j")]=!1,o[a(801,"4V[I")]=!1,o[a(646,"c#1J")]=!1,o[a(849,"4fK)")]=!1,o[a(592,"e%y]")]=0,o[a(829,"HW@j")]=!1,!i)return Se(o);if(o[a(480,"8@RW")]=!!l,o.enableAudio=!!l,o[a(838,"eoN(")]=document[a(548,"UstW")](i),!o[a(723,"c#1J")])return Se(o);var w={};w[a(671,"wo*4")]=p,w.isFill=g,o[a(823,"m23]")]=new ve(Se(o),o[a(673,"4V[I")],w);var A={};A[a(747,"c#1J")]=a(577,"l7ku")+"2.0.1",o[a(562,"reFT")](a(627,"7So$"),A);var M={};M[a(532,"lmfv")]=a(875,"o6Lm"),o[a(861,"o6Lm")]("message",M),o.h5Video=o[a(867,"HW@j")]=o[a(877,"4fK)")][a(776,"RgFV")],o.bigPlayButton=new ye(Se(o),o[a(673,"4V[I")],f),o.Loading=new fe(Se(o),o[a(766,"gN$k")]),o[a(501,"#oec")]=new ce(Se(o),o[a(503,"n%B4")]),o[a(744,"63En")]=new de(Se(o),o.boxDom),o[a(662,"7So$")]=new be(Se(o),o[a(503,"n%B4")]);var E={};return E[a(835,"RgFV")]=a(537,"m23]"),o[a(697,"8@RW")](a(578,"&XMC"),E),o}i=t,(e=a)[(n=Te)(736,"0R(A")]=Object.create(i[n(892,"5PPf")]),e[n(644,"e54v")][n(576,"n%B4")]=e,ke(e,i);var s=a.prototype;return s[o(657,"n%B4")]=function(){},s[o(839,"9D1T")]=function(){},s[o(535,"HkRl")]=function(t){},s[o(860,"ML(c")]=function(t){for(var e=o,i=t[e(896,"5n5*")].length-1;i>=0;i--)this[e(616,"UstW")](t[e(515,"Wnj0")][i]),t.removeChild(t[e(541,"y(@t")][i])},s.destroy=function(){var t=o;this[t(553,"0R(A")](),this[t(638,"C)3J")]&&this[t(886,"L!7]")](this[t(601,"5n5*")]),this.playerInstance&&(this[t(597,"5n5*")].stop(),this[t(565,"uC!F")].destroy(),delete this.playerInstance,this[t(483,"#8CZ")]=null)},s[o(588,"0R(A")]=function(t){var e=o;if(this.initH5Flag){if(t===this.currentH5Status)return}else this[e(852,"#oec")]=!0;this[e(847,"GV(q")]=t,t?this[e(649,"HW@j")][e(581,"5n5*")]&&this[e(572,"#8CZ")][e(496,"y(@t")](this[e(582,"l7ku")].canvas):this[e(865,"c#1J")]&&this.boxDom[e(676,"lmfv")](this[e(502,"e54v")])},s[o(641,"RgFV")]=function(t,e){t[o(697,"8@RW")]("status",e)},s[o(499,"4fK)")]=function(t){this.emit("status",t)},s[o(612,"HkRl")]=function(t,e,i){var r=o;t[r(772,"gN$k")](!i),r(831,"8@RW")},s[o(883,"nsHP")]=function(t,e,i,r){var n=o;t.VideoCodec=e,t[n(670,"63En")]=i,t[n(525,"4fK)")]=r;var a={};a.code=e,a[n(843,"RgFV")]=i,a[n(678,"nsHP")]=r,t[n(660,"Gd!C")](n(530,"lmfv"),a),t[n(701,"5n5*")](t,100)},s._onUpdatePlayTime=function(t,e,i,r){var n=o;if(e!=n(556,"63En")){if(!t[n(558,"m23]")])if(t.showTimeLabel=!0,r!==1/0&&r>0){t[n(490,"GV(q")]();var a={};a[n(888,"8@RW")]=e,a[n(587,"8@RW")]=i,a[n(481,"UstW")]=r,t[n(787,"n[BW")]("timeSchedule",a)}else t.live();if(r!==1/0&&!(r<1)&&t[n(703,"e^)J")]&&r>0){var s={};if(s[n(691,"9D1T")]=e,s.currentTime=i,s.duration=r,t[n(564,"&XMC")]("timeSchedule",s),t[n(675,"e54v")]&&!this[n(474,"[uf*")]){t[n(779,"y(@t")]("playbackTime",parseInt(i));var h=i+1;if(!this.callbackEnd&&h>=r){t.callbackFunc(n(791,"&XMC"),0);var u={};u[n(594,"#8CZ")]=e,u[n(782,"1i%J")]=r,u.duration=r,t[n(637,"e%y]")](n(707,"4V[I"),u),this[n(704,"#8CZ")]=!0}}}}else{var l="20"+i[0]+"-";i[1]<10&&(l+="0"),l+=i[1],l+="-",i[2]<10&&(l+="0"),l+=i[2],l+=" ",i[3]<10&&(l+="0"),l+=i[3],l+=":",i[4]<10&&(l+="0"),l+=i[4],l+=":",i[5]<10&&(l+="0"),l+=i[5],l=(l=(l+=".0")[n(667,"FHP5")](0,19))[n(636,"4fK)")](/-/g,"/");var d=new Date(l)[n(653,"0R(A")]();t[n(752,"lmfv")]("playbackTime",parseInt(d))}},s[o(871,"HW@j")]=function(){var t=o;this[t(520,"RgFV")](t(484,"o6Lm")),this[t(529,"o6Lm")][t(725,"doAq")]()},s.endLoding=function(){var t=o;this[t(533,"m23]")](t(555,"RgFV")),this[t(472,"#8CZ")].hide()},s.getTermOfVa_lid_ity=function(){var t,e,i,r=o;return Ut()-Ut(this.d_a_ecr_cyp_t({data:"1af59aebd420060814a44411b4590e87"}[r(552,"5n5*")]))>=(t=2,e=10,i=Ft,3*30*Math[i(189,"Fpx6")](t,3)*30*2*60*Math[i(195,"thn2")](e,3))},s[o(610,"n%B4")]=function(t,e,i){var n=o,a=this;if(void 0===e&&(e=!0),void 0===i&&(i=0),!t&&(t=this[n(686,"9D1T")]),!this[n(510,"8@RW")])return!1;if(t){if(!e)return!1;if(Lt(i)){var s=function(t){var e=Ft;if(!t)return null;var i=document[e(206,"&vJN")]("a");i[e(202,"wid[")]=t;var r={};return r.href=i[e(205,"!rup")],r[e(181,"Z1qM")]=i[e(192,"Hbpw")]||i[e(215,"MfES")]+"//"+i[e(184,"wid[")],r.protocol=i[e(219,"u*hT")],r[e(211,"yeBN")]=i[e(179,"fRV(")],r.hostname=i.hostname,r[e(223,"!Kb8")]=i[e(190,"Hbpw")],r[e(198,"MfES")]=i[e(218,"Dw]6")],r[e(204,"kyP(")]=i[e(208,"R)EY")],r[e(176,"EwYr")]=i[e(217,"&3*4")],r}(t);if([n(680,"e%y]"),n(519,"gN$k"),n(709,"4V[I"),n(757,"^yX["),"wss:",n(881,"uC!F"),n(647,"UstW")][n(748,"HW@j")]((function(t){return t===s[n(476,"JAzB")]}))){this[n(469,"n%B4")]=t,this.emit(n(712,"5PPf")),this.callbackFunc(n(729,"o6Lm")),this[n(717,"gN$k")]=i;var h={};h[n(820,"e54v")]=n(668,"y(@t"),this[n(506,"^yX[")](n(600,"c#1J"),h),this._onConnectStatus(this,99),r[n(781,"8@RW")](!0);var u=!1,l=!1,d=!1,f=!1,c=!1,p=this.url[n(880,"m23]")](this.url[n(760,"^p@k")](".")+1);if(p){var m=p.toLowerCase();m[n(650,"1i%J")]("m3u8")>-1?u=!0:m[n(621,"JAzB")](n(768,"#8CZ"))>-1?l=!0:m[n(857,"doAq")]("mp4")>-1&&(d=!0),u||l||d||f||(this[n(686,"9D1T")][n(848,"Gd!C")](".flv")>-1?l=!0:this[n(570,"1181")][n(542,"&XMC")](n(856,"^yX["))>-1?u=!0:this[n(797,"n[BW")][n(674,"C)3J")](".mp4")>-1?d=!0:l=!0)}else l=!0;"rtsp:"===s.protocol&&(u=!1,l=!1,d=!1,f=!0),this[n(487,"Wnj0")]=!1;var v=!1;if(c="webrtc:"===s.protocol||"webrtcs:"===s.protocol)null==this[n(643,"nsHP")]&&(this[n(727,"cdCG")]=new Ae(this[n(818,"o6Lm")],{autoplay:!0,mediaElement:this[n(504,"o6Lm")],typeCallback:this.changeToH5Video[n(771,"e^)J")](this),statusCallback:this[n(478,"HW@j")][n(665,"reFT")](this)}));else if(u)this[n(703,"e^)J")]=!1,(null==this[n(799,"8@RW")]||!this[n(473,"4V[I")][n(739,"4V[I")]())&&this[n(563,"cdCG")](),this.isHLS=!1,null==this[n(527,"doAq")]&&(this.playerInstance=new xt("m3u8",this[n(544,"Gd!C")],this[n(603,"RgFV")][n(796,"e^)J")],this[n(693,"1i%J")],this[n(731,"5n5*")],this[n(571,"HkRl")],this._onConnectStatus,this,null)),v=this.playerInstance.play(this[n(686,"9D1T")],this.seekTimeSecs),this[n(714,"n%B4")]=this.defaultAudioStatus,!this.internalTriggerPlay&&this[n(863,"cdCG")]&&this[n(716,"gN$k")](),this[n(517,"#oec")]=0;else if(d){if(this[n(853,"C)3J")](!0),this.showTimeLabel=!1,(null==this[n(805,"n%B4")]||!this[n(887,"NMpa")][n(591,"JAzB")]())&&this[n(493,"WqFg")](),this.isHLS=!1,null==this[n(774,"Gd!C")]){var y={};y[n(606,"L!7]")]=n(755,"&XMC"),y[n(811,"reFT")]=t,this[n(800,"GV(q")]=new Ot(y,this.h5Video,this[n(730,"nsHP")],this)}this[n(759,"Wnj0")][n(557,"[uf*")](),this.enableAudio=this[n(516,"5PPf")],!this[n(633,"^p@k")]&&this.enableAudio?this[n(819,"^p@k")]():this[n(764,"Wnj0")](),v=!0}else l?(this[n(669,"Wnj0")]=!1,this[n(814,"HW@j")](),this[n(573,"WqFg")]=!1,null==this.playerInstance&&(this[n(687,"C)3J")]=new xt(n(560,"reFT"),this.h5Video,this[n(893,"JAzB")][n(859,"[uf*")],this[n(497,"e^)J")],this[n(625,"c#1J")],this._onUpdatePlayTime,this[n(639,"o6Lm")],this,this._onGetVideoInfoCallback)),v=this[n(507,"gN$k")][n(526,"doAq")](this[n(713,"HkRl")],0),this[n(489,"lmfv")]=this.defaultAudioStatus,!this[n(622,"9D1T")]&&this.enableAudio&&this[n(758,"8@RW")]()):f&&(this[n(664,"n%B4")]=!1,this[n(890,"5n5*")](),this[n(652,"#oec")]=!1,null==this[n(816,"eoN(")]&&(this.playerInstance=new xt(n(619,"[uf*"),this[n(640,"RgFV")],this.screenCanvas[n(842,"m23]")],this[n(822,"Gd!C")],this[n(690,"e%y]")],this[n(724,"uC!F")],this[n(813,"1i%J")],this,this[n(656,"y(@t")])),v=this[n(477,"m23]")][n(720,"m23]")](this[n(705,"C)3J")],0),this[n(834,"e54v")]=this.defaultAudioStatus,!this[n(498,"4fK)")]&&this[n(714,"n%B4")]&&this[n(858,"n[BW")]());if(c)this[n(805,"n%B4")]&&this[n(618,"^yX[")][n(561,"y(@t")]&&(this[n(756,"e^)J")]("play"),this[n(879,"e%y]")].play());else{if(!this[n(559,"wo*4")])return this[n(558,"m23]")]=!1,this[n(492,"uC!F")](),this[n(631,"l7ku")]=!1,null==this[n(721,"WqFg")]&&(this.playerInstance=new xt(n(742,"RgFV"),this[n(895,"n[BW")],this[n(699,"n[BW")][n(733,"4V[I")],this.decodeType,this._onChangeTypeCallback,this[n(754,"FHP5")],this[n(706,"reFT")],this)),v=this[n(840,"reFT")].play(this.url,0),this[n(623,"RgFV")]=this[n(495,"o6Lm")],!this[n(613,"L!7]")]&&this[n(794,"GV(q")]&&this[n(868,"ML(c")](),!1;this.playerInstance.on(n(528,"Wnj0"),(function(t){var e=n;if(a[e(788,"uC!F")]){if(0==a[e(614,"5n5*")])return void(a[e(815,"n[BW")]=t[e(761,"o6Lm")]);a[e(862,"ML(c")]!=t.decodedFrames?a[e(862,"ML(c")]=t.decodedFrames:(a[e(566,"1i%J")]=0,a.playerInstance&&(a[e(483,"#8CZ")][e(629,"gN$k")](),a[e(850,"1i%J")]=null,a[e(648,"FHP5")](a[e(659,"uC!F")],1,0)))}a[e(746,"FHP5")](g[e(689,"wo*4")],t)}))}return v}}}},s[o(854,"eoN(")]=function(){var t=o;if(this[t(723,"c#1J")])return this.callbackFunc("stop"),this[t(704,"#8CZ")]=!1,this._onConnectStatus(this,99),!!this[t(683,"L!7]")]&&(this[t(777,"5PPf")](),this[t(737,"e^)J")][t(553,"0R(A")](),this.showTimeLabel=!1,!0)},s[o(841,"Gd!C")]=function(){var t=o;this[t(675,"e54v")](t(615,"#oec")),this[t(816,"eoN(")]&&this[t(602,"1181")][t(569,"m23]")]()},s[o(609,"y(@t")]=function(){var t=o;this[t(522,"reFT")](t(598,"#8CZ")),this[t(809,"n[BW")]&&this[t(547,"&XMC")].continuePlay()},s[o(624,"9D1T")]=function(){var t=o;this[t(479,"ML(c")](t(719,"HW@j")),this[t(539,"5PPf")]&&this[t(805,"n%B4")][t(872,"doAq")]()},s[o(792,"5n5*")]=function(t,e){var i=o;this[i(471,"[uf*")]&&this[i(597,"5n5*")][i(767,"l7ku")](t,e)},s.seekToSecs=function(t){var e=o;this[e(505,"9D1T")]&&this[e(605,"l7ku")][e(567,"n[BW")](t,0)},s[o(894,"uC!F")]=function(t){var e=o;this[e(505,"9D1T")]&&this[e(726,"63En")].seek(t,1)},s[o(583,"^yX[")]=function(t,e){var i=o;this.playerInstance&&this[i(687,"C)3J")].setTrack(t,e)},s.openAudio=function(){var t=o;return this[t(675,"e54v")](t(568,"1181")),this[t(737,"e^)J")]&&(this[t(897,"HkRl")][t(716,"gN$k")]()?(r[t(708,"0R(A")](!0),this[t(807,"8@RW")]=!0):this[t(714,"n%B4")]=!1),this[t(746,"FHP5")]("audio",this[t(798,"nsHP")]),this[t(715,"UstW")]},s[o(864,"8@RW")]=function(){var t=o;if(this[t(734,"9D1T")](t(845,"c#1J")),this[t(726,"63En")]){if(!this[t(837,"L!7]")])return!0;this[t(645,"o6Lm")][t(826,"4V[I")]()?this[t(531,"ML(c")]=!1:this[t(688,"l7ku")]=!0}return this.emit(t(870,"doAq"),this[t(828,"JAzB")]),!this[t(778,"eoN(")]},s[o(810,"eoN(")]=function(t){var e=o;return null!=this[e(816,"eoN(")]&&(t?this[e(507,"gN$k")][e(672,"e^)J")]():this[e(651,"4fK)")][e(824,"^yX[")]())},s[o(769,"y(@t")]=function(){return this[o(836,"lmfv")]},s.canvasFullscreen=function(){var t=o,e=this[t(869,"4fK)")][t(692,"8@RW")];e[t(710,"wo*4")]?e[t(488,"JAzB")]():e.webkitRequestFullScreen?e[t(607,"n[BW")]():e[t(889,"#8CZ")]?e[t(889,"#8CZ")]():e[t(751,"^p@k")]&&e[t(750,"Wnj0")]()},s[o(685,"&XMC")]=function(){var t=o;document[t(635,"e54v")]?document[t(806,"reFT")]():document[t(611,"&XMC")]?document.webkitExitFullscreen():document[t(491,"cdCG")]?document.mozCancelFullScreen():document[t(873,"&XMC")]&&document[t(523,"c#1J")]()},s.fullscreen=function(t){var e=o;if(t){if(!this[e(508,"JAzB")])return this[e(585,"8@RW")](),this[e(775,"7So$")]=!0,!0}else if(this.fullScreenFlag)return this[e(599,"63En")](),this.fullScreenFlag=!1,!0},s[o(833,"^p@k")]=function(){var t=o;window[t(538,"4fK)")]=Bt.VSSModule;var e=new(function(){var e=t;function i(){var t=Te;this[t(575,"L!7]")]=null,this[t(663,"n[BW")]=null,this[t(632,"gN$k")]=null,this[t(500,"gN$k")]=null}var r=i[e(855,"e^)J")];return r[e(595,"l7ku")]=function(){var t=e,i=this;Object(Bt.VSSLoadWasmModule)(),window.vssPlayerModule[t(753,"Gd!C")]=function(){var e=t;window[e(786,"&XMC")]=!0,i[e(711,"63En")]=window[e(844,"[uf*")][e(536,"C)3J")](e(593,"o6Lm"),e(763,"m23]")),i.deinitModule=window[e(793,"8@RW")][e(540,"gN$k")](e(749,"1i%J"),"number"),i[e(722,"doAq")]=window[e(795,"1181")][e(745,"l7ku")](e(884,"8@RW"),e(808,"c#1J"),["number",e(785,"[uf*"),e(738,"HkRl"),e(574,"e54v"),e(521,"cdCG")]),i.initModule(),i.yuvData=window.vssPlayerModule._malloc(8294400)}},r.destroy=function(){var t=e;window[t(579,"HkRl")][t(617,"RgFV")](this[t(773,"UstW")])},i}());e.loadWebAssembly(),window[t(543,"m23]")]=e},s.d_a_ecr_cyp_t=function(t){var e=o,i=Ee.a[e(803,"y(@t")][e(812,"[uf*")][e(830,"1i%J")](t),r=Ee.a[e(586,"e^)J")][e(804,"GV(q")][e(661,"5PPf")](i);return Ee.a[e(524,"e54v")][e(682,"5PPf")](r,Object({words:Object({0:842019377,1:842019378,2:842019379,3:842019380}),sigBytes:16}),{iv:Object({words:Object({0:842019377,1:842019378,2:842019379,3:842019380}),sigBytes:16}),mode:Ee.a.mode[e(545,"cdCG")],padding:Ee.a[e(475,"doAq")].Pkcs7})[e(735,"5PPf")](Ee.a[e(584,"5PPf")][e(511,"WqFg")])[e(741,"wo*4")]()},s[o(802,"^p@k")]=function(t){this.emit("exportMessage",t)},s.$clearMessage=function(t){var e=o;this[e(899,"WqFg")](e(878,"JAzB"),t)},s[o(784,"63En")]=function(t,e,i){void 0===e&&(e="lefttop"),void 0===i&&(i=0),this[o(554,"#8CZ")]("osdMessage",t,e,i)},a}(_e);function Ie(){var t=["W4DSW6tcQeNcRColWPmhmG","eSoiw8oMW587kW","W5tcOmkkzGhdOCkxx8oqW4hdKfhdRCk6W7BdRddcNZP4WODNWRpcJSojWOxdSSkv","ACkFrmkMn8kfCq","W60atmkuEZnFxmoy","CLaeWQ/dLmkkhmkwW5LkW5Pi","W44bb1tcVG","BmkcqCkXlmkmCSk0emkomq","W50reeJcVmkY","W6rseetcRhXTm8otW5JdUCoYFe4DWOi","W58DtW3dN8kssM/cKYVcKaDa","5Q6d5z6p5yMQ5AA05y+NW57dKCk9","dCkhqmksvtRcGq","D1OsWQ/dNSkHm8ksW5PzW5vp","nmodW7H0W4zVW4pcJCk+m3FdTa","txKVWPtdT8koW7NdItVdJSo4WOJdMSkt","qSo6ySo2ESka","W5ldTmozshHLWRS","5Pky5PwN5zU+5P6b5PAE5PYmWQ4/5Aw7WO7NJitLT5xKUytLNQJMNzBMLyNMN7lLHiZJG5e","vf9UWPTheCk0jCojW4/cPe1EC0RcPcZcVCk+WOHdiCkT","W7nHW7JcTMJcICoDWPGkomkKWOjYWOL5tvVcUKqwqZRdVum0WQZdLg7cSei","WR1hhff3jNqp","W4Ljg8kZprJdRwBcUcCoprFcLCoj","rtxdT8oXWRnHW5rHiCowW5vjkSoL","W5b5W7VcVG","W550srPhhhhcR8o/xmoUBSkTAcJcQSk7jSkywq","D8oqW47cHa","WPNcLSkYWQSelYxcJG","WRFdT8okymovrSo7WR7cIa","jmomW69WW5fmW6xcN8kJjhhdOG","W5BdTmoEuvHPW5hcUmoMW5zPWP5t","WOmykfhcJ8odhq","EmorW5hcJCkXWQZdJ0JdTCoS","W5hcSSksWRxdU0dcTcxdOSkAuSkpWOXm","kh8BhrtdMKpdT2TDWR7dQSoo","k3FcPSk9","W4tcRtq","WPhdRmobCCovCCoTWQRcImo8","ESoWuLGOvZT7W5b2vmk7wh0","W790uIXla2m","WQ/dOSovEgzdW7qKW7yxWObbW73cGW","ACo9x00Vrbf+W6zSuq","W58vbW","j8oDW7jHW5TbW4NcKG","qCoJyCo8A8kauCoYpSo9W5JdU13cRG","Cmkyy8kSnSkUEmkZdCkZiSkay8oQ","W6errCkwwcDyxSoXWOtdNGm","W4bLW63cULNcGmokWRyBoCk/WRjIWPj2t0VcUW","cmoJm8kiW4ytmmk0","W4b0vtW","W4n3uJfhh03cPmo/xmojDCkIyq","WPpdKXynWOxcVmkqW7FcVSoKWOy","WP3cN8oIW5PdCadcQKCxemkx","WP1gkeNcP8kIW6ldSa","WPHodCkUrCo/rmkuW4tcVCkm","bCokW6XGW5frW5lcUmk4pNZdGM5EW6VdPv8","xSkGWP3dVCoiCIXfu8kzW5q","W5JdGSk6WPewjGNcTq","fSkYB8opWPONymo5W7BdNCoiuCo7umksvhZcK8kK","W4NdUmonxW","iNpcUCkS","h8k4DSoJWP8Sv8oLW6RdVG","WOtdGHeEWOtcNmklW5lcOSoUWOJdRJRcVKJcKSkQWQi","WPJcMSoNWRpdR8oDWRGNWRdcL8kF","bmkhumkoudJcSmo2W5jd","Af0cWQ/dG8kkpSkBW6noW5jCWOxdImkSWOJdImkIfG","BL01WQxdN8kkoSkuW4nVW49AWPBdMa","aLhdPN3cMSkEbJFcRrjIye48faPWfW","W54FqelcO3ahtSoiW6yGzG","W6DaauXLnLW","W5pcScb7W7xcMq","WOJcKIewWPxcLCkq","AmkwW4xcUmolWOVcQc3cRmkeW6aUW4dcNa","ACkydY4","evldQxlcMSkEoX/cRaDUAX8q","mCoAW7f5W6DbW5tcM8kOpfBdVwXl","E0BcQNibuw8bWRC","W4zVW7pcN0pcGq","g27cQCoX","W7udlCkai0e8","BmktrCkOmCkUEG","gSkOyCoJWRGMBCoYW7/dUmoj","WPHhcmkUq8oqsmkBW6tcOa","WQpdOmodDCopxSo2WO/cMmo7WPhdPvOaW7ZcRKDI","W54zv0ZcKNCPsSo1W7uIzG","nmooW7f5","cuRdVhVdHq","W4HfimkoWRjeW5JcOdnrACk+","fCkOEmoUWP47","W4zSW5eZW7hdR8oFf8kqWQKjtq","f8kosmo3W5iQaSkMW43cMSkwW6blW6eeuq","W44Wba","v1OsWQ/dNSkSoSkEW5buW48","W58yaKq","W58yaKtcTmkLW6ZdNwrPWRONtgS","WOHBamk2tSoTu8kwW6lcOmk3WQf2a8k/","WQZdIbyBWPJcNSky","sCkRWO/dSmoiyHLzwmkEW6L4c8ozDq","W6CEsmkyvIn6qmotWPJdNW","vCkVWPhdUG","uSoUBmoPBmktE8o3c8o8W5FdTG","cmkhwSkgxcK","W47cSmkMWRZdULpcIs7dHCkCuSkcWOr5hu4","oZKrWQKR","5yIS5Awe5yYw5Bw35A6c5OUI","D0afWPRdNCkfjSksW4vXW5rFWPFdGCk7","WRFdQCoeBCoFqmolWQdcNSoRWPNdPgOr","aKNdUMRcJW","WONcL8oJWRddVCo2WPqRWRZcIa","W6bpmvNcVuDn","z8o8C8ovySktyCo5p8oEW5JdPLpcGmouaSkl","CNT+r0pcJrW","omkFvG","W7hdVCoitSoTDmoA","W7LnnexcOhPIkmomW4ddQ8o/Bu4","c8oZnCkSW54FmSk/bMNcMSkdCvC","W54uxvdcKNCPsSoQW7eJCmoe","W7Wqi3vZpeCJW4NdSSkKDrG5","W77dH8k/WO0BeapcUMu3","F8oyW4ZcGa","W4HkW6xdPq","W5z2wJW","W45kkmkUWR9bW5lcPri","tmoyW7GeW6DTWRJdP8kvWQVdSf7dLmoJes8","ESoWuLG","qSoNB8oYwSkBDCo5aCoOW5VdSfi","W6TkAxtdU8kgt8kByCoCWQXNW53cKG","W4nHW4S","WOpcJmogWRpdUmoC","W4bGW5qR","f8k0y8oP","W6XmpeG","W5xdVCoAq2L0W4JcS8oNW4fTWP5eAq","WQJcVSoFW7aAW5KxW6y5dWmykIStlW","WPHig1m","jqhdVxSjA0CzWQK","qCoUDCo2AW","pWpdTa","W77cSCkDWPNdRLBcNd/dTmk+x8kaWPz9g1ddJa","W5f0sWXnaa","j2NcH8kfWQq","W6eaoKDKiq","W5jch8kObHldIh/cUae","W5lcSdzmW67cHNdcOd16Eq","54Q95P2myq","W6rejK/cPg9o","W5FcRCkaWPZdSLpcHc7dO8kJxmkfWPPffW","aL/dPgFcNCknerRcMqzHzG","EmoyW5BcL8k0WPe","WOydpSoSW7tcK8ovW4xcOmkmgmoA","F8kqeG7cICkZlmkz","WQldQ8og","W4DHW6xcRu3cN8o4WOicmCkLWR5dWOnYvq","bCkmua","W4D1W7NcQuNcGSokWQmhmmkZ","W5HwW6VdU8oGjKPbmCoFBSkNWOW1qq","sSoLFmopWOSHtmom","W6tcQSkp","pSoCW410W4frW4m","tNaRWOBdHSkvW53dGHVdN8o6WPu","WRFdHGqsWRxcLCkCW7ZcS8oVWPpdNIdcPedcKG","W4DIqY0","WPKplCoTW4BcMmo0W6xcVCkjhmoetSktW44","wCkKqSkQwXFcOq","A8ovW5NcMmkWWPddQuldO8oRfrWeWQC","W4n3uJe","xConW6ucW5zYWPZdPSkEWR7dLuddRmoMdYNcUmo6xJy","f8kyFSo8W5O5iq","ECowW4dcPCk6WO8","oH3dUwWTBgOEWRuzWRnRW7xdTa","W5HhpSkhWRvlW7JcQHTszSkU","jH7dVW","WOumlCoWW7tcJ8oFW4RcVCkogmoht8kA","W49vbSk5","WPXihfpcGSosigtcSrVcTcnWWRRdKahdLSokg8owkgFcKq","W53dQwW","WONcKmoKWQJdSmowWO4QWONcL8kAsa","W4hcSZLg","W75en1FcRhXUpSowW4ddJmoKyKClWO/dU8kOf3u","W77cSCkDWO/dTLpcKYZdTmk6sSkrWOPQe1hdHCkQWQiVhq","W5jcaSk5orpdJwBcGbypmXZcLmoiWPxdRIOE","D8oyW4VcLCkrWOFdG0pdTmo6edqvWQntWPO","W50Dr1tcOW","hSoZlmkgW4qFhSk2bf7cSmktvfDT","W7rcpSkhWRu","FmkzbYpcNSkGbSkCW7b4mCo5WRHp","EmoOqfe","W6lcSmkmzwZdQmkgvG","pSobW7LWW4XTW4a","CCkuW5dcPmoCWPFcGc/cI8kcW6GNW4tcNmoSk1enW48","W45klCkaWRXaW7RcVHfnAa","ASkFW5FcTmodWPW","jCksy8omW5m/kSk0W4tcOSkCW7nCW4CauX3cTrddHNm","5PcU5Pwy5z2V5z6Z5lMh6iot5lMO56MG","W64dlmkak0K3","W6VcUCkgotqfWOKyW4yRWODDW5W","bvVdU3/cJCkdcW","ESktW4pcKCocWPJcMa","WPWtbmofW4i","geVdVK/cNSkyeW","W5JdQh9ezf/cRSo+WRL5WQpcMmoPW5rzvmoTe2e","b8o3BCoFwCk0qa","W6OnpLfhjL8GW47dQmkMDtiX","C1ygWQBdKmkhoG","whGNWPK","oIeBWOW0WQ4","WR/dIbK8WP7cNSkrW7BcTmo+WRldTqJcVLZcLq","W4mrgSklWRraW5q","W7rliSkHWR9lW5xcRHzqvmkPrX4KhW","AKv0WRm","E1XHWQvhf8kRiSoEW57cQMPtCa","W78hoffUj0O8W5G","WPddIXygWPtcGSk2W73cPmo+WOddRWRcRW","e8ktzmo7W7nRaSk/W4dcKq","g8oZi8kBW4yzlmoG","W6hcTmkcAW","BmkvuSkMpCkUxSkXf8kwn8ks","WQ3cSCoiW6eMW7ms","Cv8xWRpdLmkwfSkzW4riW5PvWOhdIa","W4qpEMVcLq","W5XBW77dGCoUlNS","BSo5ue4PqczSW5nN","WP9kaSkTq8o7C8kgW7hcTG","WRxcKmoKWPVdVmomWQ0MWR3cNSkuEdhcTCo8W69dWOX9j8oOW7/dKW","W53cTI5A","lSkvzmo8WPS8nSk8W5BcHCkaW7ezW6aowGlcUvBdKtGPEc/dMhlcTslcSSkpWQzPd8kDWPddSbmguKXV","W5ddO8ox","FYnbwG","WRtdSCoxFCouvCoRWQJcLa","W68jpSkxi0a1vG40W7y","WO9if1BcGSosp27cPbVcVtu","W4lcTZDiW47cNwJcPGv0Asqu","W4DKW5m7","W6VcU8kgndOdW4GdW60tWQz/","W6lcRCkbyvxdTCklxCoB","5Q6j5z+x5yIQ6l6H6kwF6AcP5lYA5OcGW7FdLCov","WOHhdSk1C8o3sSkAW43cSSkkWQ10","AmofW68rW5HwWRddUSkdWQi","W7ndywRdTSka","d8ksvSkpzYNcHCo7W4Tih8o1","WR3dOComrwXC","msahWQ0JWOW3","W6Wuo0LJmLaNW7VdVSk6CW","sCkRWPhdSmosCI5yxSkCW58","WRJdQ8oavwzdW5afW6m1WObWW7lcJZu2WP3cM8ou","y1vPWRTkeq","DmojW53cJ8kuWPFdHexdVW","t2e9WP3cQa","WQ/dOSovEgfqW54HW5CgWOjaW6ZcGG","WQpdOmogzSodqSo2","W4Taf8kLlG/dPwtcPXahoHJcLa","W4mBba","W6Pao0RcPhTUpSowW4ddJmoKyKClWO/dU8kOf3u","BCkiW4G","kcicWRe+WReymYJdLmknA8otgW","WPaolCoRW73cMmoxW5hcQSktfG","W4HYsvNdL8kNuSk8uCo7WPjaW7dcStm","yNOGWQ7dUSkDW57dGc3dRSoGWPBdNmk1WQFcKSolnmo7WQug","BmkdW5tcPa","W4DHW6xcRu3cNW","WQdcUSopW6S6W5KGW7aTdW","DmkvW4m","eSkyzmoOW5mQ","xConW6CyW5vGWRRdTCkIWRNdTKFdKmo+dG","W4fTW6lcRW","u3a5W43dQ8kjW4BdGYNdJSo4W4JcL8oy","WPHodf3cJSoimwdcRHJcScm","WR7dU8oaBKbEW5mKW6aaWPu","rmowW5BcOSk6WOZdJKNdS8oRjWygWRzlWOW","iNxcQa","e8kkxmkwydtcICoQW65hg8o/FW","W5b6xYradgFcOCojrSom","ltWp","W7PIW5mCW7ZdOmosgCk1WQG0wSkPcu/dGa","WQVdP8ozzgzFW5KVW6e","W6HBW77dKmoPiNXchmkRtCkQWOe/","WRFdUSoaCxal","W4LdExJdU8khCSkZz8oeWQfAW53cHrKXtq","v8ocW6iaW7PUWR3dQ8kBWQ8","WRFdQCoeBq","W5tcRmkF","W5tcStLDW7BcKutcTI18za","cCo4imklW54FhSkVdhtcTW","dK7dRwxcVSkzfHJcSa","eLVdRwdcQ8kfhXtcJbzSDG","WPanjCo9","BCktu8k2nCkL","qCoJyCo8","pNBcRSkWWPldQJX/W5LFFH7cM1e","W4WBduVcTmkLW5hdTwv8WRyShuDqWQecW6i","gmksDColW5qZ","W7RdVSovB3XIW6dcQCoXW6vGWPfEwhJdNI8","W5WCdeO","tSoaW6OnW5jZWPddSmkeWR7dSLVdO8oV","c8kXDmo1WP47sSoYW6NdR8oCu8o0zG","AN9qW7TOW7fHgb/dG8kcqmof","WPddIXyg","vf9UWOLsaCkdomoiW7RcP2vjquZcIIG","rmowW5BcOSk9WOpdJKVdTColdqicWOfFWPmICqJdQvK","ncee","WRZdR8oAD2jc","E8kBW4JcRComWPJcGIJcMCkfW68J","WRpdQSo2ymoiw8oSWQK","W4TmW6xdOCoOn2DEha","emkouSkyus/cRCoHW5fsgmo0Cbq","W4/cQ8kEWQ7dU0a","WRBdVCoKyhzcW5G","W5qztCkFvq5ExmoqWPNdHa","W69jw3NdRmkDAmks","W41ioG","W78znLXKixOIW47dV8k1FJq6","xCodW6uaW4vUWRxdNmkwWRG","WPyxpSoOW6e","W7tcTCkkzG","fmkCymoQ","BmkztCkM","WPpcVSoFW6KAW5KxW6y5dXubhc8xjmk0W7u","WPzCm8kNvSoRqSkmW7xcLCkDWQr0fSkZgKPGW78","W5ZdTvLez0tcQSoHWPLnWR/cK8oIW4jiDSoKf3y","wmkVWPddS8ogDG5BCCkfW5v6","Dsb6w0NcNbRdN0P3WR7dHSopAXNcSmoKBLG2","W47cT8knr1hdO8kdr8ozW6ldN0ldSCklW7hcOte","W6rryq","a8kdx8knvJZcH8oKW6rtf8o5","E8kgxa","W4TWW67cTw3cMCoAWP4b","WOTdamk7qSoSBSkrW7lcP8kjWQz7aa","W53dP3Hvx1/cQ8o3WPveWQW","WOtdGHqqWPxcLCkBW5xcPCoRWOZdPbO","WQitoZ/cR8ofC8kGFSoSWPP5","x8o6BCoNA8ka","WPHddSkXqSoFuSkBW6JcVa","WP9ff0VdI8ooe3lcRKNcPxbMWPNdGapcMSoWfSonowVcNNBcTL0zWQRcHgz9wSkFW6K+WP1IW44ihajoW6elWRZdHSogWRX8n8k6ggRcJ8kKF3W","a1hdSe/cKmkb","WOCup8o5W4lcNSo3W4JcQW","W5v3rq","WOpcJmomWQNdTCouWQGSWQVcNSkExW","nCogW7PfW5HdW58","aSklxCkf","aLBdQwxcMmkjjH7cL0zzBbGqfG","fCoJn8kTW5mopG","AIjjv0lcMJRdNfXkWRhdGCoyzW","W6utm8kFgu0GFWq9W58cC8oR","W51nkmkhWR9GW5C","WQtdQCokz8oFC8o3WQRcHmoW","pCoZBCorAG82WPxcTKqp","WONcNSoMWRddU8ozWPGKWP/cJSkvuG","W59BW6NdUSoJjKPxcCkp","W7DLW7/cNKlcJCoCWPSlhmkJWRLyWOK","WQFcQSoEW7y7W5iaW500bWi","uGNcVtNdISkzfqhcPGjQ","gSodW7GqW7PKWQRdRCkwWQ3dTG","zmoPxKmOvW","W79sjNhcQMXEkSoAW73dPmo4EKizWOddOmk3f38","WO5af0W","W4tdPmopvu9PW6/cS8oXW5z4","W6vomG","oNpcOSkSW5FLVz3POi7KVlhML5RLRBZNSAtLN7S","W6XpmvNcOq","AConW4VcKCkgWOhdGuddTq","W5jZW7JcI0dcJCohWPiCemk5WRLeWOPY","W43dGmk6WOOyiIVcQ3u2cG","paldQ0uKF1OvWRqGWR1HW6pdVrG","a8kdxCkxvs4","WP5FeG","BL5HWR5oamkJoCojW4pcPa","W5rSW6RcOKNcNSo3WPKDkCk3WRnsWOm","W5JdGSk6WPernspcSgiRbmk0W4T1","WRZdR8oyBwfqW54HW4anWOu","WPxdQ25szvdcQmo3","WO/cKCoP","W6RdJ8kOWO1cCW","W4hcSZLgW7/cHKZcRtPHAI8BBq","W4b1W5qRW5xdU8oqemkLWR8vs8kTeW","W4fUW6RcUudcICo/WOiknmk5","fmkiymoTW54S","WPTbh0hcJSouo2/cSXRcSd5NWPK","k8o1y8oevr4wWPtcU04tbK9UWRK","W5b/W5e","qSo5sW","WPVcSmocW4CXW5iAW6W+hJqQot4loq","C8kFvSkM","WODmduZcR8odew7cPaVcTrz2WP3dIaG","kmoXBCokyXG+WO7cOvKbiujT","W5OAtf/cOSoPpNdcSq","WPxdLrS","W57dTM5pv0tcQ8o7WOi","W6euoKa","WPZcMCoPW5bdC17cJfixa8kOW6O","FITlqupcJsFdI19B","r8oMzmoGyCk3Dmo5imoSW5FdOq","B8kzcsNcNSkbo8ktW7DLpSoXWRq","W5BdVSoDtG","WRZdOSoBCMzWW4GUW6Wm","WRFcT8odW7mtW5mqW6W","mSobW7X3W5HhW6FcI8kPo38","ECkdtmkVc8kJB8k1hmkoemknDSo4","WRtcVSoEW7C7","W4KZW77dOW","FSkdvmkS","W7JdQgjvqvdcVmo/WQbKWQ7cISoIW5q","W6OBnKDTnNi5W5NdOSk7","W4vfiCkh","xCk7WPddS8o3Db9vuSkEW711hSox","W55cf8k+jXJdRx/cSa0j","oSoYDmo3AqC","AmkwW4xcUmomWPJcGIG","W5vHW5WMW7BdVmo1eSkLWQGgqmkRga","AI9Dxui","uSoUBSoZB8kb","W5XnkmkwWRG","FmoVqheHraTWW5fpwSkXtNtcPa","gCkrySo8W54FmCk3W4JcMq","DY/dVmo7W4BcQqbeW4zVsaa","W4VdM8kPWPOrkr7cLIqmeCk7W5XLjG","CYbms1/cPXu","yKyeWRJdLmkkk8k/WOjVW49AWPBdMmkT","WRtcS8onW707W449W6CUhGyWoY8","WRbrASobF1S1AHGIW7W","W4qsw1pcJIScq8ohW7C","oYycWQy8WQyfmHpcLCk6Bmoug1G","k8oPy8od","emkqxmkvwYNcNCo/W4C","iSkyvs/dGW","W4yAb1JcQCkyW4m","WOrDg1BcQSotfMJcRW","ACo9xvCSvG","W7avrmkvtcn6wCoBWRldMaLAACku","WOxdIH4l","W64rwSkoFInywSotWPtdLczeBmkkWO4","hSkZDmoUWPCSqSoPW77dSSos"];return(Ie=function(){return t})()}},function(t,e,i){"use strict";i.r(e);var r=i(0),n=(i(77),i(33)),o=i.n(n);function a(t,e){return a=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},a(t,e)}var s=function(t){for(var e,i=t.split(new RegExp('(?:^|,)((?:[^=]*)=(?:"[^"]*"|[^,]*))')),r={},n=i.length;n--;)""!==i[n]&&((e=/([^=]*)=(.*)/.exec(i[n]).slice(1))[0]=e[0].replace(/^\s+|\s+$/g,""),e[1]=e[1].replace(/^\s+|\s+$/g,""),e[1]=e[1].replace(/^['"](.*)['"]$/g,"$1"),r[e[0]]=e[1]);return r},h=function(t){var e,i;function r(){var e;return(e=t.call(this)||this).customParsers=[],e.tagMappers=[],e}i=t,(e=r).prototype=Object.create(i.prototype),e.prototype.constructor=e,a(e,i);var n=r.prototype;return n.push=function(t){var e,i,r=this;0!==(t=t.trim()).length&&("#"===t[0]?this.tagMappers.reduce((function(e,i){var r=i(t);return r===t?e:e.concat([r])}),[t]).forEach((function(t){for(var n=0;n<r.customParsers.length;n++)if(r.customParsers[n].call(r,t))return;if(0===t.indexOf("#EXT"))if(t=t.replace("\r",""),e=/^#EXTM3U/.exec(t))r.trigger("data",{type:"tag",tagType:"m3u"});else{if(e=/^#EXTINF:?([0-9\.]*)?,?(.*)?$/.exec(t))return i={type:"tag",tagType:"inf"},e[1]&&(i.duration=parseFloat(e[1])),e[2]&&(i.title=e[2]),void r.trigger("data",i);if(e=/^#EXT-X-TARGETDURATION:?([0-9.]*)?/.exec(t))return i={type:"tag",tagType:"targetduration"},e[1]&&(i.duration=parseInt(e[1],10)),void r.trigger("data",i);if(e=/^#ZEN-TOTAL-DURATION:?([0-9.]*)?/.exec(t))return i={type:"tag",tagType:"totalduration"},e[1]&&(i.duration=parseInt(e[1],10)),void r.trigger("data",i);if(e=/^#EXT-X-VERSION:?([0-9.]*)?/.exec(t))return i={type:"tag",tagType:"version"},e[1]&&(i.version=parseInt(e[1],10)),void r.trigger("data",i);if(e=/^#EXT-X-MEDIA-SEQUENCE:?(\-?[0-9.]*)?/.exec(t))return i={type:"tag",tagType:"media-sequence"},e[1]&&(i.number=parseInt(e[1],10)),void r.trigger("data",i);if(e=/^#EXT-X-DISCONTINUITY-SEQUENCE:?(\-?[0-9.]*)?/.exec(t))return i={type:"tag",tagType:"discontinuity-sequence"},e[1]&&(i.number=parseInt(e[1],10)),void r.trigger("data",i);if(e=/^#EXT-X-PLAYLIST-TYPE:?(.*)?$/.exec(t))return i={type:"tag",tagType:"playlist-type"},e[1]&&(i.playlistType=e[1]),void r.trigger("data",i);if(e=/^#EXT-X-BYTERANGE:?([0-9.]*)?@?([0-9.]*)?/.exec(t))return i={type:"tag",tagType:"byterange"},e[1]&&(i.length=parseInt(e[1],10)),e[2]&&(i.offset=parseInt(e[2],10)),void r.trigger("data",i);if(e=/^#EXT-X-ALLOW-CACHE:?(YES|NO)?/.exec(t))return i={type:"tag",tagType:"allow-cache"},e[1]&&(i.allowed=!/NO/.test(e[1])),void r.trigger("data",i);if(e=/^#EXT-X-MAP:?(.*)$/.exec(t)){if(i={type:"tag",tagType:"map"},e[1]){var o=s(e[1]);if(o.URI&&(i.uri=o.URI),o.BYTERANGE){var a=o.BYTERANGE.split("@"),h=a[0],u=a[1];i.byterange={},h&&(i.byterange.length=parseInt(h,10)),u&&(i.byterange.offset=parseInt(u,10))}}r.trigger("data",i)}else if(e=/^#EXT-X-STREAM-INF:?(.*)$/.exec(t)){if(i={type:"tag",tagType:"stream-inf"},e[1]){if(i.attributes=s(e[1]),i.attributes.RESOLUTION){var l=i.attributes.RESOLUTION.split("x"),d={};l[0]&&(d.width=parseInt(l[0],10)),l[1]&&(d.height=parseInt(l[1],10)),i.attributes.RESOLUTION=d}i.attributes.BANDWIDTH&&(i.attributes.BANDWIDTH=parseInt(i.attributes.BANDWIDTH,10)),i.attributes["PROGRAM-ID"]&&(i.attributes["PROGRAM-ID"]=parseInt(i.attributes["PROGRAM-ID"],10))}r.trigger("data",i)}else{if(e=/^#EXT-X-MEDIA:?(.*)$/.exec(t))return i={type:"tag",tagType:"media"},e[1]&&(i.attributes=s(e[1])),void r.trigger("data",i);if(e=/^#EXT-X-ENDLIST/.exec(t))r.trigger("data",{type:"tag",tagType:"endlist"});else if(e=/^#EXT-X-DISCONTINUITY/.exec(t))r.trigger("data",{type:"tag",tagType:"discontinuity"});else{if(e=/^#EXT-X-PROGRAM-DATE-TIME:?(.*)$/.exec(t))return i={type:"tag",tagType:"program-date-time"},e[1]&&(i.dateTimeString=e[1],i.dateTimeObject=new Date(e[1])),void r.trigger("data",i);if(e=/^#EXT-X-KEY:?(.*)$/.exec(t))return i={type:"tag",tagType:"key"},e[1]&&(i.attributes=s(e[1]),i.attributes.IV&&("0x"===i.attributes.IV.substring(0,2).toLowerCase()&&(i.attributes.IV=i.attributes.IV.substring(2)),i.attributes.IV=i.attributes.IV.match(/.{8}/g),i.attributes.IV[0]=parseInt(i.attributes.IV[0],16),i.attributes.IV[1]=parseInt(i.attributes.IV[1],16),i.attributes.IV[2]=parseInt(i.attributes.IV[2],16),i.attributes.IV[3]=parseInt(i.attributes.IV[3],16),i.attributes.IV=new Uint32Array(i.attributes.IV))),void r.trigger("data",i);if(e=/^#EXT-X-START:?(.*)$/.exec(t))return i={type:"tag",tagType:"start"},e[1]&&(i.attributes=s(e[1]),i.attributes["TIME-OFFSET"]=parseFloat(i.attributes["TIME-OFFSET"]),i.attributes.PRECISE=/YES/.test(i.attributes.PRECISE)),void r.trigger("data",i);if(e=/^#EXT-X-CUE-OUT-CONT:?(.*)?$/.exec(t))return i={type:"tag",tagType:"cue-out-cont"},e[1]?i.data=e[1]:i.data="",void r.trigger("data",i);if(e=/^#EXT-X-CUE-OUT:?(.*)?$/.exec(t))return i={type:"tag",tagType:"cue-out"},e[1]?i.data=e[1]:i.data="",void r.trigger("data",i);if(e=/^#EXT-X-CUE-IN:?(.*)?$/.exec(t))return i={type:"tag",tagType:"cue-in"},e[1]?i.data=e[1]:i.data="",void r.trigger("data",i);r.trigger("data",{type:"tag",data:t.slice(4)})}}}else r.trigger("data",{type:"comment",text:t.slice(1)})})):this.trigger("data",{type:"uri",uri:t}))},n.addParser=function(t){var e=this,i=t.expression,r=t.customType,n=t.dataParser,o=t.segment;"function"!=typeof n&&(n=function(t){return t}),this.customParsers.push((function(t){if(i.exec(t))return e.trigger("data",{type:"custom",data:n(t),customType:r,segment:o}),!0}))},n.addTagMapper=function(t){var e=t.expression,i=t.map;this.tagMappers.push((function(t){return e.test(t)?i(t):t}))},r}(o.a);function u(t,e){return u=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},u(t,e)}var l=function(t){var e,i;function r(){var e;return(e=t.call(this)||this).buffer="",e}return i=t,(e=r).prototype=Object.create(i.prototype),e.prototype.constructor=e,u(e,i),r.prototype.push=function(t){var e;for(this.buffer+=t,e=this.buffer.indexOf("\n");e>-1;e=this.buffer.indexOf("\n"))this.trigger("data",this.buffer.substring(0,e)),this.buffer=this.buffer.substring(e+1)},r}(o.a),d=i(134),f=i.n(d);function c(t,e){return c=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},c(t,e)}var p=function(t){var e,i;function r(){var e;(e=t.call(this)||this).lineStream=new l,e.parseStream=new h,e.lineStream.pipe(e.parseStream);var i,r,n=function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(e),o=[],a={},s=function(){},u={AUDIO:{},VIDEO:{},"CLOSED-CAPTIONS":{},SUBTITLES:{}},d=0;return e.manifest={allowCache:!0,discontinuityStarts:[],segments:[]},e.parseStream.on("data",(function(t){var e,h;({tag:function(){({"allow-cache":function(){this.manifest.allowCache=t.allowed,"allowed"in t||(this.trigger("info",{message:"defaulting allowCache to YES"}),this.manifest.allowCache=!0)},byterange:function(){var e={};"length"in t&&(a.byterange=e,e.length=t.length,"offset"in t||(this.trigger("info",{message:"defaulting offset to zero"}),t.offset=0)),"offset"in t&&(a.byterange=e,e.offset=t.offset)},endlist:function(){this.manifest.endList=!0},inf:function(){"mediaSequence"in this.manifest||(this.manifest.mediaSequence=0,this.trigger("info",{message:"defaulting media sequence to zero"})),"discontinuitySequence"in this.manifest||(this.manifest.discontinuitySequence=0,this.trigger("info",{message:"defaulting discontinuity sequence to zero"})),t.duration>0&&(a.duration=t.duration),0===t.duration&&(a.duration=.01,this.trigger("info",{message:"updating zero segment duration to a small value"})),this.manifest.segments=o},key:function(){if(t.attributes)if("NONE"!==t.attributes.METHOD)if(t.attributes.URI){if("urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"===t.attributes.KEYFORMAT){return-1===["SAMPLE-AES","SAMPLE-AES-CTR","SAMPLE-AES-CENC"].indexOf(t.attributes.METHOD)?void this.trigger("warn",{message:"invalid key method provided for Widevine"}):("SAMPLE-AES-CENC"===t.attributes.METHOD&&this.trigger("warn",{message:"SAMPLE-AES-CENC is deprecated, please use SAMPLE-AES-CTR instead"}),"data:text/plain;base64,"!==t.attributes.URI.substring(0,23)?void this.trigger("warn",{message:"invalid key URI provided for Widevine"}):t.attributes.KEYID&&"0x"===t.attributes.KEYID.substring(0,2)?void(this.manifest.contentProtection={"com.widevine.alpha":{attributes:{schemeIdUri:t.attributes.KEYFORMAT,keyId:t.attributes.KEYID.substring(2)},pssh:f()(t.attributes.URI.split(",")[1])}}):void this.trigger("warn",{message:"invalid key ID provided for Widevine"}))}t.attributes.METHOD||this.trigger("warn",{message:"defaulting key method to AES-128"}),r={method:t.attributes.METHOD||"AES-128",uri:t.attributes.URI},void 0!==t.attributes.IV&&(r.iv=t.attributes.IV)}else this.trigger("warn",{message:"ignoring key declaration without URI"});else r=null;else this.trigger("warn",{message:"ignoring key declaration without attribute list"})},"media-sequence":function(){isFinite(t.number)?this.manifest.mediaSequence=t.number:this.trigger("warn",{message:"ignoring invalid media sequence: "+t.number})},"discontinuity-sequence":function(){isFinite(t.number)?(this.manifest.discontinuitySequence=t.number,d=t.number):this.trigger("warn",{message:"ignoring invalid discontinuity sequence: "+t.number})},"playlist-type":function(){/VOD|EVENT/.test(t.playlistType)?this.manifest.playlistType=t.playlistType:this.trigger("warn",{message:"ignoring unknown playlist type: "+t.playlist})},map:function(){i={},t.uri&&(i.uri=t.uri),t.byterange&&(i.byterange=t.byterange)},"stream-inf":function(){this.manifest.playlists=o,this.manifest.mediaGroups=this.manifest.mediaGroups||u,t.attributes?(a.attributes||(a.attributes={}),Object.assign(a.attributes,t.attributes)):this.trigger("warn",{message:"ignoring empty stream-inf attributes"})},media:function(){if(this.manifest.mediaGroups=this.manifest.mediaGroups||u,t.attributes&&t.attributes.TYPE&&t.attributes["GROUP-ID"]&&t.attributes.NAME){var i=this.manifest.mediaGroups[t.attributes.TYPE];i[t.attributes["GROUP-ID"]]=i[t.attributes["GROUP-ID"]]||{},e=i[t.attributes["GROUP-ID"]],(h={default:/yes/i.test(t.attributes.DEFAULT)}).default?h.autoselect=!0:h.autoselect=/yes/i.test(t.attributes.AUTOSELECT),t.attributes.LANGUAGE&&(h.language=t.attributes.LANGUAGE),t.attributes.URI&&(h.uri=t.attributes.URI),t.attributes["INSTREAM-ID"]&&(h.instreamId=t.attributes["INSTREAM-ID"]),t.attributes.CHARACTERISTICS&&(h.characteristics=t.attributes.CHARACTERISTICS),t.attributes.FORCED&&(h.forced=/yes/i.test(t.attributes.FORCED)),e[t.attributes.NAME]=h}else this.trigger("warn",{message:"ignoring incomplete or missing media group"})},discontinuity:function(){d+=1,a.discontinuity=!0,this.manifest.discontinuityStarts.push(o.length)},"program-date-time":function(){void 0===this.manifest.dateTimeString&&(this.manifest.dateTimeString=t.dateTimeString,this.manifest.dateTimeObject=t.dateTimeObject),a.dateTimeString=t.dateTimeString,a.dateTimeObject=t.dateTimeObject},targetduration:function(){!isFinite(t.duration)||t.duration<0?this.trigger("warn",{message:"ignoring invalid target duration: "+t.duration}):this.manifest.targetDuration=t.duration},totalduration:function(){!isFinite(t.duration)||t.duration<0?this.trigger("warn",{message:"ignoring invalid total duration: "+t.duration}):this.manifest.totalDuration=t.duration},start:function(){t.attributes&&!isNaN(t.attributes["TIME-OFFSET"])?this.manifest.start={timeOffset:t.attributes["TIME-OFFSET"],precise:t.attributes.PRECISE}:this.trigger("warn",{message:"ignoring start declaration without appropriate attribute list"})},"cue-out":function(){a.cueOut=t.data},"cue-out-cont":function(){a.cueOutCont=t.data},"cue-in":function(){a.cueIn=t.data}}[t.tagType]||s).call(n)},uri:function(){a.uri=t.uri,o.push(a),this.manifest.targetDuration&&!("duration"in a)&&(this.trigger("warn",{message:"defaulting segment duration to the target duration"}),a.duration=this.manifest.targetDuration),r&&(a.key=r),a.timeline=d,i&&(a.map=i),a={}},comment:function(){},custom:function(){t.segment?(a.custom=a.custom||{},a.custom[t.customType]=t.data):(this.manifest.custom=this.manifest.custom||{},this.manifest.custom[t.customType]=t.data)}})[t.type].call(n)})),e}i=t,(e=r).prototype=Object.create(i.prototype),e.prototype.constructor=e,c(e,i);var n=r.prototype;return n.push=function(t){this.lineStream.push(t)},n.end=function(){this.lineStream.push("\n")},n.addParser=function(t){this.parseStream.addParser(t)},n.addTagMapper=function(t){this.parseStream.addTagMapper(t)},r}(o.a),m=new WebAssembly.Memory({initial:256,maximum:256});new WebAssembly.Table({initial:0,maximum:0,element:"anyfunc"}),m.buffer.byteLength,e.default=function(t){t.url="",t.canvas=null,t.webGLPlayer=null,t.videoSampleQueue=[],t.audioSampleQueue=[],t.videoInterval=40,t.lastRenderTime=0,t.intervalVal=0,t.renderFrameCount=0,t.requestAbort=!1,t.pause=!1,t.cbStreamData=!0,t.reConnect=!0,t.isLiveStream=!0,t.seekTime=0,t.totalDuration=0,t.playDuration=0,t.startVideoPts=0,t.startAudioPts=0,t.tsFileList=[],t.getFileIndex=0,t.lastTsFile="",t.isFirstFile=!0,t.lastTsFileSequence=0,t.sequenceExceptNum=0,t.hlsTsPlaybackFileNo=-1,t.tsDemuxer=null,t.getFileCount=100,t.intervalHandle=-1,t.intervalValue=40,t.startDownloadTimeSecs=0;var e=function(t,e){if(t.indexOf("http")>=0)return t;for(var i=e,r=0,n=0;n>=0;)(n=i.indexOf("/"))>=0?(i=i.substring(n+1),r+=n+1):i=e.substring(0,r);return""!==t?i+t:i},i=function(){var e={cmd:r.tCloseStream,workerId:r.DOWNLOAD_WORKER_ID};t.postMessage(e),t.getFileIndex=0,t.hlsTsPlaybackFileNo=-1},n=function n(o,a){if(t.url=o,1!=t._requestAbort){if(!t.pause&&(!(t.totalDuration>0)||t.isLiveStream)){var s=new XMLHttpRequest;s.open("get",o,!0),s.responseType="text",s.onreadystatechange=function(){if(4==s.readyState&&(200==s.status||304==s.status)){var i=new p;i.push(s.responseText),i.end();var o=i.manifest;if("undefined"!==i.manifest.endList&&1==i.manifest.endList?t.isLiveStream=!1:t.isLiveStream=!0,o.segments.length<1){var h=t;return void r.sleep(3e3).then((function(){n(h.url,1)}))}var u=0,l=0;if(t.isLiveStream)if(""==t.lastTsFile){for(u=0;u<o.segments.length;u++){g={filename:c=e(o.segments[u].uri,t.url),duration:o.segments[u].duration};t.tsFileList.push(g)}var d=0;o.segments.length>2&&(d=o.segments.length-1-1),t.getFileIndex=d,t.lastTsFile=o.segments[d].uri}else{d=-1;var f=!1;for(u=0;u<o.segments.length;u++){c=e(o.segments[u].uri,t.url);if(o.segments[u].uri!==t.lastTsFile)if(d>=0){g={filename:c,duration:o.segments[u].duration};t.totalDuration+=o.segments[u].duration,t.tsFileList.push(g),f||(t.lastTsFile=o.segments[u].uri,f=!0)}else;else d=u,t.tsFileList.length=0,t.tsFileList=[],t.getFileIndex=0}if(d<0)for(t.tsFileList.length=0,t.tsFileList=[],t.getFileIndex=0,u=0;u<o.segments.length;u++){g={filename:c=e(o.segments[u].uri,t.url),duration:o.segments[u].duration};t.totalDuration+=o.segments[u].duration,t.tsFileList.push(g),t.lastTsFile=o.segments[u].uri}if(1===a)return}else{for(t.seekTime>0&&(t.getFileIndex=-1),u=0;u<o.segments.length;u++){var c=e(o.segments[u].uri,t.url),m=0;for(l=0;l<t.tsFileList.length;l++)if(t.tsFileList[l].filename===c){m=1;break}if(0==m){t.seekTime>0&&t.totalDuration>=t.seekTime&&t.getFileIndex<0&&(t.getFileIndex=u);var g={filename:c,duration:o.segments[u].duration};t.totalDuration+=o.segments[u].duration,t.tsFileList.push(g)}}t.getFileIndex<0&&(t.getFileIndex=0);var v={cmd:r.tMediaInfo,duration:t.totalDuration,live:t.isLiveStream,workerId:r.DOWNLOAD_WORKER_ID};t.postMessage(v)}if(t.tsFileList.length>0&&1==a){v={cmd:r.tOpenStream,workerId:r.DOWNLOAD_WORKER_ID};t.postMessage(v)}}},s.send()}}else i()},o=function e(){if(!(t.getFileCount++<1)){var o=!1;if(!t.pause)if(1!=t._requestAbort){if(t.isLiveStream){if(t.getFileCount=0,t.getFileIndex>=t.tsFileList.length||3==t.getFileCount)return void n(t.url,1);o=!0}else if(t.getFileIndex>=t.tsFileList.length){t.getFileIndex++;var a={cmd:r.tGetTsComplete,workerId:r.DOWNLOAD_WORKER_ID};return void t.postMessage(a)}var s=t.tsFileList[t.getFileIndex].filename;if(t.isLiveStream){var h=function(t){var e=t.split("-"),i=e.length;if(i>0){var r=e[i-1].split(".");if(r.length>0)return r[0]}return""}(s),u=parseInt(h);if(u>0&&u>t.lastTsFileSequence+1){t.sequenceExceptNum++;a={cmd:r.tResetMSE,workerId:r.DOWNLOAD_WORKER_ID,fileSequence:t.sequenceExceptNum};t.postMessage(a)}t.lastTsFileSequence=u}else if(t.hlsTsPlaybackFileNo==t.getFileIndex)return;var l=new XMLHttpRequest;l.open("get",s,!0),l.responseType="arraybuffer",l.onreadystatechange=function(){if(404==l.status)return r.MediaWorkerLog("current file not found. refresh list..."),void n(t.url,1);if(4==l.readyState&&(200==l.status||304==l.status)){var i=new Uint8Array(l.response),a=0;for(a=0;a<t.getFileIndex;a++)t.tsFileList[a].duration;var s={cmd:r.tFrameData,workerId:r.DOWNLOAD_WORKER_ID,mediaType:1,codecId:27,flag:0,pts:0,playTimeSec:0,dat:i};if(t.postMessage(s,[s.dat.buffer]),t.intervalHandle>=0&&(clearInterval(t.intervalHandle),t.intervalHandle=-1),!t.pause){var h=t.getFileIndex;h>=0&&h<t.tsFileList.length?t.intervalValue=1e3*t.tsFileList[h].duration-600:t.intervalValue=2e3,t.isFirstFile&&(t.isFirstFile=!1,t.intervalValue>900&&(t.intervalValue-=900)),t.intervalHandle=setInterval(e,t.intervalValue)}t.getFileCount=100,t.getFileIndex++,t.getFileIndex>=0&&(t.getFileIndex,t.tsFileList.length);s={cmd:r.tGetTsStreamRsp,workerId:r.DOWNLOAD_WORKER_ID};if(t.postMessage(s),o)return void n(t.url,0)}},l.send(),t.hlsTsPlaybackFileNo=t.getFileIndex}else i()}};t.addEventListener("message",(function(e){var a=e.data;e.data;switch(a.cmd){case r.tOpenStream:t.url=a.url,t.seekTime=a.time,n(a.url,1);break;case r.tGetTsStream:0==a.t&&o();break;case r.tReOpenStream:n(t.url,1);break;case r.tSeekStream:var s=a.time;1==a.type&&(s=a.time/100*t.totalDuration);var h=!1,u=0,l=0;for(l=0;l<t.tsFileList.length;l++)if((u+=t.tsFileList[l].duration)>s){t.getFileIndex=l,o();var d={cmd:r.tSeekStream,type:a.type,time:s};t.postMessage(d),h=!0;break}if(!h){d={cmd:r.tSeekStream,type:a.type,time:s};t.postMessage(d)}break;case r.tPauseStream:t.pause=!0;break;case r.tResumeStream:t.pause=!1,n(t.url,1);break;case r.tCloseStream:t._requestAbort=!0,t.seekTime=0,i()}}))}}]).default})); | |
| 3 | 0 | \ No newline at end of file |
src/main/resources/static/pages/video/static/SkeyeWebPlayer/SkeyeWebPlayer.js deleted
100644 → 0
| 1 | -(function webpackUniversalModuleDefinition(root, factory) { | |
| 2 | - if(typeof exports === 'object' && typeof module === 'object') | |
| 3 | - module.exports = factory(); | |
| 4 | - else if(typeof define === 'function' && define.amd) | |
| 5 | - define([], factory); | |
| 6 | - else if(typeof exports === 'object') | |
| 7 | - exports["WebMediaPlayer"] = factory(); | |
| 8 | - else | |
| 9 | - root["WebMediaPlayer"] = factory(); | |
| 10 | -})(this, function() { | |
| 11 | -return /******/ (function(modules) { // webpackBootstrap | |
| 12 | -/******/ // The module cache | |
| 13 | -/******/ var installedModules = {}; | |
| 14 | -/******/ | |
| 15 | -/******/ // The require function | |
| 16 | -/******/ function __webpack_require__(moduleId) { | |
| 17 | -/******/ | |
| 18 | -/******/ // Check if module is in cache | |
| 19 | -/******/ if(installedModules[moduleId]) { | |
| 20 | -/******/ return installedModules[moduleId].exports; | |
| 21 | -/******/ } | |
| 22 | -/******/ // Create a new module (and put it into the cache) | |
| 23 | -/******/ var module = installedModules[moduleId] = { | |
| 24 | -/******/ i: moduleId, | |
| 25 | -/******/ l: false, | |
| 26 | -/******/ exports: {} | |
| 27 | -/******/ }; | |
| 28 | -/******/ | |
| 29 | -/******/ // Execute the module function | |
| 30 | -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); | |
| 31 | -/******/ | |
| 32 | -/******/ // Flag the module as loaded | |
| 33 | -/******/ module.l = true; | |
| 34 | -/******/ | |
| 35 | -/******/ // Return the exports of the module | |
| 36 | -/******/ return module.exports; | |
| 37 | -/******/ } | |
| 38 | -/******/ | |
| 39 | -/******/ | |
| 40 | -/******/ // expose the modules object (__webpack_modules__) | |
| 41 | -/******/ __webpack_require__.m = modules; | |
| 42 | -/******/ | |
| 43 | -/******/ // expose the module cache | |
| 44 | -/******/ __webpack_require__.c = installedModules; | |
| 45 | -/******/ | |
| 46 | -/******/ // define getter function for harmony exports | |
| 47 | -/******/ __webpack_require__.d = function(exports, name, getter) { | |
| 48 | -/******/ if(!__webpack_require__.o(exports, name)) { | |
| 49 | -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); | |
| 50 | -/******/ } | |
| 51 | -/******/ }; | |
| 52 | -/******/ | |
| 53 | -/******/ // define __esModule on exports | |
| 54 | -/******/ __webpack_require__.r = function(exports) { | |
| 55 | -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { | |
| 56 | -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); | |
| 57 | -/******/ } | |
| 58 | -/******/ Object.defineProperty(exports, '__esModule', { value: true }); | |
| 59 | -/******/ }; | |
| 60 | -/******/ | |
| 61 | -/******/ // create a fake namespace object | |
| 62 | -/******/ // mode & 1: value is a module id, require it | |
| 63 | -/******/ // mode & 2: merge all properties of value into the ns | |
| 64 | -/******/ // mode & 4: return value when already ns object | |
| 65 | -/******/ // mode & 8|1: behave like require | |
| 66 | -/******/ __webpack_require__.t = function(value, mode) { | |
| 67 | -/******/ if(mode & 1) value = __webpack_require__(value); | |
| 68 | -/******/ if(mode & 8) return value; | |
| 69 | -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; | |
| 70 | -/******/ var ns = Object.create(null); | |
| 71 | -/******/ __webpack_require__.r(ns); | |
| 72 | -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); | |
| 73 | -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); | |
| 74 | -/******/ return ns; | |
| 75 | -/******/ }; | |
| 76 | -/******/ | |
| 77 | -/******/ // getDefaultExport function for compatibility with non-harmony modules | |
| 78 | -/******/ __webpack_require__.n = function(module) { | |
| 79 | -/******/ var getter = module && module.__esModule ? | |
| 80 | -/******/ function getDefault() { return module['default']; } : | |
| 81 | -/******/ function getModuleExports() { return module; }; | |
| 82 | -/******/ __webpack_require__.d(getter, 'a', getter); | |
| 83 | -/******/ return getter; | |
| 84 | -/******/ }; | |
| 85 | -/******/ | |
| 86 | -/******/ // Object.prototype.hasOwnProperty.call | |
| 87 | -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; | |
| 88 | -/******/ | |
| 89 | -/******/ // __webpack_public_path__ | |
| 90 | -/******/ __webpack_require__.p = ""; | |
| 91 | -/******/ | |
| 92 | -/******/ | |
| 93 | -/******/ // Load entry module and return exports | |
| 94 | -/******/ return __webpack_require__(__webpack_require__.s = "./src/index.js"); | |
| 95 | -/******/ }) | |
| 96 | -/************************************************************************/ | |
| 97 | -/******/ ({ | |
| 98 | - | |
| 99 | -/***/ "./node_modules/@videojs/vhs-utils/dist/decode-b64-to-uint8-array.js": | |
| 100 | -/*!***************************************************************************!*\ | |
| 101 | - !*** ./node_modules/@videojs/vhs-utils/dist/decode-b64-to-uint8-array.js ***! | |
| 102 | - \***************************************************************************/ | |
| 103 | -/*! no static exports found */ | |
| 104 | -/***/ (function(module, exports, __webpack_require__) { | |
| 105 | - | |
| 106 | -"use strict"; | |
| 107 | -eval("/* WEBPACK VAR INJECTION */(function(Buffer) {/*! @name @videojs/vhs-utils @version 1.3.0 @license MIT */\n\n\nfunction _interopDefault(ex) {\n return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\n\nvar window = _interopDefault(__webpack_require__(/*! global/window */ \"./node_modules/global/window.js\"));\n\nvar atob = function atob(s) {\n return window.atob ? window.atob(s) : Buffer.from(s, 'base64').toString('binary');\n};\n\nfunction decodeB64ToUint8Array(b64Text) {\n var decodedString = atob(b64Text);\n var array = new Uint8Array(decodedString.length);\n\n for (var i = 0; i < decodedString.length; i++) {\n array[i] = decodedString.charCodeAt(i);\n }\n\n return array;\n}\n\nmodule.exports = decodeB64ToUint8Array;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node-libs-browser/node_modules/buffer/index.js */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/@videojs/vhs-utils/dist/decode-b64-to-uint8-array.js?"); | |
| 108 | - | |
| 109 | -/***/ }), | |
| 110 | - | |
| 111 | -/***/ "./node_modules/@videojs/vhs-utils/dist/stream.js": | |
| 112 | -/*!********************************************************!*\ | |
| 113 | - !*** ./node_modules/@videojs/vhs-utils/dist/stream.js ***! | |
| 114 | - \********************************************************/ | |
| 115 | -/*! no static exports found */ | |
| 116 | -/***/ (function(module, exports, __webpack_require__) { | |
| 117 | - | |
| 118 | -"use strict"; | |
| 119 | -eval("/*! @name @videojs/vhs-utils @version 1.3.0 @license MIT */\n\n/**\n * @file stream.js\n */\n\n/**\n * A lightweight readable stream implemention that handles event dispatching.\n *\n * @class Stream\n */\n\nvar Stream = /*#__PURE__*/function () {\n function Stream() {\n this.listeners = {};\n }\n /**\n * Add a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener the callback to be invoked when an event of\n * the specified type occurs\n */\n\n\n var _proto = Stream.prototype;\n\n _proto.on = function on(type, listener) {\n if (!this.listeners[type]) {\n this.listeners[type] = [];\n }\n\n this.listeners[type].push(listener);\n }\n /**\n * Remove a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener a function previously registered for this\n * type of event through `on`\n * @return {boolean} if we could turn it off or not\n */\n ;\n\n _proto.off = function off(type, listener) {\n if (!this.listeners[type]) {\n return false;\n }\n\n var index = this.listeners[type].indexOf(listener); // TODO: which is better?\n // In Video.js we slice listener functions\n // on trigger so that it does not mess up the order\n // while we loop through.\n //\n // Here we slice on off so that the loop in trigger\n // can continue using it's old reference to loop without\n // messing up the order.\n\n this.listeners[type] = this.listeners[type].slice(0);\n this.listeners[type].splice(index, 1);\n return index > -1;\n }\n /**\n * Trigger an event of the specified type on this stream. Any additional\n * arguments to this function are passed as parameters to event listeners.\n *\n * @param {string} type the event name\n */\n ;\n\n _proto.trigger = function trigger(type) {\n var callbacks = this.listeners[type];\n\n if (!callbacks) {\n return;\n } // Slicing the arguments on every invocation of this method\n // can add a significant amount of overhead. Avoid the\n // intermediate object creation for the common case of a\n // single callback argument\n\n\n if (arguments.length === 2) {\n var length = callbacks.length;\n\n for (var i = 0; i < length; ++i) {\n callbacks[i].call(this, arguments[1]);\n }\n } else {\n var args = Array.prototype.slice.call(arguments, 1);\n var _length = callbacks.length;\n\n for (var _i = 0; _i < _length; ++_i) {\n callbacks[_i].apply(this, args);\n }\n }\n }\n /**\n * Destroys the stream and cleans up.\n */\n ;\n\n _proto.dispose = function dispose() {\n this.listeners = {};\n }\n /**\n * Forwards all `data` events on this stream to the destination stream. The\n * destination stream should provide a method `push` to receive the data\n * events as they arrive.\n *\n * @param {Stream} destination the stream that will receive all `data` events\n * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options\n */\n ;\n\n _proto.pipe = function pipe(destination) {\n this.on('data', function (data) {\n destination.push(data);\n });\n };\n\n return Stream;\n}();\n\nmodule.exports = Stream;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/@videojs/vhs-utils/dist/stream.js?"); | |
| 120 | - | |
| 121 | -/***/ }), | |
| 122 | - | |
| 123 | -/***/ "./node_modules/asn1.js/lib/asn1.js": | |
| 124 | -/*!******************************************!*\ | |
| 125 | - !*** ./node_modules/asn1.js/lib/asn1.js ***! | |
| 126 | - \******************************************/ | |
| 127 | -/*! no static exports found */ | |
| 128 | -/***/ (function(module, exports, __webpack_require__) { | |
| 129 | - | |
| 130 | -"use strict"; | |
| 131 | -eval("\n\nvar asn1 = exports;\nasn1.bignum = __webpack_require__(/*! bn.js */ \"./node_modules/asn1.js/node_modules/bn.js/lib/bn.js\");\nasn1.define = __webpack_require__(/*! ./asn1/api */ \"./node_modules/asn1.js/lib/asn1/api.js\").define;\nasn1.base = __webpack_require__(/*! ./asn1/base */ \"./node_modules/asn1.js/lib/asn1/base/index.js\");\nasn1.constants = __webpack_require__(/*! ./asn1/constants */ \"./node_modules/asn1.js/lib/asn1/constants/index.js\");\nasn1.decoders = __webpack_require__(/*! ./asn1/decoders */ \"./node_modules/asn1.js/lib/asn1/decoders/index.js\");\nasn1.encoders = __webpack_require__(/*! ./asn1/encoders */ \"./node_modules/asn1.js/lib/asn1/encoders/index.js\");\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/asn1.js/lib/asn1.js?"); | |
| 132 | - | |
| 133 | -/***/ }), | |
| 134 | - | |
| 135 | -/***/ "./node_modules/asn1.js/lib/asn1/api.js": | |
| 136 | -/*!**********************************************!*\ | |
| 137 | - !*** ./node_modules/asn1.js/lib/asn1/api.js ***! | |
| 138 | - \**********************************************/ | |
| 139 | -/*! no static exports found */ | |
| 140 | -/***/ (function(module, exports, __webpack_require__) { | |
| 141 | - | |
| 142 | -"use strict"; | |
| 143 | -eval("\n\nvar encoders = __webpack_require__(/*! ./encoders */ \"./node_modules/asn1.js/lib/asn1/encoders/index.js\");\n\nvar decoders = __webpack_require__(/*! ./decoders */ \"./node_modules/asn1.js/lib/asn1/decoders/index.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n var name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n\n inherits(Generated, Base);\n\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der'; // Lazily create decoder\n\n if (!this.decoders.hasOwnProperty(enc)) this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der'; // Lazily create encoder\n\n if (!this.encoders.hasOwnProperty(enc)) this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc,\n/* internal */\nreporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/asn1.js/lib/asn1/api.js?"); | |
| 144 | - | |
| 145 | -/***/ }), | |
| 146 | - | |
| 147 | -/***/ "./node_modules/asn1.js/lib/asn1/base/buffer.js": | |
| 148 | -/*!******************************************************!*\ | |
| 149 | - !*** ./node_modules/asn1.js/lib/asn1/base/buffer.js ***! | |
| 150 | - \******************************************************/ | |
| 151 | -/*! no static exports found */ | |
| 152 | -/***/ (function(module, exports, __webpack_require__) { | |
| 153 | - | |
| 154 | -"use strict"; | |
| 155 | -eval("\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar Reporter = __webpack_require__(/*! ../base/reporter */ \"./node_modules/asn1.js/lib/asn1/base/reporter.js\").Reporter;\n\nvar Buffer = __webpack_require__(/*! safer-buffer */ \"./node_modules/safer-buffer/safer.js\").Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\n\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n } // Or accept compatible API\n\n\n var isCompatible = typeof data === 'object' && Buffer.isBuffer(data.base) && data.constructor.name === 'DecoderBuffer' && typeof data.offset === 'number' && typeof data.length === 'number' && typeof data.save === 'function' && typeof data.restore === 'function' && typeof data.isEmpty === 'function' && typeof data.readUInt8 === 'function' && typeof data.skip === 'function' && typeof data.raw === 'function';\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return {\n offset: this.offset,\n reporter: Reporter.prototype.save.call(this)\n };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n var res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length) return this.base.readUInt8(this.offset++, true);else return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length)) return this.error(fail || 'DecoderBuffer overrun');\n var res = new DecoderBuffer(this.base); // Share reporter state\n\n res._reporterState = this._reporterState;\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function (item) {\n if (!EncoderBuffer.isEncoderBuffer(item)) item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff)) return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\n\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n } // Or accept compatible API\n\n\n var isCompatible = typeof data === 'object' && data.constructor.name === 'EncoderBuffer' && typeof data.length === 'number' && typeof data.join === 'function';\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out) out = Buffer.alloc(this.length);\n if (!offset) offset = 0;\n if (this.length === 0) return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function (item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number') out[offset] = this.value;else if (typeof this.value === 'string') out.write(this.value, offset);else if (Buffer.isBuffer(this.value)) this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/asn1.js/lib/asn1/base/buffer.js?"); | |
| 156 | - | |
| 157 | -/***/ }), | |
| 158 | - | |
| 159 | -/***/ "./node_modules/asn1.js/lib/asn1/base/index.js": | |
| 160 | -/*!*****************************************************!*\ | |
| 161 | - !*** ./node_modules/asn1.js/lib/asn1/base/index.js ***! | |
| 162 | - \*****************************************************/ | |
| 163 | -/*! no static exports found */ | |
| 164 | -/***/ (function(module, exports, __webpack_require__) { | |
| 165 | - | |
| 166 | -"use strict"; | |
| 167 | -eval("\n\nvar base = exports;\nbase.Reporter = __webpack_require__(/*! ./reporter */ \"./node_modules/asn1.js/lib/asn1/base/reporter.js\").Reporter;\nbase.DecoderBuffer = __webpack_require__(/*! ./buffer */ \"./node_modules/asn1.js/lib/asn1/base/buffer.js\").DecoderBuffer;\nbase.EncoderBuffer = __webpack_require__(/*! ./buffer */ \"./node_modules/asn1.js/lib/asn1/base/buffer.js\").EncoderBuffer;\nbase.Node = __webpack_require__(/*! ./node */ \"./node_modules/asn1.js/lib/asn1/base/node.js\");\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/asn1.js/lib/asn1/base/index.js?"); | |
| 168 | - | |
| 169 | -/***/ }), | |
| 170 | - | |
| 171 | -/***/ "./node_modules/asn1.js/lib/asn1/base/node.js": | |
| 172 | -/*!****************************************************!*\ | |
| 173 | - !*** ./node_modules/asn1.js/lib/asn1/base/node.js ***! | |
| 174 | - \****************************************************/ | |
| 175 | -/*! no static exports found */ | |
| 176 | -/***/ (function(module, exports, __webpack_require__) { | |
| 177 | - | |
| 178 | -"use strict"; | |
| 179 | -eval("\n\nvar Reporter = __webpack_require__(/*! ../base/reporter */ \"./node_modules/asn1.js/lib/asn1/base/reporter.js\").Reporter;\n\nvar EncoderBuffer = __webpack_require__(/*! ../base/buffer */ \"./node_modules/asn1.js/lib/asn1/base/buffer.js\").EncoderBuffer;\n\nvar DecoderBuffer = __webpack_require__(/*! ../base/buffer */ \"./node_modules/asn1.js/lib/asn1/base/buffer.js\").DecoderBuffer;\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\"); // Supported tags\n\n\nvar tags = ['seq', 'seqof', 'set', 'setof', 'objid', 'bool', 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc', 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str', 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr']; // Public methods list\n\nvar methods = ['key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice', 'any', 'contains'].concat(tags); // Overrided methods list\n\nvar overrided = ['_peekTag', '_decodeTag', '_use', '_decodeStr', '_decodeObjid', '_decodeTime', '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList', '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime', '_encodeNull', '_encodeInt', '_encodeBool'];\n\nfunction Node(enc, parent, name) {\n var state = {};\n this._baseState = state;\n state.name = name;\n state.enc = enc;\n state.parent = parent || null;\n state.children = null; // State\n\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null; // Should create new instance on each method\n\n if (!state.parent) {\n state.children = [];\n\n this._wrap();\n }\n}\n\nmodule.exports = Node;\nvar stateProps = ['enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice', 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit', 'implicit', 'contains'];\n\nNode.prototype.clone = function clone() {\n var state = this._baseState;\n var cstate = {};\n stateProps.forEach(function (prop) {\n cstate[prop] = state[prop];\n });\n var res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n var state = this._baseState;\n methods.forEach(function (method) {\n this[method] = function _wrappedMethod() {\n var clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n var state = this._baseState;\n assert(state.parent === null);\n body.call(this); // Filter children\n\n state.children = state.children.filter(function (child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n var state = this._baseState; // Filter children and args\n\n var children = args.filter(function (arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function (arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children; // Replace parent to maintain backward link\n\n children.forEach(function (child) {\n child._baseState.parent = this;\n }, this);\n }\n\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function (arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object) return arg;\n var res = {};\n Object.keys(arg).forEach(function (key) {\n if (key == (key | 0)) key |= 0;\n var value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n}; //\n// Overrided methods\n//\n\n\noverrided.forEach(function (method) {\n Node.prototype[method] = function _overrided() {\n var state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n}); //\n// Public methods\n//\n\ntags.forEach(function (tag) {\n Node.prototype[tag] = function _tagMethod() {\n var state = this._baseState;\n var args = Array.prototype.slice.call(arguments);\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n var state = this._baseState;\n assert(state.use === null);\n state.use = item;\n return this;\n};\n\nNode.prototype.optional = function optional() {\n var state = this._baseState;\n state.optional = true;\n return this;\n};\n\nNode.prototype.def = function def(val) {\n var state = this._baseState;\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n var state = this._baseState;\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n var state = this._baseState;\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n return this;\n};\n\nNode.prototype.obj = function obj() {\n var state = this._baseState;\n var args = Array.prototype.slice.call(arguments);\n state.obj = true;\n if (args.length !== 0) this._useArgs(args);\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n var state = this._baseState;\n assert(state.key === null);\n state.key = newKey;\n return this;\n};\n\nNode.prototype.any = function any() {\n var state = this._baseState;\n state.any = true;\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n var state = this._baseState;\n assert(state.choice === null);\n state.choice = obj;\n\n this._useArgs(Object.keys(obj).map(function (key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n var state = this._baseState;\n assert(state.use === null);\n state.contains = item;\n return this;\n}; //\n// Decoding\n//\n\n\nNode.prototype._decode = function decode(input, options) {\n var state = this._baseState; // Decode root node\n\n if (state.parent === null) return input.wrapResult(state.children[0]._decode(input, options));\n var result = state['default'];\n var present = true;\n var prevKey = null;\n if (state.key !== null) prevKey = input.enterKey(state.key); // Check if tag is there\n\n if (state.optional) {\n var tag = null;\n if (state.explicit !== null) tag = state.explicit;else if (state.implicit !== null) tag = state.implicit;else if (state.tag !== null) tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n var save = input.save();\n\n try {\n if (state.choice === null) this._decodeGeneric(state.tag, input, options);else this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n if (input.isError(present)) return present;\n }\n } // Push object on stack\n\n\n var prevObj;\n if (state.obj && present) prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n var explicit = this._decodeTag(input, state.explicit);\n\n if (input.isError(explicit)) return explicit;\n input = explicit;\n }\n\n var start = input.offset; // Unwrap implicit and normal values\n\n if (state.use === null && state.choice === null) {\n var _save;\n\n if (state.any) _save = input.save();\n\n var body = this._decodeTag(input, state.implicit !== null ? state.implicit : state.tag, state.any);\n\n if (input.isError(body)) return body;\n if (state.any) result = input.raw(_save);else input = body;\n }\n\n if (options && options.track && state.tag !== null) options.track(input.path(), start, input.length, 'tagged');\n if (options && options.track && state.tag !== null) options.track(input.path(), input.offset, input.length, 'content'); // Select proper method for tag\n\n if (state.any) {// no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result)) return result; // Decode children\n\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n } // Decode contained/encoded by schema, only in bit or octet strings\n\n\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n var data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)._decode(data, options);\n }\n } // Pop object\n\n\n if (state.obj && present) result = input.leaveObject(prevObj); // Set key\n\n if (state.key !== null && (result !== null || present === true)) input.leaveKey(prevKey, state.key, result);else if (prevKey !== null) input.exitKey(prevKey);\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n var state = this._baseState;\n if (tag === 'seq' || tag === 'set') return null;\n if (tag === 'seqof' || tag === 'setof') return this._decodeList(input, tag, state.args[0], options);else if (/str$/.test(tag)) return this._decodeStr(input, tag, options);else if (tag === 'objid' && state.args) return this._decodeObjid(input, state.args[0], state.args[1], options);else if (tag === 'objid') return this._decodeObjid(input, null, null, options);else if (tag === 'gentime' || tag === 'utctime') return this._decodeTime(input, tag, options);else if (tag === 'null_') return this._decodeNull(input, options);else if (tag === 'bool') return this._decodeBool(input, options);else if (tag === 'objDesc') return this._decodeStr(input, tag, options);else if (tag === 'int' || tag === 'enum') return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n var state = this._baseState; // Create altered use decoder if implicit is set\n\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n var state = this._baseState;\n var result = null;\n var match = false;\n Object.keys(state.choice).some(function (key) {\n var save = input.save();\n var node = state.choice[key];\n\n try {\n var value = node._decode(input, options);\n\n if (input.isError(value)) return false;\n result = {\n type: key,\n value: value\n };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n\n return true;\n }, this);\n if (!match) return input.error('Choice not matched');\n return result;\n}; //\n// Encoding\n//\n\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n var state = this._baseState;\n if (state['default'] !== null && state['default'] === data) return;\n\n var result = this._encodeValue(data, reporter, parent);\n\n if (result === undefined) return;\n if (this._skipDefault(result, reporter, parent)) return;\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n var state = this._baseState; // Decode root node\n\n if (state.parent === null) return state.children[0]._encode(data, reporter || new Reporter());\n var result = null; // Set reporter to share it with a child class\n\n this.reporter = reporter; // Check if data is there\n\n if (state.optional && data === undefined) {\n if (state['default'] !== null) data = state['default'];else return;\n } // Encode children first\n\n\n var content = null;\n var primitive = false;\n\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function (child) {\n if (child._baseState.tag === 'null_') return child._encode(null, reporter, data);\n if (child._baseState.key === null) return reporter.error('Child should have a key');\n var prevKey = reporter.enterKey(child._baseState.key);\n if (typeof data !== 'object') return reporter.error('Child expected, but input is not object');\n\n var res = child._encode(data[child._baseState.key], reporter, data);\n\n reporter.leaveKey(prevKey);\n return res;\n }, this).filter(function (child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1)) return reporter.error('Too many args for : ' + state.tag);\n if (!Array.isArray(data)) return reporter.error('seqof/setof, but data is not Array');\n var child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function (item) {\n var state = this._baseState;\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n } // Encode data itself\n\n\n if (!state.any && state.choice === null) {\n var tag = state.implicit !== null ? state.implicit : state.tag;\n var cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null) reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null) result = this._encodeComposite(tag, primitive, cls, content);\n }\n } // Wrap in explicit\n\n\n if (state.explicit !== null) result = this._encodeComposite(state.explicit, false, 'context', result);\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n var state = this._baseState;\n var node = state.choice[data.type];\n\n if (!node) {\n assert(false, data.type + ' not found in ' + JSON.stringify(Object.keys(state.choice)));\n }\n\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n var state = this._baseState;\n if (/str$/.test(tag)) return this._encodeStr(data, tag);else if (tag === 'objid' && state.args) return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);else if (tag === 'objid') return this._encodeObjid(data, null, null);else if (tag === 'gentime' || tag === 'utctime') return this._encodeTime(data, tag);else if (tag === 'null_') return this._encodeNull();else if (tag === 'int' || tag === 'enum') return this._encodeInt(data, state.args && state.reverseArgs[0]);else if (tag === 'bool') return this._encodeBool(data);else if (tag === 'objDesc') return this._encodeStr(data, tag);else throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/asn1.js/lib/asn1/base/node.js?"); | |
| 180 | - | |
| 181 | -/***/ }), | |
| 182 | - | |
| 183 | -/***/ "./node_modules/asn1.js/lib/asn1/base/reporter.js": | |
| 184 | -/*!********************************************************!*\ | |
| 185 | - !*** ./node_modules/asn1.js/lib/asn1/base/reporter.js ***! | |
| 186 | - \********************************************************/ | |
| 187 | -/*! no static exports found */ | |
| 188 | -/***/ (function(module, exports, __webpack_require__) { | |
| 189 | - | |
| 190 | -"use strict"; | |
| 191 | -eval("\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\n\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n var state = this._reporterState;\n return {\n obj: state.obj,\n pathLen: state.path.length\n };\n};\n\nReporter.prototype.restore = function restore(data) {\n var state = this._reporterState;\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n var state = this._reporterState;\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n var state = this._reporterState;\n this.exitKey(index);\n if (state.obj !== null) state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n var state = this._reporterState;\n var prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n var state = this._reporterState;\n var now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n var err;\n var state = this._reporterState;\n var inherited = msg instanceof ReporterError;\n\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function (elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial) throw err;\n if (!inherited) state.errors.push(err);\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n var state = this._reporterState;\n if (!state.options.partial) return result;\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\n\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace) Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n\n return this;\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/asn1.js/lib/asn1/base/reporter.js?"); | |
| 192 | - | |
| 193 | -/***/ }), | |
| 194 | - | |
| 195 | -/***/ "./node_modules/asn1.js/lib/asn1/constants/der.js": | |
| 196 | -/*!********************************************************!*\ | |
| 197 | - !*** ./node_modules/asn1.js/lib/asn1/constants/der.js ***! | |
| 198 | - \********************************************************/ | |
| 199 | -/*! no static exports found */ | |
| 200 | -/***/ (function(module, exports, __webpack_require__) { | |
| 201 | - | |
| 202 | -"use strict"; | |
| 203 | -eval(" // Helper\n\nfunction reverse(map) {\n var res = {};\n Object.keys(map).forEach(function (key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key) key = key | 0;\n var value = map[key];\n res[value] = key;\n });\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/asn1.js/lib/asn1/constants/der.js?"); | |
| 204 | - | |
| 205 | -/***/ }), | |
| 206 | - | |
| 207 | -/***/ "./node_modules/asn1.js/lib/asn1/constants/index.js": | |
| 208 | -/*!**********************************************************!*\ | |
| 209 | - !*** ./node_modules/asn1.js/lib/asn1/constants/index.js ***! | |
| 210 | - \**********************************************************/ | |
| 211 | -/*! no static exports found */ | |
| 212 | -/***/ (function(module, exports, __webpack_require__) { | |
| 213 | - | |
| 214 | -"use strict"; | |
| 215 | -eval("\n\nvar constants = exports; // Helper\n\nconstants._reverse = function reverse(map) {\n var res = {};\n Object.keys(map).forEach(function (key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key) key = key | 0;\n var value = map[key];\n res[value] = key;\n });\n return res;\n};\n\nconstants.der = __webpack_require__(/*! ./der */ \"./node_modules/asn1.js/lib/asn1/constants/der.js\");\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/asn1.js/lib/asn1/constants/index.js?"); | |
| 216 | - | |
| 217 | -/***/ }), | |
| 218 | - | |
| 219 | -/***/ "./node_modules/asn1.js/lib/asn1/decoders/der.js": | |
| 220 | -/*!*******************************************************!*\ | |
| 221 | - !*** ./node_modules/asn1.js/lib/asn1/decoders/der.js ***! | |
| 222 | - \*******************************************************/ | |
| 223 | -/*! no static exports found */ | |
| 224 | -/***/ (function(module, exports, __webpack_require__) { | |
| 225 | - | |
| 226 | -"use strict"; | |
| 227 | -eval("\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar bignum = __webpack_require__(/*! bn.js */ \"./node_modules/asn1.js/node_modules/bn.js/lib/bn.js\");\n\nvar DecoderBuffer = __webpack_require__(/*! ../base/buffer */ \"./node_modules/asn1.js/lib/asn1/base/buffer.js\").DecoderBuffer;\n\nvar Node = __webpack_require__(/*! ../base/node */ \"./node_modules/asn1.js/lib/asn1/base/node.js\"); // Import DER constants\n\n\nvar der = __webpack_require__(/*! ../constants/der */ \"./node_modules/asn1.js/lib/asn1/constants/der.js\");\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity; // Construct base tree\n\n this.tree = new DERNode();\n\n this.tree._init(entity.body);\n}\n\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n}; // Tree methods\n\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\n\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty()) return false;\n var state = buffer.save();\n var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag)) return decodedTag;\n buffer.restore(state);\n return decodedTag.tag === tag || decodedTag.tagStr === tag || decodedTag.tagStr + 'of' === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n var decodedTag = derDecodeTag(buffer, 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag)) return decodedTag;\n var len = derDecodeLen(buffer, decodedTag.primitive, 'Failed to get length of \"' + tag + '\"'); // Failure\n\n if (buffer.isError(len)) return len;\n\n if (!any && decodedTag.tag !== tag && decodedTag.tagStr !== tag && decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null) return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"'); // Indefinite length... find END tag\n\n var state = buffer.save();\n\n var res = this._skipUntilEnd(buffer, 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n\n if (buffer.isError(res)) return res;\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n var tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag)) return tag;\n var len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len)) return len;\n var res = void 0;\n if (tag.primitive || len !== null) res = buffer.skip(len);else res = this._skipUntilEnd(buffer, fail); // Failure\n\n if (buffer.isError(res)) return res;\n if (tag.tagStr === 'end') break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder, options) {\n var result = [];\n\n while (!buffer.isEmpty()) {\n var possibleEnd = this._peekTag(buffer, 'end');\n\n if (buffer.isError(possibleEnd)) return possibleEnd;\n var res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd) break;\n result.push(res);\n }\n\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n var unused = buffer.readUInt8();\n if (buffer.isError(unused)) return unused;\n return {\n unused: unused,\n data: buffer.raw()\n };\n } else if (tag === 'bmpstr') {\n var raw = buffer.raw();\n if (raw.length % 2 === 1) return buffer.error('Decoding of string type: bmpstr length mismatch');\n var str = '';\n\n for (var i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n\n return str;\n } else if (tag === 'numstr') {\n var numstr = buffer.raw().toString('ascii');\n\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' + 'numstr unsupported characters');\n }\n\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n var printstr = buffer.raw().toString('ascii');\n\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' + 'printstr unsupported characters');\n }\n\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n var result;\n var identifiers = [];\n var ident = 0;\n var subident = 0;\n\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n\n if (subident & 0x80) identifiers.push(ident);\n var first = identifiers[0] / 40 | 0;\n var second = identifiers[0] % 40;\n if (relative) result = identifiers;else result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n var tmp = values[result.join(' ')];\n if (tmp === undefined) tmp = values[result.join('.')];\n if (tmp !== undefined) result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n var str = buffer.raw().toString();\n var year;\n var mon;\n var day;\n var hour;\n var min;\n var sec;\n\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70) year = 2000 + year;else year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n var res = buffer.readUInt8();\n if (buffer.isError(res)) return res;else return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n var raw = buffer.raw();\n var res = new bignum(raw);\n if (values) res = values[res.toString(10)] || res;\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function') entity = entity(obj);\n return entity._getDecoder('der').tree;\n}; // Utility methods\n\n\nfunction derDecodeTag(buf, fail) {\n var tag = buf.readUInt8(fail);\n if (buf.isError(tag)) return tag;\n var cls = der.tagClass[tag >> 6];\n var primitive = (tag & 0x20) === 0; // Multi-octet tag - load\n\n if ((tag & 0x1f) === 0x1f) {\n var oct = tag;\n tag = 0;\n\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct)) return oct;\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n\n var tagStr = der.tag[tag];\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n var len = buf.readUInt8(fail);\n if (buf.isError(len)) return len; // Indefinite form\n\n if (!primitive && len === 0x80) return null; // Definite form\n\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n } // Long form\n\n\n var num = len & 0x7f;\n if (num > 4) return buf.error('length octect is too long');\n len = 0;\n\n for (var i = 0; i < num; i++) {\n len <<= 8;\n var j = buf.readUInt8(fail);\n if (buf.isError(j)) return j;\n len |= j;\n }\n\n return len;\n}\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/asn1.js/lib/asn1/decoders/der.js?"); | |
| 228 | - | |
| 229 | -/***/ }), | |
| 230 | - | |
| 231 | -/***/ "./node_modules/asn1.js/lib/asn1/decoders/index.js": | |
| 232 | -/*!*********************************************************!*\ | |
| 233 | - !*** ./node_modules/asn1.js/lib/asn1/decoders/index.js ***! | |
| 234 | - \*********************************************************/ | |
| 235 | -/*! no static exports found */ | |
| 236 | -/***/ (function(module, exports, __webpack_require__) { | |
| 237 | - | |
| 238 | -"use strict"; | |
| 239 | -eval("\n\nvar decoders = exports;\ndecoders.der = __webpack_require__(/*! ./der */ \"./node_modules/asn1.js/lib/asn1/decoders/der.js\");\ndecoders.pem = __webpack_require__(/*! ./pem */ \"./node_modules/asn1.js/lib/asn1/decoders/pem.js\");\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/asn1.js/lib/asn1/decoders/index.js?"); | |
| 240 | - | |
| 241 | -/***/ }), | |
| 242 | - | |
| 243 | -/***/ "./node_modules/asn1.js/lib/asn1/decoders/pem.js": | |
| 244 | -/*!*******************************************************!*\ | |
| 245 | - !*** ./node_modules/asn1.js/lib/asn1/decoders/pem.js ***! | |
| 246 | - \*******************************************************/ | |
| 247 | -/*! no static exports found */ | |
| 248 | -/***/ (function(module, exports, __webpack_require__) { | |
| 249 | - | |
| 250 | -"use strict"; | |
| 251 | -eval("\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar Buffer = __webpack_require__(/*! safer-buffer */ \"./node_modules/safer-buffer/safer.js\").Buffer;\n\nvar DERDecoder = __webpack_require__(/*! ./der */ \"./node_modules/asn1.js/lib/asn1/decoders/der.js\");\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\n\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n var lines = data.toString().split(/[\\r\\n]+/g);\n var label = options.label.toUpperCase();\n var re = /^-----(BEGIN|END) ([^-]+)-----$/;\n var start = -1;\n var end = -1;\n\n for (var i = 0; i < lines.length; i++) {\n var match = lines[i].match(re);\n if (match === null) continue;\n if (match[2] !== label) continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN') break;\n start = i;\n } else {\n if (match[1] !== 'END') break;\n end = i;\n break;\n }\n }\n\n if (start === -1 || end === -1) throw new Error('PEM section not found for: ' + label);\n var base64 = lines.slice(start + 1, end).join(''); // Remove excessive symbols\n\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n var input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/asn1.js/lib/asn1/decoders/pem.js?"); | |
| 252 | - | |
| 253 | -/***/ }), | |
| 254 | - | |
| 255 | -/***/ "./node_modules/asn1.js/lib/asn1/encoders/der.js": | |
| 256 | -/*!*******************************************************!*\ | |
| 257 | - !*** ./node_modules/asn1.js/lib/asn1/encoders/der.js ***! | |
| 258 | - \*******************************************************/ | |
| 259 | -/*! no static exports found */ | |
| 260 | -/***/ (function(module, exports, __webpack_require__) { | |
| 261 | - | |
| 262 | -"use strict"; | |
| 263 | -eval("\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar Buffer = __webpack_require__(/*! safer-buffer */ \"./node_modules/safer-buffer/safer.js\").Buffer;\n\nvar Node = __webpack_require__(/*! ../base/node */ \"./node_modules/asn1.js/lib/asn1/base/node.js\"); // Import DER constants\n\n\nvar der = __webpack_require__(/*! ../constants/der */ \"./node_modules/asn1.js/lib/asn1/constants/der.js\");\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity; // Construct base tree\n\n this.tree = new DERNode();\n\n this.tree._init(entity.body);\n}\n\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n}; // Tree methods\n\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\n\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag, primitive, cls, content) {\n var encodedTag = encodeTag(tag, primitive, cls, this.reporter); // Short form\n\n if (content.length < 0x80) {\n var _header = Buffer.alloc(2);\n\n _header[0] = encodedTag;\n _header[1] = content.length;\n return this._createEncoderBuffer([_header, content]);\n } // Long form\n // Count octets required to store length\n\n\n var lenOctets = 1;\n\n for (var i = content.length; i >= 0x100; i >>= 8) {\n lenOctets++;\n }\n\n var header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (var _i = 1 + lenOctets, j = content.length; j > 0; _i--, j >>= 8) {\n header[_i] = j & 0xff;\n }\n\n return this._createEncoderBuffer([header, content]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([str.unused | 0, str.data]);\n } else if (tag === 'bmpstr') {\n var buf = Buffer.alloc(str.length * 2);\n\n for (var i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' + 'only digits and space');\n }\n\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' + 'only latin upper and lower case letters, ' + 'digits, space, apostrophe, left and rigth ' + 'parenthesis, plus sign, comma, hyphen, ' + 'dot, slash, colon, equal sign, ' + 'question mark');\n }\n\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values) return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id)) return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n\n for (var i = 0; i < id.length; i++) {\n id[i] |= 0;\n }\n } else if (Array.isArray(id)) {\n id = id.slice();\n\n for (var _i2 = 0; _i2 < id.length; _i2++) {\n id[_i2] |= 0;\n }\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' + 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40) return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n } // Count number of octets\n\n\n var size = 0;\n\n for (var _i3 = 0; _i3 < id.length; _i3++) {\n var ident = id[_i3];\n\n for (size++; ident >= 0x80; ident >>= 7) {\n size++;\n }\n }\n\n var objid = Buffer.alloc(size);\n var offset = objid.length - 1;\n\n for (var _i4 = id.length - 1; _i4 >= 0; _i4--) {\n var _ident = id[_i4];\n objid[offset--] = _ident & 0x7f;\n\n while ((_ident >>= 7) > 0) {\n objid[offset--] = 0x80 | _ident & 0x7f;\n }\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10) return '0' + num;else return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n var str;\n var date = new Date(time);\n\n if (tag === 'gentime') {\n str = [two(date.getUTCFullYear()), two(date.getUTCMonth() + 1), two(date.getUTCDate()), two(date.getUTCHours()), two(date.getUTCMinutes()), two(date.getUTCSeconds()), 'Z'].join('');\n } else if (tag === 'utctime') {\n str = [two(date.getUTCFullYear() % 100), two(date.getUTCMonth() + 1), two(date.getUTCDate()), two(date.getUTCHours()), two(date.getUTCMinutes()), two(date.getUTCSeconds()), 'Z'].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values) return this.reporter.error('String int or enum given, but no values map');\n\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' + JSON.stringify(num));\n }\n\n num = values[num];\n } // Bignum, assume big endian\n\n\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n var numArray = num.toArray();\n\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n var _size = num.length;\n if (num.length === 0) _size++;\n\n var _out = Buffer.alloc(_size);\n\n num.copy(_out);\n if (num.length === 0) _out[0] = 0;\n return this._createEncoderBuffer(_out);\n }\n\n if (num < 0x80) return this._createEncoderBuffer(num);\n if (num < 0x100) return this._createEncoderBuffer([0, num]);\n var size = 1;\n\n for (var i = num; i >= 0x100; i >>= 8) {\n size++;\n }\n\n var out = new Array(size);\n\n for (var _i5 = out.length - 1; _i5 >= 0; _i5--) {\n out[_i5] = num & 0xff;\n num >>= 8;\n }\n\n if (out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function') entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n var state = this._baseState;\n var i;\n if (state['default'] === null) return false;\n var data = dataBuffer.join();\n if (state.defaultBuffer === undefined) state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n if (data.length !== state.defaultBuffer.length) return false;\n\n for (i = 0; i < data.length; i++) {\n if (data[i] !== state.defaultBuffer[i]) return false;\n }\n\n return true;\n}; // Utility methods\n\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n var res;\n if (tag === 'seqof') tag = 'seq';else if (tag === 'setof') tag = 'set';\n if (der.tagByName.hasOwnProperty(tag)) res = der.tagByName[tag];else if (typeof tag === 'number' && (tag | 0) === tag) res = tag;else return reporter.error('Unknown tag: ' + tag);\n if (res >= 0x1f) return reporter.error('Multi-octet tag encoding unsupported');\n if (!primitive) res |= 0x20;\n res |= der.tagClassByName[cls || 'universal'] << 6;\n return res;\n}\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/asn1.js/lib/asn1/encoders/der.js?"); | |
| 264 | - | |
| 265 | -/***/ }), | |
| 266 | - | |
| 267 | -/***/ "./node_modules/asn1.js/lib/asn1/encoders/index.js": | |
| 268 | -/*!*********************************************************!*\ | |
| 269 | - !*** ./node_modules/asn1.js/lib/asn1/encoders/index.js ***! | |
| 270 | - \*********************************************************/ | |
| 271 | -/*! no static exports found */ | |
| 272 | -/***/ (function(module, exports, __webpack_require__) { | |
| 273 | - | |
| 274 | -"use strict"; | |
| 275 | -eval("\n\nvar encoders = exports;\nencoders.der = __webpack_require__(/*! ./der */ \"./node_modules/asn1.js/lib/asn1/encoders/der.js\");\nencoders.pem = __webpack_require__(/*! ./pem */ \"./node_modules/asn1.js/lib/asn1/encoders/pem.js\");\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/asn1.js/lib/asn1/encoders/index.js?"); | |
| 276 | - | |
| 277 | -/***/ }), | |
| 278 | - | |
| 279 | -/***/ "./node_modules/asn1.js/lib/asn1/encoders/pem.js": | |
| 280 | -/*!*******************************************************!*\ | |
| 281 | - !*** ./node_modules/asn1.js/lib/asn1/encoders/pem.js ***! | |
| 282 | - \*******************************************************/ | |
| 283 | -/*! no static exports found */ | |
| 284 | -/***/ (function(module, exports, __webpack_require__) { | |
| 285 | - | |
| 286 | -"use strict"; | |
| 287 | -eval("\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar DEREncoder = __webpack_require__(/*! ./der */ \"./node_modules/asn1.js/lib/asn1/encoders/der.js\");\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\n\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n var buf = DEREncoder.prototype.encode.call(this, data);\n var p = buf.toString('base64');\n var out = ['-----BEGIN ' + options.label + '-----'];\n\n for (var i = 0; i < p.length; i += 64) {\n out.push(p.slice(i, i + 64));\n }\n\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/asn1.js/lib/asn1/encoders/pem.js?"); | |
| 288 | - | |
| 289 | -/***/ }), | |
| 290 | - | |
| 291 | -/***/ "./node_modules/asn1.js/node_modules/bn.js/lib/bn.js": | |
| 292 | -/*!***********************************************************!*\ | |
| 293 | - !*** ./node_modules/asn1.js/node_modules/bn.js/lib/bn.js ***! | |
| 294 | - \***********************************************************/ | |
| 295 | -/*! no static exports found */ | |
| 296 | -/***/ (function(module, exports, __webpack_require__) { | |
| 297 | - | |
| 298 | -eval("/* WEBPACK VAR INJECTION */(function(module) {(function (module, exports) {\n 'use strict'; // Utils\n\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n } // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n\n\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n } // BN\n\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0; // Reduction context\n\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n var Buffer;\n\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = __webpack_require__(/*! buffer */ 11).Buffer;\n }\n } catch (e) {}\n\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n\n if (endian !== 'le') return; // Reverse the bytes\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray(number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n\n return this.strip();\n };\n\n function parseHex4Bits(string, index) {\n var c = string.charCodeAt(index); // 'A' - 'F'\n\n if (c >= 65 && c <= 70) {\n return c - 55; // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87; // '0' - '9'\n } else {\n return c - 48 & 0xf;\n }\n }\n\n function parseHexByte(string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex(number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n } // 24-bits chunks\n\n\n var off = 0;\n var j = 0;\n var w;\n\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase(str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul; // 'a'\n\n if (c >= 49) {\n r += c - 49 + 0xa; // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa; // '0' - '9'\n } else {\n r += c;\n }\n }\n\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase(number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1; // Find length of limb in base\n\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand(size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n\n return this;\n }; // Remove leading `0` from `this`\n\n\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign() {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n\n return this;\n };\n\n BN.prototype.inspect = function inspect() {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n */\n\n\n var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = ((w << off | carry) & 0xffffff).toString(16);\n carry = w >>> 24 - off & 0xffffff;\n\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n\n off += 2;\n\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base]; // var groupBase = Math.pow(base, groupSize);\n\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n\n if (this.isZero()) {\n out = '0' + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber() {\n var ret = this.words[0];\n\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + this.words[1] * 0x4000000;\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n\n return this.negative !== 0 ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\n var t = w;\n var r = 0;\n\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n\n if ((t & 0x1) === 0) {\n r++;\n }\n\n return r;\n }; // Return number of used bits in a BN\n\n\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n\n var hi = this._countBits(w);\n\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray(num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n\n return w;\n } // Number of trailing zero bits\n\n\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n\n r += b;\n if (b !== 26) break;\n }\n\n return r;\n };\n\n BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos(width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos(width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n }; // Return negative clone of `this`\n\n\n BN.prototype.neg = function neg() {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n }; // Or `num` with `this` in-place\n\n\n BN.prototype.iuor = function iuor(num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n }; // Or `num` with `this`\n\n\n BN.prototype.or = function or(num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor(num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n }; // And `num` with `this` in-place\n\n\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n return this.strip();\n };\n\n BN.prototype.iand = function iand(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n }; // And `num` with `this`\n\n\n BN.prototype.and = function and(num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand(num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n }; // Xor `num` with `this` in-place\n\n\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n }; // Xor `num` with `this`\n\n\n BN.prototype.xor = function xor(num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor(num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n }; // Not ``this`` with ``width`` bitwidth\n\n\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26; // Extend the buffer with leading zeroes\n\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n } // Handle complete words\n\n\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n } // Handle the residue\n\n\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n } // And remove leading zeroes\n\n\n return this.strip();\n };\n\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n }; // Set `bit` of `this`\n\n\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | 1 << wbit;\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n }; // Add `num` to `this` in-place\n\n\n BN.prototype.iadd = function iadd(num) {\n var r; // negative + positive\n\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign(); // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n } // a.length > b.length\n\n\n var a, b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++; // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n }; // Add `num` to `this`\n\n\n BN.prototype.add = function add(num) {\n var res;\n\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n return num.clone().iadd(this);\n }; // Subtract `num` from `this` in-place\n\n\n BN.prototype.isub = function isub(num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign(); // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n } // At this point both numbers are positive\n\n\n var cmp = this.cmp(num); // Optimization - zeroify\n\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n } // a > b\n\n\n var a, b;\n\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n } // Copy rest of the words\n\n\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n }; // Subtract `num` from `this`\n\n\n BN.prototype.sub = function sub(num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = self.length + num.length | 0;\n out.length = len;\n len = len - 1 | 0; // Peel one iteration (compiler can't do it, because of code complexity)\n\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += r / 0x4000000 | 0;\n rword = r & 0x3ffffff;\n }\n\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n } // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n\n\n var comb10MulTo = function comb10MulTo(self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = mid + Math.imul(ah0, bl0) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = mid + Math.imul(ah1, bl0) | 0;\n hi = Math.imul(ah1, bh0);\n lo = lo + Math.imul(al0, bl1) | 0;\n mid = mid + Math.imul(al0, bh1) | 0;\n mid = mid + Math.imul(ah0, bl1) | 0;\n hi = hi + Math.imul(ah0, bh1) | 0;\n var w1 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = mid + Math.imul(ah2, bl0) | 0;\n hi = Math.imul(ah2, bh0);\n lo = lo + Math.imul(al1, bl1) | 0;\n mid = mid + Math.imul(al1, bh1) | 0;\n mid = mid + Math.imul(ah1, bl1) | 0;\n hi = hi + Math.imul(ah1, bh1) | 0;\n lo = lo + Math.imul(al0, bl2) | 0;\n mid = mid + Math.imul(al0, bh2) | 0;\n mid = mid + Math.imul(ah0, bl2) | 0;\n hi = hi + Math.imul(ah0, bh2) | 0;\n var w2 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = mid + Math.imul(ah3, bl0) | 0;\n hi = Math.imul(ah3, bh0);\n lo = lo + Math.imul(al2, bl1) | 0;\n mid = mid + Math.imul(al2, bh1) | 0;\n mid = mid + Math.imul(ah2, bl1) | 0;\n hi = hi + Math.imul(ah2, bh1) | 0;\n lo = lo + Math.imul(al1, bl2) | 0;\n mid = mid + Math.imul(al1, bh2) | 0;\n mid = mid + Math.imul(ah1, bl2) | 0;\n hi = hi + Math.imul(ah1, bh2) | 0;\n lo = lo + Math.imul(al0, bl3) | 0;\n mid = mid + Math.imul(al0, bh3) | 0;\n mid = mid + Math.imul(ah0, bl3) | 0;\n hi = hi + Math.imul(ah0, bh3) | 0;\n var w3 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = mid + Math.imul(ah4, bl0) | 0;\n hi = Math.imul(ah4, bh0);\n lo = lo + Math.imul(al3, bl1) | 0;\n mid = mid + Math.imul(al3, bh1) | 0;\n mid = mid + Math.imul(ah3, bl1) | 0;\n hi = hi + Math.imul(ah3, bh1) | 0;\n lo = lo + Math.imul(al2, bl2) | 0;\n mid = mid + Math.imul(al2, bh2) | 0;\n mid = mid + Math.imul(ah2, bl2) | 0;\n hi = hi + Math.imul(ah2, bh2) | 0;\n lo = lo + Math.imul(al1, bl3) | 0;\n mid = mid + Math.imul(al1, bh3) | 0;\n mid = mid + Math.imul(ah1, bl3) | 0;\n hi = hi + Math.imul(ah1, bh3) | 0;\n lo = lo + Math.imul(al0, bl4) | 0;\n mid = mid + Math.imul(al0, bh4) | 0;\n mid = mid + Math.imul(ah0, bl4) | 0;\n hi = hi + Math.imul(ah0, bh4) | 0;\n var w4 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = mid + Math.imul(ah5, bl0) | 0;\n hi = Math.imul(ah5, bh0);\n lo = lo + Math.imul(al4, bl1) | 0;\n mid = mid + Math.imul(al4, bh1) | 0;\n mid = mid + Math.imul(ah4, bl1) | 0;\n hi = hi + Math.imul(ah4, bh1) | 0;\n lo = lo + Math.imul(al3, bl2) | 0;\n mid = mid + Math.imul(al3, bh2) | 0;\n mid = mid + Math.imul(ah3, bl2) | 0;\n hi = hi + Math.imul(ah3, bh2) | 0;\n lo = lo + Math.imul(al2, bl3) | 0;\n mid = mid + Math.imul(al2, bh3) | 0;\n mid = mid + Math.imul(ah2, bl3) | 0;\n hi = hi + Math.imul(ah2, bh3) | 0;\n lo = lo + Math.imul(al1, bl4) | 0;\n mid = mid + Math.imul(al1, bh4) | 0;\n mid = mid + Math.imul(ah1, bl4) | 0;\n hi = hi + Math.imul(ah1, bh4) | 0;\n lo = lo + Math.imul(al0, bl5) | 0;\n mid = mid + Math.imul(al0, bh5) | 0;\n mid = mid + Math.imul(ah0, bl5) | 0;\n hi = hi + Math.imul(ah0, bh5) | 0;\n var w5 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = mid + Math.imul(ah6, bl0) | 0;\n hi = Math.imul(ah6, bh0);\n lo = lo + Math.imul(al5, bl1) | 0;\n mid = mid + Math.imul(al5, bh1) | 0;\n mid = mid + Math.imul(ah5, bl1) | 0;\n hi = hi + Math.imul(ah5, bh1) | 0;\n lo = lo + Math.imul(al4, bl2) | 0;\n mid = mid + Math.imul(al4, bh2) | 0;\n mid = mid + Math.imul(ah4, bl2) | 0;\n hi = hi + Math.imul(ah4, bh2) | 0;\n lo = lo + Math.imul(al3, bl3) | 0;\n mid = mid + Math.imul(al3, bh3) | 0;\n mid = mid + Math.imul(ah3, bl3) | 0;\n hi = hi + Math.imul(ah3, bh3) | 0;\n lo = lo + Math.imul(al2, bl4) | 0;\n mid = mid + Math.imul(al2, bh4) | 0;\n mid = mid + Math.imul(ah2, bl4) | 0;\n hi = hi + Math.imul(ah2, bh4) | 0;\n lo = lo + Math.imul(al1, bl5) | 0;\n mid = mid + Math.imul(al1, bh5) | 0;\n mid = mid + Math.imul(ah1, bl5) | 0;\n hi = hi + Math.imul(ah1, bh5) | 0;\n lo = lo + Math.imul(al0, bl6) | 0;\n mid = mid + Math.imul(al0, bh6) | 0;\n mid = mid + Math.imul(ah0, bl6) | 0;\n hi = hi + Math.imul(ah0, bh6) | 0;\n var w6 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = mid + Math.imul(ah7, bl0) | 0;\n hi = Math.imul(ah7, bh0);\n lo = lo + Math.imul(al6, bl1) | 0;\n mid = mid + Math.imul(al6, bh1) | 0;\n mid = mid + Math.imul(ah6, bl1) | 0;\n hi = hi + Math.imul(ah6, bh1) | 0;\n lo = lo + Math.imul(al5, bl2) | 0;\n mid = mid + Math.imul(al5, bh2) | 0;\n mid = mid + Math.imul(ah5, bl2) | 0;\n hi = hi + Math.imul(ah5, bh2) | 0;\n lo = lo + Math.imul(al4, bl3) | 0;\n mid = mid + Math.imul(al4, bh3) | 0;\n mid = mid + Math.imul(ah4, bl3) | 0;\n hi = hi + Math.imul(ah4, bh3) | 0;\n lo = lo + Math.imul(al3, bl4) | 0;\n mid = mid + Math.imul(al3, bh4) | 0;\n mid = mid + Math.imul(ah3, bl4) | 0;\n hi = hi + Math.imul(ah3, bh4) | 0;\n lo = lo + Math.imul(al2, bl5) | 0;\n mid = mid + Math.imul(al2, bh5) | 0;\n mid = mid + Math.imul(ah2, bl5) | 0;\n hi = hi + Math.imul(ah2, bh5) | 0;\n lo = lo + Math.imul(al1, bl6) | 0;\n mid = mid + Math.imul(al1, bh6) | 0;\n mid = mid + Math.imul(ah1, bl6) | 0;\n hi = hi + Math.imul(ah1, bh6) | 0;\n lo = lo + Math.imul(al0, bl7) | 0;\n mid = mid + Math.imul(al0, bh7) | 0;\n mid = mid + Math.imul(ah0, bl7) | 0;\n hi = hi + Math.imul(ah0, bh7) | 0;\n var w7 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = mid + Math.imul(ah8, bl0) | 0;\n hi = Math.imul(ah8, bh0);\n lo = lo + Math.imul(al7, bl1) | 0;\n mid = mid + Math.imul(al7, bh1) | 0;\n mid = mid + Math.imul(ah7, bl1) | 0;\n hi = hi + Math.imul(ah7, bh1) | 0;\n lo = lo + Math.imul(al6, bl2) | 0;\n mid = mid + Math.imul(al6, bh2) | 0;\n mid = mid + Math.imul(ah6, bl2) | 0;\n hi = hi + Math.imul(ah6, bh2) | 0;\n lo = lo + Math.imul(al5, bl3) | 0;\n mid = mid + Math.imul(al5, bh3) | 0;\n mid = mid + Math.imul(ah5, bl3) | 0;\n hi = hi + Math.imul(ah5, bh3) | 0;\n lo = lo + Math.imul(al4, bl4) | 0;\n mid = mid + Math.imul(al4, bh4) | 0;\n mid = mid + Math.imul(ah4, bl4) | 0;\n hi = hi + Math.imul(ah4, bh4) | 0;\n lo = lo + Math.imul(al3, bl5) | 0;\n mid = mid + Math.imul(al3, bh5) | 0;\n mid = mid + Math.imul(ah3, bl5) | 0;\n hi = hi + Math.imul(ah3, bh5) | 0;\n lo = lo + Math.imul(al2, bl6) | 0;\n mid = mid + Math.imul(al2, bh6) | 0;\n mid = mid + Math.imul(ah2, bl6) | 0;\n hi = hi + Math.imul(ah2, bh6) | 0;\n lo = lo + Math.imul(al1, bl7) | 0;\n mid = mid + Math.imul(al1, bh7) | 0;\n mid = mid + Math.imul(ah1, bl7) | 0;\n hi = hi + Math.imul(ah1, bh7) | 0;\n lo = lo + Math.imul(al0, bl8) | 0;\n mid = mid + Math.imul(al0, bh8) | 0;\n mid = mid + Math.imul(ah0, bl8) | 0;\n hi = hi + Math.imul(ah0, bh8) | 0;\n var w8 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = mid + Math.imul(ah9, bl0) | 0;\n hi = Math.imul(ah9, bh0);\n lo = lo + Math.imul(al8, bl1) | 0;\n mid = mid + Math.imul(al8, bh1) | 0;\n mid = mid + Math.imul(ah8, bl1) | 0;\n hi = hi + Math.imul(ah8, bh1) | 0;\n lo = lo + Math.imul(al7, bl2) | 0;\n mid = mid + Math.imul(al7, bh2) | 0;\n mid = mid + Math.imul(ah7, bl2) | 0;\n hi = hi + Math.imul(ah7, bh2) | 0;\n lo = lo + Math.imul(al6, bl3) | 0;\n mid = mid + Math.imul(al6, bh3) | 0;\n mid = mid + Math.imul(ah6, bl3) | 0;\n hi = hi + Math.imul(ah6, bh3) | 0;\n lo = lo + Math.imul(al5, bl4) | 0;\n mid = mid + Math.imul(al5, bh4) | 0;\n mid = mid + Math.imul(ah5, bl4) | 0;\n hi = hi + Math.imul(ah5, bh4) | 0;\n lo = lo + Math.imul(al4, bl5) | 0;\n mid = mid + Math.imul(al4, bh5) | 0;\n mid = mid + Math.imul(ah4, bl5) | 0;\n hi = hi + Math.imul(ah4, bh5) | 0;\n lo = lo + Math.imul(al3, bl6) | 0;\n mid = mid + Math.imul(al3, bh6) | 0;\n mid = mid + Math.imul(ah3, bl6) | 0;\n hi = hi + Math.imul(ah3, bh6) | 0;\n lo = lo + Math.imul(al2, bl7) | 0;\n mid = mid + Math.imul(al2, bh7) | 0;\n mid = mid + Math.imul(ah2, bl7) | 0;\n hi = hi + Math.imul(ah2, bh7) | 0;\n lo = lo + Math.imul(al1, bl8) | 0;\n mid = mid + Math.imul(al1, bh8) | 0;\n mid = mid + Math.imul(ah1, bl8) | 0;\n hi = hi + Math.imul(ah1, bh8) | 0;\n lo = lo + Math.imul(al0, bl9) | 0;\n mid = mid + Math.imul(al0, bh9) | 0;\n mid = mid + Math.imul(ah0, bl9) | 0;\n hi = hi + Math.imul(ah0, bh9) | 0;\n var w9 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = mid + Math.imul(ah9, bl1) | 0;\n hi = Math.imul(ah9, bh1);\n lo = lo + Math.imul(al8, bl2) | 0;\n mid = mid + Math.imul(al8, bh2) | 0;\n mid = mid + Math.imul(ah8, bl2) | 0;\n hi = hi + Math.imul(ah8, bh2) | 0;\n lo = lo + Math.imul(al7, bl3) | 0;\n mid = mid + Math.imul(al7, bh3) | 0;\n mid = mid + Math.imul(ah7, bl3) | 0;\n hi = hi + Math.imul(ah7, bh3) | 0;\n lo = lo + Math.imul(al6, bl4) | 0;\n mid = mid + Math.imul(al6, bh4) | 0;\n mid = mid + Math.imul(ah6, bl4) | 0;\n hi = hi + Math.imul(ah6, bh4) | 0;\n lo = lo + Math.imul(al5, bl5) | 0;\n mid = mid + Math.imul(al5, bh5) | 0;\n mid = mid + Math.imul(ah5, bl5) | 0;\n hi = hi + Math.imul(ah5, bh5) | 0;\n lo = lo + Math.imul(al4, bl6) | 0;\n mid = mid + Math.imul(al4, bh6) | 0;\n mid = mid + Math.imul(ah4, bl6) | 0;\n hi = hi + Math.imul(ah4, bh6) | 0;\n lo = lo + Math.imul(al3, bl7) | 0;\n mid = mid + Math.imul(al3, bh7) | 0;\n mid = mid + Math.imul(ah3, bl7) | 0;\n hi = hi + Math.imul(ah3, bh7) | 0;\n lo = lo + Math.imul(al2, bl8) | 0;\n mid = mid + Math.imul(al2, bh8) | 0;\n mid = mid + Math.imul(ah2, bl8) | 0;\n hi = hi + Math.imul(ah2, bh8) | 0;\n lo = lo + Math.imul(al1, bl9) | 0;\n mid = mid + Math.imul(al1, bh9) | 0;\n mid = mid + Math.imul(ah1, bl9) | 0;\n hi = hi + Math.imul(ah1, bh9) | 0;\n var w10 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = mid + Math.imul(ah9, bl2) | 0;\n hi = Math.imul(ah9, bh2);\n lo = lo + Math.imul(al8, bl3) | 0;\n mid = mid + Math.imul(al8, bh3) | 0;\n mid = mid + Math.imul(ah8, bl3) | 0;\n hi = hi + Math.imul(ah8, bh3) | 0;\n lo = lo + Math.imul(al7, bl4) | 0;\n mid = mid + Math.imul(al7, bh4) | 0;\n mid = mid + Math.imul(ah7, bl4) | 0;\n hi = hi + Math.imul(ah7, bh4) | 0;\n lo = lo + Math.imul(al6, bl5) | 0;\n mid = mid + Math.imul(al6, bh5) | 0;\n mid = mid + Math.imul(ah6, bl5) | 0;\n hi = hi + Math.imul(ah6, bh5) | 0;\n lo = lo + Math.imul(al5, bl6) | 0;\n mid = mid + Math.imul(al5, bh6) | 0;\n mid = mid + Math.imul(ah5, bl6) | 0;\n hi = hi + Math.imul(ah5, bh6) | 0;\n lo = lo + Math.imul(al4, bl7) | 0;\n mid = mid + Math.imul(al4, bh7) | 0;\n mid = mid + Math.imul(ah4, bl7) | 0;\n hi = hi + Math.imul(ah4, bh7) | 0;\n lo = lo + Math.imul(al3, bl8) | 0;\n mid = mid + Math.imul(al3, bh8) | 0;\n mid = mid + Math.imul(ah3, bl8) | 0;\n hi = hi + Math.imul(ah3, bh8) | 0;\n lo = lo + Math.imul(al2, bl9) | 0;\n mid = mid + Math.imul(al2, bh9) | 0;\n mid = mid + Math.imul(ah2, bl9) | 0;\n hi = hi + Math.imul(ah2, bh9) | 0;\n var w11 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = mid + Math.imul(ah9, bl3) | 0;\n hi = Math.imul(ah9, bh3);\n lo = lo + Math.imul(al8, bl4) | 0;\n mid = mid + Math.imul(al8, bh4) | 0;\n mid = mid + Math.imul(ah8, bl4) | 0;\n hi = hi + Math.imul(ah8, bh4) | 0;\n lo = lo + Math.imul(al7, bl5) | 0;\n mid = mid + Math.imul(al7, bh5) | 0;\n mid = mid + Math.imul(ah7, bl5) | 0;\n hi = hi + Math.imul(ah7, bh5) | 0;\n lo = lo + Math.imul(al6, bl6) | 0;\n mid = mid + Math.imul(al6, bh6) | 0;\n mid = mid + Math.imul(ah6, bl6) | 0;\n hi = hi + Math.imul(ah6, bh6) | 0;\n lo = lo + Math.imul(al5, bl7) | 0;\n mid = mid + Math.imul(al5, bh7) | 0;\n mid = mid + Math.imul(ah5, bl7) | 0;\n hi = hi + Math.imul(ah5, bh7) | 0;\n lo = lo + Math.imul(al4, bl8) | 0;\n mid = mid + Math.imul(al4, bh8) | 0;\n mid = mid + Math.imul(ah4, bl8) | 0;\n hi = hi + Math.imul(ah4, bh8) | 0;\n lo = lo + Math.imul(al3, bl9) | 0;\n mid = mid + Math.imul(al3, bh9) | 0;\n mid = mid + Math.imul(ah3, bl9) | 0;\n hi = hi + Math.imul(ah3, bh9) | 0;\n var w12 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = mid + Math.imul(ah9, bl4) | 0;\n hi = Math.imul(ah9, bh4);\n lo = lo + Math.imul(al8, bl5) | 0;\n mid = mid + Math.imul(al8, bh5) | 0;\n mid = mid + Math.imul(ah8, bl5) | 0;\n hi = hi + Math.imul(ah8, bh5) | 0;\n lo = lo + Math.imul(al7, bl6) | 0;\n mid = mid + Math.imul(al7, bh6) | 0;\n mid = mid + Math.imul(ah7, bl6) | 0;\n hi = hi + Math.imul(ah7, bh6) | 0;\n lo = lo + Math.imul(al6, bl7) | 0;\n mid = mid + Math.imul(al6, bh7) | 0;\n mid = mid + Math.imul(ah6, bl7) | 0;\n hi = hi + Math.imul(ah6, bh7) | 0;\n lo = lo + Math.imul(al5, bl8) | 0;\n mid = mid + Math.imul(al5, bh8) | 0;\n mid = mid + Math.imul(ah5, bl8) | 0;\n hi = hi + Math.imul(ah5, bh8) | 0;\n lo = lo + Math.imul(al4, bl9) | 0;\n mid = mid + Math.imul(al4, bh9) | 0;\n mid = mid + Math.imul(ah4, bl9) | 0;\n hi = hi + Math.imul(ah4, bh9) | 0;\n var w13 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = mid + Math.imul(ah9, bl5) | 0;\n hi = Math.imul(ah9, bh5);\n lo = lo + Math.imul(al8, bl6) | 0;\n mid = mid + Math.imul(al8, bh6) | 0;\n mid = mid + Math.imul(ah8, bl6) | 0;\n hi = hi + Math.imul(ah8, bh6) | 0;\n lo = lo + Math.imul(al7, bl7) | 0;\n mid = mid + Math.imul(al7, bh7) | 0;\n mid = mid + Math.imul(ah7, bl7) | 0;\n hi = hi + Math.imul(ah7, bh7) | 0;\n lo = lo + Math.imul(al6, bl8) | 0;\n mid = mid + Math.imul(al6, bh8) | 0;\n mid = mid + Math.imul(ah6, bl8) | 0;\n hi = hi + Math.imul(ah6, bh8) | 0;\n lo = lo + Math.imul(al5, bl9) | 0;\n mid = mid + Math.imul(al5, bh9) | 0;\n mid = mid + Math.imul(ah5, bl9) | 0;\n hi = hi + Math.imul(ah5, bh9) | 0;\n var w14 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = mid + Math.imul(ah9, bl6) | 0;\n hi = Math.imul(ah9, bh6);\n lo = lo + Math.imul(al8, bl7) | 0;\n mid = mid + Math.imul(al8, bh7) | 0;\n mid = mid + Math.imul(ah8, bl7) | 0;\n hi = hi + Math.imul(ah8, bh7) | 0;\n lo = lo + Math.imul(al7, bl8) | 0;\n mid = mid + Math.imul(al7, bh8) | 0;\n mid = mid + Math.imul(ah7, bl8) | 0;\n hi = hi + Math.imul(ah7, bh8) | 0;\n lo = lo + Math.imul(al6, bl9) | 0;\n mid = mid + Math.imul(al6, bh9) | 0;\n mid = mid + Math.imul(ah6, bl9) | 0;\n hi = hi + Math.imul(ah6, bh9) | 0;\n var w15 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = mid + Math.imul(ah9, bl7) | 0;\n hi = Math.imul(ah9, bh7);\n lo = lo + Math.imul(al8, bl8) | 0;\n mid = mid + Math.imul(al8, bh8) | 0;\n mid = mid + Math.imul(ah8, bl8) | 0;\n hi = hi + Math.imul(ah8, bh8) | 0;\n lo = lo + Math.imul(al7, bl9) | 0;\n mid = mid + Math.imul(al7, bh9) | 0;\n mid = mid + Math.imul(ah7, bl9) | 0;\n hi = hi + Math.imul(ah7, bh9) | 0;\n var w16 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = mid + Math.imul(ah9, bl8) | 0;\n hi = Math.imul(ah9, bh8);\n lo = lo + Math.imul(al8, bl9) | 0;\n mid = mid + Math.imul(al8, bh9) | 0;\n mid = mid + Math.imul(ah8, bl9) | 0;\n hi = hi + Math.imul(ah8, bh9) | 0;\n var w17 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = mid + Math.imul(ah9, bl9) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n\n return out;\n }; // Polyfill comb\n\n\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n var carry = 0;\n var hncarry = 0;\n\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n ncarry = ncarry + (r / 0x4000000 | 0) | 0;\n lo = lo + rword | 0;\n rword = lo & 0x3ffffff;\n ncarry = ncarry + (lo >>> 26) | 0;\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo(num, out) {\n var res;\n var len = this.length + num.length;\n\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n }; // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n\n function FFTM(x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT(N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n }; // Returns binary-reversed representation of `x`\n\n\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n\n return rb;\n }; // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n\n\n FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n /* jshint maxdepth : false */\n\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b(n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b(ws, N) {\n var carry = 0;\n\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {\n var carry = 0;\n\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n } // Pad with zeroes\n\n\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub(N) {\n var ph = new Array(N);\n\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n }; // Multiply `this` by `num`\n\n\n BN.prototype.mul = function mul(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n }; // Multiply employing FFT\n\n\n BN.prototype.mulf = function mulf(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n }; // In-place Multiplication\n\n\n BN.prototype.imul = function imul(num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000); // Carry\n\n var carry = 0;\n\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += w / 0x4000000 | 0; // NOTE: lo is 27bit maximum\n\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln(num) {\n return this.clone().imuln(num);\n }; // `this` * `this`\n\n\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n }; // `this` * `this` in-place\n\n\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n }; // Math.pow(`this`, `num`)\n\n\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1); // Skip leading zeroes\n\n var res = this;\n\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\n }\n }\n\n return res;\n }; // Shift-left in-place\n\n\n BN.prototype.iushln = function iushln(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = 0x3ffffff >>> 26 - r << 26 - r;\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = (this.words[i] | 0) - newCarry << r;\n this.words[i] = c | carry;\n carry = newCarry >>> 26 - r;\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln(bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n }; // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n\n\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n\n if (hint) {\n h = (hint - hint % 26) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n var maskedWords = extended;\n h -= s;\n h = Math.max(0, h); // Extended mode, copy masked part\n\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n\n maskedWords.length = s;\n }\n\n if (s === 0) {// No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = carry << 26 - r | word >>> r;\n carry = word & mask;\n } // Push carried bits as a mask\n\n\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n }; // Shift-left\n\n\n BN.prototype.shln = function shln(bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln(bits) {\n return this.clone().iushln(bits);\n }; // Shift-right\n\n\n BN.prototype.shrn = function shrn(bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn(bits) {\n return this.clone().iushrn(bits);\n }; // Test if n bit is set\n\n\n BN.prototype.testn = function testn(bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) return false; // Check bit and return\n\n var w = this.words[s];\n return !!(w & q);\n }; // Return only lowers bits of number (in-place)\n\n\n BN.prototype.imaskn = function imaskn(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n }; // Return only lowers bits of number\n\n\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n }; // Add plain number `num` to `this`\n\n\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num); // Possible sign change\n\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n } // Add without checks\n\n\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num; // Carry\n\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n\n this.length = Math.max(this.length, i + 1);\n return this;\n }; // Subtract plain number `num` from `this`\n\n\n BN.prototype.isubn = function isubn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - (right / 0x4000000 | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip(); // Subtraction overflow\n\n assert(carry === -1);\n carry = 0;\n\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n\n this.negative = 1;\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num; // Normalize\n\n var bhi = b.words[b.length - 1] | 0;\n\n var bhiBits = this._countBits(bhi);\n\n shift = 26 - bhiBits;\n\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n } // Initialize quotient\n\n\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n\n if (diff.negative === 0) {\n a = diff;\n\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n\n a._ishlnsubmul(b, 1, j);\n\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n\n if (q) {\n q.words[j] = qj;\n }\n }\n\n if (q) {\n q.strip();\n }\n\n a.strip(); // Denormalize\n\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n }; // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n\n\n BN.prototype.divmod = function divmod(num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n } // Both numbers are positive at this point\n // Strip both numbers to approximate shift value\n\n\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n } // Very short reduction\n\n\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n }; // Find `this` / `num`\n\n\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n }; // Find `this` % `num`\n\n\n BN.prototype.mod = function mod(num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod(num) {\n return this.divmod(num, 'mod', true).mod;\n }; // Find Round(`this` / `num`)\n\n\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num); // Fast case - exact division\n\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half); // Round down\n\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up\n\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n }; // In-place division by number\n\n\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = w / num | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n } // A * x + B * y = x\n\n\n var A = new BN(1);\n var B = new BN(0); // C * x + D * y = y\n\n var C = new BN(0);\n var D = new BN(1);\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n x.iushrn(i);\n\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n y.iushrn(j);\n\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n }; // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n\n\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n a.iushrn(i);\n\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n b.iushrn(j);\n\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0; // Remove common factor of two\n\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n }; // Invert number in the field F(num)\n\n\n BN.prototype.invm = function invm(num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd() {\n return (this.words[0] & 1) === 1;\n }; // And first word and num\n\n\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n }; // Increment at the bit position in-line\n\n\n BN.prototype.bincn = function bincn(bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) {\n this._expand(s + 1);\n\n this.words[s] |= q;\n return this;\n } // Add bit and propagate, if needed\n\n\n var carry = q;\n\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n\n\n BN.prototype.cmp = function cmp(num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Unsigned comparison\n\n\n BN.prototype.ucmp = function ucmp(num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n var res = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n if (a === b) continue;\n\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n\n break;\n }\n\n return res;\n };\n\n BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq(num) {\n return this.cmp(num) === 0;\n }; //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n\n\n BN.red = function red(num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed() {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd(num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd(num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub(num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub(num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl(num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr() {\n assert(this.red, 'redSqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr() {\n assert(this.red, 'redISqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.isqr(this);\n }; // Square root over p\n\n\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm() {\n assert(this.red, 'redInvm works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.invm(this);\n }; // Return negative clone of `this` % `red modulo`\n\n\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n\n this.red._verify1(this);\n\n return this.red.pow(this, num);\n }; // Prime numbers with efficient reduction\n\n\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n }; // Pseudo-Mersenne prime\n\n function MPrime(name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp() {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce(num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n\n inherits(K256, MPrime);\n\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n } // Shift by 9 limbs\n\n\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = (next & mask) << 4 | prev >>> 22;\n prev = next;\n }\n\n prev >>>= 22;\n input.words[i - 10] = prev;\n\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK(num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n\n var lo = 0;\n\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + (lo / 0x4000000 | 0);\n } // Fast length reduction\n\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n\n return num;\n };\n\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n\n inherits(P224, MPrime);\n\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n\n inherits(P192, MPrime);\n\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n num.words[i] = lo;\n carry = hi;\n }\n\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n\n return num;\n }; // Exported mostly for testing purposes, use plain name instead\n\n\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n\n primes[name] = prime;\n return prime;\n }; //\n // Base reduction engine\n //\n\n\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1(a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2(a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red, 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res;\n };\n\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res;\n };\n\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1); // Fast case\n\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n } // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n\n\n var q = this.m.subn(1);\n var s = 0;\n\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg(); // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n\n while (t.cmp(one) !== 0) {\n var tmp = t;\n\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm(a) {\n var inv = a._invmp(this.m);\n\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow(a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom(num) {\n var res = num.clone();\n res.red = null;\n return res;\n }; //\n // Montgomery method engine\n //\n\n\n BN.mont = function mont(num) {\n return new Mont(num);\n };\n\n function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom(num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul(a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm(a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})( false || module, this);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/asn1.js/node_modules/bn.js/lib/bn.js?"); | |
| 299 | - | |
| 300 | -/***/ }), | |
| 301 | - | |
| 302 | -/***/ "./node_modules/base64-js/index.js": | |
| 303 | -/*!*****************************************!*\ | |
| 304 | - !*** ./node_modules/base64-js/index.js ***! | |
| 305 | - \*****************************************/ | |
| 306 | -/*! no static exports found */ | |
| 307 | -/***/ (function(module, exports, __webpack_require__) { | |
| 308 | - | |
| 309 | -"use strict"; | |
| 310 | -eval("\n\nexports.byteLength = byteLength;\nexports.toByteArray = toByteArray;\nexports.fromByteArray = fromByteArray;\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n} // Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\n\n\nrevLookup['-'.charCodeAt(0)] = 62;\nrevLookup['_'.charCodeAt(0)] = 63;\n\nfunction getLens(b64) {\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4');\n } // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n\n\n var validLen = b64.indexOf('=');\n if (validLen === -1) validLen = len;\n var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n return [validLen, placeHoldersLen];\n} // base64 is 4/3 + up to two characters of the original data\n\n\nfunction byteLength(b64) {\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\n\nfunction _byteLength(b64, validLen, placeHoldersLen) {\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\n\nfunction toByteArray(b64) {\n var tmp;\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n var curByte = 0; // if there are placeholders, only get up to the last complete 4 chars\n\n var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n var i;\n\n for (i = 0; i < len; i += 4) {\n tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n arr[curByte++] = tmp >> 16 & 0xFF;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 2) {\n tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 1) {\n tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n return arr;\n}\n\nfunction tripletToBase64(num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F];\n}\n\nfunction encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF);\n output.push(tripletToBase64(tmp));\n }\n\n return output.join('');\n}\n\nfunction fromByteArray(uint8) {\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n // go through the array every three bytes, we'll deal with trailing stuff later\n\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n } // pad the end with zeros, but make sure to not forget the extra bytes\n\n\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 0x3F] + '==');\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 0x3F] + lookup[tmp << 2 & 0x3F] + '=');\n }\n\n return parts.join('');\n}\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/base64-js/index.js?"); | |
| 311 | - | |
| 312 | -/***/ }), | |
| 313 | - | |
| 314 | -/***/ "./node_modules/bn.js/lib/bn.js": | |
| 315 | -/*!**************************************!*\ | |
| 316 | - !*** ./node_modules/bn.js/lib/bn.js ***! | |
| 317 | - \**************************************/ | |
| 318 | -/*! no static exports found */ | |
| 319 | -/***/ (function(module, exports, __webpack_require__) { | |
| 320 | - | |
| 321 | -eval("/* WEBPACK VAR INJECTION */(function(module) {(function (module, exports) {\n 'use strict'; // Utils\n\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n } // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n\n\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n } // BN\n\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0; // Reduction context\n\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n var Buffer;\n\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = __webpack_require__(/*! buffer */ 9).Buffer;\n }\n } catch (e) {}\n\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n\n if (endian !== 'le') return; // Reverse the bytes\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray(number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n\n return this._strip();\n };\n\n function parseHex4Bits(string, index) {\n var c = string.charCodeAt(index); // '0' - '9'\n\n if (c >= 48 && c <= 57) {\n return c - 48; // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55; // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte(string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex(number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n } // 24-bits chunks\n\n\n var off = 0;\n var j = 0;\n var w;\n\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase(str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul; // 'a'\n\n if (c >= 49) {\n b = c - 49 + 0xa; // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa; // '0' - '9'\n } else {\n b = c;\n }\n\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase(number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1; // Find length of limb in base\n\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move(dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move(dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand(size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n\n return this;\n }; // Remove leading `0` from `this`\n\n\n BN.prototype._strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign() {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n\n return this;\n }; // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n\n\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect() {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n }\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n */\n\n\n var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = ((w << off | carry) & 0xffffff).toString(16);\n carry = w >>> 24 - off & 0xffffff;\n\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n\n off += 2;\n\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base]; // var groupBase = Math.pow(base, groupSize);\n\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n\n if (this.isZero()) {\n out = '0' + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber() {\n var ret = this.words[0];\n\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + this.words[1] * 0x4000000;\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n\n return this.negative !== 0 ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON() {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate(ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE(res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = this.words[i] << shift | carry;\n res[position++] = word & 0xff;\n\n if (position < res.length) {\n res[position++] = word >> 8 & 0xff;\n }\n\n if (position < res.length) {\n res[position++] = word >> 16 & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = word >> 24 & 0xff;\n }\n\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE(res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = this.words[i] << shift | carry;\n res[position--] = word & 0xff;\n\n if (position >= 0) {\n res[position--] = word >> 8 & 0xff;\n }\n\n if (position >= 0) {\n res[position--] = word >> 16 & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = word >> 24 & 0xff;\n }\n\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\n var t = w;\n var r = 0;\n\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n\n if ((t & 0x1) === 0) {\n r++;\n }\n\n return r;\n }; // Return number of used bits in a BN\n\n\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n\n var hi = this._countBits(w);\n\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray(num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = num.words[off] >>> wbit & 0x01;\n }\n\n return w;\n } // Number of trailing zero bits\n\n\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n\n r += b;\n if (b !== 26) break;\n }\n\n return r;\n };\n\n BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos(width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos(width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n }; // Return negative clone of `this`\n\n\n BN.prototype.neg = function neg() {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n }; // Or `num` with `this` in-place\n\n\n BN.prototype.iuor = function iuor(num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n }; // Or `num` with `this`\n\n\n BN.prototype.or = function or(num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor(num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n }; // And `num` with `this` in-place\n\n\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n return this._strip();\n };\n\n BN.prototype.iand = function iand(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n }; // And `num` with `this`\n\n\n BN.prototype.and = function and(num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand(num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n }; // Xor `num` with `this` in-place\n\n\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n }; // Xor `num` with `this`\n\n\n BN.prototype.xor = function xor(num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor(num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n }; // Not ``this`` with ``width`` bitwidth\n\n\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26; // Extend the buffer with leading zeroes\n\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n } // Handle complete words\n\n\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n } // Handle the residue\n\n\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n } // And remove leading zeroes\n\n\n return this._strip();\n };\n\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n }; // Set `bit` of `this`\n\n\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | 1 << wbit;\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n }; // Add `num` to `this` in-place\n\n\n BN.prototype.iadd = function iadd(num) {\n var r; // negative + positive\n\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign(); // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n } // a.length > b.length\n\n\n var a, b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++; // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n }; // Add `num` to `this`\n\n\n BN.prototype.add = function add(num) {\n var res;\n\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n return num.clone().iadd(this);\n }; // Subtract `num` from `this` in-place\n\n\n BN.prototype.isub = function isub(num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign(); // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n } // At this point both numbers are positive\n\n\n var cmp = this.cmp(num); // Optimization - zeroify\n\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n } // a > b\n\n\n var a, b;\n\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n } // Copy rest of the words\n\n\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n }; // Subtract `num` from `this`\n\n\n BN.prototype.sub = function sub(num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = self.length + num.length | 0;\n out.length = len;\n len = len - 1 | 0; // Peel one iteration (compiler can't do it, because of code complexity)\n\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += r / 0x4000000 | 0;\n rword = r & 0x3ffffff;\n }\n\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n } // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n\n\n var comb10MulTo = function comb10MulTo(self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = mid + Math.imul(ah0, bl0) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = mid + Math.imul(ah1, bl0) | 0;\n hi = Math.imul(ah1, bh0);\n lo = lo + Math.imul(al0, bl1) | 0;\n mid = mid + Math.imul(al0, bh1) | 0;\n mid = mid + Math.imul(ah0, bl1) | 0;\n hi = hi + Math.imul(ah0, bh1) | 0;\n var w1 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = mid + Math.imul(ah2, bl0) | 0;\n hi = Math.imul(ah2, bh0);\n lo = lo + Math.imul(al1, bl1) | 0;\n mid = mid + Math.imul(al1, bh1) | 0;\n mid = mid + Math.imul(ah1, bl1) | 0;\n hi = hi + Math.imul(ah1, bh1) | 0;\n lo = lo + Math.imul(al0, bl2) | 0;\n mid = mid + Math.imul(al0, bh2) | 0;\n mid = mid + Math.imul(ah0, bl2) | 0;\n hi = hi + Math.imul(ah0, bh2) | 0;\n var w2 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = mid + Math.imul(ah3, bl0) | 0;\n hi = Math.imul(ah3, bh0);\n lo = lo + Math.imul(al2, bl1) | 0;\n mid = mid + Math.imul(al2, bh1) | 0;\n mid = mid + Math.imul(ah2, bl1) | 0;\n hi = hi + Math.imul(ah2, bh1) | 0;\n lo = lo + Math.imul(al1, bl2) | 0;\n mid = mid + Math.imul(al1, bh2) | 0;\n mid = mid + Math.imul(ah1, bl2) | 0;\n hi = hi + Math.imul(ah1, bh2) | 0;\n lo = lo + Math.imul(al0, bl3) | 0;\n mid = mid + Math.imul(al0, bh3) | 0;\n mid = mid + Math.imul(ah0, bl3) | 0;\n hi = hi + Math.imul(ah0, bh3) | 0;\n var w3 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = mid + Math.imul(ah4, bl0) | 0;\n hi = Math.imul(ah4, bh0);\n lo = lo + Math.imul(al3, bl1) | 0;\n mid = mid + Math.imul(al3, bh1) | 0;\n mid = mid + Math.imul(ah3, bl1) | 0;\n hi = hi + Math.imul(ah3, bh1) | 0;\n lo = lo + Math.imul(al2, bl2) | 0;\n mid = mid + Math.imul(al2, bh2) | 0;\n mid = mid + Math.imul(ah2, bl2) | 0;\n hi = hi + Math.imul(ah2, bh2) | 0;\n lo = lo + Math.imul(al1, bl3) | 0;\n mid = mid + Math.imul(al1, bh3) | 0;\n mid = mid + Math.imul(ah1, bl3) | 0;\n hi = hi + Math.imul(ah1, bh3) | 0;\n lo = lo + Math.imul(al0, bl4) | 0;\n mid = mid + Math.imul(al0, bh4) | 0;\n mid = mid + Math.imul(ah0, bl4) | 0;\n hi = hi + Math.imul(ah0, bh4) | 0;\n var w4 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = mid + Math.imul(ah5, bl0) | 0;\n hi = Math.imul(ah5, bh0);\n lo = lo + Math.imul(al4, bl1) | 0;\n mid = mid + Math.imul(al4, bh1) | 0;\n mid = mid + Math.imul(ah4, bl1) | 0;\n hi = hi + Math.imul(ah4, bh1) | 0;\n lo = lo + Math.imul(al3, bl2) | 0;\n mid = mid + Math.imul(al3, bh2) | 0;\n mid = mid + Math.imul(ah3, bl2) | 0;\n hi = hi + Math.imul(ah3, bh2) | 0;\n lo = lo + Math.imul(al2, bl3) | 0;\n mid = mid + Math.imul(al2, bh3) | 0;\n mid = mid + Math.imul(ah2, bl3) | 0;\n hi = hi + Math.imul(ah2, bh3) | 0;\n lo = lo + Math.imul(al1, bl4) | 0;\n mid = mid + Math.imul(al1, bh4) | 0;\n mid = mid + Math.imul(ah1, bl4) | 0;\n hi = hi + Math.imul(ah1, bh4) | 0;\n lo = lo + Math.imul(al0, bl5) | 0;\n mid = mid + Math.imul(al0, bh5) | 0;\n mid = mid + Math.imul(ah0, bl5) | 0;\n hi = hi + Math.imul(ah0, bh5) | 0;\n var w5 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = mid + Math.imul(ah6, bl0) | 0;\n hi = Math.imul(ah6, bh0);\n lo = lo + Math.imul(al5, bl1) | 0;\n mid = mid + Math.imul(al5, bh1) | 0;\n mid = mid + Math.imul(ah5, bl1) | 0;\n hi = hi + Math.imul(ah5, bh1) | 0;\n lo = lo + Math.imul(al4, bl2) | 0;\n mid = mid + Math.imul(al4, bh2) | 0;\n mid = mid + Math.imul(ah4, bl2) | 0;\n hi = hi + Math.imul(ah4, bh2) | 0;\n lo = lo + Math.imul(al3, bl3) | 0;\n mid = mid + Math.imul(al3, bh3) | 0;\n mid = mid + Math.imul(ah3, bl3) | 0;\n hi = hi + Math.imul(ah3, bh3) | 0;\n lo = lo + Math.imul(al2, bl4) | 0;\n mid = mid + Math.imul(al2, bh4) | 0;\n mid = mid + Math.imul(ah2, bl4) | 0;\n hi = hi + Math.imul(ah2, bh4) | 0;\n lo = lo + Math.imul(al1, bl5) | 0;\n mid = mid + Math.imul(al1, bh5) | 0;\n mid = mid + Math.imul(ah1, bl5) | 0;\n hi = hi + Math.imul(ah1, bh5) | 0;\n lo = lo + Math.imul(al0, bl6) | 0;\n mid = mid + Math.imul(al0, bh6) | 0;\n mid = mid + Math.imul(ah0, bl6) | 0;\n hi = hi + Math.imul(ah0, bh6) | 0;\n var w6 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = mid + Math.imul(ah7, bl0) | 0;\n hi = Math.imul(ah7, bh0);\n lo = lo + Math.imul(al6, bl1) | 0;\n mid = mid + Math.imul(al6, bh1) | 0;\n mid = mid + Math.imul(ah6, bl1) | 0;\n hi = hi + Math.imul(ah6, bh1) | 0;\n lo = lo + Math.imul(al5, bl2) | 0;\n mid = mid + Math.imul(al5, bh2) | 0;\n mid = mid + Math.imul(ah5, bl2) | 0;\n hi = hi + Math.imul(ah5, bh2) | 0;\n lo = lo + Math.imul(al4, bl3) | 0;\n mid = mid + Math.imul(al4, bh3) | 0;\n mid = mid + Math.imul(ah4, bl3) | 0;\n hi = hi + Math.imul(ah4, bh3) | 0;\n lo = lo + Math.imul(al3, bl4) | 0;\n mid = mid + Math.imul(al3, bh4) | 0;\n mid = mid + Math.imul(ah3, bl4) | 0;\n hi = hi + Math.imul(ah3, bh4) | 0;\n lo = lo + Math.imul(al2, bl5) | 0;\n mid = mid + Math.imul(al2, bh5) | 0;\n mid = mid + Math.imul(ah2, bl5) | 0;\n hi = hi + Math.imul(ah2, bh5) | 0;\n lo = lo + Math.imul(al1, bl6) | 0;\n mid = mid + Math.imul(al1, bh6) | 0;\n mid = mid + Math.imul(ah1, bl6) | 0;\n hi = hi + Math.imul(ah1, bh6) | 0;\n lo = lo + Math.imul(al0, bl7) | 0;\n mid = mid + Math.imul(al0, bh7) | 0;\n mid = mid + Math.imul(ah0, bl7) | 0;\n hi = hi + Math.imul(ah0, bh7) | 0;\n var w7 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = mid + Math.imul(ah8, bl0) | 0;\n hi = Math.imul(ah8, bh0);\n lo = lo + Math.imul(al7, bl1) | 0;\n mid = mid + Math.imul(al7, bh1) | 0;\n mid = mid + Math.imul(ah7, bl1) | 0;\n hi = hi + Math.imul(ah7, bh1) | 0;\n lo = lo + Math.imul(al6, bl2) | 0;\n mid = mid + Math.imul(al6, bh2) | 0;\n mid = mid + Math.imul(ah6, bl2) | 0;\n hi = hi + Math.imul(ah6, bh2) | 0;\n lo = lo + Math.imul(al5, bl3) | 0;\n mid = mid + Math.imul(al5, bh3) | 0;\n mid = mid + Math.imul(ah5, bl3) | 0;\n hi = hi + Math.imul(ah5, bh3) | 0;\n lo = lo + Math.imul(al4, bl4) | 0;\n mid = mid + Math.imul(al4, bh4) | 0;\n mid = mid + Math.imul(ah4, bl4) | 0;\n hi = hi + Math.imul(ah4, bh4) | 0;\n lo = lo + Math.imul(al3, bl5) | 0;\n mid = mid + Math.imul(al3, bh5) | 0;\n mid = mid + Math.imul(ah3, bl5) | 0;\n hi = hi + Math.imul(ah3, bh5) | 0;\n lo = lo + Math.imul(al2, bl6) | 0;\n mid = mid + Math.imul(al2, bh6) | 0;\n mid = mid + Math.imul(ah2, bl6) | 0;\n hi = hi + Math.imul(ah2, bh6) | 0;\n lo = lo + Math.imul(al1, bl7) | 0;\n mid = mid + Math.imul(al1, bh7) | 0;\n mid = mid + Math.imul(ah1, bl7) | 0;\n hi = hi + Math.imul(ah1, bh7) | 0;\n lo = lo + Math.imul(al0, bl8) | 0;\n mid = mid + Math.imul(al0, bh8) | 0;\n mid = mid + Math.imul(ah0, bl8) | 0;\n hi = hi + Math.imul(ah0, bh8) | 0;\n var w8 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = mid + Math.imul(ah9, bl0) | 0;\n hi = Math.imul(ah9, bh0);\n lo = lo + Math.imul(al8, bl1) | 0;\n mid = mid + Math.imul(al8, bh1) | 0;\n mid = mid + Math.imul(ah8, bl1) | 0;\n hi = hi + Math.imul(ah8, bh1) | 0;\n lo = lo + Math.imul(al7, bl2) | 0;\n mid = mid + Math.imul(al7, bh2) | 0;\n mid = mid + Math.imul(ah7, bl2) | 0;\n hi = hi + Math.imul(ah7, bh2) | 0;\n lo = lo + Math.imul(al6, bl3) | 0;\n mid = mid + Math.imul(al6, bh3) | 0;\n mid = mid + Math.imul(ah6, bl3) | 0;\n hi = hi + Math.imul(ah6, bh3) | 0;\n lo = lo + Math.imul(al5, bl4) | 0;\n mid = mid + Math.imul(al5, bh4) | 0;\n mid = mid + Math.imul(ah5, bl4) | 0;\n hi = hi + Math.imul(ah5, bh4) | 0;\n lo = lo + Math.imul(al4, bl5) | 0;\n mid = mid + Math.imul(al4, bh5) | 0;\n mid = mid + Math.imul(ah4, bl5) | 0;\n hi = hi + Math.imul(ah4, bh5) | 0;\n lo = lo + Math.imul(al3, bl6) | 0;\n mid = mid + Math.imul(al3, bh6) | 0;\n mid = mid + Math.imul(ah3, bl6) | 0;\n hi = hi + Math.imul(ah3, bh6) | 0;\n lo = lo + Math.imul(al2, bl7) | 0;\n mid = mid + Math.imul(al2, bh7) | 0;\n mid = mid + Math.imul(ah2, bl7) | 0;\n hi = hi + Math.imul(ah2, bh7) | 0;\n lo = lo + Math.imul(al1, bl8) | 0;\n mid = mid + Math.imul(al1, bh8) | 0;\n mid = mid + Math.imul(ah1, bl8) | 0;\n hi = hi + Math.imul(ah1, bh8) | 0;\n lo = lo + Math.imul(al0, bl9) | 0;\n mid = mid + Math.imul(al0, bh9) | 0;\n mid = mid + Math.imul(ah0, bl9) | 0;\n hi = hi + Math.imul(ah0, bh9) | 0;\n var w9 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = mid + Math.imul(ah9, bl1) | 0;\n hi = Math.imul(ah9, bh1);\n lo = lo + Math.imul(al8, bl2) | 0;\n mid = mid + Math.imul(al8, bh2) | 0;\n mid = mid + Math.imul(ah8, bl2) | 0;\n hi = hi + Math.imul(ah8, bh2) | 0;\n lo = lo + Math.imul(al7, bl3) | 0;\n mid = mid + Math.imul(al7, bh3) | 0;\n mid = mid + Math.imul(ah7, bl3) | 0;\n hi = hi + Math.imul(ah7, bh3) | 0;\n lo = lo + Math.imul(al6, bl4) | 0;\n mid = mid + Math.imul(al6, bh4) | 0;\n mid = mid + Math.imul(ah6, bl4) | 0;\n hi = hi + Math.imul(ah6, bh4) | 0;\n lo = lo + Math.imul(al5, bl5) | 0;\n mid = mid + Math.imul(al5, bh5) | 0;\n mid = mid + Math.imul(ah5, bl5) | 0;\n hi = hi + Math.imul(ah5, bh5) | 0;\n lo = lo + Math.imul(al4, bl6) | 0;\n mid = mid + Math.imul(al4, bh6) | 0;\n mid = mid + Math.imul(ah4, bl6) | 0;\n hi = hi + Math.imul(ah4, bh6) | 0;\n lo = lo + Math.imul(al3, bl7) | 0;\n mid = mid + Math.imul(al3, bh7) | 0;\n mid = mid + Math.imul(ah3, bl7) | 0;\n hi = hi + Math.imul(ah3, bh7) | 0;\n lo = lo + Math.imul(al2, bl8) | 0;\n mid = mid + Math.imul(al2, bh8) | 0;\n mid = mid + Math.imul(ah2, bl8) | 0;\n hi = hi + Math.imul(ah2, bh8) | 0;\n lo = lo + Math.imul(al1, bl9) | 0;\n mid = mid + Math.imul(al1, bh9) | 0;\n mid = mid + Math.imul(ah1, bl9) | 0;\n hi = hi + Math.imul(ah1, bh9) | 0;\n var w10 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = mid + Math.imul(ah9, bl2) | 0;\n hi = Math.imul(ah9, bh2);\n lo = lo + Math.imul(al8, bl3) | 0;\n mid = mid + Math.imul(al8, bh3) | 0;\n mid = mid + Math.imul(ah8, bl3) | 0;\n hi = hi + Math.imul(ah8, bh3) | 0;\n lo = lo + Math.imul(al7, bl4) | 0;\n mid = mid + Math.imul(al7, bh4) | 0;\n mid = mid + Math.imul(ah7, bl4) | 0;\n hi = hi + Math.imul(ah7, bh4) | 0;\n lo = lo + Math.imul(al6, bl5) | 0;\n mid = mid + Math.imul(al6, bh5) | 0;\n mid = mid + Math.imul(ah6, bl5) | 0;\n hi = hi + Math.imul(ah6, bh5) | 0;\n lo = lo + Math.imul(al5, bl6) | 0;\n mid = mid + Math.imul(al5, bh6) | 0;\n mid = mid + Math.imul(ah5, bl6) | 0;\n hi = hi + Math.imul(ah5, bh6) | 0;\n lo = lo + Math.imul(al4, bl7) | 0;\n mid = mid + Math.imul(al4, bh7) | 0;\n mid = mid + Math.imul(ah4, bl7) | 0;\n hi = hi + Math.imul(ah4, bh7) | 0;\n lo = lo + Math.imul(al3, bl8) | 0;\n mid = mid + Math.imul(al3, bh8) | 0;\n mid = mid + Math.imul(ah3, bl8) | 0;\n hi = hi + Math.imul(ah3, bh8) | 0;\n lo = lo + Math.imul(al2, bl9) | 0;\n mid = mid + Math.imul(al2, bh9) | 0;\n mid = mid + Math.imul(ah2, bl9) | 0;\n hi = hi + Math.imul(ah2, bh9) | 0;\n var w11 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = mid + Math.imul(ah9, bl3) | 0;\n hi = Math.imul(ah9, bh3);\n lo = lo + Math.imul(al8, bl4) | 0;\n mid = mid + Math.imul(al8, bh4) | 0;\n mid = mid + Math.imul(ah8, bl4) | 0;\n hi = hi + Math.imul(ah8, bh4) | 0;\n lo = lo + Math.imul(al7, bl5) | 0;\n mid = mid + Math.imul(al7, bh5) | 0;\n mid = mid + Math.imul(ah7, bl5) | 0;\n hi = hi + Math.imul(ah7, bh5) | 0;\n lo = lo + Math.imul(al6, bl6) | 0;\n mid = mid + Math.imul(al6, bh6) | 0;\n mid = mid + Math.imul(ah6, bl6) | 0;\n hi = hi + Math.imul(ah6, bh6) | 0;\n lo = lo + Math.imul(al5, bl7) | 0;\n mid = mid + Math.imul(al5, bh7) | 0;\n mid = mid + Math.imul(ah5, bl7) | 0;\n hi = hi + Math.imul(ah5, bh7) | 0;\n lo = lo + Math.imul(al4, bl8) | 0;\n mid = mid + Math.imul(al4, bh8) | 0;\n mid = mid + Math.imul(ah4, bl8) | 0;\n hi = hi + Math.imul(ah4, bh8) | 0;\n lo = lo + Math.imul(al3, bl9) | 0;\n mid = mid + Math.imul(al3, bh9) | 0;\n mid = mid + Math.imul(ah3, bl9) | 0;\n hi = hi + Math.imul(ah3, bh9) | 0;\n var w12 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = mid + Math.imul(ah9, bl4) | 0;\n hi = Math.imul(ah9, bh4);\n lo = lo + Math.imul(al8, bl5) | 0;\n mid = mid + Math.imul(al8, bh5) | 0;\n mid = mid + Math.imul(ah8, bl5) | 0;\n hi = hi + Math.imul(ah8, bh5) | 0;\n lo = lo + Math.imul(al7, bl6) | 0;\n mid = mid + Math.imul(al7, bh6) | 0;\n mid = mid + Math.imul(ah7, bl6) | 0;\n hi = hi + Math.imul(ah7, bh6) | 0;\n lo = lo + Math.imul(al6, bl7) | 0;\n mid = mid + Math.imul(al6, bh7) | 0;\n mid = mid + Math.imul(ah6, bl7) | 0;\n hi = hi + Math.imul(ah6, bh7) | 0;\n lo = lo + Math.imul(al5, bl8) | 0;\n mid = mid + Math.imul(al5, bh8) | 0;\n mid = mid + Math.imul(ah5, bl8) | 0;\n hi = hi + Math.imul(ah5, bh8) | 0;\n lo = lo + Math.imul(al4, bl9) | 0;\n mid = mid + Math.imul(al4, bh9) | 0;\n mid = mid + Math.imul(ah4, bl9) | 0;\n hi = hi + Math.imul(ah4, bh9) | 0;\n var w13 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = mid + Math.imul(ah9, bl5) | 0;\n hi = Math.imul(ah9, bh5);\n lo = lo + Math.imul(al8, bl6) | 0;\n mid = mid + Math.imul(al8, bh6) | 0;\n mid = mid + Math.imul(ah8, bl6) | 0;\n hi = hi + Math.imul(ah8, bh6) | 0;\n lo = lo + Math.imul(al7, bl7) | 0;\n mid = mid + Math.imul(al7, bh7) | 0;\n mid = mid + Math.imul(ah7, bl7) | 0;\n hi = hi + Math.imul(ah7, bh7) | 0;\n lo = lo + Math.imul(al6, bl8) | 0;\n mid = mid + Math.imul(al6, bh8) | 0;\n mid = mid + Math.imul(ah6, bl8) | 0;\n hi = hi + Math.imul(ah6, bh8) | 0;\n lo = lo + Math.imul(al5, bl9) | 0;\n mid = mid + Math.imul(al5, bh9) | 0;\n mid = mid + Math.imul(ah5, bl9) | 0;\n hi = hi + Math.imul(ah5, bh9) | 0;\n var w14 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = mid + Math.imul(ah9, bl6) | 0;\n hi = Math.imul(ah9, bh6);\n lo = lo + Math.imul(al8, bl7) | 0;\n mid = mid + Math.imul(al8, bh7) | 0;\n mid = mid + Math.imul(ah8, bl7) | 0;\n hi = hi + Math.imul(ah8, bh7) | 0;\n lo = lo + Math.imul(al7, bl8) | 0;\n mid = mid + Math.imul(al7, bh8) | 0;\n mid = mid + Math.imul(ah7, bl8) | 0;\n hi = hi + Math.imul(ah7, bh8) | 0;\n lo = lo + Math.imul(al6, bl9) | 0;\n mid = mid + Math.imul(al6, bh9) | 0;\n mid = mid + Math.imul(ah6, bl9) | 0;\n hi = hi + Math.imul(ah6, bh9) | 0;\n var w15 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = mid + Math.imul(ah9, bl7) | 0;\n hi = Math.imul(ah9, bh7);\n lo = lo + Math.imul(al8, bl8) | 0;\n mid = mid + Math.imul(al8, bh8) | 0;\n mid = mid + Math.imul(ah8, bl8) | 0;\n hi = hi + Math.imul(ah8, bh8) | 0;\n lo = lo + Math.imul(al7, bl9) | 0;\n mid = mid + Math.imul(al7, bh9) | 0;\n mid = mid + Math.imul(ah7, bl9) | 0;\n hi = hi + Math.imul(ah7, bh9) | 0;\n var w16 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = mid + Math.imul(ah9, bl8) | 0;\n hi = Math.imul(ah9, bh8);\n lo = lo + Math.imul(al8, bl9) | 0;\n mid = mid + Math.imul(al8, bh9) | 0;\n mid = mid + Math.imul(ah8, bl9) | 0;\n hi = hi + Math.imul(ah8, bh9) | 0;\n var w17 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = mid + Math.imul(ah9, bl9) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n\n return out;\n }; // Polyfill comb\n\n\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n var carry = 0;\n var hncarry = 0;\n\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n ncarry = ncarry + (r / 0x4000000 | 0) | 0;\n lo = lo + rword | 0;\n rword = lo & 0x3ffffff;\n ncarry = ncarry + (lo >>> 26) | 0;\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo(self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo(num, out) {\n var res;\n var len = this.length + num.length;\n\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n }; // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n\n function FFTM(x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT(N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n }; // Returns binary-reversed representation of `x`\n\n\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n\n return rb;\n }; // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n\n\n FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n /* jshint maxdepth : false */\n\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b(n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b(ws, N) {\n var carry = 0;\n\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {\n var carry = 0;\n\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n } // Pad with zeroes\n\n\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub(N) {\n var ph = new Array(N);\n\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n }; // Multiply `this` by `num`\n\n\n BN.prototype.mul = function mul(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n }; // Multiply employing FFT\n\n\n BN.prototype.mulf = function mulf(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n }; // In-place Multiplication\n\n\n BN.prototype.imul = function imul(num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln(num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n assert(typeof num === 'number');\n assert(num < 0x4000000); // Carry\n\n var carry = 0;\n\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += w / 0x4000000 | 0; // NOTE: lo is 27bit maximum\n\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln(num) {\n return this.clone().imuln(num);\n }; // `this` * `this`\n\n\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n }; // `this` * `this` in-place\n\n\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n }; // Math.pow(`this`, `num`)\n\n\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1); // Skip leading zeroes\n\n var res = this;\n\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\n }\n }\n\n return res;\n }; // Shift-left in-place\n\n\n BN.prototype.iushln = function iushln(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = 0x3ffffff >>> 26 - r << 26 - r;\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = (this.words[i] | 0) - newCarry << r;\n this.words[i] = c | carry;\n carry = newCarry >>> 26 - r;\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln(bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n }; // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n\n\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n\n if (hint) {\n h = (hint - hint % 26) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n var maskedWords = extended;\n h -= s;\n h = Math.max(0, h); // Extended mode, copy masked part\n\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n\n maskedWords.length = s;\n }\n\n if (s === 0) {// No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = carry << 26 - r | word >>> r;\n carry = word & mask;\n } // Push carried bits as a mask\n\n\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n }; // Shift-left\n\n\n BN.prototype.shln = function shln(bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln(bits) {\n return this.clone().iushln(bits);\n }; // Shift-right\n\n\n BN.prototype.shrn = function shrn(bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn(bits) {\n return this.clone().iushrn(bits);\n }; // Test if n bit is set\n\n\n BN.prototype.testn = function testn(bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) return false; // Check bit and return\n\n var w = this.words[s];\n return !!(w & q);\n }; // Return only lowers bits of number (in-place)\n\n\n BN.prototype.imaskn = function imaskn(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n }; // Return only lowers bits of number\n\n\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n }; // Add plain number `num` to `this`\n\n\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num); // Possible sign change\n\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n } // Add without checks\n\n\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num; // Carry\n\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n\n this.length = Math.max(this.length, i + 1);\n return this;\n }; // Subtract plain number `num` from `this`\n\n\n BN.prototype.isubn = function isubn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - (right / 0x4000000 | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip(); // Subtraction overflow\n\n assert(carry === -1);\n carry = 0;\n\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n\n this.negative = 1;\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num; // Normalize\n\n var bhi = b.words[b.length - 1] | 0;\n\n var bhiBits = this._countBits(bhi);\n\n shift = 26 - bhiBits;\n\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n } // Initialize quotient\n\n\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n\n if (diff.negative === 0) {\n a = diff;\n\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n\n a._ishlnsubmul(b, 1, j);\n\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n\n if (q) {\n q.words[j] = qj;\n }\n }\n\n if (q) {\n q._strip();\n }\n\n a._strip(); // Denormalize\n\n\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n }; // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n\n\n BN.prototype.divmod = function divmod(num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n } // Both numbers are positive at this point\n // Strip both numbers to approximate shift value\n\n\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n } // Very short reduction\n\n\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n }; // Find `this` / `num`\n\n\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n }; // Find `this` % `num`\n\n\n BN.prototype.mod = function mod(num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod(num) {\n return this.divmod(num, 'mod', true).mod;\n }; // Find Round(`this` / `num`)\n\n\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num); // Fast case - exact division\n\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half); // Round down\n\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up\n\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn(num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n }; // WARNING: DEPRECATED\n\n\n BN.prototype.modn = function modn(num) {\n return this.modrn(num);\n }; // In-place division by number\n\n\n BN.prototype.idivn = function idivn(num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n assert(num <= 0x3ffffff);\n var carry = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = w / num | 0;\n carry = w % num;\n }\n\n this._strip();\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n } // A * x + B * y = x\n\n\n var A = new BN(1);\n var B = new BN(0); // C * x + D * y = y\n\n var C = new BN(0);\n var D = new BN(1);\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n x.iushrn(i);\n\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n y.iushrn(j);\n\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n }; // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n\n\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n a.iushrn(i);\n\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n b.iushrn(j);\n\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0; // Remove common factor of two\n\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n }; // Invert number in the field F(num)\n\n\n BN.prototype.invm = function invm(num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd() {\n return (this.words[0] & 1) === 1;\n }; // And first word and num\n\n\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n }; // Increment at the bit position in-line\n\n\n BN.prototype.bincn = function bincn(bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) {\n this._expand(s + 1);\n\n this.words[s] |= q;\n return this;\n } // Add bit and propagate, if needed\n\n\n var carry = q;\n\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n\n\n BN.prototype.cmp = function cmp(num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Unsigned comparison\n\n\n BN.prototype.ucmp = function ucmp(num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n var res = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n if (a === b) continue;\n\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n\n break;\n }\n\n return res;\n };\n\n BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq(num) {\n return this.cmp(num) === 0;\n }; //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n\n\n BN.red = function red(num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed() {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd(num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd(num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub(num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub(num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl(num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr() {\n assert(this.red, 'redSqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr() {\n assert(this.red, 'redISqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.isqr(this);\n }; // Square root over p\n\n\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm() {\n assert(this.red, 'redInvm works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.invm(this);\n }; // Return negative clone of `this` % `red modulo`\n\n\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n\n this.red._verify1(this);\n\n return this.red.pow(this, num);\n }; // Prime numbers with efficient reduction\n\n\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n }; // Pseudo-Mersenne prime\n\n function MPrime(name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp() {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce(num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n\n inherits(K256, MPrime);\n\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n } // Shift by 9 limbs\n\n\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = (next & mask) << 4 | prev >>> 22;\n prev = next;\n }\n\n prev >>>= 22;\n input.words[i - 10] = prev;\n\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK(num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n\n var lo = 0;\n\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + (lo / 0x4000000 | 0);\n } // Fast length reduction\n\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n\n return num;\n };\n\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n\n inherits(P224, MPrime);\n\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n\n inherits(P192, MPrime);\n\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n num.words[i] = lo;\n carry = hi;\n }\n\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n\n return num;\n }; // Exported mostly for testing purposes, use plain name instead\n\n\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n\n primes[name] = prime;\n return prime;\n }; //\n // Base reduction engine\n //\n\n\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1(a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2(a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red, 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res;\n };\n\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res;\n };\n\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1); // Fast case\n\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n } // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n\n\n var q = this.m.subn(1);\n var s = 0;\n\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg(); // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n\n while (t.cmp(one) !== 0) {\n var tmp = t;\n\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm(a) {\n var inv = a._invmp(this.m);\n\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow(a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom(num) {\n var res = num.clone();\n res.red = null;\n return res;\n }; //\n // Montgomery method engine\n //\n\n\n BN.mont = function mont(num) {\n return new Mont(num);\n };\n\n function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom(num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul(a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm(a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})( false || module, this);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/bn.js/lib/bn.js?"); | |
| 322 | - | |
| 323 | -/***/ }), | |
| 324 | - | |
| 325 | -/***/ "./node_modules/brorand/index.js": | |
| 326 | -/*!***************************************!*\ | |
| 327 | - !*** ./node_modules/brorand/index.js ***! | |
| 328 | - \***************************************/ | |
| 329 | -/*! no static exports found */ | |
| 330 | -/***/ (function(module, exports, __webpack_require__) { | |
| 331 | - | |
| 332 | -eval("var r;\n\nmodule.exports = function rand(len) {\n if (!r) r = new Rand(null);\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\n\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n}; // Emulate crypto API using randy\n\n\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes) return this.rand.getBytes(n);\n var res = new Uint8Array(n);\n\n for (var i = 0; i < res.length; i++) {\n res[i] = this.rand.getByte();\n }\n\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n }; // Safari's WebWorkers do not have `crypto`\n\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function () {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = __webpack_require__(/*! crypto */ 6);\n\n if (typeof crypto.randomBytes !== 'function') throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {}\n}\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/brorand/index.js?"); | |
| 333 | - | |
| 334 | -/***/ }), | |
| 335 | - | |
| 336 | -/***/ "./node_modules/browserify-aes/aes.js": | |
| 337 | -/*!********************************************!*\ | |
| 338 | - !*** ./node_modules/browserify-aes/aes.js ***! | |
| 339 | - \********************************************/ | |
| 340 | -/*! no static exports found */ | |
| 341 | -/***/ (function(module, exports, __webpack_require__) { | |
| 342 | - | |
| 343 | -eval("// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nfunction asUInt32Array(buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n var len = buf.length / 4 | 0;\n var out = new Array(len);\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4);\n }\n\n return out;\n}\n\nfunction scrubVec(v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0;\n }\n}\n\nfunction cryptBlock(M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0];\n var SUB_MIX1 = SUB_MIX[1];\n var SUB_MIX2 = SUB_MIX[2];\n var SUB_MIX3 = SUB_MIX[3];\n var s0 = M[0] ^ keySchedule[0];\n var s1 = M[1] ^ keySchedule[1];\n var s2 = M[2] ^ keySchedule[2];\n var s3 = M[3] ^ keySchedule[3];\n var t0, t1, t2, t3;\n var ksRow = 4;\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[s1 >>> 16 & 0xff] ^ SUB_MIX2[s2 >>> 8 & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++];\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[s2 >>> 16 & 0xff] ^ SUB_MIX2[s3 >>> 8 & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++];\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[s3 >>> 16 & 0xff] ^ SUB_MIX2[s0 >>> 8 & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++];\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[s0 >>> 16 & 0xff] ^ SUB_MIX2[s1 >>> 8 & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++];\n s0 = t0;\n s1 = t1;\n s2 = t2;\n s3 = t3;\n }\n\n t0 = (SBOX[s0 >>> 24] << 24 | SBOX[s1 >>> 16 & 0xff] << 16 | SBOX[s2 >>> 8 & 0xff] << 8 | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n t1 = (SBOX[s1 >>> 24] << 24 | SBOX[s2 >>> 16 & 0xff] << 16 | SBOX[s3 >>> 8 & 0xff] << 8 | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n t2 = (SBOX[s2 >>> 24] << 24 | SBOX[s3 >>> 16 & 0xff] << 16 | SBOX[s0 >>> 8 & 0xff] << 8 | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n t3 = (SBOX[s3 >>> 24] << 24 | SBOX[s0 >>> 16 & 0xff] << 16 | SBOX[s1 >>> 8 & 0xff] << 8 | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n t0 = t0 >>> 0;\n t1 = t1 >>> 0;\n t2 = t2 >>> 0;\n t3 = t3 >>> 0;\n return [t0, t1, t2, t3];\n} // AES constants\n\n\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\nvar G = function () {\n // Compute double table\n var d = new Array(256);\n\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1;\n } else {\n d[j] = j << 1 ^ 0x11b;\n }\n }\n\n var SBOX = [];\n var INV_SBOX = [];\n var SUB_MIX = [[], [], [], []];\n var INV_SUB_MIX = [[], [], [], []]; // Walk GF(2^8)\n\n var x = 0;\n var xi = 0;\n\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;\n sx = sx >>> 8 ^ sx & 0xff ^ 0x63;\n SBOX[x] = sx;\n INV_SBOX[sx] = x; // Compute multiplication\n\n var x2 = d[x];\n var x4 = d[x2];\n var x8 = d[x4]; // Compute sub bytes, mix columns tables\n\n var t = d[sx] * 0x101 ^ sx * 0x1010100;\n SUB_MIX[0][x] = t << 24 | t >>> 8;\n SUB_MIX[1][x] = t << 16 | t >>> 16;\n SUB_MIX[2][x] = t << 8 | t >>> 24;\n SUB_MIX[3][x] = t; // Compute inv sub bytes, inv mix columns tables\n\n t = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n INV_SUB_MIX[0][sx] = t << 24 | t >>> 8;\n INV_SUB_MIX[1][sx] = t << 16 | t >>> 16;\n INV_SUB_MIX[2][sx] = t << 8 | t >>> 24;\n INV_SUB_MIX[3][sx] = t;\n\n if (x === 0) {\n x = xi = 1;\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]];\n xi ^= d[d[xi]];\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n };\n}();\n\nfunction AES(key) {\n this._key = asUInt32Array(key);\n\n this._reset();\n}\n\nAES.blockSize = 4 * 4;\nAES.keySize = 256 / 8;\nAES.prototype.blockSize = AES.blockSize;\nAES.prototype.keySize = AES.keySize;\n\nAES.prototype._reset = function () {\n var keyWords = this._key;\n var keySize = keyWords.length;\n var nRounds = keySize + 6;\n var ksRows = (nRounds + 1) * 4;\n var keySchedule = [];\n\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k];\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1];\n\n if (k % keySize === 0) {\n t = t << 8 | t >>> 24;\n t = G.SBOX[t >>> 24] << 24 | G.SBOX[t >>> 16 & 0xff] << 16 | G.SBOX[t >>> 8 & 0xff] << 8 | G.SBOX[t & 0xff];\n t ^= RCON[k / keySize | 0] << 24;\n } else if (keySize > 6 && k % keySize === 4) {\n t = G.SBOX[t >>> 24] << 24 | G.SBOX[t >>> 16 & 0xff] << 16 | G.SBOX[t >>> 8 & 0xff] << 8 | G.SBOX[t & 0xff];\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t;\n }\n\n var invKeySchedule = [];\n\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik;\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)];\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt;\n } else {\n invKeySchedule[ik] = G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^ G.INV_SUB_MIX[1][G.SBOX[tt >>> 16 & 0xff]] ^ G.INV_SUB_MIX[2][G.SBOX[tt >>> 8 & 0xff]] ^ G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]];\n }\n }\n\n this._nRounds = nRounds;\n this._keySchedule = keySchedule;\n this._invKeySchedule = invKeySchedule;\n};\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M);\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds);\n};\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M);\n var buf = Buffer.allocUnsafe(16);\n buf.writeUInt32BE(out[0], 0);\n buf.writeUInt32BE(out[1], 4);\n buf.writeUInt32BE(out[2], 8);\n buf.writeUInt32BE(out[3], 12);\n return buf;\n};\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M); // swap\n\n var m1 = M[1];\n M[1] = M[3];\n M[3] = m1;\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds);\n var buf = Buffer.allocUnsafe(16);\n buf.writeUInt32BE(out[0], 0);\n buf.writeUInt32BE(out[3], 4);\n buf.writeUInt32BE(out[2], 8);\n buf.writeUInt32BE(out[1], 12);\n return buf;\n};\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule);\n scrubVec(this._invKeySchedule);\n scrubVec(this._key);\n};\n\nmodule.exports.AES = AES;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-aes/aes.js?"); | |
| 344 | - | |
| 345 | -/***/ }), | |
| 346 | - | |
| 347 | -/***/ "./node_modules/browserify-aes/authCipher.js": | |
| 348 | -/*!***************************************************!*\ | |
| 349 | - !*** ./node_modules/browserify-aes/authCipher.js ***! | |
| 350 | - \***************************************************/ | |
| 351 | -/*! no static exports found */ | |
| 352 | -/***/ (function(module, exports, __webpack_require__) { | |
| 353 | - | |
| 354 | -eval("var aes = __webpack_require__(/*! ./aes */ \"./node_modules/browserify-aes/aes.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar Transform = __webpack_require__(/*! cipher-base */ \"./node_modules/cipher-base/index.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar GHASH = __webpack_require__(/*! ./ghash */ \"./node_modules/browserify-aes/ghash.js\");\n\nvar xor = __webpack_require__(/*! buffer-xor */ \"./node_modules/buffer-xor/index.js\");\n\nvar incr32 = __webpack_require__(/*! ./incr32 */ \"./node_modules/browserify-aes/incr32.js\");\n\nfunction xorTest(a, b) {\n var out = 0;\n if (a.length !== b.length) out++;\n var len = Math.min(a.length, b.length);\n\n for (var i = 0; i < len; ++i) {\n out += a[i] ^ b[i];\n }\n\n return out;\n}\n\nfunction calcIv(self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])]);\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])]);\n }\n\n var ghash = new GHASH(ck);\n var len = iv.length;\n var toPad = len % 16;\n ghash.update(iv);\n\n if (toPad) {\n toPad = 16 - toPad;\n ghash.update(Buffer.alloc(toPad, 0));\n }\n\n ghash.update(Buffer.alloc(8, 0));\n var ivBits = len * 8;\n var tail = Buffer.alloc(8);\n tail.writeUIntBE(ivBits, 0, 8);\n ghash.update(tail);\n self._finID = ghash.state;\n var out = Buffer.from(self._finID);\n incr32(out);\n return out;\n}\n\nfunction StreamCipher(mode, key, iv, decrypt) {\n Transform.call(this);\n var h = Buffer.alloc(4, 0);\n this._cipher = new aes.AES(key);\n\n var ck = this._cipher.encryptBlock(h);\n\n this._ghash = new GHASH(ck);\n iv = calcIv(this, iv, ck);\n this._prev = Buffer.from(iv);\n this._cache = Buffer.allocUnsafe(0);\n this._secCache = Buffer.allocUnsafe(0);\n this._decrypt = decrypt;\n this._alen = 0;\n this._len = 0;\n this._mode = mode;\n this._authTag = null;\n this._called = false;\n}\n\ninherits(StreamCipher, Transform);\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - this._alen % 16;\n\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0);\n\n this._ghash.update(rump);\n }\n }\n\n this._called = true;\n\n var out = this._mode.encrypt(this, chunk);\n\n if (this._decrypt) {\n this._ghash.update(chunk);\n } else {\n this._ghash.update(out);\n }\n\n this._len += chunk.length;\n return out;\n};\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data');\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID));\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data');\n this._authTag = tag;\n\n this._cipher.scrub();\n};\n\nStreamCipher.prototype.getAuthTag = function getAuthTag() {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state');\n return this._authTag;\n};\n\nStreamCipher.prototype.setAuthTag = function setAuthTag(tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state');\n this._authTag = tag;\n};\n\nStreamCipher.prototype.setAAD = function setAAD(buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state');\n\n this._ghash.update(buf);\n\n this._alen += buf.length;\n};\n\nmodule.exports = StreamCipher;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-aes/authCipher.js?"); | |
| 355 | - | |
| 356 | -/***/ }), | |
| 357 | - | |
| 358 | -/***/ "./node_modules/browserify-aes/browser.js": | |
| 359 | -/*!************************************************!*\ | |
| 360 | - !*** ./node_modules/browserify-aes/browser.js ***! | |
| 361 | - \************************************************/ | |
| 362 | -/*! no static exports found */ | |
| 363 | -/***/ (function(module, exports, __webpack_require__) { | |
| 364 | - | |
| 365 | -eval("var ciphers = __webpack_require__(/*! ./encrypter */ \"./node_modules/browserify-aes/encrypter.js\");\n\nvar deciphers = __webpack_require__(/*! ./decrypter */ \"./node_modules/browserify-aes/decrypter.js\");\n\nvar modes = __webpack_require__(/*! ./modes/list.json */ \"./node_modules/browserify-aes/modes/list.json\");\n\nfunction getCiphers() {\n return Object.keys(modes);\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher;\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv;\nexports.createDecipher = exports.Decipher = deciphers.createDecipher;\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv;\nexports.listCiphers = exports.getCiphers = getCiphers;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-aes/browser.js?"); | |
| 366 | - | |
| 367 | -/***/ }), | |
| 368 | - | |
| 369 | -/***/ "./node_modules/browserify-aes/decrypter.js": | |
| 370 | -/*!**************************************************!*\ | |
| 371 | - !*** ./node_modules/browserify-aes/decrypter.js ***! | |
| 372 | - \**************************************************/ | |
| 373 | -/*! no static exports found */ | |
| 374 | -/***/ (function(module, exports, __webpack_require__) { | |
| 375 | - | |
| 376 | -eval("var AuthCipher = __webpack_require__(/*! ./authCipher */ \"./node_modules/browserify-aes/authCipher.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar MODES = __webpack_require__(/*! ./modes */ \"./node_modules/browserify-aes/modes/index.js\");\n\nvar StreamCipher = __webpack_require__(/*! ./streamCipher */ \"./node_modules/browserify-aes/streamCipher.js\");\n\nvar Transform = __webpack_require__(/*! cipher-base */ \"./node_modules/cipher-base/index.js\");\n\nvar aes = __webpack_require__(/*! ./aes */ \"./node_modules/browserify-aes/aes.js\");\n\nvar ebtk = __webpack_require__(/*! evp_bytestokey */ \"./node_modules/evp_bytestokey/index.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nfunction Decipher(mode, key, iv) {\n Transform.call(this);\n this._cache = new Splitter();\n this._last = void 0;\n this._cipher = new aes.AES(key);\n this._prev = Buffer.from(iv);\n this._mode = mode;\n this._autopadding = true;\n}\n\ninherits(Decipher, Transform);\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data);\n\n var chunk;\n var thing;\n var out = [];\n\n while (chunk = this._cache.get(this._autopadding)) {\n thing = this._mode.decrypt(this, chunk);\n out.push(thing);\n }\n\n return Buffer.concat(out);\n};\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush();\n\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk));\n } else if (chunk) {\n throw new Error('data not multiple of block length');\n }\n};\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo;\n return this;\n};\n\nfunction Splitter() {\n this.cache = Buffer.allocUnsafe(0);\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data]);\n};\n\nSplitter.prototype.get = function (autoPadding) {\n var out;\n\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16);\n this.cache = this.cache.slice(16);\n return out;\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16);\n this.cache = this.cache.slice(16);\n return out;\n }\n }\n\n return null;\n};\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache;\n};\n\nfunction unpad(last) {\n var padded = last[15];\n\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data');\n }\n\n var i = -1;\n\n while (++i < padded) {\n if (last[i + (16 - padded)] !== padded) {\n throw new Error('unable to decrypt data');\n }\n }\n\n if (padded === 16) return;\n return last.slice(0, 16 - padded);\n}\n\nfunction createDecipheriv(suite, password, iv) {\n var config = MODES[suite.toLowerCase()];\n if (!config) throw new TypeError('invalid suite type');\n if (typeof iv === 'string') iv = Buffer.from(iv);\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length);\n if (typeof password === 'string') password = Buffer.from(password);\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length);\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true);\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true);\n }\n\n return new Decipher(config.module, password, iv);\n}\n\nfunction createDecipher(suite, password) {\n var config = MODES[suite.toLowerCase()];\n if (!config) throw new TypeError('invalid suite type');\n var keys = ebtk(password, false, config.key, config.iv);\n return createDecipheriv(suite, keys.key, keys.iv);\n}\n\nexports.createDecipher = createDecipher;\nexports.createDecipheriv = createDecipheriv;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-aes/decrypter.js?"); | |
| 377 | - | |
| 378 | -/***/ }), | |
| 379 | - | |
| 380 | -/***/ "./node_modules/browserify-aes/encrypter.js": | |
| 381 | -/*!**************************************************!*\ | |
| 382 | - !*** ./node_modules/browserify-aes/encrypter.js ***! | |
| 383 | - \**************************************************/ | |
| 384 | -/*! no static exports found */ | |
| 385 | -/***/ (function(module, exports, __webpack_require__) { | |
| 386 | - | |
| 387 | -eval("var MODES = __webpack_require__(/*! ./modes */ \"./node_modules/browserify-aes/modes/index.js\");\n\nvar AuthCipher = __webpack_require__(/*! ./authCipher */ \"./node_modules/browserify-aes/authCipher.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar StreamCipher = __webpack_require__(/*! ./streamCipher */ \"./node_modules/browserify-aes/streamCipher.js\");\n\nvar Transform = __webpack_require__(/*! cipher-base */ \"./node_modules/cipher-base/index.js\");\n\nvar aes = __webpack_require__(/*! ./aes */ \"./node_modules/browserify-aes/aes.js\");\n\nvar ebtk = __webpack_require__(/*! evp_bytestokey */ \"./node_modules/evp_bytestokey/index.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nfunction Cipher(mode, key, iv) {\n Transform.call(this);\n this._cache = new Splitter();\n this._cipher = new aes.AES(key);\n this._prev = Buffer.from(iv);\n this._mode = mode;\n this._autopadding = true;\n}\n\ninherits(Cipher, Transform);\n\nCipher.prototype._update = function (data) {\n this._cache.add(data);\n\n var chunk;\n var thing;\n var out = [];\n\n while (chunk = this._cache.get()) {\n thing = this._mode.encrypt(this, chunk);\n out.push(thing);\n }\n\n return Buffer.concat(out);\n};\n\nvar PADDING = Buffer.alloc(16, 0x10);\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush();\n\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk);\n\n this._cipher.scrub();\n\n return chunk;\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub();\n\n throw new Error('data not multiple of block length');\n }\n};\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo;\n return this;\n};\n\nfunction Splitter() {\n this.cache = Buffer.allocUnsafe(0);\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data]);\n};\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16);\n this.cache = this.cache.slice(16);\n return out;\n }\n\n return null;\n};\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length;\n var padBuff = Buffer.allocUnsafe(len);\n var i = -1;\n\n while (++i < len) {\n padBuff.writeUInt8(len, i);\n }\n\n return Buffer.concat([this.cache, padBuff]);\n};\n\nfunction createCipheriv(suite, password, iv) {\n var config = MODES[suite.toLowerCase()];\n if (!config) throw new TypeError('invalid suite type');\n if (typeof password === 'string') password = Buffer.from(password);\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length);\n if (typeof iv === 'string') iv = Buffer.from(iv);\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length);\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv);\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv);\n }\n\n return new Cipher(config.module, password, iv);\n}\n\nfunction createCipher(suite, password) {\n var config = MODES[suite.toLowerCase()];\n if (!config) throw new TypeError('invalid suite type');\n var keys = ebtk(password, false, config.key, config.iv);\n return createCipheriv(suite, keys.key, keys.iv);\n}\n\nexports.createCipheriv = createCipheriv;\nexports.createCipher = createCipher;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-aes/encrypter.js?"); | |
| 388 | - | |
| 389 | -/***/ }), | |
| 390 | - | |
| 391 | -/***/ "./node_modules/browserify-aes/ghash.js": | |
| 392 | -/*!**********************************************!*\ | |
| 393 | - !*** ./node_modules/browserify-aes/ghash.js ***! | |
| 394 | - \**********************************************/ | |
| 395 | -/*! no static exports found */ | |
| 396 | -/***/ (function(module, exports, __webpack_require__) { | |
| 397 | - | |
| 398 | -eval("var Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar ZEROES = Buffer.alloc(16, 0);\n\nfunction toArray(buf) {\n return [buf.readUInt32BE(0), buf.readUInt32BE(4), buf.readUInt32BE(8), buf.readUInt32BE(12)];\n}\n\nfunction fromArray(out) {\n var buf = Buffer.allocUnsafe(16);\n buf.writeUInt32BE(out[0] >>> 0, 0);\n buf.writeUInt32BE(out[1] >>> 0, 4);\n buf.writeUInt32BE(out[2] >>> 0, 8);\n buf.writeUInt32BE(out[3] >>> 0, 12);\n return buf;\n}\n\nfunction GHASH(key) {\n this.h = key;\n this.state = Buffer.alloc(16, 0);\n this.cache = Buffer.allocUnsafe(0);\n} // from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\n\n\nGHASH.prototype.ghash = function (block) {\n var i = -1;\n\n while (++i < block.length) {\n this.state[i] ^= block[i];\n }\n\n this._multiply();\n};\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h);\n var Zi = [0, 0, 0, 0];\n var j, xi, lsbVi;\n var i = -1;\n\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & 1 << 7 - i % 8) !== 0;\n\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0];\n Zi[1] ^= Vi[1];\n Zi[2] ^= Vi[2];\n Zi[3] ^= Vi[3];\n } // Store the value of LSB(V_i)\n\n\n lsbVi = (Vi[3] & 1) !== 0; // V_i+1 = V_i >> 1\n\n for (j = 3; j > 0; j--) {\n Vi[j] = Vi[j] >>> 1 | (Vi[j - 1] & 1) << 31;\n }\n\n Vi[0] = Vi[0] >>> 1; // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n\n if (lsbVi) {\n Vi[0] = Vi[0] ^ 0xe1 << 24;\n }\n }\n\n this.state = fromArray(Zi);\n};\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf]);\n var chunk;\n\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16);\n this.cache = this.cache.slice(16);\n this.ghash(chunk);\n }\n};\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16));\n }\n\n this.ghash(fromArray([0, abl, 0, bl]));\n return this.state;\n};\n\nmodule.exports = GHASH;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-aes/ghash.js?"); | |
| 399 | - | |
| 400 | -/***/ }), | |
| 401 | - | |
| 402 | -/***/ "./node_modules/browserify-aes/incr32.js": | |
| 403 | -/*!***********************************************!*\ | |
| 404 | - !*** ./node_modules/browserify-aes/incr32.js ***! | |
| 405 | - \***********************************************/ | |
| 406 | -/*! no static exports found */ | |
| 407 | -/***/ (function(module, exports) { | |
| 408 | - | |
| 409 | -eval("function incr32(iv) {\n var len = iv.length;\n var item;\n\n while (len--) {\n item = iv.readUInt8(len);\n\n if (item === 255) {\n iv.writeUInt8(0, len);\n } else {\n item++;\n iv.writeUInt8(item, len);\n break;\n }\n }\n}\n\nmodule.exports = incr32;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-aes/incr32.js?"); | |
| 410 | - | |
| 411 | -/***/ }), | |
| 412 | - | |
| 413 | -/***/ "./node_modules/browserify-aes/modes/cbc.js": | |
| 414 | -/*!**************************************************!*\ | |
| 415 | - !*** ./node_modules/browserify-aes/modes/cbc.js ***! | |
| 416 | - \**************************************************/ | |
| 417 | -/*! no static exports found */ | |
| 418 | -/***/ (function(module, exports, __webpack_require__) { | |
| 419 | - | |
| 420 | -eval("var xor = __webpack_require__(/*! buffer-xor */ \"./node_modules/buffer-xor/index.js\");\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev);\n self._prev = self._cipher.encryptBlock(data);\n return self._prev;\n};\n\nexports.decrypt = function (self, block) {\n var pad = self._prev;\n self._prev = block;\n\n var out = self._cipher.decryptBlock(block);\n\n return xor(out, pad);\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-aes/modes/cbc.js?"); | |
| 421 | - | |
| 422 | -/***/ }), | |
| 423 | - | |
| 424 | -/***/ "./node_modules/browserify-aes/modes/cfb.js": | |
| 425 | -/*!**************************************************!*\ | |
| 426 | - !*** ./node_modules/browserify-aes/modes/cfb.js ***! | |
| 427 | - \**************************************************/ | |
| 428 | -/*! no static exports found */ | |
| 429 | -/***/ (function(module, exports, __webpack_require__) { | |
| 430 | - | |
| 431 | -eval("var Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar xor = __webpack_require__(/*! buffer-xor */ \"./node_modules/buffer-xor/index.js\");\n\nfunction encryptStart(self, data, decrypt) {\n var len = data.length;\n var out = xor(data, self._cache);\n self._cache = self._cache.slice(len);\n self._prev = Buffer.concat([self._prev, decrypt ? data : out]);\n return out;\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0);\n var len;\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev);\n self._prev = Buffer.allocUnsafe(0);\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length;\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)]);\n data = data.slice(len);\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)]);\n break;\n }\n }\n\n return out;\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-aes/modes/cfb.js?"); | |
| 432 | - | |
| 433 | -/***/ }), | |
| 434 | - | |
| 435 | -/***/ "./node_modules/browserify-aes/modes/cfb1.js": | |
| 436 | -/*!***************************************************!*\ | |
| 437 | - !*** ./node_modules/browserify-aes/modes/cfb1.js ***! | |
| 438 | - \***************************************************/ | |
| 439 | -/*! no static exports found */ | |
| 440 | -/***/ (function(module, exports, __webpack_require__) { | |
| 441 | - | |
| 442 | -eval("var Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nfunction encryptByte(self, byteParam, decrypt) {\n var pad;\n var i = -1;\n var len = 8;\n var out = 0;\n var bit, value;\n\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev);\n bit = byteParam & 1 << 7 - i ? 0x80 : 0;\n value = pad[0] ^ bit;\n out += (value & 0x80) >> i % 8;\n self._prev = shiftIn(self._prev, decrypt ? bit : value);\n }\n\n return out;\n}\n\nfunction shiftIn(buffer, value) {\n var len = buffer.length;\n var i = -1;\n var out = Buffer.allocUnsafe(buffer.length);\n buffer = Buffer.concat([buffer, Buffer.from([value])]);\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> 7;\n }\n\n return out;\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length;\n var out = Buffer.allocUnsafe(len);\n var i = -1;\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt);\n }\n\n return out;\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-aes/modes/cfb1.js?"); | |
| 443 | - | |
| 444 | -/***/ }), | |
| 445 | - | |
| 446 | -/***/ "./node_modules/browserify-aes/modes/cfb8.js": | |
| 447 | -/*!***************************************************!*\ | |
| 448 | - !*** ./node_modules/browserify-aes/modes/cfb8.js ***! | |
| 449 | - \***************************************************/ | |
| 450 | -/*! no static exports found */ | |
| 451 | -/***/ (function(module, exports, __webpack_require__) { | |
| 452 | - | |
| 453 | -eval("var Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nfunction encryptByte(self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev);\n\n var out = pad[0] ^ byteParam;\n self._prev = Buffer.concat([self._prev.slice(1), Buffer.from([decrypt ? byteParam : out])]);\n return out;\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length;\n var out = Buffer.allocUnsafe(len);\n var i = -1;\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt);\n }\n\n return out;\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-aes/modes/cfb8.js?"); | |
| 454 | - | |
| 455 | -/***/ }), | |
| 456 | - | |
| 457 | -/***/ "./node_modules/browserify-aes/modes/ctr.js": | |
| 458 | -/*!**************************************************!*\ | |
| 459 | - !*** ./node_modules/browserify-aes/modes/ctr.js ***! | |
| 460 | - \**************************************************/ | |
| 461 | -/*! no static exports found */ | |
| 462 | -/***/ (function(module, exports, __webpack_require__) { | |
| 463 | - | |
| 464 | -eval("var xor = __webpack_require__(/*! buffer-xor */ \"./node_modules/buffer-xor/index.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar incr32 = __webpack_require__(/*! ../incr32 */ \"./node_modules/browserify-aes/incr32.js\");\n\nfunction getBlock(self) {\n var out = self._cipher.encryptBlockRaw(self._prev);\n\n incr32(self._prev);\n return out;\n}\n\nvar blockSize = 16;\n\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize);\n var start = self._cache.length;\n self._cache = Buffer.concat([self._cache, Buffer.allocUnsafe(chunkNum * blockSize)]);\n\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self);\n var offset = start + i * blockSize;\n\n self._cache.writeUInt32BE(out[0], offset + 0);\n\n self._cache.writeUInt32BE(out[1], offset + 4);\n\n self._cache.writeUInt32BE(out[2], offset + 8);\n\n self._cache.writeUInt32BE(out[3], offset + 12);\n }\n\n var pad = self._cache.slice(0, chunk.length);\n\n self._cache = self._cache.slice(chunk.length);\n return xor(chunk, pad);\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-aes/modes/ctr.js?"); | |
| 465 | - | |
| 466 | -/***/ }), | |
| 467 | - | |
| 468 | -/***/ "./node_modules/browserify-aes/modes/ecb.js": | |
| 469 | -/*!**************************************************!*\ | |
| 470 | - !*** ./node_modules/browserify-aes/modes/ecb.js ***! | |
| 471 | - \**************************************************/ | |
| 472 | -/*! no static exports found */ | |
| 473 | -/***/ (function(module, exports) { | |
| 474 | - | |
| 475 | -eval("exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block);\n};\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block);\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-aes/modes/ecb.js?"); | |
| 476 | - | |
| 477 | -/***/ }), | |
| 478 | - | |
| 479 | -/***/ "./node_modules/browserify-aes/modes/index.js": | |
| 480 | -/*!****************************************************!*\ | |
| 481 | - !*** ./node_modules/browserify-aes/modes/index.js ***! | |
| 482 | - \****************************************************/ | |
| 483 | -/*! no static exports found */ | |
| 484 | -/***/ (function(module, exports, __webpack_require__) { | |
| 485 | - | |
| 486 | -eval("var modeModules = {\n ECB: __webpack_require__(/*! ./ecb */ \"./node_modules/browserify-aes/modes/ecb.js\"),\n CBC: __webpack_require__(/*! ./cbc */ \"./node_modules/browserify-aes/modes/cbc.js\"),\n CFB: __webpack_require__(/*! ./cfb */ \"./node_modules/browserify-aes/modes/cfb.js\"),\n CFB8: __webpack_require__(/*! ./cfb8 */ \"./node_modules/browserify-aes/modes/cfb8.js\"),\n CFB1: __webpack_require__(/*! ./cfb1 */ \"./node_modules/browserify-aes/modes/cfb1.js\"),\n OFB: __webpack_require__(/*! ./ofb */ \"./node_modules/browserify-aes/modes/ofb.js\"),\n CTR: __webpack_require__(/*! ./ctr */ \"./node_modules/browserify-aes/modes/ctr.js\"),\n GCM: __webpack_require__(/*! ./ctr */ \"./node_modules/browserify-aes/modes/ctr.js\")\n};\n\nvar modes = __webpack_require__(/*! ./list.json */ \"./node_modules/browserify-aes/modes/list.json\");\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode];\n}\n\nmodule.exports = modes;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-aes/modes/index.js?"); | |
| 487 | - | |
| 488 | -/***/ }), | |
| 489 | - | |
| 490 | -/***/ "./node_modules/browserify-aes/modes/list.json": | |
| 491 | -/*!*****************************************************!*\ | |
| 492 | - !*** ./node_modules/browserify-aes/modes/list.json ***! | |
| 493 | - \*****************************************************/ | |
| 494 | -/*! exports provided: aes-128-ecb, aes-192-ecb, aes-256-ecb, aes-128-cbc, aes-192-cbc, aes-256-cbc, aes128, aes192, aes256, aes-128-cfb, aes-192-cfb, aes-256-cfb, aes-128-cfb8, aes-192-cfb8, aes-256-cfb8, aes-128-cfb1, aes-192-cfb1, aes-256-cfb1, aes-128-ofb, aes-192-ofb, aes-256-ofb, aes-128-ctr, aes-192-ctr, aes-256-ctr, aes-128-gcm, aes-192-gcm, aes-256-gcm, default */ | |
| 495 | -/***/ (function(module) { | |
| 496 | - | |
| 497 | -eval("module.exports = JSON.parse(\"{\\\"aes-128-ecb\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":128,\\\"iv\\\":0,\\\"mode\\\":\\\"ECB\\\",\\\"type\\\":\\\"block\\\"},\\\"aes-192-ecb\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":192,\\\"iv\\\":0,\\\"mode\\\":\\\"ECB\\\",\\\"type\\\":\\\"block\\\"},\\\"aes-256-ecb\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":256,\\\"iv\\\":0,\\\"mode\\\":\\\"ECB\\\",\\\"type\\\":\\\"block\\\"},\\\"aes-128-cbc\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":128,\\\"iv\\\":16,\\\"mode\\\":\\\"CBC\\\",\\\"type\\\":\\\"block\\\"},\\\"aes-192-cbc\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":192,\\\"iv\\\":16,\\\"mode\\\":\\\"CBC\\\",\\\"type\\\":\\\"block\\\"},\\\"aes-256-cbc\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":256,\\\"iv\\\":16,\\\"mode\\\":\\\"CBC\\\",\\\"type\\\":\\\"block\\\"},\\\"aes128\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":128,\\\"iv\\\":16,\\\"mode\\\":\\\"CBC\\\",\\\"type\\\":\\\"block\\\"},\\\"aes192\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":192,\\\"iv\\\":16,\\\"mode\\\":\\\"CBC\\\",\\\"type\\\":\\\"block\\\"},\\\"aes256\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":256,\\\"iv\\\":16,\\\"mode\\\":\\\"CBC\\\",\\\"type\\\":\\\"block\\\"},\\\"aes-128-cfb\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":128,\\\"iv\\\":16,\\\"mode\\\":\\\"CFB\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-192-cfb\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":192,\\\"iv\\\":16,\\\"mode\\\":\\\"CFB\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-256-cfb\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":256,\\\"iv\\\":16,\\\"mode\\\":\\\"CFB\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-128-cfb8\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":128,\\\"iv\\\":16,\\\"mode\\\":\\\"CFB8\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-192-cfb8\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":192,\\\"iv\\\":16,\\\"mode\\\":\\\"CFB8\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-256-cfb8\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":256,\\\"iv\\\":16,\\\"mode\\\":\\\"CFB8\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-128-cfb1\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":128,\\\"iv\\\":16,\\\"mode\\\":\\\"CFB1\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-192-cfb1\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":192,\\\"iv\\\":16,\\\"mode\\\":\\\"CFB1\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-256-cfb1\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":256,\\\"iv\\\":16,\\\"mode\\\":\\\"CFB1\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-128-ofb\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":128,\\\"iv\\\":16,\\\"mode\\\":\\\"OFB\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-192-ofb\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":192,\\\"iv\\\":16,\\\"mode\\\":\\\"OFB\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-256-ofb\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":256,\\\"iv\\\":16,\\\"mode\\\":\\\"OFB\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-128-ctr\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":128,\\\"iv\\\":16,\\\"mode\\\":\\\"CTR\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-192-ctr\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":192,\\\"iv\\\":16,\\\"mode\\\":\\\"CTR\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-256-ctr\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":256,\\\"iv\\\":16,\\\"mode\\\":\\\"CTR\\\",\\\"type\\\":\\\"stream\\\"},\\\"aes-128-gcm\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":128,\\\"iv\\\":12,\\\"mode\\\":\\\"GCM\\\",\\\"type\\\":\\\"auth\\\"},\\\"aes-192-gcm\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":192,\\\"iv\\\":12,\\\"mode\\\":\\\"GCM\\\",\\\"type\\\":\\\"auth\\\"},\\\"aes-256-gcm\\\":{\\\"cipher\\\":\\\"AES\\\",\\\"key\\\":256,\\\"iv\\\":12,\\\"mode\\\":\\\"GCM\\\",\\\"type\\\":\\\"auth\\\"}}\");\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-aes/modes/list.json?"); | |
| 498 | - | |
| 499 | -/***/ }), | |
| 500 | - | |
| 501 | -/***/ "./node_modules/browserify-aes/modes/ofb.js": | |
| 502 | -/*!**************************************************!*\ | |
| 503 | - !*** ./node_modules/browserify-aes/modes/ofb.js ***! | |
| 504 | - \**************************************************/ | |
| 505 | -/*! no static exports found */ | |
| 506 | -/***/ (function(module, exports, __webpack_require__) { | |
| 507 | - | |
| 508 | -eval("/* WEBPACK VAR INJECTION */(function(Buffer) {var xor = __webpack_require__(/*! buffer-xor */ \"./node_modules/buffer-xor/index.js\");\n\nfunction getBlock(self) {\n self._prev = self._cipher.encryptBlock(self._prev);\n return self._prev;\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)]);\n }\n\n var pad = self._cache.slice(0, chunk.length);\n\n self._cache = self._cache.slice(chunk.length);\n return xor(chunk, pad);\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node-libs-browser/node_modules/buffer/index.js */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-aes/modes/ofb.js?"); | |
| 509 | - | |
| 510 | -/***/ }), | |
| 511 | - | |
| 512 | -/***/ "./node_modules/browserify-aes/streamCipher.js": | |
| 513 | -/*!*****************************************************!*\ | |
| 514 | - !*** ./node_modules/browserify-aes/streamCipher.js ***! | |
| 515 | - \*****************************************************/ | |
| 516 | -/*! no static exports found */ | |
| 517 | -/***/ (function(module, exports, __webpack_require__) { | |
| 518 | - | |
| 519 | -eval("var aes = __webpack_require__(/*! ./aes */ \"./node_modules/browserify-aes/aes.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar Transform = __webpack_require__(/*! cipher-base */ \"./node_modules/cipher-base/index.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nfunction StreamCipher(mode, key, iv, decrypt) {\n Transform.call(this);\n this._cipher = new aes.AES(key);\n this._prev = Buffer.from(iv);\n this._cache = Buffer.allocUnsafe(0);\n this._secCache = Buffer.allocUnsafe(0);\n this._decrypt = decrypt;\n this._mode = mode;\n}\n\ninherits(StreamCipher, Transform);\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt);\n};\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub();\n};\n\nmodule.exports = StreamCipher;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-aes/streamCipher.js?"); | |
| 520 | - | |
| 521 | -/***/ }), | |
| 522 | - | |
| 523 | -/***/ "./node_modules/browserify-cipher/browser.js": | |
| 524 | -/*!***************************************************!*\ | |
| 525 | - !*** ./node_modules/browserify-cipher/browser.js ***! | |
| 526 | - \***************************************************/ | |
| 527 | -/*! no static exports found */ | |
| 528 | -/***/ (function(module, exports, __webpack_require__) { | |
| 529 | - | |
| 530 | -eval("var DES = __webpack_require__(/*! browserify-des */ \"./node_modules/browserify-des/index.js\");\n\nvar aes = __webpack_require__(/*! browserify-aes/browser */ \"./node_modules/browserify-aes/browser.js\");\n\nvar aesModes = __webpack_require__(/*! browserify-aes/modes */ \"./node_modules/browserify-aes/modes/index.js\");\n\nvar desModes = __webpack_require__(/*! browserify-des/modes */ \"./node_modules/browserify-des/modes.js\");\n\nvar ebtk = __webpack_require__(/*! evp_bytestokey */ \"./node_modules/evp_bytestokey/index.js\");\n\nfunction createCipher(suite, password) {\n suite = suite.toLowerCase();\n var keyLen, ivLen;\n\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key;\n ivLen = aesModes[suite].iv;\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8;\n ivLen = desModes[suite].iv;\n } else {\n throw new TypeError('invalid suite type');\n }\n\n var keys = ebtk(password, false, keyLen, ivLen);\n return createCipheriv(suite, keys.key, keys.iv);\n}\n\nfunction createDecipher(suite, password) {\n suite = suite.toLowerCase();\n var keyLen, ivLen;\n\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key;\n ivLen = aesModes[suite].iv;\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8;\n ivLen = desModes[suite].iv;\n } else {\n throw new TypeError('invalid suite type');\n }\n\n var keys = ebtk(password, false, keyLen, ivLen);\n return createDecipheriv(suite, keys.key, keys.iv);\n}\n\nfunction createCipheriv(suite, key, iv) {\n suite = suite.toLowerCase();\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv);\n if (desModes[suite]) return new DES({\n key: key,\n iv: iv,\n mode: suite\n });\n throw new TypeError('invalid suite type');\n}\n\nfunction createDecipheriv(suite, key, iv) {\n suite = suite.toLowerCase();\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv);\n if (desModes[suite]) return new DES({\n key: key,\n iv: iv,\n mode: suite,\n decrypt: true\n });\n throw new TypeError('invalid suite type');\n}\n\nfunction getCiphers() {\n return Object.keys(desModes).concat(aes.getCiphers());\n}\n\nexports.createCipher = exports.Cipher = createCipher;\nexports.createCipheriv = exports.Cipheriv = createCipheriv;\nexports.createDecipher = exports.Decipher = createDecipher;\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv;\nexports.listCiphers = exports.getCiphers = getCiphers;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-cipher/browser.js?"); | |
| 531 | - | |
| 532 | -/***/ }), | |
| 533 | - | |
| 534 | -/***/ "./node_modules/browserify-des/index.js": | |
| 535 | -/*!**********************************************!*\ | |
| 536 | - !*** ./node_modules/browserify-des/index.js ***! | |
| 537 | - \**********************************************/ | |
| 538 | -/*! no static exports found */ | |
| 539 | -/***/ (function(module, exports, __webpack_require__) { | |
| 540 | - | |
| 541 | -eval("var CipherBase = __webpack_require__(/*! cipher-base */ \"./node_modules/cipher-base/index.js\");\n\nvar des = __webpack_require__(/*! des.js */ \"./node_modules/des.js/lib/des.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n};\nmodes.des = modes['des-cbc'];\nmodes.des3 = modes['des-ede3-cbc'];\nmodule.exports = DES;\ninherits(DES, CipherBase);\n\nfunction DES(opts) {\n CipherBase.call(this);\n var modeName = opts.mode.toLowerCase();\n var mode = modes[modeName];\n var type;\n\n if (opts.decrypt) {\n type = 'decrypt';\n } else {\n type = 'encrypt';\n }\n\n var key = opts.key;\n\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key);\n }\n\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)]);\n }\n\n var iv = opts.iv;\n\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv);\n }\n\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n });\n}\n\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data));\n};\n\nDES.prototype._final = function () {\n return Buffer.from(this._des.final());\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-des/index.js?"); | |
| 542 | - | |
| 543 | -/***/ }), | |
| 544 | - | |
| 545 | -/***/ "./node_modules/browserify-des/modes.js": | |
| 546 | -/*!**********************************************!*\ | |
| 547 | - !*** ./node_modules/browserify-des/modes.js ***! | |
| 548 | - \**********************************************/ | |
| 549 | -/*! no static exports found */ | |
| 550 | -/***/ (function(module, exports) { | |
| 551 | - | |
| 552 | -eval("exports['des-ecb'] = {\n key: 8,\n iv: 0\n};\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n};\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n};\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n};\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n};\nexports['des-ede'] = {\n key: 16,\n iv: 0\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-des/modes.js?"); | |
| 553 | - | |
| 554 | -/***/ }), | |
| 555 | - | |
| 556 | -/***/ "./node_modules/browserify-rsa/index.js": | |
| 557 | -/*!**********************************************!*\ | |
| 558 | - !*** ./node_modules/browserify-rsa/index.js ***! | |
| 559 | - \**********************************************/ | |
| 560 | -/*! no static exports found */ | |
| 561 | -/***/ (function(module, exports, __webpack_require__) { | |
| 562 | - | |
| 563 | -eval("/* WEBPACK VAR INJECTION */(function(Buffer) {var BN = __webpack_require__(/*! bn.js */ \"./node_modules/bn.js/lib/bn.js\");\n\nvar randomBytes = __webpack_require__(/*! randombytes */ \"./node_modules/randombytes/browser.js\");\n\nfunction blind(priv) {\n var r = getr(priv);\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed();\n return {\n blinder: blinder,\n unblinder: r.invm(priv.modulus)\n };\n}\n\nfunction getr(priv) {\n var len = priv.modulus.byteLength();\n var r;\n\n do {\n r = new BN(randomBytes(len));\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2));\n\n return r;\n}\n\nfunction crt(msg, priv) {\n var blinds = blind(priv);\n var len = priv.modulus.byteLength();\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus);\n var c1 = blinded.toRed(BN.mont(priv.prime1));\n var c2 = blinded.toRed(BN.mont(priv.prime2));\n var qinv = priv.coefficient;\n var p = priv.prime1;\n var q = priv.prime2;\n var m1 = c1.redPow(priv.exponent1).fromRed();\n var m2 = c2.redPow(priv.exponent2).fromRed();\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q);\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len);\n}\n\ncrt.getr = getr;\nmodule.exports = crt;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node-libs-browser/node_modules/buffer/index.js */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-rsa/index.js?"); | |
| 564 | - | |
| 565 | -/***/ }), | |
| 566 | - | |
| 567 | -/***/ "./node_modules/browserify-sign/algos.js": | |
| 568 | -/*!***********************************************!*\ | |
| 569 | - !*** ./node_modules/browserify-sign/algos.js ***! | |
| 570 | - \***********************************************/ | |
| 571 | -/*! no static exports found */ | |
| 572 | -/***/ (function(module, exports, __webpack_require__) { | |
| 573 | - | |
| 574 | -eval("module.exports = __webpack_require__(/*! ./browser/algorithms.json */ \"./node_modules/browserify-sign/browser/algorithms.json\");\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-sign/algos.js?"); | |
| 575 | - | |
| 576 | -/***/ }), | |
| 577 | - | |
| 578 | -/***/ "./node_modules/browserify-sign/browser/algorithms.json": | |
| 579 | -/*!**************************************************************!*\ | |
| 580 | - !*** ./node_modules/browserify-sign/browser/algorithms.json ***! | |
| 581 | - \**************************************************************/ | |
| 582 | -/*! exports provided: sha224WithRSAEncryption, RSA-SHA224, sha256WithRSAEncryption, RSA-SHA256, sha384WithRSAEncryption, RSA-SHA384, sha512WithRSAEncryption, RSA-SHA512, RSA-SHA1, ecdsa-with-SHA1, sha256, sha224, sha384, sha512, DSA-SHA, DSA-SHA1, DSA, DSA-WITH-SHA224, DSA-SHA224, DSA-WITH-SHA256, DSA-SHA256, DSA-WITH-SHA384, DSA-SHA384, DSA-WITH-SHA512, DSA-SHA512, DSA-RIPEMD160, ripemd160WithRSA, RSA-RIPEMD160, md5WithRSAEncryption, RSA-MD5, default */ | |
| 583 | -/***/ (function(module) { | |
| 584 | - | |
| 585 | -eval("module.exports = JSON.parse(\"{\\\"sha224WithRSAEncryption\\\":{\\\"sign\\\":\\\"rsa\\\",\\\"hash\\\":\\\"sha224\\\",\\\"id\\\":\\\"302d300d06096086480165030402040500041c\\\"},\\\"RSA-SHA224\\\":{\\\"sign\\\":\\\"ecdsa/rsa\\\",\\\"hash\\\":\\\"sha224\\\",\\\"id\\\":\\\"302d300d06096086480165030402040500041c\\\"},\\\"sha256WithRSAEncryption\\\":{\\\"sign\\\":\\\"rsa\\\",\\\"hash\\\":\\\"sha256\\\",\\\"id\\\":\\\"3031300d060960864801650304020105000420\\\"},\\\"RSA-SHA256\\\":{\\\"sign\\\":\\\"ecdsa/rsa\\\",\\\"hash\\\":\\\"sha256\\\",\\\"id\\\":\\\"3031300d060960864801650304020105000420\\\"},\\\"sha384WithRSAEncryption\\\":{\\\"sign\\\":\\\"rsa\\\",\\\"hash\\\":\\\"sha384\\\",\\\"id\\\":\\\"3041300d060960864801650304020205000430\\\"},\\\"RSA-SHA384\\\":{\\\"sign\\\":\\\"ecdsa/rsa\\\",\\\"hash\\\":\\\"sha384\\\",\\\"id\\\":\\\"3041300d060960864801650304020205000430\\\"},\\\"sha512WithRSAEncryption\\\":{\\\"sign\\\":\\\"rsa\\\",\\\"hash\\\":\\\"sha512\\\",\\\"id\\\":\\\"3051300d060960864801650304020305000440\\\"},\\\"RSA-SHA512\\\":{\\\"sign\\\":\\\"ecdsa/rsa\\\",\\\"hash\\\":\\\"sha512\\\",\\\"id\\\":\\\"3051300d060960864801650304020305000440\\\"},\\\"RSA-SHA1\\\":{\\\"sign\\\":\\\"rsa\\\",\\\"hash\\\":\\\"sha1\\\",\\\"id\\\":\\\"3021300906052b0e03021a05000414\\\"},\\\"ecdsa-with-SHA1\\\":{\\\"sign\\\":\\\"ecdsa\\\",\\\"hash\\\":\\\"sha1\\\",\\\"id\\\":\\\"\\\"},\\\"sha256\\\":{\\\"sign\\\":\\\"ecdsa\\\",\\\"hash\\\":\\\"sha256\\\",\\\"id\\\":\\\"\\\"},\\\"sha224\\\":{\\\"sign\\\":\\\"ecdsa\\\",\\\"hash\\\":\\\"sha224\\\",\\\"id\\\":\\\"\\\"},\\\"sha384\\\":{\\\"sign\\\":\\\"ecdsa\\\",\\\"hash\\\":\\\"sha384\\\",\\\"id\\\":\\\"\\\"},\\\"sha512\\\":{\\\"sign\\\":\\\"ecdsa\\\",\\\"hash\\\":\\\"sha512\\\",\\\"id\\\":\\\"\\\"},\\\"DSA-SHA\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"sha1\\\",\\\"id\\\":\\\"\\\"},\\\"DSA-SHA1\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"sha1\\\",\\\"id\\\":\\\"\\\"},\\\"DSA\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"sha1\\\",\\\"id\\\":\\\"\\\"},\\\"DSA-WITH-SHA224\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"sha224\\\",\\\"id\\\":\\\"\\\"},\\\"DSA-SHA224\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"sha224\\\",\\\"id\\\":\\\"\\\"},\\\"DSA-WITH-SHA256\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"sha256\\\",\\\"id\\\":\\\"\\\"},\\\"DSA-SHA256\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"sha256\\\",\\\"id\\\":\\\"\\\"},\\\"DSA-WITH-SHA384\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"sha384\\\",\\\"id\\\":\\\"\\\"},\\\"DSA-SHA384\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"sha384\\\",\\\"id\\\":\\\"\\\"},\\\"DSA-WITH-SHA512\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"sha512\\\",\\\"id\\\":\\\"\\\"},\\\"DSA-SHA512\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"sha512\\\",\\\"id\\\":\\\"\\\"},\\\"DSA-RIPEMD160\\\":{\\\"sign\\\":\\\"dsa\\\",\\\"hash\\\":\\\"rmd160\\\",\\\"id\\\":\\\"\\\"},\\\"ripemd160WithRSA\\\":{\\\"sign\\\":\\\"rsa\\\",\\\"hash\\\":\\\"rmd160\\\",\\\"id\\\":\\\"3021300906052b2403020105000414\\\"},\\\"RSA-RIPEMD160\\\":{\\\"sign\\\":\\\"rsa\\\",\\\"hash\\\":\\\"rmd160\\\",\\\"id\\\":\\\"3021300906052b2403020105000414\\\"},\\\"md5WithRSAEncryption\\\":{\\\"sign\\\":\\\"rsa\\\",\\\"hash\\\":\\\"md5\\\",\\\"id\\\":\\\"3020300c06082a864886f70d020505000410\\\"},\\\"RSA-MD5\\\":{\\\"sign\\\":\\\"rsa\\\",\\\"hash\\\":\\\"md5\\\",\\\"id\\\":\\\"3020300c06082a864886f70d020505000410\\\"}}\");\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-sign/browser/algorithms.json?"); | |
| 586 | - | |
| 587 | -/***/ }), | |
| 588 | - | |
| 589 | -/***/ "./node_modules/browserify-sign/browser/curves.json": | |
| 590 | -/*!**********************************************************!*\ | |
| 591 | - !*** ./node_modules/browserify-sign/browser/curves.json ***! | |
| 592 | - \**********************************************************/ | |
| 593 | -/*! exports provided: 1.3.132.0.10, 1.3.132.0.33, 1.2.840.10045.3.1.1, 1.2.840.10045.3.1.7, 1.3.132.0.34, 1.3.132.0.35, default */ | |
| 594 | -/***/ (function(module) { | |
| 595 | - | |
| 596 | -eval("module.exports = JSON.parse(\"{\\\"1.3.132.0.10\\\":\\\"secp256k1\\\",\\\"1.3.132.0.33\\\":\\\"p224\\\",\\\"1.2.840.10045.3.1.1\\\":\\\"p192\\\",\\\"1.2.840.10045.3.1.7\\\":\\\"p256\\\",\\\"1.3.132.0.34\\\":\\\"p384\\\",\\\"1.3.132.0.35\\\":\\\"p521\\\"}\");\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-sign/browser/curves.json?"); | |
| 597 | - | |
| 598 | -/***/ }), | |
| 599 | - | |
| 600 | -/***/ "./node_modules/browserify-sign/browser/index.js": | |
| 601 | -/*!*******************************************************!*\ | |
| 602 | - !*** ./node_modules/browserify-sign/browser/index.js ***! | |
| 603 | - \*******************************************************/ | |
| 604 | -/*! no static exports found */ | |
| 605 | -/***/ (function(module, exports, __webpack_require__) { | |
| 606 | - | |
| 607 | -eval("var Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar createHash = __webpack_require__(/*! create-hash */ \"./node_modules/create-hash/browser.js\");\n\nvar stream = __webpack_require__(/*! readable-stream */ \"./node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar sign = __webpack_require__(/*! ./sign */ \"./node_modules/browserify-sign/browser/sign.js\");\n\nvar verify = __webpack_require__(/*! ./verify */ \"./node_modules/browserify-sign/browser/verify.js\");\n\nvar algorithms = __webpack_require__(/*! ./algorithms.json */ \"./node_modules/browserify-sign/browser/algorithms.json\");\n\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex');\n algorithms[key.toLowerCase()] = algorithms[key];\n});\n\nfunction Sign(algorithm) {\n stream.Writable.call(this);\n var data = algorithms[algorithm];\n if (!data) throw new Error('Unknown message digest');\n this._hashType = data.hash;\n this._hash = createHash(data.hash);\n this._tag = data.id;\n this._signType = data.sign;\n}\n\ninherits(Sign, stream.Writable);\n\nSign.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n\n done();\n};\n\nSign.prototype.update = function update(data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc);\n\n this._hash.update(data);\n\n return this;\n};\n\nSign.prototype.sign = function signMethod(key, enc) {\n this.end();\n\n var hash = this._hash.digest();\n\n var sig = sign(hash, key, this._hashType, this._signType, this._tag);\n return enc ? sig.toString(enc) : sig;\n};\n\nfunction Verify(algorithm) {\n stream.Writable.call(this);\n var data = algorithms[algorithm];\n if (!data) throw new Error('Unknown message digest');\n this._hash = createHash(data.hash);\n this._tag = data.id;\n this._signType = data.sign;\n}\n\ninherits(Verify, stream.Writable);\n\nVerify.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n\n done();\n};\n\nVerify.prototype.update = function update(data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc);\n\n this._hash.update(data);\n\n return this;\n};\n\nVerify.prototype.verify = function verifyMethod(key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc);\n this.end();\n\n var hash = this._hash.digest();\n\n return verify(sig, hash, key, this._signType, this._tag);\n};\n\nfunction createSign(algorithm) {\n return new Sign(algorithm);\n}\n\nfunction createVerify(algorithm) {\n return new Verify(algorithm);\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-sign/browser/index.js?"); | |
| 608 | - | |
| 609 | -/***/ }), | |
| 610 | - | |
| 611 | -/***/ "./node_modules/browserify-sign/browser/sign.js": | |
| 612 | -/*!******************************************************!*\ | |
| 613 | - !*** ./node_modules/browserify-sign/browser/sign.js ***! | |
| 614 | - \******************************************************/ | |
| 615 | -/*! no static exports found */ | |
| 616 | -/***/ (function(module, exports, __webpack_require__) { | |
| 617 | - | |
| 618 | -eval("// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar createHmac = __webpack_require__(/*! create-hmac */ \"./node_modules/create-hmac/browser.js\");\n\nvar crt = __webpack_require__(/*! browserify-rsa */ \"./node_modules/browserify-rsa/index.js\");\n\nvar EC = __webpack_require__(/*! elliptic */ \"./node_modules/elliptic/lib/elliptic.js\").ec;\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/bn.js/lib/bn.js\");\n\nvar parseKeys = __webpack_require__(/*! parse-asn1 */ \"./node_modules/parse-asn1/index.js\");\n\nvar curves = __webpack_require__(/*! ./curves.json */ \"./node_modules/browserify-sign/browser/curves.json\");\n\nfunction sign(hash, key, hashType, signType, tag) {\n var priv = parseKeys(key);\n\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type');\n return ecSign(hash, priv);\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type');\n return dsaSign(hash, priv, hashType);\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type');\n }\n\n hash = Buffer.concat([tag, hash]);\n var len = priv.modulus.byteLength();\n var pad = [0, 1];\n\n while (hash.length + pad.length + 1 < len) {\n pad.push(0xff);\n }\n\n pad.push(0x00);\n var i = -1;\n\n while (++i < hash.length) {\n pad.push(hash[i]);\n }\n\n var out = crt(pad, priv);\n return out;\n}\n\nfunction ecSign(hash, priv) {\n var curveId = curves[priv.curve.join('.')];\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'));\n var curve = new EC(curveId);\n var key = curve.keyFromPrivate(priv.privateKey);\n var out = key.sign(hash);\n return Buffer.from(out.toDER());\n}\n\nfunction dsaSign(hash, priv, algo) {\n var x = priv.params.priv_key;\n var p = priv.params.p;\n var q = priv.params.q;\n var g = priv.params.g;\n var r = new BN(0);\n var k;\n var H = bits2int(hash, q).mod(q);\n var s = false;\n var kv = getKey(x, q, hash, algo);\n\n while (s === false) {\n k = makeKey(q, kv, algo);\n r = makeR(g, k, p, q);\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q);\n\n if (s.cmpn(0) === 0) {\n s = false;\n r = new BN(0);\n }\n }\n\n return toDER(r, s);\n}\n\nfunction toDER(r, s) {\n r = r.toArray();\n s = s.toArray(); // Pad values\n\n if (r[0] & 0x80) r = [0].concat(r);\n if (s[0] & 0x80) s = [0].concat(s);\n var total = r.length + s.length + 4;\n var res = [0x30, total, 0x02, r.length];\n res = res.concat(r, [0x02, s.length], s);\n return Buffer.from(res);\n}\n\nfunction getKey(x, q, hash, algo) {\n x = Buffer.from(x.toArray());\n\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length);\n x = Buffer.concat([zeros, x]);\n }\n\n var hlen = hash.length;\n var hbits = bits2octets(hash, q);\n var v = Buffer.alloc(hlen);\n v.fill(1);\n var k = Buffer.alloc(hlen);\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest();\n v = createHmac(algo, k).update(v).digest();\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest();\n v = createHmac(algo, k).update(v).digest();\n return {\n k: k,\n v: v\n };\n}\n\nfunction bits2int(obits, q) {\n var bits = new BN(obits);\n var shift = (obits.length << 3) - q.bitLength();\n if (shift > 0) bits.ishrn(shift);\n return bits;\n}\n\nfunction bits2octets(bits, q) {\n bits = bits2int(bits, q);\n bits = bits.mod(q);\n var out = Buffer.from(bits.toArray());\n\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length);\n out = Buffer.concat([zeros, out]);\n }\n\n return out;\n}\n\nfunction makeKey(q, kv, algo) {\n var t;\n var k;\n\n do {\n t = Buffer.alloc(0);\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest();\n t = Buffer.concat([t, kv.v]);\n }\n\n k = bits2int(t, q);\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest();\n kv.v = createHmac(algo, kv.k).update(kv.v).digest();\n } while (k.cmp(q) !== -1);\n\n return k;\n}\n\nfunction makeR(g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q);\n}\n\nmodule.exports = sign;\nmodule.exports.getKey = getKey;\nmodule.exports.makeKey = makeKey;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-sign/browser/sign.js?"); | |
| 619 | - | |
| 620 | -/***/ }), | |
| 621 | - | |
| 622 | -/***/ "./node_modules/browserify-sign/browser/verify.js": | |
| 623 | -/*!********************************************************!*\ | |
| 624 | - !*** ./node_modules/browserify-sign/browser/verify.js ***! | |
| 625 | - \********************************************************/ | |
| 626 | -/*! no static exports found */ | |
| 627 | -/***/ (function(module, exports, __webpack_require__) { | |
| 628 | - | |
| 629 | -eval("// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/bn.js/lib/bn.js\");\n\nvar EC = __webpack_require__(/*! elliptic */ \"./node_modules/elliptic/lib/elliptic.js\").ec;\n\nvar parseKeys = __webpack_require__(/*! parse-asn1 */ \"./node_modules/parse-asn1/index.js\");\n\nvar curves = __webpack_require__(/*! ./curves.json */ \"./node_modules/browserify-sign/browser/curves.json\");\n\nfunction verify(sig, hash, key, signType, tag) {\n var pub = parseKeys(key);\n\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type');\n return ecVerify(sig, hash, pub);\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type');\n return dsaVerify(sig, hash, pub);\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type');\n }\n\n hash = Buffer.concat([tag, hash]);\n var len = pub.modulus.byteLength();\n var pad = [1];\n var padNum = 0;\n\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff);\n padNum++;\n }\n\n pad.push(0x00);\n var i = -1;\n\n while (++i < hash.length) {\n pad.push(hash[i]);\n }\n\n pad = Buffer.from(pad);\n var red = BN.mont(pub.modulus);\n sig = new BN(sig).toRed(red);\n sig = sig.redPow(new BN(pub.publicExponent));\n sig = Buffer.from(sig.fromRed().toArray());\n var out = padNum < 8 ? 1 : 0;\n len = Math.min(sig.length, pad.length);\n if (sig.length !== pad.length) out = 1;\n i = -1;\n\n while (++i < len) {\n out |= sig[i] ^ pad[i];\n }\n\n return out === 0;\n}\n\nfunction ecVerify(sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')];\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'));\n var curve = new EC(curveId);\n var pubkey = pub.data.subjectPrivateKey.data;\n return curve.verify(hash, sig, pubkey);\n}\n\nfunction dsaVerify(sig, hash, pub) {\n var p = pub.data.p;\n var q = pub.data.q;\n var g = pub.data.g;\n var y = pub.data.pub_key;\n var unpacked = parseKeys.signature.decode(sig, 'der');\n var s = unpacked.s;\n var r = unpacked.r;\n checkValue(s, q);\n checkValue(r, q);\n var montp = BN.mont(p);\n var w = s.invm(q);\n var v = g.toRed(montp).redPow(new BN(hash).mul(w).mod(q)).fromRed().mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed()).mod(p).mod(q);\n return v.cmp(r) === 0;\n}\n\nfunction checkValue(b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig');\n if (b.cmp(q) >= q) throw new Error('invalid sig');\n}\n\nmodule.exports = verify;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-sign/browser/verify.js?"); | |
| 630 | - | |
| 631 | -/***/ }), | |
| 632 | - | |
| 633 | -/***/ "./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js": | |
| 634 | -/*!*************************************************************************************!*\ | |
| 635 | - !*** ./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js ***! | |
| 636 | - \*************************************************************************************/ | |
| 637 | -/*! no static exports found */ | |
| 638 | -/***/ (function(module, exports, __webpack_require__) { | |
| 639 | - | |
| 640 | -"use strict"; | |
| 641 | -eval("\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError = /*#__PURE__*/function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js?"); | |
| 642 | - | |
| 643 | -/***/ }), | |
| 644 | - | |
| 645 | -/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js": | |
| 646 | -/*!*****************************************************************************************!*\ | |
| 647 | - !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js ***! | |
| 648 | - \*****************************************************************************************/ | |
| 649 | -/*! no static exports found */ | |
| 650 | -/***/ (function(module, exports, __webpack_require__) { | |
| 651 | - | |
| 652 | -"use strict"; | |
| 653 | -eval("/* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n/*<replacement>*/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/*</replacement>*/\n\n\nmodule.exports = Duplex;\n\nvar Readable = __webpack_require__(/*! ./_stream_readable */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js\");\n\nvar Writable = __webpack_require__(/*! ./_stream_writable */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js\");\n\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js?"); | |
| 654 | - | |
| 655 | -/***/ }), | |
| 656 | - | |
| 657 | -/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js": | |
| 658 | -/*!**********************************************************************************************!*\ | |
| 659 | - !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js ***! | |
| 660 | - \**********************************************************************************************/ | |
| 661 | -/*! no static exports found */ | |
| 662 | -/***/ (function(module, exports, __webpack_require__) { | |
| 663 | - | |
| 664 | -"use strict"; | |
| 665 | -eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n\nmodule.exports = PassThrough;\n\nvar Transform = __webpack_require__(/*! ./_stream_transform */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js\");\n\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js?"); | |
| 666 | - | |
| 667 | -/***/ }), | |
| 668 | - | |
| 669 | -/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js": | |
| 670 | -/*!*******************************************************************************************!*\ | |
| 671 | - !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js ***! | |
| 672 | - \*******************************************************************************************/ | |
| 673 | -/*! no static exports found */ | |
| 674 | -/***/ (function(module, exports, __webpack_require__) { | |
| 675 | - | |
| 676 | -"use strict"; | |
| 677 | -eval("/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\nmodule.exports = Readable;\n/*<replacement>*/\n\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n/*<replacement>*/\n\nvar EE = __webpack_require__(/*! events */ \"./node_modules/node-libs-browser/node_modules/events/events.js\").EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Stream = __webpack_require__(/*! ./internal/streams/stream */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js\");\n/*</replacement>*/\n\n\nvar Buffer = __webpack_require__(/*! buffer */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*<replacement>*/\n\n\nvar debugUtil = __webpack_require__(/*! util */ 7);\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/*</replacement>*/\n\n\nvar BufferList = __webpack_require__(/*! ./internal/streams/buffer_list */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/buffer_list.js\");\n\nvar destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js\");\n\nvar _require = __webpack_require__(/*! ./internal/streams/state */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js\"),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = __webpack_require__(/*! ../errors */ \"./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js\").codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js\");\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = __webpack_require__(/*! string_decoder/ */ \"./node_modules/string_decoder/lib/string_decoder.js\").StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js\");\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = __webpack_require__(/*! string_decoder/ */ \"./node_modules/string_decoder/lib/string_decoder.js\").StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = __webpack_require__(/*! ./internal/streams/async_iterator */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/async_iterator.js\");\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = __webpack_require__(/*! ./internal/streams/from */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/from-browser.js\");\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\"), __webpack_require__(/*! ./../../../../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js?"); | |
| 678 | - | |
| 679 | -/***/ }), | |
| 680 | - | |
| 681 | -/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js": | |
| 682 | -/*!********************************************************************************************!*\ | |
| 683 | - !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js ***! | |
| 684 | - \********************************************************************************************/ | |
| 685 | -/*! no static exports found */ | |
| 686 | -/***/ (function(module, exports, __webpack_require__) { | |
| 687 | - | |
| 688 | -"use strict"; | |
| 689 | -eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n\nmodule.exports = Transform;\n\nvar _require$codes = __webpack_require__(/*! ../errors */ \"./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js\").codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js\");\n\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js?"); | |
| 690 | - | |
| 691 | -/***/ }), | |
| 692 | - | |
| 693 | -/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js": | |
| 694 | -/*!*******************************************************************************************!*\ | |
| 695 | - !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js ***! | |
| 696 | - \*******************************************************************************************/ | |
| 697 | -/*! no static exports found */ | |
| 698 | -/***/ (function(module, exports, __webpack_require__) { | |
| 699 | - | |
| 700 | -"use strict"; | |
| 701 | -eval("/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n\nmodule.exports = Writable;\n/* <replacement> */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\n\n\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n/*<replacement>*/\n\nvar internalUtil = {\n deprecate: __webpack_require__(/*! util-deprecate */ \"./node_modules/util-deprecate/browser.js\")\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Stream = __webpack_require__(/*! ./internal/streams/stream */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js\");\n/*</replacement>*/\n\n\nvar Buffer = __webpack_require__(/*! buffer */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js\");\n\nvar _require = __webpack_require__(/*! ./internal/streams/state */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js\"),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = __webpack_require__(/*! ../errors */ \"./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js\").codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js\");\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js\"); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\"), __webpack_require__(/*! ./../../../../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js?"); | |
| 702 | - | |
| 703 | -/***/ }), | |
| 704 | - | |
| 705 | -/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/async_iterator.js": | |
| 706 | -/*!**********************************************************************************************************!*\ | |
| 707 | - !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/async_iterator.js ***! | |
| 708 | - \**********************************************************************************************************/ | |
| 709 | -/*! no static exports found */ | |
| 710 | -/***/ (function(module, exports, __webpack_require__) { | |
| 711 | - | |
| 712 | -"use strict"; | |
| 713 | -eval("/* WEBPACK VAR INJECTION */(function(process) {\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar finished = __webpack_require__(/*! ./end-of-stream */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js\");\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this; // if we have detected an error in the meanwhile\n // reject straight away\n\n\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this; // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n\n\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/async_iterator.js?"); | |
| 714 | - | |
| 715 | -/***/ }), | |
| 716 | - | |
| 717 | -/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/buffer_list.js": | |
| 718 | -/*!*******************************************************************************************************!*\ | |
| 719 | - !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/buffer_list.js ***! | |
| 720 | - \*******************************************************************************************************/ | |
| 721 | -/*! no static exports found */ | |
| 722 | -/***/ (function(module, exports, __webpack_require__) { | |
| 723 | - | |
| 724 | -"use strict"; | |
| 725 | -eval("\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nvar _require = __webpack_require__(/*! buffer */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\"),\n Buffer = _require.Buffer;\n\nvar _require2 = __webpack_require__(/*! util */ 8),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/buffer_list.js?"); | |
| 726 | - | |
| 727 | -/***/ }), | |
| 728 | - | |
| 729 | -/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js": | |
| 730 | -/*!***************************************************************************************************!*\ | |
| 731 | - !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js ***! | |
| 732 | - \***************************************************************************************************/ | |
| 733 | -/*! no static exports found */ | |
| 734 | -/***/ (function(module, exports, __webpack_require__) { | |
| 735 | - | |
| 736 | -"use strict"; | |
| 737 | -eval("/* WEBPACK VAR INJECTION */(function(process) { // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js?"); | |
| 738 | - | |
| 739 | -/***/ }), | |
| 740 | - | |
| 741 | -/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js": | |
| 742 | -/*!*********************************************************************************************************!*\ | |
| 743 | - !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js ***! | |
| 744 | - \*********************************************************************************************************/ | |
| 745 | -/*! no static exports found */ | |
| 746 | -/***/ (function(module, exports, __webpack_require__) { | |
| 747 | - | |
| 748 | -"use strict"; | |
| 749 | -eval("// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n\nvar ERR_STREAM_PREMATURE_CLOSE = __webpack_require__(/*! ../../../errors */ \"./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js\").codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js?"); | |
| 750 | - | |
| 751 | -/***/ }), | |
| 752 | - | |
| 753 | -/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/from-browser.js": | |
| 754 | -/*!********************************************************************************************************!*\ | |
| 755 | - !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/from-browser.js ***! | |
| 756 | - \********************************************************************************************************/ | |
| 757 | -/*! no static exports found */ | |
| 758 | -/***/ (function(module, exports) { | |
| 759 | - | |
| 760 | -eval("module.exports = function () {\n throw new Error('Readable.from is not available in the browser');\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/from-browser.js?"); | |
| 761 | - | |
| 762 | -/***/ }), | |
| 763 | - | |
| 764 | -/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/pipeline.js": | |
| 765 | -/*!****************************************************************************************************!*\ | |
| 766 | - !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/pipeline.js ***! | |
| 767 | - \****************************************************************************************************/ | |
| 768 | -/*! no static exports found */ | |
| 769 | -/***/ (function(module, exports, __webpack_require__) { | |
| 770 | - | |
| 771 | -"use strict"; | |
| 772 | -eval("// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = __webpack_require__(/*! ../../../errors */ \"./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js\").codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = __webpack_require__(/*! ./end-of-stream */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js\");\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/pipeline.js?"); | |
| 773 | - | |
| 774 | -/***/ }), | |
| 775 | - | |
| 776 | -/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js": | |
| 777 | -/*!*************************************************************************************************!*\ | |
| 778 | - !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js ***! | |
| 779 | - \*************************************************************************************************/ | |
| 780 | -/*! no static exports found */ | |
| 781 | -/***/ (function(module, exports, __webpack_require__) { | |
| 782 | - | |
| 783 | -"use strict"; | |
| 784 | -eval("\n\nvar ERR_INVALID_OPT_VALUE = __webpack_require__(/*! ../../../errors */ \"./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js\").codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js?"); | |
| 785 | - | |
| 786 | -/***/ }), | |
| 787 | - | |
| 788 | -/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js": | |
| 789 | -/*!**********************************************************************************************************!*\ | |
| 790 | - !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js ***! | |
| 791 | - \**********************************************************************************************************/ | |
| 792 | -/*! no static exports found */ | |
| 793 | -/***/ (function(module, exports, __webpack_require__) { | |
| 794 | - | |
| 795 | -eval("module.exports = __webpack_require__(/*! events */ \"./node_modules/node-libs-browser/node_modules/events/events.js\").EventEmitter;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js?"); | |
| 796 | - | |
| 797 | -/***/ }), | |
| 798 | - | |
| 799 | -/***/ "./node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js": | |
| 800 | -/*!***************************************************************************************!*\ | |
| 801 | - !*** ./node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js ***! | |
| 802 | - \***************************************************************************************/ | |
| 803 | -/*! no static exports found */ | |
| 804 | -/***/ (function(module, exports, __webpack_require__) { | |
| 805 | - | |
| 806 | -eval("exports = module.exports = __webpack_require__(/*! ./lib/_stream_readable.js */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js\");\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = __webpack_require__(/*! ./lib/_stream_writable.js */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js\");\nexports.Duplex = __webpack_require__(/*! ./lib/_stream_duplex.js */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js\");\nexports.Transform = __webpack_require__(/*! ./lib/_stream_transform.js */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js\");\nexports.PassThrough = __webpack_require__(/*! ./lib/_stream_passthrough.js */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js\");\nexports.finished = __webpack_require__(/*! ./lib/internal/streams/end-of-stream.js */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js\");\nexports.pipeline = __webpack_require__(/*! ./lib/internal/streams/pipeline.js */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/pipeline.js\");\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js?"); | |
| 807 | - | |
| 808 | -/***/ }), | |
| 809 | - | |
| 810 | -/***/ "./node_modules/buffer-xor/index.js": | |
| 811 | -/*!******************************************!*\ | |
| 812 | - !*** ./node_modules/buffer-xor/index.js ***! | |
| 813 | - \******************************************/ | |
| 814 | -/*! no static exports found */ | |
| 815 | -/***/ (function(module, exports, __webpack_require__) { | |
| 816 | - | |
| 817 | -eval("/* WEBPACK VAR INJECTION */(function(Buffer) {module.exports = function xor(a, b) {\n var length = Math.min(a.length, b.length);\n var buffer = new Buffer(length);\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i];\n }\n\n return buffer;\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node-libs-browser/node_modules/buffer/index.js */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/buffer-xor/index.js?"); | |
| 818 | - | |
| 819 | -/***/ }), | |
| 820 | - | |
| 821 | -/***/ "./node_modules/cipher-base/index.js": | |
| 822 | -/*!*******************************************!*\ | |
| 823 | - !*** ./node_modules/cipher-base/index.js ***! | |
| 824 | - \*******************************************/ | |
| 825 | -/*! no static exports found */ | |
| 826 | -/***/ (function(module, exports, __webpack_require__) { | |
| 827 | - | |
| 828 | -eval("var Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar Transform = __webpack_require__(/*! stream */ \"./node_modules/stream-browserify/index.js\").Transform;\n\nvar StringDecoder = __webpack_require__(/*! string_decoder */ \"./node_modules/string_decoder/lib/string_decoder.js\").StringDecoder;\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nfunction CipherBase(hashMode) {\n Transform.call(this);\n this.hashMode = typeof hashMode === 'string';\n\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest;\n } else {\n this.final = this._finalOrDigest;\n }\n\n if (this._final) {\n this.__final = this._final;\n this._final = null;\n }\n\n this._decoder = null;\n this._encoding = null;\n}\n\ninherits(CipherBase, Transform);\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc);\n }\n\n var outData = this._update(data);\n\n if (this.hashMode) return this;\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc);\n }\n\n return outData;\n};\n\nCipherBase.prototype.setAutoPadding = function () {};\n\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state');\n};\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state');\n};\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state');\n};\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err;\n\n try {\n if (this.hashMode) {\n this._update(data);\n } else {\n this.push(this._update(data));\n }\n } catch (e) {\n err = e;\n } finally {\n next(err);\n }\n};\n\nCipherBase.prototype._flush = function (done) {\n var err;\n\n try {\n this.push(this.__final());\n } catch (e) {\n err = e;\n }\n\n done(err);\n};\n\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0);\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true);\n }\n\n return outData;\n};\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc);\n this._encoding = enc;\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings');\n\n var out = this._decoder.write(value);\n\n if (fin) {\n out += this._decoder.end();\n }\n\n return out;\n};\n\nmodule.exports = CipherBase;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/cipher-base/index.js?"); | |
| 829 | - | |
| 830 | -/***/ }), | |
| 831 | - | |
| 832 | -/***/ "./node_modules/core-util-is/lib/util.js": | |
| 833 | -/*!***********************************************!*\ | |
| 834 | - !*** ./node_modules/core-util-is/lib/util.js ***! | |
| 835 | - \***********************************************/ | |
| 836 | -/*! no static exports found */ | |
| 837 | -/***/ (function(module, exports, __webpack_require__) { | |
| 838 | - | |
| 839 | -eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n\n return objectToString(arg) === '[object Array]';\n}\n\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\n\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\n\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\n\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\n\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\n\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\n\nexports.isDate = isDate;\n\nfunction isError(e) {\n return objectToString(e) === '[object Error]' || e instanceof Error;\n}\n\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\n\nexports.isPrimitive = isPrimitive;\nexports.isBuffer = __webpack_require__(/*! buffer */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/core-util-is/lib/util.js?"); | |
| 840 | - | |
| 841 | -/***/ }), | |
| 842 | - | |
| 843 | -/***/ "./node_modules/create-ecdh/browser.js": | |
| 844 | -/*!*********************************************!*\ | |
| 845 | - !*** ./node_modules/create-ecdh/browser.js ***! | |
| 846 | - \*********************************************/ | |
| 847 | -/*! no static exports found */ | |
| 848 | -/***/ (function(module, exports, __webpack_require__) { | |
| 849 | - | |
| 850 | -eval("/* WEBPACK VAR INJECTION */(function(Buffer) {var elliptic = __webpack_require__(/*! elliptic */ \"./node_modules/elliptic/lib/elliptic.js\");\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/create-ecdh/node_modules/bn.js/lib/bn.js\");\n\nmodule.exports = function createECDH(curve) {\n return new ECDH(curve);\n};\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n};\naliases.p224 = aliases.secp224r1;\naliases.p256 = aliases.secp256r1 = aliases.prime256v1;\naliases.p192 = aliases.secp192r1 = aliases.prime192v1;\naliases.p384 = aliases.secp384r1;\naliases.p521 = aliases.secp521r1;\n\nfunction ECDH(curve) {\n this.curveType = aliases[curve];\n\n if (!this.curveType) {\n this.curveType = {\n name: curve\n };\n }\n\n this.curve = new elliptic.ec(this.curveType.name); // eslint-disable-line new-cap\n\n this.keys = void 0;\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair();\n return this.getPublicKey(enc, format);\n};\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8';\n\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc);\n }\n\n var otherPub = this.curve.keyFromPublic(other).getPublic();\n var out = otherPub.mul(this.keys.getPrivate()).getX();\n return formatReturnValue(out, enc, this.curveType.byteLength);\n};\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true);\n\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7;\n } else {\n key[0] = 6;\n }\n }\n\n return formatReturnValue(key, enc);\n};\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc);\n};\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8';\n\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n\n this.keys._importPublic(pub);\n\n return this;\n};\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8';\n\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n\n var _priv = new BN(priv);\n\n _priv = _priv.toString(16);\n this.keys = this.curve.genKeyPair();\n\n this.keys._importPrivate(_priv);\n\n return this;\n};\n\nfunction formatReturnValue(bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray();\n }\n\n var buf = new Buffer(bn);\n\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length);\n zeros.fill(0);\n buf = Buffer.concat([zeros, buf]);\n }\n\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node-libs-browser/node_modules/buffer/index.js */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/create-ecdh/browser.js?"); | |
| 851 | - | |
| 852 | -/***/ }), | |
| 853 | - | |
| 854 | -/***/ "./node_modules/create-ecdh/node_modules/bn.js/lib/bn.js": | |
| 855 | -/*!***************************************************************!*\ | |
| 856 | - !*** ./node_modules/create-ecdh/node_modules/bn.js/lib/bn.js ***! | |
| 857 | - \***************************************************************/ | |
| 858 | -/*! no static exports found */ | |
| 859 | -/***/ (function(module, exports, __webpack_require__) { | |
| 860 | - | |
| 861 | -eval("/* WEBPACK VAR INJECTION */(function(module) {(function (module, exports) {\n 'use strict'; // Utils\n\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n } // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n\n\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n } // BN\n\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0; // Reduction context\n\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n var Buffer;\n\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = __webpack_require__(/*! buffer */ 12).Buffer;\n }\n } catch (e) {}\n\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n\n if (endian !== 'le') return; // Reverse the bytes\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray(number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n\n return this.strip();\n };\n\n function parseHex4Bits(string, index) {\n var c = string.charCodeAt(index); // 'A' - 'F'\n\n if (c >= 65 && c <= 70) {\n return c - 55; // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87; // '0' - '9'\n } else {\n return c - 48 & 0xf;\n }\n }\n\n function parseHexByte(string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex(number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n } // 24-bits chunks\n\n\n var off = 0;\n var j = 0;\n var w;\n\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase(str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul; // 'a'\n\n if (c >= 49) {\n r += c - 49 + 0xa; // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa; // '0' - '9'\n } else {\n r += c;\n }\n }\n\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase(number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1; // Find length of limb in base\n\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand(size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n\n return this;\n }; // Remove leading `0` from `this`\n\n\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign() {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n\n return this;\n };\n\n BN.prototype.inspect = function inspect() {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n */\n\n\n var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = ((w << off | carry) & 0xffffff).toString(16);\n carry = w >>> 24 - off & 0xffffff;\n\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n\n off += 2;\n\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base]; // var groupBase = Math.pow(base, groupSize);\n\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n\n if (this.isZero()) {\n out = '0' + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber() {\n var ret = this.words[0];\n\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + this.words[1] * 0x4000000;\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n\n return this.negative !== 0 ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\n var t = w;\n var r = 0;\n\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n\n if ((t & 0x1) === 0) {\n r++;\n }\n\n return r;\n }; // Return number of used bits in a BN\n\n\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n\n var hi = this._countBits(w);\n\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray(num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n\n return w;\n } // Number of trailing zero bits\n\n\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n\n r += b;\n if (b !== 26) break;\n }\n\n return r;\n };\n\n BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos(width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos(width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n }; // Return negative clone of `this`\n\n\n BN.prototype.neg = function neg() {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n }; // Or `num` with `this` in-place\n\n\n BN.prototype.iuor = function iuor(num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n }; // Or `num` with `this`\n\n\n BN.prototype.or = function or(num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor(num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n }; // And `num` with `this` in-place\n\n\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n return this.strip();\n };\n\n BN.prototype.iand = function iand(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n }; // And `num` with `this`\n\n\n BN.prototype.and = function and(num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand(num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n }; // Xor `num` with `this` in-place\n\n\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n }; // Xor `num` with `this`\n\n\n BN.prototype.xor = function xor(num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor(num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n }; // Not ``this`` with ``width`` bitwidth\n\n\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26; // Extend the buffer with leading zeroes\n\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n } // Handle complete words\n\n\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n } // Handle the residue\n\n\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n } // And remove leading zeroes\n\n\n return this.strip();\n };\n\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n }; // Set `bit` of `this`\n\n\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | 1 << wbit;\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n }; // Add `num` to `this` in-place\n\n\n BN.prototype.iadd = function iadd(num) {\n var r; // negative + positive\n\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign(); // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n } // a.length > b.length\n\n\n var a, b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++; // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n }; // Add `num` to `this`\n\n\n BN.prototype.add = function add(num) {\n var res;\n\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n return num.clone().iadd(this);\n }; // Subtract `num` from `this` in-place\n\n\n BN.prototype.isub = function isub(num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign(); // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n } // At this point both numbers are positive\n\n\n var cmp = this.cmp(num); // Optimization - zeroify\n\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n } // a > b\n\n\n var a, b;\n\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n } // Copy rest of the words\n\n\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n }; // Subtract `num` from `this`\n\n\n BN.prototype.sub = function sub(num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = self.length + num.length | 0;\n out.length = len;\n len = len - 1 | 0; // Peel one iteration (compiler can't do it, because of code complexity)\n\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += r / 0x4000000 | 0;\n rword = r & 0x3ffffff;\n }\n\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n } // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n\n\n var comb10MulTo = function comb10MulTo(self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = mid + Math.imul(ah0, bl0) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = mid + Math.imul(ah1, bl0) | 0;\n hi = Math.imul(ah1, bh0);\n lo = lo + Math.imul(al0, bl1) | 0;\n mid = mid + Math.imul(al0, bh1) | 0;\n mid = mid + Math.imul(ah0, bl1) | 0;\n hi = hi + Math.imul(ah0, bh1) | 0;\n var w1 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = mid + Math.imul(ah2, bl0) | 0;\n hi = Math.imul(ah2, bh0);\n lo = lo + Math.imul(al1, bl1) | 0;\n mid = mid + Math.imul(al1, bh1) | 0;\n mid = mid + Math.imul(ah1, bl1) | 0;\n hi = hi + Math.imul(ah1, bh1) | 0;\n lo = lo + Math.imul(al0, bl2) | 0;\n mid = mid + Math.imul(al0, bh2) | 0;\n mid = mid + Math.imul(ah0, bl2) | 0;\n hi = hi + Math.imul(ah0, bh2) | 0;\n var w2 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = mid + Math.imul(ah3, bl0) | 0;\n hi = Math.imul(ah3, bh0);\n lo = lo + Math.imul(al2, bl1) | 0;\n mid = mid + Math.imul(al2, bh1) | 0;\n mid = mid + Math.imul(ah2, bl1) | 0;\n hi = hi + Math.imul(ah2, bh1) | 0;\n lo = lo + Math.imul(al1, bl2) | 0;\n mid = mid + Math.imul(al1, bh2) | 0;\n mid = mid + Math.imul(ah1, bl2) | 0;\n hi = hi + Math.imul(ah1, bh2) | 0;\n lo = lo + Math.imul(al0, bl3) | 0;\n mid = mid + Math.imul(al0, bh3) | 0;\n mid = mid + Math.imul(ah0, bl3) | 0;\n hi = hi + Math.imul(ah0, bh3) | 0;\n var w3 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = mid + Math.imul(ah4, bl0) | 0;\n hi = Math.imul(ah4, bh0);\n lo = lo + Math.imul(al3, bl1) | 0;\n mid = mid + Math.imul(al3, bh1) | 0;\n mid = mid + Math.imul(ah3, bl1) | 0;\n hi = hi + Math.imul(ah3, bh1) | 0;\n lo = lo + Math.imul(al2, bl2) | 0;\n mid = mid + Math.imul(al2, bh2) | 0;\n mid = mid + Math.imul(ah2, bl2) | 0;\n hi = hi + Math.imul(ah2, bh2) | 0;\n lo = lo + Math.imul(al1, bl3) | 0;\n mid = mid + Math.imul(al1, bh3) | 0;\n mid = mid + Math.imul(ah1, bl3) | 0;\n hi = hi + Math.imul(ah1, bh3) | 0;\n lo = lo + Math.imul(al0, bl4) | 0;\n mid = mid + Math.imul(al0, bh4) | 0;\n mid = mid + Math.imul(ah0, bl4) | 0;\n hi = hi + Math.imul(ah0, bh4) | 0;\n var w4 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = mid + Math.imul(ah5, bl0) | 0;\n hi = Math.imul(ah5, bh0);\n lo = lo + Math.imul(al4, bl1) | 0;\n mid = mid + Math.imul(al4, bh1) | 0;\n mid = mid + Math.imul(ah4, bl1) | 0;\n hi = hi + Math.imul(ah4, bh1) | 0;\n lo = lo + Math.imul(al3, bl2) | 0;\n mid = mid + Math.imul(al3, bh2) | 0;\n mid = mid + Math.imul(ah3, bl2) | 0;\n hi = hi + Math.imul(ah3, bh2) | 0;\n lo = lo + Math.imul(al2, bl3) | 0;\n mid = mid + Math.imul(al2, bh3) | 0;\n mid = mid + Math.imul(ah2, bl3) | 0;\n hi = hi + Math.imul(ah2, bh3) | 0;\n lo = lo + Math.imul(al1, bl4) | 0;\n mid = mid + Math.imul(al1, bh4) | 0;\n mid = mid + Math.imul(ah1, bl4) | 0;\n hi = hi + Math.imul(ah1, bh4) | 0;\n lo = lo + Math.imul(al0, bl5) | 0;\n mid = mid + Math.imul(al0, bh5) | 0;\n mid = mid + Math.imul(ah0, bl5) | 0;\n hi = hi + Math.imul(ah0, bh5) | 0;\n var w5 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = mid + Math.imul(ah6, bl0) | 0;\n hi = Math.imul(ah6, bh0);\n lo = lo + Math.imul(al5, bl1) | 0;\n mid = mid + Math.imul(al5, bh1) | 0;\n mid = mid + Math.imul(ah5, bl1) | 0;\n hi = hi + Math.imul(ah5, bh1) | 0;\n lo = lo + Math.imul(al4, bl2) | 0;\n mid = mid + Math.imul(al4, bh2) | 0;\n mid = mid + Math.imul(ah4, bl2) | 0;\n hi = hi + Math.imul(ah4, bh2) | 0;\n lo = lo + Math.imul(al3, bl3) | 0;\n mid = mid + Math.imul(al3, bh3) | 0;\n mid = mid + Math.imul(ah3, bl3) | 0;\n hi = hi + Math.imul(ah3, bh3) | 0;\n lo = lo + Math.imul(al2, bl4) | 0;\n mid = mid + Math.imul(al2, bh4) | 0;\n mid = mid + Math.imul(ah2, bl4) | 0;\n hi = hi + Math.imul(ah2, bh4) | 0;\n lo = lo + Math.imul(al1, bl5) | 0;\n mid = mid + Math.imul(al1, bh5) | 0;\n mid = mid + Math.imul(ah1, bl5) | 0;\n hi = hi + Math.imul(ah1, bh5) | 0;\n lo = lo + Math.imul(al0, bl6) | 0;\n mid = mid + Math.imul(al0, bh6) | 0;\n mid = mid + Math.imul(ah0, bl6) | 0;\n hi = hi + Math.imul(ah0, bh6) | 0;\n var w6 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = mid + Math.imul(ah7, bl0) | 0;\n hi = Math.imul(ah7, bh0);\n lo = lo + Math.imul(al6, bl1) | 0;\n mid = mid + Math.imul(al6, bh1) | 0;\n mid = mid + Math.imul(ah6, bl1) | 0;\n hi = hi + Math.imul(ah6, bh1) | 0;\n lo = lo + Math.imul(al5, bl2) | 0;\n mid = mid + Math.imul(al5, bh2) | 0;\n mid = mid + Math.imul(ah5, bl2) | 0;\n hi = hi + Math.imul(ah5, bh2) | 0;\n lo = lo + Math.imul(al4, bl3) | 0;\n mid = mid + Math.imul(al4, bh3) | 0;\n mid = mid + Math.imul(ah4, bl3) | 0;\n hi = hi + Math.imul(ah4, bh3) | 0;\n lo = lo + Math.imul(al3, bl4) | 0;\n mid = mid + Math.imul(al3, bh4) | 0;\n mid = mid + Math.imul(ah3, bl4) | 0;\n hi = hi + Math.imul(ah3, bh4) | 0;\n lo = lo + Math.imul(al2, bl5) | 0;\n mid = mid + Math.imul(al2, bh5) | 0;\n mid = mid + Math.imul(ah2, bl5) | 0;\n hi = hi + Math.imul(ah2, bh5) | 0;\n lo = lo + Math.imul(al1, bl6) | 0;\n mid = mid + Math.imul(al1, bh6) | 0;\n mid = mid + Math.imul(ah1, bl6) | 0;\n hi = hi + Math.imul(ah1, bh6) | 0;\n lo = lo + Math.imul(al0, bl7) | 0;\n mid = mid + Math.imul(al0, bh7) | 0;\n mid = mid + Math.imul(ah0, bl7) | 0;\n hi = hi + Math.imul(ah0, bh7) | 0;\n var w7 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = mid + Math.imul(ah8, bl0) | 0;\n hi = Math.imul(ah8, bh0);\n lo = lo + Math.imul(al7, bl1) | 0;\n mid = mid + Math.imul(al7, bh1) | 0;\n mid = mid + Math.imul(ah7, bl1) | 0;\n hi = hi + Math.imul(ah7, bh1) | 0;\n lo = lo + Math.imul(al6, bl2) | 0;\n mid = mid + Math.imul(al6, bh2) | 0;\n mid = mid + Math.imul(ah6, bl2) | 0;\n hi = hi + Math.imul(ah6, bh2) | 0;\n lo = lo + Math.imul(al5, bl3) | 0;\n mid = mid + Math.imul(al5, bh3) | 0;\n mid = mid + Math.imul(ah5, bl3) | 0;\n hi = hi + Math.imul(ah5, bh3) | 0;\n lo = lo + Math.imul(al4, bl4) | 0;\n mid = mid + Math.imul(al4, bh4) | 0;\n mid = mid + Math.imul(ah4, bl4) | 0;\n hi = hi + Math.imul(ah4, bh4) | 0;\n lo = lo + Math.imul(al3, bl5) | 0;\n mid = mid + Math.imul(al3, bh5) | 0;\n mid = mid + Math.imul(ah3, bl5) | 0;\n hi = hi + Math.imul(ah3, bh5) | 0;\n lo = lo + Math.imul(al2, bl6) | 0;\n mid = mid + Math.imul(al2, bh6) | 0;\n mid = mid + Math.imul(ah2, bl6) | 0;\n hi = hi + Math.imul(ah2, bh6) | 0;\n lo = lo + Math.imul(al1, bl7) | 0;\n mid = mid + Math.imul(al1, bh7) | 0;\n mid = mid + Math.imul(ah1, bl7) | 0;\n hi = hi + Math.imul(ah1, bh7) | 0;\n lo = lo + Math.imul(al0, bl8) | 0;\n mid = mid + Math.imul(al0, bh8) | 0;\n mid = mid + Math.imul(ah0, bl8) | 0;\n hi = hi + Math.imul(ah0, bh8) | 0;\n var w8 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = mid + Math.imul(ah9, bl0) | 0;\n hi = Math.imul(ah9, bh0);\n lo = lo + Math.imul(al8, bl1) | 0;\n mid = mid + Math.imul(al8, bh1) | 0;\n mid = mid + Math.imul(ah8, bl1) | 0;\n hi = hi + Math.imul(ah8, bh1) | 0;\n lo = lo + Math.imul(al7, bl2) | 0;\n mid = mid + Math.imul(al7, bh2) | 0;\n mid = mid + Math.imul(ah7, bl2) | 0;\n hi = hi + Math.imul(ah7, bh2) | 0;\n lo = lo + Math.imul(al6, bl3) | 0;\n mid = mid + Math.imul(al6, bh3) | 0;\n mid = mid + Math.imul(ah6, bl3) | 0;\n hi = hi + Math.imul(ah6, bh3) | 0;\n lo = lo + Math.imul(al5, bl4) | 0;\n mid = mid + Math.imul(al5, bh4) | 0;\n mid = mid + Math.imul(ah5, bl4) | 0;\n hi = hi + Math.imul(ah5, bh4) | 0;\n lo = lo + Math.imul(al4, bl5) | 0;\n mid = mid + Math.imul(al4, bh5) | 0;\n mid = mid + Math.imul(ah4, bl5) | 0;\n hi = hi + Math.imul(ah4, bh5) | 0;\n lo = lo + Math.imul(al3, bl6) | 0;\n mid = mid + Math.imul(al3, bh6) | 0;\n mid = mid + Math.imul(ah3, bl6) | 0;\n hi = hi + Math.imul(ah3, bh6) | 0;\n lo = lo + Math.imul(al2, bl7) | 0;\n mid = mid + Math.imul(al2, bh7) | 0;\n mid = mid + Math.imul(ah2, bl7) | 0;\n hi = hi + Math.imul(ah2, bh7) | 0;\n lo = lo + Math.imul(al1, bl8) | 0;\n mid = mid + Math.imul(al1, bh8) | 0;\n mid = mid + Math.imul(ah1, bl8) | 0;\n hi = hi + Math.imul(ah1, bh8) | 0;\n lo = lo + Math.imul(al0, bl9) | 0;\n mid = mid + Math.imul(al0, bh9) | 0;\n mid = mid + Math.imul(ah0, bl9) | 0;\n hi = hi + Math.imul(ah0, bh9) | 0;\n var w9 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = mid + Math.imul(ah9, bl1) | 0;\n hi = Math.imul(ah9, bh1);\n lo = lo + Math.imul(al8, bl2) | 0;\n mid = mid + Math.imul(al8, bh2) | 0;\n mid = mid + Math.imul(ah8, bl2) | 0;\n hi = hi + Math.imul(ah8, bh2) | 0;\n lo = lo + Math.imul(al7, bl3) | 0;\n mid = mid + Math.imul(al7, bh3) | 0;\n mid = mid + Math.imul(ah7, bl3) | 0;\n hi = hi + Math.imul(ah7, bh3) | 0;\n lo = lo + Math.imul(al6, bl4) | 0;\n mid = mid + Math.imul(al6, bh4) | 0;\n mid = mid + Math.imul(ah6, bl4) | 0;\n hi = hi + Math.imul(ah6, bh4) | 0;\n lo = lo + Math.imul(al5, bl5) | 0;\n mid = mid + Math.imul(al5, bh5) | 0;\n mid = mid + Math.imul(ah5, bl5) | 0;\n hi = hi + Math.imul(ah5, bh5) | 0;\n lo = lo + Math.imul(al4, bl6) | 0;\n mid = mid + Math.imul(al4, bh6) | 0;\n mid = mid + Math.imul(ah4, bl6) | 0;\n hi = hi + Math.imul(ah4, bh6) | 0;\n lo = lo + Math.imul(al3, bl7) | 0;\n mid = mid + Math.imul(al3, bh7) | 0;\n mid = mid + Math.imul(ah3, bl7) | 0;\n hi = hi + Math.imul(ah3, bh7) | 0;\n lo = lo + Math.imul(al2, bl8) | 0;\n mid = mid + Math.imul(al2, bh8) | 0;\n mid = mid + Math.imul(ah2, bl8) | 0;\n hi = hi + Math.imul(ah2, bh8) | 0;\n lo = lo + Math.imul(al1, bl9) | 0;\n mid = mid + Math.imul(al1, bh9) | 0;\n mid = mid + Math.imul(ah1, bl9) | 0;\n hi = hi + Math.imul(ah1, bh9) | 0;\n var w10 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = mid + Math.imul(ah9, bl2) | 0;\n hi = Math.imul(ah9, bh2);\n lo = lo + Math.imul(al8, bl3) | 0;\n mid = mid + Math.imul(al8, bh3) | 0;\n mid = mid + Math.imul(ah8, bl3) | 0;\n hi = hi + Math.imul(ah8, bh3) | 0;\n lo = lo + Math.imul(al7, bl4) | 0;\n mid = mid + Math.imul(al7, bh4) | 0;\n mid = mid + Math.imul(ah7, bl4) | 0;\n hi = hi + Math.imul(ah7, bh4) | 0;\n lo = lo + Math.imul(al6, bl5) | 0;\n mid = mid + Math.imul(al6, bh5) | 0;\n mid = mid + Math.imul(ah6, bl5) | 0;\n hi = hi + Math.imul(ah6, bh5) | 0;\n lo = lo + Math.imul(al5, bl6) | 0;\n mid = mid + Math.imul(al5, bh6) | 0;\n mid = mid + Math.imul(ah5, bl6) | 0;\n hi = hi + Math.imul(ah5, bh6) | 0;\n lo = lo + Math.imul(al4, bl7) | 0;\n mid = mid + Math.imul(al4, bh7) | 0;\n mid = mid + Math.imul(ah4, bl7) | 0;\n hi = hi + Math.imul(ah4, bh7) | 0;\n lo = lo + Math.imul(al3, bl8) | 0;\n mid = mid + Math.imul(al3, bh8) | 0;\n mid = mid + Math.imul(ah3, bl8) | 0;\n hi = hi + Math.imul(ah3, bh8) | 0;\n lo = lo + Math.imul(al2, bl9) | 0;\n mid = mid + Math.imul(al2, bh9) | 0;\n mid = mid + Math.imul(ah2, bl9) | 0;\n hi = hi + Math.imul(ah2, bh9) | 0;\n var w11 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = mid + Math.imul(ah9, bl3) | 0;\n hi = Math.imul(ah9, bh3);\n lo = lo + Math.imul(al8, bl4) | 0;\n mid = mid + Math.imul(al8, bh4) | 0;\n mid = mid + Math.imul(ah8, bl4) | 0;\n hi = hi + Math.imul(ah8, bh4) | 0;\n lo = lo + Math.imul(al7, bl5) | 0;\n mid = mid + Math.imul(al7, bh5) | 0;\n mid = mid + Math.imul(ah7, bl5) | 0;\n hi = hi + Math.imul(ah7, bh5) | 0;\n lo = lo + Math.imul(al6, bl6) | 0;\n mid = mid + Math.imul(al6, bh6) | 0;\n mid = mid + Math.imul(ah6, bl6) | 0;\n hi = hi + Math.imul(ah6, bh6) | 0;\n lo = lo + Math.imul(al5, bl7) | 0;\n mid = mid + Math.imul(al5, bh7) | 0;\n mid = mid + Math.imul(ah5, bl7) | 0;\n hi = hi + Math.imul(ah5, bh7) | 0;\n lo = lo + Math.imul(al4, bl8) | 0;\n mid = mid + Math.imul(al4, bh8) | 0;\n mid = mid + Math.imul(ah4, bl8) | 0;\n hi = hi + Math.imul(ah4, bh8) | 0;\n lo = lo + Math.imul(al3, bl9) | 0;\n mid = mid + Math.imul(al3, bh9) | 0;\n mid = mid + Math.imul(ah3, bl9) | 0;\n hi = hi + Math.imul(ah3, bh9) | 0;\n var w12 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = mid + Math.imul(ah9, bl4) | 0;\n hi = Math.imul(ah9, bh4);\n lo = lo + Math.imul(al8, bl5) | 0;\n mid = mid + Math.imul(al8, bh5) | 0;\n mid = mid + Math.imul(ah8, bl5) | 0;\n hi = hi + Math.imul(ah8, bh5) | 0;\n lo = lo + Math.imul(al7, bl6) | 0;\n mid = mid + Math.imul(al7, bh6) | 0;\n mid = mid + Math.imul(ah7, bl6) | 0;\n hi = hi + Math.imul(ah7, bh6) | 0;\n lo = lo + Math.imul(al6, bl7) | 0;\n mid = mid + Math.imul(al6, bh7) | 0;\n mid = mid + Math.imul(ah6, bl7) | 0;\n hi = hi + Math.imul(ah6, bh7) | 0;\n lo = lo + Math.imul(al5, bl8) | 0;\n mid = mid + Math.imul(al5, bh8) | 0;\n mid = mid + Math.imul(ah5, bl8) | 0;\n hi = hi + Math.imul(ah5, bh8) | 0;\n lo = lo + Math.imul(al4, bl9) | 0;\n mid = mid + Math.imul(al4, bh9) | 0;\n mid = mid + Math.imul(ah4, bl9) | 0;\n hi = hi + Math.imul(ah4, bh9) | 0;\n var w13 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = mid + Math.imul(ah9, bl5) | 0;\n hi = Math.imul(ah9, bh5);\n lo = lo + Math.imul(al8, bl6) | 0;\n mid = mid + Math.imul(al8, bh6) | 0;\n mid = mid + Math.imul(ah8, bl6) | 0;\n hi = hi + Math.imul(ah8, bh6) | 0;\n lo = lo + Math.imul(al7, bl7) | 0;\n mid = mid + Math.imul(al7, bh7) | 0;\n mid = mid + Math.imul(ah7, bl7) | 0;\n hi = hi + Math.imul(ah7, bh7) | 0;\n lo = lo + Math.imul(al6, bl8) | 0;\n mid = mid + Math.imul(al6, bh8) | 0;\n mid = mid + Math.imul(ah6, bl8) | 0;\n hi = hi + Math.imul(ah6, bh8) | 0;\n lo = lo + Math.imul(al5, bl9) | 0;\n mid = mid + Math.imul(al5, bh9) | 0;\n mid = mid + Math.imul(ah5, bl9) | 0;\n hi = hi + Math.imul(ah5, bh9) | 0;\n var w14 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = mid + Math.imul(ah9, bl6) | 0;\n hi = Math.imul(ah9, bh6);\n lo = lo + Math.imul(al8, bl7) | 0;\n mid = mid + Math.imul(al8, bh7) | 0;\n mid = mid + Math.imul(ah8, bl7) | 0;\n hi = hi + Math.imul(ah8, bh7) | 0;\n lo = lo + Math.imul(al7, bl8) | 0;\n mid = mid + Math.imul(al7, bh8) | 0;\n mid = mid + Math.imul(ah7, bl8) | 0;\n hi = hi + Math.imul(ah7, bh8) | 0;\n lo = lo + Math.imul(al6, bl9) | 0;\n mid = mid + Math.imul(al6, bh9) | 0;\n mid = mid + Math.imul(ah6, bl9) | 0;\n hi = hi + Math.imul(ah6, bh9) | 0;\n var w15 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = mid + Math.imul(ah9, bl7) | 0;\n hi = Math.imul(ah9, bh7);\n lo = lo + Math.imul(al8, bl8) | 0;\n mid = mid + Math.imul(al8, bh8) | 0;\n mid = mid + Math.imul(ah8, bl8) | 0;\n hi = hi + Math.imul(ah8, bh8) | 0;\n lo = lo + Math.imul(al7, bl9) | 0;\n mid = mid + Math.imul(al7, bh9) | 0;\n mid = mid + Math.imul(ah7, bl9) | 0;\n hi = hi + Math.imul(ah7, bh9) | 0;\n var w16 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = mid + Math.imul(ah9, bl8) | 0;\n hi = Math.imul(ah9, bh8);\n lo = lo + Math.imul(al8, bl9) | 0;\n mid = mid + Math.imul(al8, bh9) | 0;\n mid = mid + Math.imul(ah8, bl9) | 0;\n hi = hi + Math.imul(ah8, bh9) | 0;\n var w17 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = mid + Math.imul(ah9, bl9) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n\n return out;\n }; // Polyfill comb\n\n\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n var carry = 0;\n var hncarry = 0;\n\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n ncarry = ncarry + (r / 0x4000000 | 0) | 0;\n lo = lo + rword | 0;\n rword = lo & 0x3ffffff;\n ncarry = ncarry + (lo >>> 26) | 0;\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo(num, out) {\n var res;\n var len = this.length + num.length;\n\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n }; // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n\n function FFTM(x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT(N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n }; // Returns binary-reversed representation of `x`\n\n\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n\n return rb;\n }; // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n\n\n FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n /* jshint maxdepth : false */\n\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b(n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b(ws, N) {\n var carry = 0;\n\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {\n var carry = 0;\n\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n } // Pad with zeroes\n\n\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub(N) {\n var ph = new Array(N);\n\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n }; // Multiply `this` by `num`\n\n\n BN.prototype.mul = function mul(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n }; // Multiply employing FFT\n\n\n BN.prototype.mulf = function mulf(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n }; // In-place Multiplication\n\n\n BN.prototype.imul = function imul(num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000); // Carry\n\n var carry = 0;\n\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += w / 0x4000000 | 0; // NOTE: lo is 27bit maximum\n\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln(num) {\n return this.clone().imuln(num);\n }; // `this` * `this`\n\n\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n }; // `this` * `this` in-place\n\n\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n }; // Math.pow(`this`, `num`)\n\n\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1); // Skip leading zeroes\n\n var res = this;\n\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\n }\n }\n\n return res;\n }; // Shift-left in-place\n\n\n BN.prototype.iushln = function iushln(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = 0x3ffffff >>> 26 - r << 26 - r;\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = (this.words[i] | 0) - newCarry << r;\n this.words[i] = c | carry;\n carry = newCarry >>> 26 - r;\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln(bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n }; // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n\n\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n\n if (hint) {\n h = (hint - hint % 26) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n var maskedWords = extended;\n h -= s;\n h = Math.max(0, h); // Extended mode, copy masked part\n\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n\n maskedWords.length = s;\n }\n\n if (s === 0) {// No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = carry << 26 - r | word >>> r;\n carry = word & mask;\n } // Push carried bits as a mask\n\n\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n }; // Shift-left\n\n\n BN.prototype.shln = function shln(bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln(bits) {\n return this.clone().iushln(bits);\n }; // Shift-right\n\n\n BN.prototype.shrn = function shrn(bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn(bits) {\n return this.clone().iushrn(bits);\n }; // Test if n bit is set\n\n\n BN.prototype.testn = function testn(bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) return false; // Check bit and return\n\n var w = this.words[s];\n return !!(w & q);\n }; // Return only lowers bits of number (in-place)\n\n\n BN.prototype.imaskn = function imaskn(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n }; // Return only lowers bits of number\n\n\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n }; // Add plain number `num` to `this`\n\n\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num); // Possible sign change\n\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n } // Add without checks\n\n\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num; // Carry\n\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n\n this.length = Math.max(this.length, i + 1);\n return this;\n }; // Subtract plain number `num` from `this`\n\n\n BN.prototype.isubn = function isubn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - (right / 0x4000000 | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip(); // Subtraction overflow\n\n assert(carry === -1);\n carry = 0;\n\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n\n this.negative = 1;\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num; // Normalize\n\n var bhi = b.words[b.length - 1] | 0;\n\n var bhiBits = this._countBits(bhi);\n\n shift = 26 - bhiBits;\n\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n } // Initialize quotient\n\n\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n\n if (diff.negative === 0) {\n a = diff;\n\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n\n a._ishlnsubmul(b, 1, j);\n\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n\n if (q) {\n q.words[j] = qj;\n }\n }\n\n if (q) {\n q.strip();\n }\n\n a.strip(); // Denormalize\n\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n }; // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n\n\n BN.prototype.divmod = function divmod(num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n } // Both numbers are positive at this point\n // Strip both numbers to approximate shift value\n\n\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n } // Very short reduction\n\n\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n }; // Find `this` / `num`\n\n\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n }; // Find `this` % `num`\n\n\n BN.prototype.mod = function mod(num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod(num) {\n return this.divmod(num, 'mod', true).mod;\n }; // Find Round(`this` / `num`)\n\n\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num); // Fast case - exact division\n\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half); // Round down\n\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up\n\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n }; // In-place division by number\n\n\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = w / num | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n } // A * x + B * y = x\n\n\n var A = new BN(1);\n var B = new BN(0); // C * x + D * y = y\n\n var C = new BN(0);\n var D = new BN(1);\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n x.iushrn(i);\n\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n y.iushrn(j);\n\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n }; // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n\n\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n a.iushrn(i);\n\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n b.iushrn(j);\n\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0; // Remove common factor of two\n\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n }; // Invert number in the field F(num)\n\n\n BN.prototype.invm = function invm(num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd() {\n return (this.words[0] & 1) === 1;\n }; // And first word and num\n\n\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n }; // Increment at the bit position in-line\n\n\n BN.prototype.bincn = function bincn(bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) {\n this._expand(s + 1);\n\n this.words[s] |= q;\n return this;\n } // Add bit and propagate, if needed\n\n\n var carry = q;\n\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n\n\n BN.prototype.cmp = function cmp(num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Unsigned comparison\n\n\n BN.prototype.ucmp = function ucmp(num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n var res = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n if (a === b) continue;\n\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n\n break;\n }\n\n return res;\n };\n\n BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq(num) {\n return this.cmp(num) === 0;\n }; //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n\n\n BN.red = function red(num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed() {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd(num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd(num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub(num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub(num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl(num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr() {\n assert(this.red, 'redSqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr() {\n assert(this.red, 'redISqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.isqr(this);\n }; // Square root over p\n\n\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm() {\n assert(this.red, 'redInvm works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.invm(this);\n }; // Return negative clone of `this` % `red modulo`\n\n\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n\n this.red._verify1(this);\n\n return this.red.pow(this, num);\n }; // Prime numbers with efficient reduction\n\n\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n }; // Pseudo-Mersenne prime\n\n function MPrime(name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp() {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce(num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n\n inherits(K256, MPrime);\n\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n } // Shift by 9 limbs\n\n\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = (next & mask) << 4 | prev >>> 22;\n prev = next;\n }\n\n prev >>>= 22;\n input.words[i - 10] = prev;\n\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK(num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n\n var lo = 0;\n\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + (lo / 0x4000000 | 0);\n } // Fast length reduction\n\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n\n return num;\n };\n\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n\n inherits(P224, MPrime);\n\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n\n inherits(P192, MPrime);\n\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n num.words[i] = lo;\n carry = hi;\n }\n\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n\n return num;\n }; // Exported mostly for testing purposes, use plain name instead\n\n\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n\n primes[name] = prime;\n return prime;\n }; //\n // Base reduction engine\n //\n\n\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1(a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2(a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red, 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res;\n };\n\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res;\n };\n\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1); // Fast case\n\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n } // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n\n\n var q = this.m.subn(1);\n var s = 0;\n\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg(); // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n\n while (t.cmp(one) !== 0) {\n var tmp = t;\n\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm(a) {\n var inv = a._invmp(this.m);\n\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow(a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom(num) {\n var res = num.clone();\n res.red = null;\n return res;\n }; //\n // Montgomery method engine\n //\n\n\n BN.mont = function mont(num) {\n return new Mont(num);\n };\n\n function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom(num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul(a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm(a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})( false || module, this);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/create-ecdh/node_modules/bn.js/lib/bn.js?"); | |
| 862 | - | |
| 863 | -/***/ }), | |
| 864 | - | |
| 865 | -/***/ "./node_modules/create-hash/browser.js": | |
| 866 | -/*!*********************************************!*\ | |
| 867 | - !*** ./node_modules/create-hash/browser.js ***! | |
| 868 | - \*********************************************/ | |
| 869 | -/*! no static exports found */ | |
| 870 | -/***/ (function(module, exports, __webpack_require__) { | |
| 871 | - | |
| 872 | -"use strict"; | |
| 873 | -eval("\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar MD5 = __webpack_require__(/*! md5.js */ \"./node_modules/md5.js/index.js\");\n\nvar RIPEMD160 = __webpack_require__(/*! ripemd160 */ \"./node_modules/ripemd160/index.js\");\n\nvar sha = __webpack_require__(/*! sha.js */ \"./node_modules/sha.js/index.js\");\n\nvar Base = __webpack_require__(/*! cipher-base */ \"./node_modules/cipher-base/index.js\");\n\nfunction Hash(hash) {\n Base.call(this, 'digest');\n this._hash = hash;\n}\n\ninherits(Hash, Base);\n\nHash.prototype._update = function (data) {\n this._hash.update(data);\n};\n\nHash.prototype._final = function () {\n return this._hash.digest();\n};\n\nmodule.exports = function createHash(alg) {\n alg = alg.toLowerCase();\n if (alg === 'md5') return new MD5();\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160();\n return new Hash(sha(alg));\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/create-hash/browser.js?"); | |
| 874 | - | |
| 875 | -/***/ }), | |
| 876 | - | |
| 877 | -/***/ "./node_modules/create-hash/md5.js": | |
| 878 | -/*!*****************************************!*\ | |
| 879 | - !*** ./node_modules/create-hash/md5.js ***! | |
| 880 | - \*****************************************/ | |
| 881 | -/*! no static exports found */ | |
| 882 | -/***/ (function(module, exports, __webpack_require__) { | |
| 883 | - | |
| 884 | -eval("var MD5 = __webpack_require__(/*! md5.js */ \"./node_modules/md5.js/index.js\");\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest();\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/create-hash/md5.js?"); | |
| 885 | - | |
| 886 | -/***/ }), | |
| 887 | - | |
| 888 | -/***/ "./node_modules/create-hmac/browser.js": | |
| 889 | -/*!*********************************************!*\ | |
| 890 | - !*** ./node_modules/create-hmac/browser.js ***! | |
| 891 | - \*********************************************/ | |
| 892 | -/*! no static exports found */ | |
| 893 | -/***/ (function(module, exports, __webpack_require__) { | |
| 894 | - | |
| 895 | -"use strict"; | |
| 896 | -eval("\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar Legacy = __webpack_require__(/*! ./legacy */ \"./node_modules/create-hmac/legacy.js\");\n\nvar Base = __webpack_require__(/*! cipher-base */ \"./node_modules/cipher-base/index.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar md5 = __webpack_require__(/*! create-hash/md5 */ \"./node_modules/create-hash/md5.js\");\n\nvar RIPEMD160 = __webpack_require__(/*! ripemd160 */ \"./node_modules/ripemd160/index.js\");\n\nvar sha = __webpack_require__(/*! sha.js */ \"./node_modules/sha.js/index.js\");\n\nvar ZEROS = Buffer.alloc(128);\n\nfunction Hmac(alg, key) {\n Base.call(this, 'digest');\n\n if (typeof key === 'string') {\n key = Buffer.from(key);\n }\n\n var blocksize = alg === 'sha512' || alg === 'sha384' ? 128 : 64;\n this._alg = alg;\n this._key = key;\n\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg);\n key = hash.update(key).digest();\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize);\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize);\n var opad = this._opad = Buffer.allocUnsafe(blocksize);\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36;\n opad[i] = key[i] ^ 0x5C;\n }\n\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg);\n\n this._hash.update(ipad);\n}\n\ninherits(Hmac, Base);\n\nHmac.prototype._update = function (data) {\n this._hash.update(data);\n};\n\nHmac.prototype._final = function () {\n var h = this._hash.digest();\n\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg);\n return hash.update(this._opad).update(h).digest();\n};\n\nmodule.exports = function createHmac(alg, key) {\n alg = alg.toLowerCase();\n\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key);\n }\n\n if (alg === 'md5') {\n return new Legacy(md5, key);\n }\n\n return new Hmac(alg, key);\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/create-hmac/browser.js?"); | |
| 897 | - | |
| 898 | -/***/ }), | |
| 899 | - | |
| 900 | -/***/ "./node_modules/create-hmac/legacy.js": | |
| 901 | -/*!********************************************!*\ | |
| 902 | - !*** ./node_modules/create-hmac/legacy.js ***! | |
| 903 | - \********************************************/ | |
| 904 | -/*! no static exports found */ | |
| 905 | -/***/ (function(module, exports, __webpack_require__) { | |
| 906 | - | |
| 907 | -"use strict"; | |
| 908 | -eval("\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar Base = __webpack_require__(/*! cipher-base */ \"./node_modules/cipher-base/index.js\");\n\nvar ZEROS = Buffer.alloc(128);\nvar blocksize = 64;\n\nfunction Hmac(alg, key) {\n Base.call(this, 'digest');\n\n if (typeof key === 'string') {\n key = Buffer.from(key);\n }\n\n this._alg = alg;\n this._key = key;\n\n if (key.length > blocksize) {\n key = alg(key);\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize);\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize);\n var opad = this._opad = Buffer.allocUnsafe(blocksize);\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36;\n opad[i] = key[i] ^ 0x5C;\n }\n\n this._hash = [ipad];\n}\n\ninherits(Hmac, Base);\n\nHmac.prototype._update = function (data) {\n this._hash.push(data);\n};\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash));\n\n return this._alg(Buffer.concat([this._opad, h]));\n};\n\nmodule.exports = Hmac;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/create-hmac/legacy.js?"); | |
| 909 | - | |
| 910 | -/***/ }), | |
| 911 | - | |
| 912 | -/***/ "./node_modules/crypto-browserify/index.js": | |
| 913 | -/*!*************************************************!*\ | |
| 914 | - !*** ./node_modules/crypto-browserify/index.js ***! | |
| 915 | - \*************************************************/ | |
| 916 | -/*! no static exports found */ | |
| 917 | -/***/ (function(module, exports, __webpack_require__) { | |
| 918 | - | |
| 919 | -"use strict"; | |
| 920 | -eval("\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = __webpack_require__(/*! randombytes */ \"./node_modules/randombytes/browser.js\");\nexports.createHash = exports.Hash = __webpack_require__(/*! create-hash */ \"./node_modules/create-hash/browser.js\");\nexports.createHmac = exports.Hmac = __webpack_require__(/*! create-hmac */ \"./node_modules/create-hmac/browser.js\");\n\nvar algos = __webpack_require__(/*! browserify-sign/algos */ \"./node_modules/browserify-sign/algos.js\");\n\nvar algoKeys = Object.keys(algos);\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys);\n\nexports.getHashes = function () {\n return hashes;\n};\n\nvar p = __webpack_require__(/*! pbkdf2 */ \"./node_modules/pbkdf2/browser.js\");\n\nexports.pbkdf2 = p.pbkdf2;\nexports.pbkdf2Sync = p.pbkdf2Sync;\n\nvar aes = __webpack_require__(/*! browserify-cipher */ \"./node_modules/browserify-cipher/browser.js\");\n\nexports.Cipher = aes.Cipher;\nexports.createCipher = aes.createCipher;\nexports.Cipheriv = aes.Cipheriv;\nexports.createCipheriv = aes.createCipheriv;\nexports.Decipher = aes.Decipher;\nexports.createDecipher = aes.createDecipher;\nexports.Decipheriv = aes.Decipheriv;\nexports.createDecipheriv = aes.createDecipheriv;\nexports.getCiphers = aes.getCiphers;\nexports.listCiphers = aes.listCiphers;\n\nvar dh = __webpack_require__(/*! diffie-hellman */ \"./node_modules/diffie-hellman/browser.js\");\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup;\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup;\nexports.getDiffieHellman = dh.getDiffieHellman;\nexports.createDiffieHellman = dh.createDiffieHellman;\nexports.DiffieHellman = dh.DiffieHellman;\n\nvar sign = __webpack_require__(/*! browserify-sign */ \"./node_modules/browserify-sign/browser/index.js\");\n\nexports.createSign = sign.createSign;\nexports.Sign = sign.Sign;\nexports.createVerify = sign.createVerify;\nexports.Verify = sign.Verify;\nexports.createECDH = __webpack_require__(/*! create-ecdh */ \"./node_modules/create-ecdh/browser.js\");\n\nvar publicEncrypt = __webpack_require__(/*! public-encrypt */ \"./node_modules/public-encrypt/browser.js\");\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt;\nexports.privateEncrypt = publicEncrypt.privateEncrypt;\nexports.publicDecrypt = publicEncrypt.publicDecrypt;\nexports.privateDecrypt = publicEncrypt.privateDecrypt; // the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = __webpack_require__(/*! randomfill */ \"./node_modules/randomfill/browser.js\");\n\nexports.randomFill = rf.randomFill;\nexports.randomFillSync = rf.randomFillSync;\n\nexports.createCredentials = function () {\n throw new Error(['sorry, createCredentials is not implemented yet', 'we accept pull requests', 'https://github.com/crypto-browserify/crypto-browserify'].join('\\n'));\n};\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-browserify/index.js?"); | |
| 921 | - | |
| 922 | -/***/ }), | |
| 923 | - | |
| 924 | -/***/ "./node_modules/crypto-js/aes.js": | |
| 925 | -/*!***************************************!*\ | |
| 926 | - !*** ./node_modules/crypto-js/aes.js ***! | |
| 927 | - \***************************************/ | |
| 928 | -/*! no static exports found */ | |
| 929 | -/***/ (function(module, exports, __webpack_require__) { | |
| 930 | - | |
| 931 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./enc-base64 */ \"./node_modules/crypto-js/enc-base64.js\"), __webpack_require__(/*! ./md5 */ \"./node_modules/crypto-js/md5.js\"), __webpack_require__(/*! ./evpkdf */ \"./node_modules/crypto-js/evpkdf.js\"), __webpack_require__(/*! ./cipher-core */ \"./node_modules/crypto-js/cipher-core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var BlockCipher = C_lib.BlockCipher;\n var C_algo = C.algo; // Lookup tables\n\n var SBOX = [];\n var INV_SBOX = [];\n var SUB_MIX_0 = [];\n var SUB_MIX_1 = [];\n var SUB_MIX_2 = [];\n var SUB_MIX_3 = [];\n var INV_SUB_MIX_0 = [];\n var INV_SUB_MIX_1 = [];\n var INV_SUB_MIX_2 = [];\n var INV_SUB_MIX_3 = []; // Compute lookup tables\n\n (function () {\n // Compute double table\n var d = [];\n\n for (var i = 0; i < 256; i++) {\n if (i < 128) {\n d[i] = i << 1;\n } else {\n d[i] = i << 1 ^ 0x11b;\n }\n } // Walk GF(2^8)\n\n\n var x = 0;\n var xi = 0;\n\n for (var i = 0; i < 256; i++) {\n // Compute sbox\n var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;\n sx = sx >>> 8 ^ sx & 0xff ^ 0x63;\n SBOX[x] = sx;\n INV_SBOX[sx] = x; // Compute multiplication\n\n var x2 = d[x];\n var x4 = d[x2];\n var x8 = d[x4]; // Compute sub bytes, mix columns tables\n\n var t = d[sx] * 0x101 ^ sx * 0x1010100;\n SUB_MIX_0[x] = t << 24 | t >>> 8;\n SUB_MIX_1[x] = t << 16 | t >>> 16;\n SUB_MIX_2[x] = t << 8 | t >>> 24;\n SUB_MIX_3[x] = t; // Compute inv sub bytes, inv mix columns tables\n\n var t = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n INV_SUB_MIX_0[sx] = t << 24 | t >>> 8;\n INV_SUB_MIX_1[sx] = t << 16 | t >>> 16;\n INV_SUB_MIX_2[sx] = t << 8 | t >>> 24;\n INV_SUB_MIX_3[sx] = t; // Compute next counter\n\n if (!x) {\n x = xi = 1;\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]];\n xi ^= d[d[xi]];\n }\n }\n })(); // Precomputed Rcon lookup\n\n\n var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n /**\n * AES block cipher algorithm.\n */\n\n var AES = C_algo.AES = BlockCipher.extend({\n _doReset: function _doReset() {\n var t; // Skip reset of nRounds has been set before and key did not change\n\n if (this._nRounds && this._keyPriorReset === this._key) {\n return;\n } // Shortcuts\n\n\n var key = this._keyPriorReset = this._key;\n var keyWords = key.words;\n var keySize = key.sigBytes / 4; // Compute number of rounds\n\n var nRounds = this._nRounds = keySize + 6; // Compute number of key schedule rows\n\n var ksRows = (nRounds + 1) * 4; // Compute key schedule\n\n var keySchedule = this._keySchedule = [];\n\n for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n if (ksRow < keySize) {\n keySchedule[ksRow] = keyWords[ksRow];\n } else {\n t = keySchedule[ksRow - 1];\n\n if (!(ksRow % keySize)) {\n // Rot word\n t = t << 8 | t >>> 24; // Sub word\n\n t = SBOX[t >>> 24] << 24 | SBOX[t >>> 16 & 0xff] << 16 | SBOX[t >>> 8 & 0xff] << 8 | SBOX[t & 0xff]; // Mix Rcon\n\n t ^= RCON[ksRow / keySize | 0] << 24;\n } else if (keySize > 6 && ksRow % keySize == 4) {\n // Sub word\n t = SBOX[t >>> 24] << 24 | SBOX[t >>> 16 & 0xff] << 16 | SBOX[t >>> 8 & 0xff] << 8 | SBOX[t & 0xff];\n }\n\n keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n }\n } // Compute inv key schedule\n\n\n var invKeySchedule = this._invKeySchedule = [];\n\n for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n var ksRow = ksRows - invKsRow;\n\n if (invKsRow % 4) {\n var t = keySchedule[ksRow];\n } else {\n var t = keySchedule[ksRow - 4];\n }\n\n if (invKsRow < 4 || ksRow <= 4) {\n invKeySchedule[invKsRow] = t;\n } else {\n invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[t >>> 16 & 0xff]] ^ INV_SUB_MIX_2[SBOX[t >>> 8 & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n }\n }\n },\n encryptBlock: function encryptBlock(M, offset) {\n this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n },\n decryptBlock: function decryptBlock(M, offset) {\n // Swap 2nd and 4th rows\n var t = M[offset + 1];\n M[offset + 1] = M[offset + 3];\n M[offset + 3] = t;\n\n this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX); // Inv swap 2nd and 4th rows\n\n\n var t = M[offset + 1];\n M[offset + 1] = M[offset + 3];\n M[offset + 3] = t;\n },\n _doCryptBlock: function _doCryptBlock(M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n // Shortcut\n var nRounds = this._nRounds; // Get input, add round key\n\n var s0 = M[offset] ^ keySchedule[0];\n var s1 = M[offset + 1] ^ keySchedule[1];\n var s2 = M[offset + 2] ^ keySchedule[2];\n var s3 = M[offset + 3] ^ keySchedule[3]; // Key schedule row counter\n\n var ksRow = 4; // Rounds\n\n for (var round = 1; round < nRounds; round++) {\n // Shift rows, sub bytes, mix columns, add round key\n var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[s1 >>> 16 & 0xff] ^ SUB_MIX_2[s2 >>> 8 & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[s2 >>> 16 & 0xff] ^ SUB_MIX_2[s3 >>> 8 & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[s3 >>> 16 & 0xff] ^ SUB_MIX_2[s0 >>> 8 & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[s0 >>> 16 & 0xff] ^ SUB_MIX_2[s1 >>> 8 & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++]; // Update state\n\n s0 = t0;\n s1 = t1;\n s2 = t2;\n s3 = t3;\n } // Shift rows, sub bytes, add round key\n\n\n var t0 = (SBOX[s0 >>> 24] << 24 | SBOX[s1 >>> 16 & 0xff] << 16 | SBOX[s2 >>> 8 & 0xff] << 8 | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n var t1 = (SBOX[s1 >>> 24] << 24 | SBOX[s2 >>> 16 & 0xff] << 16 | SBOX[s3 >>> 8 & 0xff] << 8 | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n var t2 = (SBOX[s2 >>> 24] << 24 | SBOX[s3 >>> 16 & 0xff] << 16 | SBOX[s0 >>> 8 & 0xff] << 8 | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n var t3 = (SBOX[s3 >>> 24] << 24 | SBOX[s0 >>> 16 & 0xff] << 16 | SBOX[s1 >>> 8 & 0xff] << 8 | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]; // Set output\n\n M[offset] = t0;\n M[offset + 1] = t1;\n M[offset + 2] = t2;\n M[offset + 3] = t3;\n },\n keySize: 256 / 32\n });\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n */\n\n C.AES = BlockCipher._createHelper(AES);\n })();\n\n return CryptoJS.AES;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/aes.js?"); | |
| 932 | - | |
| 933 | -/***/ }), | |
| 934 | - | |
| 935 | -/***/ "./node_modules/crypto-js/cipher-core.js": | |
| 936 | -/*!***********************************************!*\ | |
| 937 | - !*** ./node_modules/crypto-js/cipher-core.js ***! | |
| 938 | - \***********************************************/ | |
| 939 | -/*! no static exports found */ | |
| 940 | -/***/ (function(module, exports, __webpack_require__) { | |
| 941 | - | |
| 942 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./evpkdf */ \"./node_modules/crypto-js/evpkdf.js\"));\n } else {}\n})(this, function (CryptoJS) {\n /**\n * Cipher core components.\n */\n CryptoJS.lib.Cipher || function (undefined) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var Base = C_lib.Base;\n var WordArray = C_lib.WordArray;\n var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n var C_enc = C.enc;\n var Utf8 = C_enc.Utf8;\n var Base64 = C_enc.Base64;\n var C_algo = C.algo;\n var EvpKDF = C_algo.EvpKDF;\n /**\n * Abstract base cipher template.\n *\n * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n */\n\n var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n /**\n * Configuration options.\n *\n * @property {WordArray} iv The IV to use for this operation.\n */\n cfg: Base.extend(),\n\n /**\n * Creates this cipher in encryption mode.\n *\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {Cipher} A cipher instance.\n *\n * @static\n *\n * @example\n *\n * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n */\n createEncryptor: function createEncryptor(key, cfg) {\n return this.create(this._ENC_XFORM_MODE, key, cfg);\n },\n\n /**\n * Creates this cipher in decryption mode.\n *\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {Cipher} A cipher instance.\n *\n * @static\n *\n * @example\n *\n * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n */\n createDecryptor: function createDecryptor(key, cfg) {\n return this.create(this._DEC_XFORM_MODE, key, cfg);\n },\n\n /**\n * Initializes a newly created cipher.\n *\n * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @example\n *\n * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n */\n init: function init(xformMode, key, cfg) {\n // Apply config defaults\n this.cfg = this.cfg.extend(cfg); // Store transform mode and key\n\n this._xformMode = xformMode;\n this._key = key; // Set initial values\n\n this.reset();\n },\n\n /**\n * Resets this cipher to its initial state.\n *\n * @example\n *\n * cipher.reset();\n */\n reset: function reset() {\n // Reset data buffer\n BufferedBlockAlgorithm.reset.call(this); // Perform concrete-cipher logic\n\n this._doReset();\n },\n\n /**\n * Adds data to be encrypted or decrypted.\n *\n * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n *\n * @return {WordArray} The data after processing.\n *\n * @example\n *\n * var encrypted = cipher.process('data');\n * var encrypted = cipher.process(wordArray);\n */\n process: function process(dataUpdate) {\n // Append\n this._append(dataUpdate); // Process available blocks\n\n\n return this._process();\n },\n\n /**\n * Finalizes the encryption or decryption process.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n *\n * @return {WordArray} The data after final processing.\n *\n * @example\n *\n * var encrypted = cipher.finalize();\n * var encrypted = cipher.finalize('data');\n * var encrypted = cipher.finalize(wordArray);\n */\n finalize: function finalize(dataUpdate) {\n // Final data update\n if (dataUpdate) {\n this._append(dataUpdate);\n } // Perform concrete-cipher logic\n\n\n var finalProcessedData = this._doFinalize();\n\n return finalProcessedData;\n },\n keySize: 128 / 32,\n ivSize: 128 / 32,\n _ENC_XFORM_MODE: 1,\n _DEC_XFORM_MODE: 2,\n\n /**\n * Creates shortcut functions to a cipher's object interface.\n *\n * @param {Cipher} cipher The cipher to create a helper for.\n *\n * @return {Object} An object with encrypt and decrypt shortcut functions.\n *\n * @static\n *\n * @example\n *\n * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n */\n _createHelper: function () {\n function selectCipherStrategy(key) {\n if (typeof key == 'string') {\n return PasswordBasedCipher;\n } else {\n return SerializableCipher;\n }\n }\n\n return function (cipher) {\n return {\n encrypt: function encrypt(message, key, cfg) {\n return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n },\n decrypt: function decrypt(ciphertext, key, cfg) {\n return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n }\n };\n };\n }()\n });\n /**\n * Abstract base stream cipher template.\n *\n * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n */\n\n var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n _doFinalize: function _doFinalize() {\n // Process partial blocks\n var finalProcessedBlocks = this._process(!!'flush');\n\n return finalProcessedBlocks;\n },\n blockSize: 1\n });\n /**\n * Mode namespace.\n */\n\n var C_mode = C.mode = {};\n /**\n * Abstract base block cipher mode template.\n */\n\n var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n /**\n * Creates this mode for encryption.\n *\n * @param {Cipher} cipher A block cipher instance.\n * @param {Array} iv The IV words.\n *\n * @static\n *\n * @example\n *\n * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n */\n createEncryptor: function createEncryptor(cipher, iv) {\n return this.Encryptor.create(cipher, iv);\n },\n\n /**\n * Creates this mode for decryption.\n *\n * @param {Cipher} cipher A block cipher instance.\n * @param {Array} iv The IV words.\n *\n * @static\n *\n * @example\n *\n * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n */\n createDecryptor: function createDecryptor(cipher, iv) {\n return this.Decryptor.create(cipher, iv);\n },\n\n /**\n * Initializes a newly created mode.\n *\n * @param {Cipher} cipher A block cipher instance.\n * @param {Array} iv The IV words.\n *\n * @example\n *\n * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n */\n init: function init(cipher, iv) {\n this._cipher = cipher;\n this._iv = iv;\n }\n });\n /**\n * Cipher Block Chaining mode.\n */\n\n var CBC = C_mode.CBC = function () {\n /**\n * Abstract base CBC mode.\n */\n var CBC = BlockCipherMode.extend();\n /**\n * CBC encryptor.\n */\n\n CBC.Encryptor = CBC.extend({\n /**\n * Processes the data block at offset.\n *\n * @param {Array} words The data words to operate on.\n * @param {number} offset The offset where the block starts.\n *\n * @example\n *\n * mode.processBlock(data.words, offset);\n */\n processBlock: function processBlock(words, offset) {\n // Shortcuts\n var cipher = this._cipher;\n var blockSize = cipher.blockSize; // XOR and encrypt\n\n xorBlock.call(this, words, offset, blockSize);\n cipher.encryptBlock(words, offset); // Remember this block to use with next block\n\n this._prevBlock = words.slice(offset, offset + blockSize);\n }\n });\n /**\n * CBC decryptor.\n */\n\n CBC.Decryptor = CBC.extend({\n /**\n * Processes the data block at offset.\n *\n * @param {Array} words The data words to operate on.\n * @param {number} offset The offset where the block starts.\n *\n * @example\n *\n * mode.processBlock(data.words, offset);\n */\n processBlock: function processBlock(words, offset) {\n // Shortcuts\n var cipher = this._cipher;\n var blockSize = cipher.blockSize; // Remember this block to use with next block\n\n var thisBlock = words.slice(offset, offset + blockSize); // Decrypt and XOR\n\n cipher.decryptBlock(words, offset);\n xorBlock.call(this, words, offset, blockSize); // This block becomes the previous block\n\n this._prevBlock = thisBlock;\n }\n });\n\n function xorBlock(words, offset, blockSize) {\n var block; // Shortcut\n\n var iv = this._iv; // Choose mixing block\n\n if (iv) {\n block = iv; // Remove IV for subsequent blocks\n\n this._iv = undefined;\n } else {\n block = this._prevBlock;\n } // XOR blocks\n\n\n for (var i = 0; i < blockSize; i++) {\n words[offset + i] ^= block[i];\n }\n }\n\n return CBC;\n }();\n /**\n * Padding namespace.\n */\n\n\n var C_pad = C.pad = {};\n /**\n * PKCS #5/7 padding strategy.\n */\n\n var Pkcs7 = C_pad.Pkcs7 = {\n /**\n * Pads data using the algorithm defined in PKCS #5/7.\n *\n * @param {WordArray} data The data to pad.\n * @param {number} blockSize The multiple that the data should be padded to.\n *\n * @static\n *\n * @example\n *\n * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n */\n pad: function pad(data, blockSize) {\n // Shortcut\n var blockSizeBytes = blockSize * 4; // Count padding bytes\n\n var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes; // Create padding word\n\n var paddingWord = nPaddingBytes << 24 | nPaddingBytes << 16 | nPaddingBytes << 8 | nPaddingBytes; // Create padding\n\n var paddingWords = [];\n\n for (var i = 0; i < nPaddingBytes; i += 4) {\n paddingWords.push(paddingWord);\n }\n\n var padding = WordArray.create(paddingWords, nPaddingBytes); // Add padding\n\n data.concat(padding);\n },\n\n /**\n * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n *\n * @param {WordArray} data The data to unpad.\n *\n * @static\n *\n * @example\n *\n * CryptoJS.pad.Pkcs7.unpad(wordArray);\n */\n unpad: function unpad(data) {\n // Get number of padding bytes from last byte\n var nPaddingBytes = data.words[data.sigBytes - 1 >>> 2] & 0xff; // Remove padding\n\n data.sigBytes -= nPaddingBytes;\n }\n };\n /**\n * Abstract base block cipher template.\n *\n * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n */\n\n var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n /**\n * Configuration options.\n *\n * @property {Mode} mode The block mode to use. Default: CBC\n * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n */\n cfg: Cipher.cfg.extend({\n mode: CBC,\n padding: Pkcs7\n }),\n reset: function reset() {\n var modeCreator; // Reset cipher\n\n Cipher.reset.call(this); // Shortcuts\n\n var cfg = this.cfg;\n var iv = cfg.iv;\n var mode = cfg.mode; // Reset block mode\n\n if (this._xformMode == this._ENC_XFORM_MODE) {\n modeCreator = mode.createEncryptor;\n } else\n /* if (this._xformMode == this._DEC_XFORM_MODE) */\n {\n modeCreator = mode.createDecryptor; // Keep at least one block in the buffer for unpadding\n\n this._minBufferSize = 1;\n }\n\n if (this._mode && this._mode.__creator == modeCreator) {\n this._mode.init(this, iv && iv.words);\n } else {\n this._mode = modeCreator.call(mode, this, iv && iv.words);\n this._mode.__creator = modeCreator;\n }\n },\n _doProcessBlock: function _doProcessBlock(words, offset) {\n this._mode.processBlock(words, offset);\n },\n _doFinalize: function _doFinalize() {\n var finalProcessedBlocks; // Shortcut\n\n var padding = this.cfg.padding; // Finalize\n\n if (this._xformMode == this._ENC_XFORM_MODE) {\n // Pad data\n padding.pad(this._data, this.blockSize); // Process final blocks\n\n finalProcessedBlocks = this._process(!!'flush');\n } else\n /* if (this._xformMode == this._DEC_XFORM_MODE) */\n {\n // Process final blocks\n finalProcessedBlocks = this._process(!!'flush'); // Unpad data\n\n padding.unpad(finalProcessedBlocks);\n }\n\n return finalProcessedBlocks;\n },\n blockSize: 128 / 32\n });\n /**\n * A collection of cipher parameters.\n *\n * @property {WordArray} ciphertext The raw ciphertext.\n * @property {WordArray} key The key to this ciphertext.\n * @property {WordArray} iv The IV used in the ciphering operation.\n * @property {WordArray} salt The salt used with a key derivation function.\n * @property {Cipher} algorithm The cipher algorithm.\n * @property {Mode} mode The block mode used in the ciphering operation.\n * @property {Padding} padding The padding scheme used in the ciphering operation.\n * @property {number} blockSize The block size of the cipher.\n * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n */\n\n var CipherParams = C_lib.CipherParams = Base.extend({\n /**\n * Initializes a newly created cipher params object.\n *\n * @param {Object} cipherParams An object with any of the possible cipher parameters.\n *\n * @example\n *\n * var cipherParams = CryptoJS.lib.CipherParams.create({\n * ciphertext: ciphertextWordArray,\n * key: keyWordArray,\n * iv: ivWordArray,\n * salt: saltWordArray,\n * algorithm: CryptoJS.algo.AES,\n * mode: CryptoJS.mode.CBC,\n * padding: CryptoJS.pad.PKCS7,\n * blockSize: 4,\n * formatter: CryptoJS.format.OpenSSL\n * });\n */\n init: function init(cipherParams) {\n this.mixIn(cipherParams);\n },\n\n /**\n * Converts this cipher params object to a string.\n *\n * @param {Format} formatter (Optional) The formatting strategy to use.\n *\n * @return {string} The stringified cipher params.\n *\n * @throws Error If neither the formatter nor the default formatter is set.\n *\n * @example\n *\n * var string = cipherParams + '';\n * var string = cipherParams.toString();\n * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n */\n toString: function toString(formatter) {\n return (formatter || this.formatter).stringify(this);\n }\n });\n /**\n * Format namespace.\n */\n\n var C_format = C.format = {};\n /**\n * OpenSSL formatting strategy.\n */\n\n var OpenSSLFormatter = C_format.OpenSSL = {\n /**\n * Converts a cipher params object to an OpenSSL-compatible string.\n *\n * @param {CipherParams} cipherParams The cipher params object.\n *\n * @return {string} The OpenSSL-compatible string.\n *\n * @static\n *\n * @example\n *\n * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n */\n stringify: function stringify(cipherParams) {\n var wordArray; // Shortcuts\n\n var ciphertext = cipherParams.ciphertext;\n var salt = cipherParams.salt; // Format\n\n if (salt) {\n wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n } else {\n wordArray = ciphertext;\n }\n\n return wordArray.toString(Base64);\n },\n\n /**\n * Converts an OpenSSL-compatible string to a cipher params object.\n *\n * @param {string} openSSLStr The OpenSSL-compatible string.\n *\n * @return {CipherParams} The cipher params object.\n *\n * @static\n *\n * @example\n *\n * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n */\n parse: function parse(openSSLStr) {\n var salt; // Parse base64\n\n var ciphertext = Base64.parse(openSSLStr); // Shortcut\n\n var ciphertextWords = ciphertext.words; // Test for salt\n\n if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n // Extract salt\n salt = WordArray.create(ciphertextWords.slice(2, 4)); // Remove salt from ciphertext\n\n ciphertextWords.splice(0, 4);\n ciphertext.sigBytes -= 16;\n }\n\n return CipherParams.create({\n ciphertext: ciphertext,\n salt: salt\n });\n }\n };\n /**\n * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n */\n\n var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n /**\n * Configuration options.\n *\n * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n */\n cfg: Base.extend({\n format: OpenSSLFormatter\n }),\n\n /**\n * Encrypts a message.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {WordArray|string} message The message to encrypt.\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {CipherParams} A cipher params object.\n *\n * @static\n *\n * @example\n *\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n */\n encrypt: function encrypt(cipher, message, key, cfg) {\n // Apply config defaults\n cfg = this.cfg.extend(cfg); // Encrypt\n\n var encryptor = cipher.createEncryptor(key, cfg);\n var ciphertext = encryptor.finalize(message); // Shortcut\n\n var cipherCfg = encryptor.cfg; // Create and return serializable cipher params\n\n return CipherParams.create({\n ciphertext: ciphertext,\n key: key,\n iv: cipherCfg.iv,\n algorithm: cipher,\n mode: cipherCfg.mode,\n padding: cipherCfg.padding,\n blockSize: cipher.blockSize,\n formatter: cfg.format\n });\n },\n\n /**\n * Decrypts serialized ciphertext.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {WordArray} The plaintext.\n *\n * @static\n *\n * @example\n *\n * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n */\n decrypt: function decrypt(cipher, ciphertext, key, cfg) {\n // Apply config defaults\n cfg = this.cfg.extend(cfg); // Convert string to CipherParams\n\n ciphertext = this._parse(ciphertext, cfg.format); // Decrypt\n\n var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n return plaintext;\n },\n\n /**\n * Converts serialized ciphertext to CipherParams,\n * else assumed CipherParams already and returns ciphertext unchanged.\n *\n * @param {CipherParams|string} ciphertext The ciphertext.\n * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n *\n * @return {CipherParams} The unserialized ciphertext.\n *\n * @static\n *\n * @example\n *\n * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n */\n _parse: function _parse(ciphertext, format) {\n if (typeof ciphertext == 'string') {\n return format.parse(ciphertext, this);\n } else {\n return ciphertext;\n }\n }\n });\n /**\n * Key derivation function namespace.\n */\n\n var C_kdf = C.kdf = {};\n /**\n * OpenSSL key derivation function.\n */\n\n var OpenSSLKdf = C_kdf.OpenSSL = {\n /**\n * Derives a key and IV from a password.\n *\n * @param {string} password The password to derive from.\n * @param {number} keySize The size in words of the key to generate.\n * @param {number} ivSize The size in words of the IV to generate.\n * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n *\n * @return {CipherParams} A cipher params object with the key, IV, and salt.\n *\n * @static\n *\n * @example\n *\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n */\n execute: function execute(password, keySize, ivSize, salt) {\n // Generate random salt\n if (!salt) {\n salt = WordArray.random(64 / 8);\n } // Derive key and IV\n\n\n var key = EvpKDF.create({\n keySize: keySize + ivSize\n }).compute(password, salt); // Separate key and IV\n\n var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n key.sigBytes = keySize * 4; // Return params\n\n return CipherParams.create({\n key: key,\n iv: iv,\n salt: salt\n });\n }\n };\n /**\n * A serializable cipher wrapper that derives the key from a password,\n * and returns ciphertext as a serializable cipher params object.\n */\n\n var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n /**\n * Configuration options.\n *\n * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n */\n cfg: SerializableCipher.cfg.extend({\n kdf: OpenSSLKdf\n }),\n\n /**\n * Encrypts a message using a password.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {WordArray|string} message The message to encrypt.\n * @param {string} password The password.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {CipherParams} A cipher params object.\n *\n * @static\n *\n * @example\n *\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n */\n encrypt: function encrypt(cipher, message, password, cfg) {\n // Apply config defaults\n cfg = this.cfg.extend(cfg); // Derive key and other params\n\n var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize); // Add IV to config\n\n cfg.iv = derivedParams.iv; // Encrypt\n\n var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg); // Mix in derived params\n\n ciphertext.mixIn(derivedParams);\n return ciphertext;\n },\n\n /**\n * Decrypts serialized ciphertext using a password.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n * @param {string} password The password.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {WordArray} The plaintext.\n *\n * @static\n *\n * @example\n *\n * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n */\n decrypt: function decrypt(cipher, ciphertext, password, cfg) {\n // Apply config defaults\n cfg = this.cfg.extend(cfg); // Convert string to CipherParams\n\n ciphertext = this._parse(ciphertext, cfg.format); // Derive key and other params\n\n var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt); // Add IV to config\n\n cfg.iv = derivedParams.iv; // Decrypt\n\n var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n return plaintext;\n }\n });\n }();\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/cipher-core.js?"); | |
| 943 | - | |
| 944 | -/***/ }), | |
| 945 | - | |
| 946 | -/***/ "./node_modules/crypto-js/core.js": | |
| 947 | -/*!****************************************!*\ | |
| 948 | - !*** ./node_modules/crypto-js/core.js ***! | |
| 949 | - \****************************************/ | |
| 950 | -/*! no static exports found */ | |
| 951 | -/***/ (function(module, exports, __webpack_require__) { | |
| 952 | - | |
| 953 | -eval("/* WEBPACK VAR INJECTION */(function(global) {;\n\n(function (root, factory) {\n if (true) {\n // CommonJS\n module.exports = exports = factory();\n } else {}\n})(this, function () {\n /*globals window, global, require*/\n\n /**\n * CryptoJS core components.\n */\n var CryptoJS = CryptoJS || function (Math, undefined) {\n var crypto; // Native crypto from window (Browser)\n\n if (typeof window !== 'undefined' && window.crypto) {\n crypto = window.crypto;\n } // Native crypto in web worker (Browser)\n\n\n if (typeof self !== 'undefined' && self.crypto) {\n crypto = self.crypto;\n } // Native crypto from worker\n\n\n if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n crypto = globalThis.crypto;\n } // Native (experimental IE 11) crypto from window (Browser)\n\n\n if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n crypto = window.msCrypto;\n } // Native crypto from global (NodeJS)\n\n\n if (!crypto && typeof global !== 'undefined' && global.crypto) {\n crypto = global.crypto;\n } // Native crypto import via require (NodeJS)\n\n\n if (!crypto && \"function\" === 'function') {\n try {\n crypto = __webpack_require__(/*! crypto */ 14);\n } catch (err) {}\n }\n /*\n * Cryptographically secure pseudorandom number generator\n *\n * As Math.random() is cryptographically not safe to use\n */\n\n\n var cryptoSecureRandomInt = function cryptoSecureRandomInt() {\n if (crypto) {\n // Use getRandomValues method (Browser)\n if (typeof crypto.getRandomValues === 'function') {\n try {\n return crypto.getRandomValues(new Uint32Array(1))[0];\n } catch (err) {}\n } // Use randomBytes method (NodeJS)\n\n\n if (typeof crypto.randomBytes === 'function') {\n try {\n return crypto.randomBytes(4).readInt32LE();\n } catch (err) {}\n }\n }\n\n throw new Error('Native crypto module could not be used to get secure random number.');\n };\n /*\n * Local polyfill of Object.create\n */\n\n\n var create = Object.create || function () {\n function F() {}\n\n return function (obj) {\n var subtype;\n F.prototype = obj;\n subtype = new F();\n F.prototype = null;\n return subtype;\n };\n }();\n /**\n * CryptoJS namespace.\n */\n\n\n var C = {};\n /**\n * Library namespace.\n */\n\n var C_lib = C.lib = {};\n /**\n * Base object for prototypal inheritance.\n */\n\n var Base = C_lib.Base = function () {\n return {\n /**\n * Creates a new object that inherits from this object.\n *\n * @param {Object} overrides Properties to copy into the new object.\n *\n * @return {Object} The new object.\n *\n * @static\n *\n * @example\n *\n * var MyType = CryptoJS.lib.Base.extend({\n * field: 'value',\n *\n * method: function () {\n * }\n * });\n */\n extend: function extend(overrides) {\n // Spawn\n var subtype = create(this); // Augment\n\n if (overrides) {\n subtype.mixIn(overrides);\n } // Create default initializer\n\n\n if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n subtype.init = function () {\n subtype.$super.init.apply(this, arguments);\n };\n } // Initializer's prototype is the subtype object\n\n\n subtype.init.prototype = subtype; // Reference supertype\n\n subtype.$super = this;\n return subtype;\n },\n\n /**\n * Extends this object and runs the init method.\n * Arguments to create() will be passed to init().\n *\n * @return {Object} The new object.\n *\n * @static\n *\n * @example\n *\n * var instance = MyType.create();\n */\n create: function create() {\n var instance = this.extend();\n instance.init.apply(instance, arguments);\n return instance;\n },\n\n /**\n * Initializes a newly created object.\n * Override this method to add some logic when your objects are created.\n *\n * @example\n *\n * var MyType = CryptoJS.lib.Base.extend({\n * init: function () {\n * // ...\n * }\n * });\n */\n init: function init() {},\n\n /**\n * Copies properties into this object.\n *\n * @param {Object} properties The properties to mix in.\n *\n * @example\n *\n * MyType.mixIn({\n * field: 'value'\n * });\n */\n mixIn: function mixIn(properties) {\n for (var propertyName in properties) {\n if (properties.hasOwnProperty(propertyName)) {\n this[propertyName] = properties[propertyName];\n }\n } // IE won't copy toString using the loop above\n\n\n if (properties.hasOwnProperty('toString')) {\n this.toString = properties.toString;\n }\n },\n\n /**\n * Creates a copy of this object.\n *\n * @return {Object} The clone.\n *\n * @example\n *\n * var clone = instance.clone();\n */\n clone: function clone() {\n return this.init.prototype.extend(this);\n }\n };\n }();\n /**\n * An array of 32-bit words.\n *\n * @property {Array} words The array of 32-bit words.\n * @property {number} sigBytes The number of significant bytes in this word array.\n */\n\n\n var WordArray = C_lib.WordArray = Base.extend({\n /**\n * Initializes a newly created word array.\n *\n * @param {Array} words (Optional) An array of 32-bit words.\n * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n *\n * @example\n *\n * var wordArray = CryptoJS.lib.WordArray.create();\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n */\n init: function init(words, sigBytes) {\n words = this.words = words || [];\n\n if (sigBytes != undefined) {\n this.sigBytes = sigBytes;\n } else {\n this.sigBytes = words.length * 4;\n }\n },\n\n /**\n * Converts this word array to a string.\n *\n * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n *\n * @return {string} The stringified word array.\n *\n * @example\n *\n * var string = wordArray + '';\n * var string = wordArray.toString();\n * var string = wordArray.toString(CryptoJS.enc.Utf8);\n */\n toString: function toString(encoder) {\n return (encoder || Hex).stringify(this);\n },\n\n /**\n * Concatenates a word array to this word array.\n *\n * @param {WordArray} wordArray The word array to append.\n *\n * @return {WordArray} This word array.\n *\n * @example\n *\n * wordArray1.concat(wordArray2);\n */\n concat: function concat(wordArray) {\n // Shortcuts\n var thisWords = this.words;\n var thatWords = wordArray.words;\n var thisSigBytes = this.sigBytes;\n var thatSigBytes = wordArray.sigBytes; // Clamp excess bits\n\n this.clamp(); // Concat\n\n if (thisSigBytes % 4) {\n // Copy one byte at a time\n for (var i = 0; i < thatSigBytes; i++) {\n var thatByte = thatWords[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n thisWords[thisSigBytes + i >>> 2] |= thatByte << 24 - (thisSigBytes + i) % 4 * 8;\n }\n } else {\n // Copy one word at a time\n for (var j = 0; j < thatSigBytes; j += 4) {\n thisWords[thisSigBytes + j >>> 2] = thatWords[j >>> 2];\n }\n }\n\n this.sigBytes += thatSigBytes; // Chainable\n\n return this;\n },\n\n /**\n * Removes insignificant bits.\n *\n * @example\n *\n * wordArray.clamp();\n */\n clamp: function clamp() {\n // Shortcuts\n var words = this.words;\n var sigBytes = this.sigBytes; // Clamp\n\n words[sigBytes >>> 2] &= 0xffffffff << 32 - sigBytes % 4 * 8;\n words.length = Math.ceil(sigBytes / 4);\n },\n\n /**\n * Creates a copy of this word array.\n *\n * @return {WordArray} The clone.\n *\n * @example\n *\n * var clone = wordArray.clone();\n */\n clone: function clone() {\n var clone = Base.clone.call(this);\n clone.words = this.words.slice(0);\n return clone;\n },\n\n /**\n * Creates a word array filled with random bytes.\n *\n * @param {number} nBytes The number of random bytes to generate.\n *\n * @return {WordArray} The random word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.lib.WordArray.random(16);\n */\n random: function random(nBytes) {\n var words = [];\n\n for (var i = 0; i < nBytes; i += 4) {\n words.push(cryptoSecureRandomInt());\n }\n\n return new WordArray.init(words, nBytes);\n }\n });\n /**\n * Encoder namespace.\n */\n\n var C_enc = C.enc = {};\n /**\n * Hex encoding strategy.\n */\n\n var Hex = C_enc.Hex = {\n /**\n * Converts a word array to a hex string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The hex string.\n *\n * @static\n *\n * @example\n *\n * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n */\n stringify: function stringify(wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes; // Convert\n\n var hexChars = [];\n\n for (var i = 0; i < sigBytes; i++) {\n var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n hexChars.push((bite >>> 4).toString(16));\n hexChars.push((bite & 0x0f).toString(16));\n }\n\n return hexChars.join('');\n },\n\n /**\n * Converts a hex string to a word array.\n *\n * @param {string} hexStr The hex string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n */\n parse: function parse(hexStr) {\n // Shortcut\n var hexStrLength = hexStr.length; // Convert\n\n var words = [];\n\n for (var i = 0; i < hexStrLength; i += 2) {\n words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << 24 - i % 8 * 4;\n }\n\n return new WordArray.init(words, hexStrLength / 2);\n }\n };\n /**\n * Latin1 encoding strategy.\n */\n\n var Latin1 = C_enc.Latin1 = {\n /**\n * Converts a word array to a Latin1 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The Latin1 string.\n *\n * @static\n *\n * @example\n *\n * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n */\n stringify: function stringify(wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes; // Convert\n\n var latin1Chars = [];\n\n for (var i = 0; i < sigBytes; i++) {\n var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n latin1Chars.push(String.fromCharCode(bite));\n }\n\n return latin1Chars.join('');\n },\n\n /**\n * Converts a Latin1 string to a word array.\n *\n * @param {string} latin1Str The Latin1 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n */\n parse: function parse(latin1Str) {\n // Shortcut\n var latin1StrLength = latin1Str.length; // Convert\n\n var words = [];\n\n for (var i = 0; i < latin1StrLength; i++) {\n words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << 24 - i % 4 * 8;\n }\n\n return new WordArray.init(words, latin1StrLength);\n }\n };\n /**\n * UTF-8 encoding strategy.\n */\n\n var Utf8 = C_enc.Utf8 = {\n /**\n * Converts a word array to a UTF-8 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The UTF-8 string.\n *\n * @static\n *\n * @example\n *\n * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n */\n stringify: function stringify(wordArray) {\n try {\n return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n } catch (e) {\n throw new Error('Malformed UTF-8 data');\n }\n },\n\n /**\n * Converts a UTF-8 string to a word array.\n *\n * @param {string} utf8Str The UTF-8 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n */\n parse: function parse(utf8Str) {\n return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n }\n };\n /**\n * Abstract buffered block algorithm template.\n *\n * The property blockSize must be implemented in a concrete subtype.\n *\n * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n */\n\n var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n /**\n * Resets this block algorithm's data buffer to its initial state.\n *\n * @example\n *\n * bufferedBlockAlgorithm.reset();\n */\n reset: function reset() {\n // Initial values\n this._data = new WordArray.init();\n this._nDataBytes = 0;\n },\n\n /**\n * Adds new data to this block algorithm's buffer.\n *\n * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n *\n * @example\n *\n * bufferedBlockAlgorithm._append('data');\n * bufferedBlockAlgorithm._append(wordArray);\n */\n _append: function _append(data) {\n // Convert string to WordArray, else assume WordArray already\n if (typeof data == 'string') {\n data = Utf8.parse(data);\n } // Append\n\n\n this._data.concat(data);\n\n this._nDataBytes += data.sigBytes;\n },\n\n /**\n * Processes available data blocks.\n *\n * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n *\n * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n *\n * @return {WordArray} The processed data.\n *\n * @example\n *\n * var processedData = bufferedBlockAlgorithm._process();\n * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n */\n _process: function _process(doFlush) {\n var processedWords; // Shortcuts\n\n var data = this._data;\n var dataWords = data.words;\n var dataSigBytes = data.sigBytes;\n var blockSize = this.blockSize;\n var blockSizeBytes = blockSize * 4; // Count blocks ready\n\n var nBlocksReady = dataSigBytes / blockSizeBytes;\n\n if (doFlush) {\n // Round up to include partial blocks\n nBlocksReady = Math.ceil(nBlocksReady);\n } else {\n // Round down to include only full blocks,\n // less the number of blocks that must remain in the buffer\n nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n } // Count words ready\n\n\n var nWordsReady = nBlocksReady * blockSize; // Count bytes ready\n\n var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); // Process blocks\n\n if (nWordsReady) {\n for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n // Perform concrete-algorithm logic\n this._doProcessBlock(dataWords, offset);\n } // Remove processed words\n\n\n processedWords = dataWords.splice(0, nWordsReady);\n data.sigBytes -= nBytesReady;\n } // Return processed words\n\n\n return new WordArray.init(processedWords, nBytesReady);\n },\n\n /**\n * Creates a copy of this object.\n *\n * @return {Object} The clone.\n *\n * @example\n *\n * var clone = bufferedBlockAlgorithm.clone();\n */\n clone: function clone() {\n var clone = Base.clone.call(this);\n clone._data = this._data.clone();\n return clone;\n },\n _minBufferSize: 0\n });\n /**\n * Abstract hasher template.\n *\n * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n */\n\n var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n /**\n * Configuration options.\n */\n cfg: Base.extend(),\n\n /**\n * Initializes a newly created hasher.\n *\n * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n *\n * @example\n *\n * var hasher = CryptoJS.algo.SHA256.create();\n */\n init: function init(cfg) {\n // Apply config defaults\n this.cfg = this.cfg.extend(cfg); // Set initial values\n\n this.reset();\n },\n\n /**\n * Resets this hasher to its initial state.\n *\n * @example\n *\n * hasher.reset();\n */\n reset: function reset() {\n // Reset data buffer\n BufferedBlockAlgorithm.reset.call(this); // Perform concrete-hasher logic\n\n this._doReset();\n },\n\n /**\n * Updates this hasher with a message.\n *\n * @param {WordArray|string} messageUpdate The message to append.\n *\n * @return {Hasher} This hasher.\n *\n * @example\n *\n * hasher.update('message');\n * hasher.update(wordArray);\n */\n update: function update(messageUpdate) {\n // Append\n this._append(messageUpdate); // Update the hash\n\n\n this._process(); // Chainable\n\n\n return this;\n },\n\n /**\n * Finalizes the hash computation.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} messageUpdate (Optional) A final message update.\n *\n * @return {WordArray} The hash.\n *\n * @example\n *\n * var hash = hasher.finalize();\n * var hash = hasher.finalize('message');\n * var hash = hasher.finalize(wordArray);\n */\n finalize: function finalize(messageUpdate) {\n // Final message update\n if (messageUpdate) {\n this._append(messageUpdate);\n } // Perform concrete-hasher logic\n\n\n var hash = this._doFinalize();\n\n return hash;\n },\n blockSize: 512 / 32,\n\n /**\n * Creates a shortcut function to a hasher's object interface.\n *\n * @param {Hasher} hasher The hasher to create a helper for.\n *\n * @return {Function} The shortcut function.\n *\n * @static\n *\n * @example\n *\n * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n */\n _createHelper: function _createHelper(hasher) {\n return function (message, cfg) {\n return new hasher.init(cfg).finalize(message);\n };\n },\n\n /**\n * Creates a shortcut function to the HMAC's object interface.\n *\n * @param {Hasher} hasher The hasher to use in this HMAC helper.\n *\n * @return {Function} The shortcut function.\n *\n * @static\n *\n * @example\n *\n * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n */\n _createHmacHelper: function _createHmacHelper(hasher) {\n return function (message, key) {\n return new C_algo.HMAC.init(hasher, key).finalize(message);\n };\n }\n });\n /**\n * Algorithm namespace.\n */\n\n var C_algo = C.algo = {};\n return C;\n }(Math);\n\n return CryptoJS;\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/core.js?"); | |
| 954 | - | |
| 955 | -/***/ }), | |
| 956 | - | |
| 957 | -/***/ "./node_modules/crypto-js/enc-base64.js": | |
| 958 | -/*!**********************************************!*\ | |
| 959 | - !*** ./node_modules/crypto-js/enc-base64.js ***! | |
| 960 | - \**********************************************/ | |
| 961 | -/*! no static exports found */ | |
| 962 | -/***/ (function(module, exports, __webpack_require__) { | |
| 963 | - | |
| 964 | -eval(";\n\n(function (root, factory) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var C_enc = C.enc;\n /**\n * Base64 encoding strategy.\n */\n\n var Base64 = C_enc.Base64 = {\n /**\n * Converts a word array to a Base64 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The Base64 string.\n *\n * @static\n *\n * @example\n *\n * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n */\n stringify: function stringify(wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n var map = this._map; // Clamp excess bits\n\n wordArray.clamp(); // Convert\n\n var base64Chars = [];\n\n for (var i = 0; i < sigBytes; i += 3) {\n var byte1 = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n var byte2 = words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 0xff;\n var byte3 = words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 0xff;\n var triplet = byte1 << 16 | byte2 << 8 | byte3;\n\n for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) {\n base64Chars.push(map.charAt(triplet >>> 6 * (3 - j) & 0x3f));\n }\n } // Add padding\n\n\n var paddingChar = map.charAt(64);\n\n if (paddingChar) {\n while (base64Chars.length % 4) {\n base64Chars.push(paddingChar);\n }\n }\n\n return base64Chars.join('');\n },\n\n /**\n * Converts a Base64 string to a word array.\n *\n * @param {string} base64Str The Base64 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n */\n parse: function parse(base64Str) {\n // Shortcuts\n var base64StrLength = base64Str.length;\n var map = this._map;\n var reverseMap = this._reverseMap;\n\n if (!reverseMap) {\n reverseMap = this._reverseMap = [];\n\n for (var j = 0; j < map.length; j++) {\n reverseMap[map.charCodeAt(j)] = j;\n }\n } // Ignore padding\n\n\n var paddingChar = map.charAt(64);\n\n if (paddingChar) {\n var paddingIndex = base64Str.indexOf(paddingChar);\n\n if (paddingIndex !== -1) {\n base64StrLength = paddingIndex;\n }\n } // Convert\n\n\n return parseLoop(base64Str, base64StrLength, reverseMap);\n },\n _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n };\n\n function parseLoop(base64Str, base64StrLength, reverseMap) {\n var words = [];\n var nBytes = 0;\n\n for (var i = 0; i < base64StrLength; i++) {\n if (i % 4) {\n var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << i % 4 * 2;\n var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> 6 - i % 4 * 2;\n var bitsCombined = bits1 | bits2;\n words[nBytes >>> 2] |= bitsCombined << 24 - nBytes % 4 * 8;\n nBytes++;\n }\n }\n\n return WordArray.create(words, nBytes);\n }\n })();\n\n return CryptoJS.enc.Base64;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/enc-base64.js?"); | |
| 965 | - | |
| 966 | -/***/ }), | |
| 967 | - | |
| 968 | -/***/ "./node_modules/crypto-js/enc-base64url.js": | |
| 969 | -/*!*************************************************!*\ | |
| 970 | - !*** ./node_modules/crypto-js/enc-base64url.js ***! | |
| 971 | - \*************************************************/ | |
| 972 | -/*! no static exports found */ | |
| 973 | -/***/ (function(module, exports, __webpack_require__) { | |
| 974 | - | |
| 975 | -eval(";\n\n(function (root, factory) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var C_enc = C.enc;\n /**\n * Base64url encoding strategy.\n */\n\n var Base64url = C_enc.Base64url = {\n /**\n * Converts a word array to a Base64url string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @param {boolean} urlSafe Whether to use url safe\n *\n * @return {string} The Base64url string.\n *\n * @static\n *\n * @example\n *\n * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n */\n stringify: function stringify(wordArray, urlSafe) {\n if (urlSafe === void 0) {\n urlSafe = true;\n }\n\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n var map = urlSafe ? this._safe_map : this._map; // Clamp excess bits\n\n wordArray.clamp(); // Convert\n\n var base64Chars = [];\n\n for (var i = 0; i < sigBytes; i += 3) {\n var byte1 = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n var byte2 = words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 0xff;\n var byte3 = words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 0xff;\n var triplet = byte1 << 16 | byte2 << 8 | byte3;\n\n for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) {\n base64Chars.push(map.charAt(triplet >>> 6 * (3 - j) & 0x3f));\n }\n } // Add padding\n\n\n var paddingChar = map.charAt(64);\n\n if (paddingChar) {\n while (base64Chars.length % 4) {\n base64Chars.push(paddingChar);\n }\n }\n\n return base64Chars.join('');\n },\n\n /**\n * Converts a Base64url string to a word array.\n *\n * @param {string} base64Str The Base64url string.\n *\n * @param {boolean} urlSafe Whether to use url safe\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n */\n parse: function parse(base64Str, urlSafe) {\n if (urlSafe === void 0) {\n urlSafe = true;\n }\n\n // Shortcuts\n var base64StrLength = base64Str.length;\n var map = urlSafe ? this._safe_map : this._map;\n var reverseMap = this._reverseMap;\n\n if (!reverseMap) {\n reverseMap = this._reverseMap = [];\n\n for (var j = 0; j < map.length; j++) {\n reverseMap[map.charCodeAt(j)] = j;\n }\n } // Ignore padding\n\n\n var paddingChar = map.charAt(64);\n\n if (paddingChar) {\n var paddingIndex = base64Str.indexOf(paddingChar);\n\n if (paddingIndex !== -1) {\n base64StrLength = paddingIndex;\n }\n } // Convert\n\n\n return parseLoop(base64Str, base64StrLength, reverseMap);\n },\n _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'\n };\n\n function parseLoop(base64Str, base64StrLength, reverseMap) {\n var words = [];\n var nBytes = 0;\n\n for (var i = 0; i < base64StrLength; i++) {\n if (i % 4) {\n var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << i % 4 * 2;\n var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> 6 - i % 4 * 2;\n var bitsCombined = bits1 | bits2;\n words[nBytes >>> 2] |= bitsCombined << 24 - nBytes % 4 * 8;\n nBytes++;\n }\n }\n\n return WordArray.create(words, nBytes);\n }\n })();\n\n return CryptoJS.enc.Base64url;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/enc-base64url.js?"); | |
| 976 | - | |
| 977 | -/***/ }), | |
| 978 | - | |
| 979 | -/***/ "./node_modules/crypto-js/enc-utf16.js": | |
| 980 | -/*!*********************************************!*\ | |
| 981 | - !*** ./node_modules/crypto-js/enc-utf16.js ***! | |
| 982 | - \*********************************************/ | |
| 983 | -/*! no static exports found */ | |
| 984 | -/***/ (function(module, exports, __webpack_require__) { | |
| 985 | - | |
| 986 | -eval(";\n\n(function (root, factory) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var C_enc = C.enc;\n /**\n * UTF-16 BE encoding strategy.\n */\n\n var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n /**\n * Converts a word array to a UTF-16 BE string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The UTF-16 BE string.\n *\n * @static\n *\n * @example\n *\n * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n */\n stringify: function stringify(wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes; // Convert\n\n var utf16Chars = [];\n\n for (var i = 0; i < sigBytes; i += 2) {\n var codePoint = words[i >>> 2] >>> 16 - i % 4 * 8 & 0xffff;\n utf16Chars.push(String.fromCharCode(codePoint));\n }\n\n return utf16Chars.join('');\n },\n\n /**\n * Converts a UTF-16 BE string to a word array.\n *\n * @param {string} utf16Str The UTF-16 BE string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n */\n parse: function parse(utf16Str) {\n // Shortcut\n var utf16StrLength = utf16Str.length; // Convert\n\n var words = [];\n\n for (var i = 0; i < utf16StrLength; i++) {\n words[i >>> 1] |= utf16Str.charCodeAt(i) << 16 - i % 2 * 16;\n }\n\n return WordArray.create(words, utf16StrLength * 2);\n }\n };\n /**\n * UTF-16 LE encoding strategy.\n */\n\n C_enc.Utf16LE = {\n /**\n * Converts a word array to a UTF-16 LE string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The UTF-16 LE string.\n *\n * @static\n *\n * @example\n *\n * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n */\n stringify: function stringify(wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes; // Convert\n\n var utf16Chars = [];\n\n for (var i = 0; i < sigBytes; i += 2) {\n var codePoint = swapEndian(words[i >>> 2] >>> 16 - i % 4 * 8 & 0xffff);\n utf16Chars.push(String.fromCharCode(codePoint));\n }\n\n return utf16Chars.join('');\n },\n\n /**\n * Converts a UTF-16 LE string to a word array.\n *\n * @param {string} utf16Str The UTF-16 LE string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n */\n parse: function parse(utf16Str) {\n // Shortcut\n var utf16StrLength = utf16Str.length; // Convert\n\n var words = [];\n\n for (var i = 0; i < utf16StrLength; i++) {\n words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << 16 - i % 2 * 16);\n }\n\n return WordArray.create(words, utf16StrLength * 2);\n }\n };\n\n function swapEndian(word) {\n return word << 8 & 0xff00ff00 | word >>> 8 & 0x00ff00ff;\n }\n })();\n\n return CryptoJS.enc.Utf16;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/enc-utf16.js?"); | |
| 987 | - | |
| 988 | -/***/ }), | |
| 989 | - | |
| 990 | -/***/ "./node_modules/crypto-js/evpkdf.js": | |
| 991 | -/*!******************************************!*\ | |
| 992 | - !*** ./node_modules/crypto-js/evpkdf.js ***! | |
| 993 | - \******************************************/ | |
| 994 | -/*! no static exports found */ | |
| 995 | -/***/ (function(module, exports, __webpack_require__) { | |
| 996 | - | |
| 997 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./sha1 */ \"./node_modules/crypto-js/sha1.js\"), __webpack_require__(/*! ./hmac */ \"./node_modules/crypto-js/hmac.js\"));\n } else {}\n})(this, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var Base = C_lib.Base;\n var WordArray = C_lib.WordArray;\n var C_algo = C.algo;\n var MD5 = C_algo.MD5;\n /**\n * This key derivation function is meant to conform with EVP_BytesToKey.\n * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n */\n\n var EvpKDF = C_algo.EvpKDF = Base.extend({\n /**\n * Configuration options.\n *\n * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n * @property {number} iterations The number of iterations to perform. Default: 1\n */\n cfg: Base.extend({\n keySize: 128 / 32,\n hasher: MD5,\n iterations: 1\n }),\n\n /**\n * Initializes a newly created key derivation function.\n *\n * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n *\n * @example\n *\n * var kdf = CryptoJS.algo.EvpKDF.create();\n * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n */\n init: function init(cfg) {\n this.cfg = this.cfg.extend(cfg);\n },\n\n /**\n * Derives a key from a password.\n *\n * @param {WordArray|string} password The password.\n * @param {WordArray|string} salt A salt.\n *\n * @return {WordArray} The derived key.\n *\n * @example\n *\n * var key = kdf.compute(password, salt);\n */\n compute: function compute(password, salt) {\n var block; // Shortcut\n\n var cfg = this.cfg; // Init hasher\n\n var hasher = cfg.hasher.create(); // Initial values\n\n var derivedKey = WordArray.create(); // Shortcuts\n\n var derivedKeyWords = derivedKey.words;\n var keySize = cfg.keySize;\n var iterations = cfg.iterations; // Generate key\n\n while (derivedKeyWords.length < keySize) {\n if (block) {\n hasher.update(block);\n }\n\n block = hasher.update(password).finalize(salt);\n hasher.reset(); // Iterations\n\n for (var i = 1; i < iterations; i++) {\n block = hasher.finalize(block);\n hasher.reset();\n }\n\n derivedKey.concat(block);\n }\n\n derivedKey.sigBytes = keySize * 4;\n return derivedKey;\n }\n });\n /**\n * Derives a key from a password.\n *\n * @param {WordArray|string} password The password.\n * @param {WordArray|string} salt A salt.\n * @param {Object} cfg (Optional) The configuration options to use for this computation.\n *\n * @return {WordArray} The derived key.\n *\n * @static\n *\n * @example\n *\n * var key = CryptoJS.EvpKDF(password, salt);\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n */\n\n C.EvpKDF = function (password, salt, cfg) {\n return EvpKDF.create(cfg).compute(password, salt);\n };\n })();\n\n return CryptoJS.EvpKDF;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/evpkdf.js?"); | |
| 998 | - | |
| 999 | -/***/ }), | |
| 1000 | - | |
| 1001 | -/***/ "./node_modules/crypto-js/format-hex.js": | |
| 1002 | -/*!**********************************************!*\ | |
| 1003 | - !*** ./node_modules/crypto-js/format-hex.js ***! | |
| 1004 | - \**********************************************/ | |
| 1005 | -/*! no static exports found */ | |
| 1006 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1007 | - | |
| 1008 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./cipher-core */ \"./node_modules/crypto-js/cipher-core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n (function (undefined) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var CipherParams = C_lib.CipherParams;\n var C_enc = C.enc;\n var Hex = C_enc.Hex;\n var C_format = C.format;\n var HexFormatter = C_format.Hex = {\n /**\n * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n *\n * @param {CipherParams} cipherParams The cipher params object.\n *\n * @return {string} The hexadecimally encoded string.\n *\n * @static\n *\n * @example\n *\n * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n */\n stringify: function stringify(cipherParams) {\n return cipherParams.ciphertext.toString(Hex);\n },\n\n /**\n * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n *\n * @param {string} input The hexadecimally encoded string.\n *\n * @return {CipherParams} The cipher params object.\n *\n * @static\n *\n * @example\n *\n * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n */\n parse: function parse(input) {\n var ciphertext = Hex.parse(input);\n return CipherParams.create({\n ciphertext: ciphertext\n });\n }\n };\n })();\n\n return CryptoJS.format.Hex;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/format-hex.js?"); | |
| 1009 | - | |
| 1010 | -/***/ }), | |
| 1011 | - | |
| 1012 | -/***/ "./node_modules/crypto-js/hmac.js": | |
| 1013 | -/*!****************************************!*\ | |
| 1014 | - !*** ./node_modules/crypto-js/hmac.js ***! | |
| 1015 | - \****************************************/ | |
| 1016 | -/*! no static exports found */ | |
| 1017 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1018 | - | |
| 1019 | -eval(";\n\n(function (root, factory) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var Base = C_lib.Base;\n var C_enc = C.enc;\n var Utf8 = C_enc.Utf8;\n var C_algo = C.algo;\n /**\n * HMAC algorithm.\n */\n\n var HMAC = C_algo.HMAC = Base.extend({\n /**\n * Initializes a newly created HMAC.\n *\n * @param {Hasher} hasher The hash algorithm to use.\n * @param {WordArray|string} key The secret key.\n *\n * @example\n *\n * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n */\n init: function init(hasher, key) {\n // Init hasher\n hasher = this._hasher = new hasher.init(); // Convert string to WordArray, else assume WordArray already\n\n if (typeof key == 'string') {\n key = Utf8.parse(key);\n } // Shortcuts\n\n\n var hasherBlockSize = hasher.blockSize;\n var hasherBlockSizeBytes = hasherBlockSize * 4; // Allow arbitrary length keys\n\n if (key.sigBytes > hasherBlockSizeBytes) {\n key = hasher.finalize(key);\n } // Clamp excess bits\n\n\n key.clamp(); // Clone key for inner and outer pads\n\n var oKey = this._oKey = key.clone();\n var iKey = this._iKey = key.clone(); // Shortcuts\n\n var oKeyWords = oKey.words;\n var iKeyWords = iKey.words; // XOR keys with pad constants\n\n for (var i = 0; i < hasherBlockSize; i++) {\n oKeyWords[i] ^= 0x5c5c5c5c;\n iKeyWords[i] ^= 0x36363636;\n }\n\n oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes; // Set initial values\n\n this.reset();\n },\n\n /**\n * Resets this HMAC to its initial state.\n *\n * @example\n *\n * hmacHasher.reset();\n */\n reset: function reset() {\n // Shortcut\n var hasher = this._hasher; // Reset\n\n hasher.reset();\n hasher.update(this._iKey);\n },\n\n /**\n * Updates this HMAC with a message.\n *\n * @param {WordArray|string} messageUpdate The message to append.\n *\n * @return {HMAC} This HMAC instance.\n *\n * @example\n *\n * hmacHasher.update('message');\n * hmacHasher.update(wordArray);\n */\n update: function update(messageUpdate) {\n this._hasher.update(messageUpdate); // Chainable\n\n\n return this;\n },\n\n /**\n * Finalizes the HMAC computation.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} messageUpdate (Optional) A final message update.\n *\n * @return {WordArray} The HMAC.\n *\n * @example\n *\n * var hmac = hmacHasher.finalize();\n * var hmac = hmacHasher.finalize('message');\n * var hmac = hmacHasher.finalize(wordArray);\n */\n finalize: function finalize(messageUpdate) {\n // Shortcut\n var hasher = this._hasher; // Compute HMAC\n\n var innerHash = hasher.finalize(messageUpdate);\n hasher.reset();\n var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n return hmac;\n }\n });\n })();\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/hmac.js?"); | |
| 1020 | - | |
| 1021 | -/***/ }), | |
| 1022 | - | |
| 1023 | -/***/ "./node_modules/crypto-js/index.js": | |
| 1024 | -/*!*****************************************!*\ | |
| 1025 | - !*** ./node_modules/crypto-js/index.js ***! | |
| 1026 | - \*****************************************/ | |
| 1027 | -/*! no static exports found */ | |
| 1028 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1029 | - | |
| 1030 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./x64-core */ \"./node_modules/crypto-js/x64-core.js\"), __webpack_require__(/*! ./lib-typedarrays */ \"./node_modules/crypto-js/lib-typedarrays.js\"), __webpack_require__(/*! ./enc-utf16 */ \"./node_modules/crypto-js/enc-utf16.js\"), __webpack_require__(/*! ./enc-base64 */ \"./node_modules/crypto-js/enc-base64.js\"), __webpack_require__(/*! ./enc-base64url */ \"./node_modules/crypto-js/enc-base64url.js\"), __webpack_require__(/*! ./md5 */ \"./node_modules/crypto-js/md5.js\"), __webpack_require__(/*! ./sha1 */ \"./node_modules/crypto-js/sha1.js\"), __webpack_require__(/*! ./sha256 */ \"./node_modules/crypto-js/sha256.js\"), __webpack_require__(/*! ./sha224 */ \"./node_modules/crypto-js/sha224.js\"), __webpack_require__(/*! ./sha512 */ \"./node_modules/crypto-js/sha512.js\"), __webpack_require__(/*! ./sha384 */ \"./node_modules/crypto-js/sha384.js\"), __webpack_require__(/*! ./sha3 */ \"./node_modules/crypto-js/sha3.js\"), __webpack_require__(/*! ./ripemd160 */ \"./node_modules/crypto-js/ripemd160.js\"), __webpack_require__(/*! ./hmac */ \"./node_modules/crypto-js/hmac.js\"), __webpack_require__(/*! ./pbkdf2 */ \"./node_modules/crypto-js/pbkdf2.js\"), __webpack_require__(/*! ./evpkdf */ \"./node_modules/crypto-js/evpkdf.js\"), __webpack_require__(/*! ./cipher-core */ \"./node_modules/crypto-js/cipher-core.js\"), __webpack_require__(/*! ./mode-cfb */ \"./node_modules/crypto-js/mode-cfb.js\"), __webpack_require__(/*! ./mode-ctr */ \"./node_modules/crypto-js/mode-ctr.js\"), __webpack_require__(/*! ./mode-ctr-gladman */ \"./node_modules/crypto-js/mode-ctr-gladman.js\"), __webpack_require__(/*! ./mode-ofb */ \"./node_modules/crypto-js/mode-ofb.js\"), __webpack_require__(/*! ./mode-ecb */ \"./node_modules/crypto-js/mode-ecb.js\"), __webpack_require__(/*! ./pad-ansix923 */ \"./node_modules/crypto-js/pad-ansix923.js\"), __webpack_require__(/*! ./pad-iso10126 */ \"./node_modules/crypto-js/pad-iso10126.js\"), __webpack_require__(/*! ./pad-iso97971 */ \"./node_modules/crypto-js/pad-iso97971.js\"), __webpack_require__(/*! ./pad-zeropadding */ \"./node_modules/crypto-js/pad-zeropadding.js\"), __webpack_require__(/*! ./pad-nopadding */ \"./node_modules/crypto-js/pad-nopadding.js\"), __webpack_require__(/*! ./format-hex */ \"./node_modules/crypto-js/format-hex.js\"), __webpack_require__(/*! ./aes */ \"./node_modules/crypto-js/aes.js\"), __webpack_require__(/*! ./tripledes */ \"./node_modules/crypto-js/tripledes.js\"), __webpack_require__(/*! ./rc4 */ \"./node_modules/crypto-js/rc4.js\"), __webpack_require__(/*! ./rabbit */ \"./node_modules/crypto-js/rabbit.js\"), __webpack_require__(/*! ./rabbit-legacy */ \"./node_modules/crypto-js/rabbit-legacy.js\"));\n } else {}\n})(this, function (CryptoJS) {\n return CryptoJS;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/index.js?"); | |
| 1031 | - | |
| 1032 | -/***/ }), | |
| 1033 | - | |
| 1034 | -/***/ "./node_modules/crypto-js/lib-typedarrays.js": | |
| 1035 | -/*!***************************************************!*\ | |
| 1036 | - !*** ./node_modules/crypto-js/lib-typedarrays.js ***! | |
| 1037 | - \***************************************************/ | |
| 1038 | -/*! no static exports found */ | |
| 1039 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1040 | - | |
| 1041 | -eval(";\n\n(function (root, factory) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n (function () {\n // Check if typed arrays are supported\n if (typeof ArrayBuffer != 'function') {\n return;\n } // Shortcuts\n\n\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray; // Reference original init\n\n var superInit = WordArray.init; // Augment WordArray.init to handle typed arrays\n\n var subInit = WordArray.init = function (typedArray) {\n // Convert buffers to uint8\n if (typedArray instanceof ArrayBuffer) {\n typedArray = new Uint8Array(typedArray);\n } // Convert other array views to uint8\n\n\n if (typedArray instanceof Int8Array || typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray || typedArray instanceof Int16Array || typedArray instanceof Uint16Array || typedArray instanceof Int32Array || typedArray instanceof Uint32Array || typedArray instanceof Float32Array || typedArray instanceof Float64Array) {\n typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n } // Handle Uint8Array\n\n\n if (typedArray instanceof Uint8Array) {\n // Shortcut\n var typedArrayByteLength = typedArray.byteLength; // Extract bytes\n\n var words = [];\n\n for (var i = 0; i < typedArrayByteLength; i++) {\n words[i >>> 2] |= typedArray[i] << 24 - i % 4 * 8;\n } // Initialize this word array\n\n\n superInit.call(this, words, typedArrayByteLength);\n } else {\n // Else call normal init\n superInit.apply(this, arguments);\n }\n };\n\n subInit.prototype = WordArray;\n })();\n\n return CryptoJS.lib.WordArray;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/lib-typedarrays.js?"); | |
| 1042 | - | |
| 1043 | -/***/ }), | |
| 1044 | - | |
| 1045 | -/***/ "./node_modules/crypto-js/md5.js": | |
| 1046 | -/*!***************************************!*\ | |
| 1047 | - !*** ./node_modules/crypto-js/md5.js ***! | |
| 1048 | - \***************************************/ | |
| 1049 | -/*! no static exports found */ | |
| 1050 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1051 | - | |
| 1052 | -eval(";\n\n(function (root, factory) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n (function (Math) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var Hasher = C_lib.Hasher;\n var C_algo = C.algo; // Constants table\n\n var T = []; // Compute constants\n\n (function () {\n for (var i = 0; i < 64; i++) {\n T[i] = Math.abs(Math.sin(i + 1)) * 0x100000000 | 0;\n }\n })();\n /**\n * MD5 hash algorithm.\n */\n\n\n var MD5 = C_algo.MD5 = Hasher.extend({\n _doReset: function _doReset() {\n this._hash = new WordArray.init([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476]);\n },\n _doProcessBlock: function _doProcessBlock(M, offset) {\n // Swap endian\n for (var i = 0; i < 16; i++) {\n // Shortcuts\n var offset_i = offset + i;\n var M_offset_i = M[offset_i];\n M[offset_i] = (M_offset_i << 8 | M_offset_i >>> 24) & 0x00ff00ff | (M_offset_i << 24 | M_offset_i >>> 8) & 0xff00ff00;\n } // Shortcuts\n\n\n var H = this._hash.words;\n var M_offset_0 = M[offset + 0];\n var M_offset_1 = M[offset + 1];\n var M_offset_2 = M[offset + 2];\n var M_offset_3 = M[offset + 3];\n var M_offset_4 = M[offset + 4];\n var M_offset_5 = M[offset + 5];\n var M_offset_6 = M[offset + 6];\n var M_offset_7 = M[offset + 7];\n var M_offset_8 = M[offset + 8];\n var M_offset_9 = M[offset + 9];\n var M_offset_10 = M[offset + 10];\n var M_offset_11 = M[offset + 11];\n var M_offset_12 = M[offset + 12];\n var M_offset_13 = M[offset + 13];\n var M_offset_14 = M[offset + 14];\n var M_offset_15 = M[offset + 15]; // Working varialbes\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3]; // Computation\n\n a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n a = II(a, b, c, d, M_offset_0, 6, T[48]);\n d = II(d, a, b, c, M_offset_7, 10, T[49]);\n c = II(c, d, a, b, M_offset_14, 15, T[50]);\n b = II(b, c, d, a, M_offset_5, 21, T[51]);\n a = II(a, b, c, d, M_offset_12, 6, T[52]);\n d = II(d, a, b, c, M_offset_3, 10, T[53]);\n c = II(c, d, a, b, M_offset_10, 15, T[54]);\n b = II(b, c, d, a, M_offset_1, 21, T[55]);\n a = II(a, b, c, d, M_offset_8, 6, T[56]);\n d = II(d, a, b, c, M_offset_15, 10, T[57]);\n c = II(c, d, a, b, M_offset_6, 15, T[58]);\n b = II(b, c, d, a, M_offset_13, 21, T[59]);\n a = II(a, b, c, d, M_offset_4, 6, T[60]);\n d = II(d, a, b, c, M_offset_11, 10, T[61]);\n c = II(c, d, a, b, M_offset_2, 15, T[62]);\n b = II(b, c, d, a, M_offset_9, 21, T[63]); // Intermediate hash value\n\n H[0] = H[0] + a | 0;\n H[1] = H[1] + b | 0;\n H[2] = H[2] + c | 0;\n H[3] = H[3] + d | 0;\n },\n _doFinalize: function _doFinalize() {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n var nBitsTotal = this._nDataBytes * 8;\n var nBitsLeft = data.sigBytes * 8; // Add padding\n\n dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32;\n var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n var nBitsTotalL = nBitsTotal;\n dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = (nBitsTotalH << 8 | nBitsTotalH >>> 24) & 0x00ff00ff | (nBitsTotalH << 24 | nBitsTotalH >>> 8) & 0xff00ff00;\n dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = (nBitsTotalL << 8 | nBitsTotalL >>> 24) & 0x00ff00ff | (nBitsTotalL << 24 | nBitsTotalL >>> 8) & 0xff00ff00;\n data.sigBytes = (dataWords.length + 1) * 4; // Hash final blocks\n\n this._process(); // Shortcuts\n\n\n var hash = this._hash;\n var H = hash.words; // Swap endian\n\n for (var i = 0; i < 4; i++) {\n // Shortcut\n var H_i = H[i];\n H[i] = (H_i << 8 | H_i >>> 24) & 0x00ff00ff | (H_i << 24 | H_i >>> 8) & 0xff00ff00;\n } // Return final computed hash\n\n\n return hash;\n },\n clone: function clone() {\n var clone = Hasher.clone.call(this);\n clone._hash = this._hash.clone();\n return clone;\n }\n });\n\n function FF(a, b, c, d, x, s, t) {\n var n = a + (b & c | ~b & d) + x + t;\n return (n << s | n >>> 32 - s) + b;\n }\n\n function GG(a, b, c, d, x, s, t) {\n var n = a + (b & d | c & ~d) + x + t;\n return (n << s | n >>> 32 - s) + b;\n }\n\n function HH(a, b, c, d, x, s, t) {\n var n = a + (b ^ c ^ d) + x + t;\n return (n << s | n >>> 32 - s) + b;\n }\n\n function II(a, b, c, d, x, s, t) {\n var n = a + (c ^ (b | ~d)) + x + t;\n return (n << s | n >>> 32 - s) + b;\n }\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.MD5('message');\n * var hash = CryptoJS.MD5(wordArray);\n */\n\n\n C.MD5 = Hasher._createHelper(MD5);\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacMD5(message, key);\n */\n\n C.HmacMD5 = Hasher._createHmacHelper(MD5);\n })(Math);\n\n return CryptoJS.MD5;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/md5.js?"); | |
| 1053 | - | |
| 1054 | -/***/ }), | |
| 1055 | - | |
| 1056 | -/***/ "./node_modules/crypto-js/mode-cfb.js": | |
| 1057 | -/*!********************************************!*\ | |
| 1058 | - !*** ./node_modules/crypto-js/mode-cfb.js ***! | |
| 1059 | - \********************************************/ | |
| 1060 | -/*! no static exports found */ | |
| 1061 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1062 | - | |
| 1063 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./cipher-core */ \"./node_modules/crypto-js/cipher-core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n /**\n * Cipher Feedback block mode.\n */\n CryptoJS.mode.CFB = function () {\n var CFB = CryptoJS.lib.BlockCipherMode.extend();\n CFB.Encryptor = CFB.extend({\n processBlock: function processBlock(words, offset) {\n // Shortcuts\n var cipher = this._cipher;\n var blockSize = cipher.blockSize;\n generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher); // Remember this block to use with next block\n\n this._prevBlock = words.slice(offset, offset + blockSize);\n }\n });\n CFB.Decryptor = CFB.extend({\n processBlock: function processBlock(words, offset) {\n // Shortcuts\n var cipher = this._cipher;\n var blockSize = cipher.blockSize; // Remember this block to use with next block\n\n var thisBlock = words.slice(offset, offset + blockSize);\n generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher); // This block becomes the previous block\n\n this._prevBlock = thisBlock;\n }\n });\n\n function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n var keystream; // Shortcut\n\n var iv = this._iv; // Generate keystream\n\n if (iv) {\n keystream = iv.slice(0); // Remove IV for subsequent blocks\n\n this._iv = undefined;\n } else {\n keystream = this._prevBlock;\n }\n\n cipher.encryptBlock(keystream, 0); // Encrypt\n\n for (var i = 0; i < blockSize; i++) {\n words[offset + i] ^= keystream[i];\n }\n }\n\n return CFB;\n }();\n\n return CryptoJS.mode.CFB;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/mode-cfb.js?"); | |
| 1064 | - | |
| 1065 | -/***/ }), | |
| 1066 | - | |
| 1067 | -/***/ "./node_modules/crypto-js/mode-ctr-gladman.js": | |
| 1068 | -/*!****************************************************!*\ | |
| 1069 | - !*** ./node_modules/crypto-js/mode-ctr-gladman.js ***! | |
| 1070 | - \****************************************************/ | |
| 1071 | -/*! no static exports found */ | |
| 1072 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1073 | - | |
| 1074 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./cipher-core */ \"./node_modules/crypto-js/cipher-core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n /** @preserve\n * Counter block mode compatible with Dr Brian Gladman fileenc.c\n * derived from CryptoJS.mode.CTR\n * Jan Hruby jhruby.web@gmail.com\n */\n CryptoJS.mode.CTRGladman = function () {\n var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n function incWord(word) {\n if ((word >> 24 & 0xff) === 0xff) {\n //overflow\n var b1 = word >> 16 & 0xff;\n var b2 = word >> 8 & 0xff;\n var b3 = word & 0xff;\n\n if (b1 === 0xff) // overflow b1\n {\n b1 = 0;\n\n if (b2 === 0xff) {\n b2 = 0;\n\n if (b3 === 0xff) {\n b3 = 0;\n } else {\n ++b3;\n }\n } else {\n ++b2;\n }\n } else {\n ++b1;\n }\n\n word = 0;\n word += b1 << 16;\n word += b2 << 8;\n word += b3;\n } else {\n word += 0x01 << 24;\n }\n\n return word;\n }\n\n function incCounter(counter) {\n if ((counter[0] = incWord(counter[0])) === 0) {\n // encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n counter[1] = incWord(counter[1]);\n }\n\n return counter;\n }\n\n var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n processBlock: function processBlock(words, offset) {\n // Shortcuts\n var cipher = this._cipher;\n var blockSize = cipher.blockSize;\n var iv = this._iv;\n var counter = this._counter; // Generate keystream\n\n if (iv) {\n counter = this._counter = iv.slice(0); // Remove IV for subsequent blocks\n\n this._iv = undefined;\n }\n\n incCounter(counter);\n var keystream = counter.slice(0);\n cipher.encryptBlock(keystream, 0); // Encrypt\n\n for (var i = 0; i < blockSize; i++) {\n words[offset + i] ^= keystream[i];\n }\n }\n });\n CTRGladman.Decryptor = Encryptor;\n return CTRGladman;\n }();\n\n return CryptoJS.mode.CTRGladman;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/mode-ctr-gladman.js?"); | |
| 1075 | - | |
| 1076 | -/***/ }), | |
| 1077 | - | |
| 1078 | -/***/ "./node_modules/crypto-js/mode-ctr.js": | |
| 1079 | -/*!********************************************!*\ | |
| 1080 | - !*** ./node_modules/crypto-js/mode-ctr.js ***! | |
| 1081 | - \********************************************/ | |
| 1082 | -/*! no static exports found */ | |
| 1083 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1084 | - | |
| 1085 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./cipher-core */ \"./node_modules/crypto-js/cipher-core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n /**\n * Counter block mode.\n */\n CryptoJS.mode.CTR = function () {\n var CTR = CryptoJS.lib.BlockCipherMode.extend();\n var Encryptor = CTR.Encryptor = CTR.extend({\n processBlock: function processBlock(words, offset) {\n // Shortcuts\n var cipher = this._cipher;\n var blockSize = cipher.blockSize;\n var iv = this._iv;\n var counter = this._counter; // Generate keystream\n\n if (iv) {\n counter = this._counter = iv.slice(0); // Remove IV for subsequent blocks\n\n this._iv = undefined;\n }\n\n var keystream = counter.slice(0);\n cipher.encryptBlock(keystream, 0); // Increment counter\n\n counter[blockSize - 1] = counter[blockSize - 1] + 1 | 0; // Encrypt\n\n for (var i = 0; i < blockSize; i++) {\n words[offset + i] ^= keystream[i];\n }\n }\n });\n CTR.Decryptor = Encryptor;\n return CTR;\n }();\n\n return CryptoJS.mode.CTR;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/mode-ctr.js?"); | |
| 1086 | - | |
| 1087 | -/***/ }), | |
| 1088 | - | |
| 1089 | -/***/ "./node_modules/crypto-js/mode-ecb.js": | |
| 1090 | -/*!********************************************!*\ | |
| 1091 | - !*** ./node_modules/crypto-js/mode-ecb.js ***! | |
| 1092 | - \********************************************/ | |
| 1093 | -/*! no static exports found */ | |
| 1094 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1095 | - | |
| 1096 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./cipher-core */ \"./node_modules/crypto-js/cipher-core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n /**\n * Electronic Codebook block mode.\n */\n CryptoJS.mode.ECB = function () {\n var ECB = CryptoJS.lib.BlockCipherMode.extend();\n ECB.Encryptor = ECB.extend({\n processBlock: function processBlock(words, offset) {\n this._cipher.encryptBlock(words, offset);\n }\n });\n ECB.Decryptor = ECB.extend({\n processBlock: function processBlock(words, offset) {\n this._cipher.decryptBlock(words, offset);\n }\n });\n return ECB;\n }();\n\n return CryptoJS.mode.ECB;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/mode-ecb.js?"); | |
| 1097 | - | |
| 1098 | -/***/ }), | |
| 1099 | - | |
| 1100 | -/***/ "./node_modules/crypto-js/mode-ofb.js": | |
| 1101 | -/*!********************************************!*\ | |
| 1102 | - !*** ./node_modules/crypto-js/mode-ofb.js ***! | |
| 1103 | - \********************************************/ | |
| 1104 | -/*! no static exports found */ | |
| 1105 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1106 | - | |
| 1107 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./cipher-core */ \"./node_modules/crypto-js/cipher-core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n /**\n * Output Feedback block mode.\n */\n CryptoJS.mode.OFB = function () {\n var OFB = CryptoJS.lib.BlockCipherMode.extend();\n var Encryptor = OFB.Encryptor = OFB.extend({\n processBlock: function processBlock(words, offset) {\n // Shortcuts\n var cipher = this._cipher;\n var blockSize = cipher.blockSize;\n var iv = this._iv;\n var keystream = this._keystream; // Generate keystream\n\n if (iv) {\n keystream = this._keystream = iv.slice(0); // Remove IV for subsequent blocks\n\n this._iv = undefined;\n }\n\n cipher.encryptBlock(keystream, 0); // Encrypt\n\n for (var i = 0; i < blockSize; i++) {\n words[offset + i] ^= keystream[i];\n }\n }\n });\n OFB.Decryptor = Encryptor;\n return OFB;\n }();\n\n return CryptoJS.mode.OFB;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/mode-ofb.js?"); | |
| 1108 | - | |
| 1109 | -/***/ }), | |
| 1110 | - | |
| 1111 | -/***/ "./node_modules/crypto-js/pad-ansix923.js": | |
| 1112 | -/*!************************************************!*\ | |
| 1113 | - !*** ./node_modules/crypto-js/pad-ansix923.js ***! | |
| 1114 | - \************************************************/ | |
| 1115 | -/*! no static exports found */ | |
| 1116 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1117 | - | |
| 1118 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./cipher-core */ \"./node_modules/crypto-js/cipher-core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n /**\n * ANSI X.923 padding strategy.\n */\n CryptoJS.pad.AnsiX923 = {\n pad: function pad(data, blockSize) {\n // Shortcuts\n var dataSigBytes = data.sigBytes;\n var blockSizeBytes = blockSize * 4; // Count padding bytes\n\n var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes; // Compute last byte position\n\n var lastBytePos = dataSigBytes + nPaddingBytes - 1; // Pad\n\n data.clamp();\n data.words[lastBytePos >>> 2] |= nPaddingBytes << 24 - lastBytePos % 4 * 8;\n data.sigBytes += nPaddingBytes;\n },\n unpad: function unpad(data) {\n // Get number of padding bytes from last byte\n var nPaddingBytes = data.words[data.sigBytes - 1 >>> 2] & 0xff; // Remove padding\n\n data.sigBytes -= nPaddingBytes;\n }\n };\n return CryptoJS.pad.Ansix923;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/pad-ansix923.js?"); | |
| 1119 | - | |
| 1120 | -/***/ }), | |
| 1121 | - | |
| 1122 | -/***/ "./node_modules/crypto-js/pad-iso10126.js": | |
| 1123 | -/*!************************************************!*\ | |
| 1124 | - !*** ./node_modules/crypto-js/pad-iso10126.js ***! | |
| 1125 | - \************************************************/ | |
| 1126 | -/*! no static exports found */ | |
| 1127 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1128 | - | |
| 1129 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./cipher-core */ \"./node_modules/crypto-js/cipher-core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n /**\n * ISO 10126 padding strategy.\n */\n CryptoJS.pad.Iso10126 = {\n pad: function pad(data, blockSize) {\n // Shortcut\n var blockSizeBytes = blockSize * 4; // Count padding bytes\n\n var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes; // Pad\n\n data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n },\n unpad: function unpad(data) {\n // Get number of padding bytes from last byte\n var nPaddingBytes = data.words[data.sigBytes - 1 >>> 2] & 0xff; // Remove padding\n\n data.sigBytes -= nPaddingBytes;\n }\n };\n return CryptoJS.pad.Iso10126;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/pad-iso10126.js?"); | |
| 1130 | - | |
| 1131 | -/***/ }), | |
| 1132 | - | |
| 1133 | -/***/ "./node_modules/crypto-js/pad-iso97971.js": | |
| 1134 | -/*!************************************************!*\ | |
| 1135 | - !*** ./node_modules/crypto-js/pad-iso97971.js ***! | |
| 1136 | - \************************************************/ | |
| 1137 | -/*! no static exports found */ | |
| 1138 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1139 | - | |
| 1140 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./cipher-core */ \"./node_modules/crypto-js/cipher-core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n /**\n * ISO/IEC 9797-1 Padding Method 2.\n */\n CryptoJS.pad.Iso97971 = {\n pad: function pad(data, blockSize) {\n // Add 0x80 byte\n data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1)); // Zero pad the rest\n\n CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n },\n unpad: function unpad(data) {\n // Remove zero padding\n CryptoJS.pad.ZeroPadding.unpad(data); // Remove one more byte -- the 0x80 byte\n\n data.sigBytes--;\n }\n };\n return CryptoJS.pad.Iso97971;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/pad-iso97971.js?"); | |
| 1141 | - | |
| 1142 | -/***/ }), | |
| 1143 | - | |
| 1144 | -/***/ "./node_modules/crypto-js/pad-nopadding.js": | |
| 1145 | -/*!*************************************************!*\ | |
| 1146 | - !*** ./node_modules/crypto-js/pad-nopadding.js ***! | |
| 1147 | - \*************************************************/ | |
| 1148 | -/*! no static exports found */ | |
| 1149 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1150 | - | |
| 1151 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./cipher-core */ \"./node_modules/crypto-js/cipher-core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n /**\n * A noop padding strategy.\n */\n CryptoJS.pad.NoPadding = {\n pad: function pad() {},\n unpad: function unpad() {}\n };\n return CryptoJS.pad.NoPadding;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/pad-nopadding.js?"); | |
| 1152 | - | |
| 1153 | -/***/ }), | |
| 1154 | - | |
| 1155 | -/***/ "./node_modules/crypto-js/pad-zeropadding.js": | |
| 1156 | -/*!***************************************************!*\ | |
| 1157 | - !*** ./node_modules/crypto-js/pad-zeropadding.js ***! | |
| 1158 | - \***************************************************/ | |
| 1159 | -/*! no static exports found */ | |
| 1160 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1161 | - | |
| 1162 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./cipher-core */ \"./node_modules/crypto-js/cipher-core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n /**\n * Zero padding strategy.\n */\n CryptoJS.pad.ZeroPadding = {\n pad: function pad(data, blockSize) {\n // Shortcut\n var blockSizeBytes = blockSize * 4; // Pad\n\n data.clamp();\n data.sigBytes += blockSizeBytes - (data.sigBytes % blockSizeBytes || blockSizeBytes);\n },\n unpad: function unpad(data) {\n // Shortcut\n var dataWords = data.words; // Unpad\n\n var i = data.sigBytes - 1;\n\n for (var i = data.sigBytes - 1; i >= 0; i--) {\n if (dataWords[i >>> 2] >>> 24 - i % 4 * 8 & 0xff) {\n data.sigBytes = i + 1;\n break;\n }\n }\n }\n };\n return CryptoJS.pad.ZeroPadding;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/pad-zeropadding.js?"); | |
| 1163 | - | |
| 1164 | -/***/ }), | |
| 1165 | - | |
| 1166 | -/***/ "./node_modules/crypto-js/pbkdf2.js": | |
| 1167 | -/*!******************************************!*\ | |
| 1168 | - !*** ./node_modules/crypto-js/pbkdf2.js ***! | |
| 1169 | - \******************************************/ | |
| 1170 | -/*! no static exports found */ | |
| 1171 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1172 | - | |
| 1173 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./sha1 */ \"./node_modules/crypto-js/sha1.js\"), __webpack_require__(/*! ./hmac */ \"./node_modules/crypto-js/hmac.js\"));\n } else {}\n})(this, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var Base = C_lib.Base;\n var WordArray = C_lib.WordArray;\n var C_algo = C.algo;\n var SHA1 = C_algo.SHA1;\n var HMAC = C_algo.HMAC;\n /**\n * Password-Based Key Derivation Function 2 algorithm.\n */\n\n var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n /**\n * Configuration options.\n *\n * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n * @property {Hasher} hasher The hasher to use. Default: SHA1\n * @property {number} iterations The number of iterations to perform. Default: 1\n */\n cfg: Base.extend({\n keySize: 128 / 32,\n hasher: SHA1,\n iterations: 1\n }),\n\n /**\n * Initializes a newly created key derivation function.\n *\n * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n *\n * @example\n *\n * var kdf = CryptoJS.algo.PBKDF2.create();\n * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n */\n init: function init(cfg) {\n this.cfg = this.cfg.extend(cfg);\n },\n\n /**\n * Computes the Password-Based Key Derivation Function 2.\n *\n * @param {WordArray|string} password The password.\n * @param {WordArray|string} salt A salt.\n *\n * @return {WordArray} The derived key.\n *\n * @example\n *\n * var key = kdf.compute(password, salt);\n */\n compute: function compute(password, salt) {\n // Shortcut\n var cfg = this.cfg; // Init HMAC\n\n var hmac = HMAC.create(cfg.hasher, password); // Initial values\n\n var derivedKey = WordArray.create();\n var blockIndex = WordArray.create([0x00000001]); // Shortcuts\n\n var derivedKeyWords = derivedKey.words;\n var blockIndexWords = blockIndex.words;\n var keySize = cfg.keySize;\n var iterations = cfg.iterations; // Generate key\n\n while (derivedKeyWords.length < keySize) {\n var block = hmac.update(salt).finalize(blockIndex);\n hmac.reset(); // Shortcuts\n\n var blockWords = block.words;\n var blockWordsLength = blockWords.length; // Iterations\n\n var intermediate = block;\n\n for (var i = 1; i < iterations; i++) {\n intermediate = hmac.finalize(intermediate);\n hmac.reset(); // Shortcut\n\n var intermediateWords = intermediate.words; // XOR intermediate with block\n\n for (var j = 0; j < blockWordsLength; j++) {\n blockWords[j] ^= intermediateWords[j];\n }\n }\n\n derivedKey.concat(block);\n blockIndexWords[0]++;\n }\n\n derivedKey.sigBytes = keySize * 4;\n return derivedKey;\n }\n });\n /**\n * Computes the Password-Based Key Derivation Function 2.\n *\n * @param {WordArray|string} password The password.\n * @param {WordArray|string} salt A salt.\n * @param {Object} cfg (Optional) The configuration options to use for this computation.\n *\n * @return {WordArray} The derived key.\n *\n * @static\n *\n * @example\n *\n * var key = CryptoJS.PBKDF2(password, salt);\n * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n */\n\n C.PBKDF2 = function (password, salt, cfg) {\n return PBKDF2.create(cfg).compute(password, salt);\n };\n })();\n\n return CryptoJS.PBKDF2;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/pbkdf2.js?"); | |
| 1174 | - | |
| 1175 | -/***/ }), | |
| 1176 | - | |
| 1177 | -/***/ "./node_modules/crypto-js/rabbit-legacy.js": | |
| 1178 | -/*!*************************************************!*\ | |
| 1179 | - !*** ./node_modules/crypto-js/rabbit-legacy.js ***! | |
| 1180 | - \*************************************************/ | |
| 1181 | -/*! no static exports found */ | |
| 1182 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1183 | - | |
| 1184 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./enc-base64 */ \"./node_modules/crypto-js/enc-base64.js\"), __webpack_require__(/*! ./md5 */ \"./node_modules/crypto-js/md5.js\"), __webpack_require__(/*! ./evpkdf */ \"./node_modules/crypto-js/evpkdf.js\"), __webpack_require__(/*! ./cipher-core */ \"./node_modules/crypto-js/cipher-core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var StreamCipher = C_lib.StreamCipher;\n var C_algo = C.algo; // Reusable objects\n\n var S = [];\n var C_ = [];\n var G = [];\n /**\n * Rabbit stream cipher algorithm.\n *\n * This is a legacy version that neglected to convert the key to little-endian.\n * This error doesn't affect the cipher's security,\n * but it does affect its compatibility with other implementations.\n */\n\n var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n _doReset: function _doReset() {\n // Shortcuts\n var K = this._key.words;\n var iv = this.cfg.iv; // Generate initial state values\n\n var X = this._X = [K[0], K[3] << 16 | K[2] >>> 16, K[1], K[0] << 16 | K[3] >>> 16, K[2], K[1] << 16 | K[0] >>> 16, K[3], K[2] << 16 | K[1] >>> 16]; // Generate initial counter values\n\n var C = this._C = [K[2] << 16 | K[2] >>> 16, K[0] & 0xffff0000 | K[1] & 0x0000ffff, K[3] << 16 | K[3] >>> 16, K[1] & 0xffff0000 | K[2] & 0x0000ffff, K[0] << 16 | K[0] >>> 16, K[2] & 0xffff0000 | K[3] & 0x0000ffff, K[1] << 16 | K[1] >>> 16, K[3] & 0xffff0000 | K[0] & 0x0000ffff]; // Carry bit\n\n this._b = 0; // Iterate the system four times\n\n for (var i = 0; i < 4; i++) {\n nextState.call(this);\n } // Modify the counters\n\n\n for (var i = 0; i < 8; i++) {\n C[i] ^= X[i + 4 & 7];\n } // IV setup\n\n\n if (iv) {\n // Shortcuts\n var IV = iv.words;\n var IV_0 = IV[0];\n var IV_1 = IV[1]; // Generate four subvectors\n\n var i0 = (IV_0 << 8 | IV_0 >>> 24) & 0x00ff00ff | (IV_0 << 24 | IV_0 >>> 8) & 0xff00ff00;\n var i2 = (IV_1 << 8 | IV_1 >>> 24) & 0x00ff00ff | (IV_1 << 24 | IV_1 >>> 8) & 0xff00ff00;\n var i1 = i0 >>> 16 | i2 & 0xffff0000;\n var i3 = i2 << 16 | i0 & 0x0000ffff; // Modify counter values\n\n C[0] ^= i0;\n C[1] ^= i1;\n C[2] ^= i2;\n C[3] ^= i3;\n C[4] ^= i0;\n C[5] ^= i1;\n C[6] ^= i2;\n C[7] ^= i3; // Iterate the system four times\n\n for (var i = 0; i < 4; i++) {\n nextState.call(this);\n }\n }\n },\n _doProcessBlock: function _doProcessBlock(M, offset) {\n // Shortcut\n var X = this._X; // Iterate the system\n\n nextState.call(this); // Generate four keystream words\n\n S[0] = X[0] ^ X[5] >>> 16 ^ X[3] << 16;\n S[1] = X[2] ^ X[7] >>> 16 ^ X[5] << 16;\n S[2] = X[4] ^ X[1] >>> 16 ^ X[7] << 16;\n S[3] = X[6] ^ X[3] >>> 16 ^ X[1] << 16;\n\n for (var i = 0; i < 4; i++) {\n // Swap endian\n S[i] = (S[i] << 8 | S[i] >>> 24) & 0x00ff00ff | (S[i] << 24 | S[i] >>> 8) & 0xff00ff00; // Encrypt\n\n M[offset + i] ^= S[i];\n }\n },\n blockSize: 128 / 32,\n ivSize: 64 / 32\n });\n\n function nextState() {\n // Shortcuts\n var X = this._X;\n var C = this._C; // Save old counter values\n\n for (var i = 0; i < 8; i++) {\n C_[i] = C[i];\n } // Calculate new counter values\n\n\n C[0] = C[0] + 0x4d34d34d + this._b | 0;\n C[1] = C[1] + 0xd34d34d3 + (C[0] >>> 0 < C_[0] >>> 0 ? 1 : 0) | 0;\n C[2] = C[2] + 0x34d34d34 + (C[1] >>> 0 < C_[1] >>> 0 ? 1 : 0) | 0;\n C[3] = C[3] + 0x4d34d34d + (C[2] >>> 0 < C_[2] >>> 0 ? 1 : 0) | 0;\n C[4] = C[4] + 0xd34d34d3 + (C[3] >>> 0 < C_[3] >>> 0 ? 1 : 0) | 0;\n C[5] = C[5] + 0x34d34d34 + (C[4] >>> 0 < C_[4] >>> 0 ? 1 : 0) | 0;\n C[6] = C[6] + 0x4d34d34d + (C[5] >>> 0 < C_[5] >>> 0 ? 1 : 0) | 0;\n C[7] = C[7] + 0xd34d34d3 + (C[6] >>> 0 < C_[6] >>> 0 ? 1 : 0) | 0;\n this._b = C[7] >>> 0 < C_[7] >>> 0 ? 1 : 0; // Calculate the g-values\n\n for (var i = 0; i < 8; i++) {\n var gx = X[i] + C[i]; // Construct high and low argument for squaring\n\n var ga = gx & 0xffff;\n var gb = gx >>> 16; // Calculate high and low result of squaring\n\n var gh = ((ga * ga >>> 17) + ga * gb >>> 15) + gb * gb;\n var gl = ((gx & 0xffff0000) * gx | 0) + ((gx & 0x0000ffff) * gx | 0); // High XOR low\n\n G[i] = gh ^ gl;\n } // Calculate new state values\n\n\n X[0] = G[0] + (G[7] << 16 | G[7] >>> 16) + (G[6] << 16 | G[6] >>> 16) | 0;\n X[1] = G[1] + (G[0] << 8 | G[0] >>> 24) + G[7] | 0;\n X[2] = G[2] + (G[1] << 16 | G[1] >>> 16) + (G[0] << 16 | G[0] >>> 16) | 0;\n X[3] = G[3] + (G[2] << 8 | G[2] >>> 24) + G[1] | 0;\n X[4] = G[4] + (G[3] << 16 | G[3] >>> 16) + (G[2] << 16 | G[2] >>> 16) | 0;\n X[5] = G[5] + (G[4] << 8 | G[4] >>> 24) + G[3] | 0;\n X[6] = G[6] + (G[5] << 16 | G[5] >>> 16) + (G[4] << 16 | G[4] >>> 16) | 0;\n X[7] = G[7] + (G[6] << 8 | G[6] >>> 24) + G[5] | 0;\n }\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n */\n\n\n C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n })();\n\n return CryptoJS.RabbitLegacy;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/rabbit-legacy.js?"); | |
| 1185 | - | |
| 1186 | -/***/ }), | |
| 1187 | - | |
| 1188 | -/***/ "./node_modules/crypto-js/rabbit.js": | |
| 1189 | -/*!******************************************!*\ | |
| 1190 | - !*** ./node_modules/crypto-js/rabbit.js ***! | |
| 1191 | - \******************************************/ | |
| 1192 | -/*! no static exports found */ | |
| 1193 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1194 | - | |
| 1195 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./enc-base64 */ \"./node_modules/crypto-js/enc-base64.js\"), __webpack_require__(/*! ./md5 */ \"./node_modules/crypto-js/md5.js\"), __webpack_require__(/*! ./evpkdf */ \"./node_modules/crypto-js/evpkdf.js\"), __webpack_require__(/*! ./cipher-core */ \"./node_modules/crypto-js/cipher-core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var StreamCipher = C_lib.StreamCipher;\n var C_algo = C.algo; // Reusable objects\n\n var S = [];\n var C_ = [];\n var G = [];\n /**\n * Rabbit stream cipher algorithm\n */\n\n var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n _doReset: function _doReset() {\n // Shortcuts\n var K = this._key.words;\n var iv = this.cfg.iv; // Swap endian\n\n for (var i = 0; i < 4; i++) {\n K[i] = (K[i] << 8 | K[i] >>> 24) & 0x00ff00ff | (K[i] << 24 | K[i] >>> 8) & 0xff00ff00;\n } // Generate initial state values\n\n\n var X = this._X = [K[0], K[3] << 16 | K[2] >>> 16, K[1], K[0] << 16 | K[3] >>> 16, K[2], K[1] << 16 | K[0] >>> 16, K[3], K[2] << 16 | K[1] >>> 16]; // Generate initial counter values\n\n var C = this._C = [K[2] << 16 | K[2] >>> 16, K[0] & 0xffff0000 | K[1] & 0x0000ffff, K[3] << 16 | K[3] >>> 16, K[1] & 0xffff0000 | K[2] & 0x0000ffff, K[0] << 16 | K[0] >>> 16, K[2] & 0xffff0000 | K[3] & 0x0000ffff, K[1] << 16 | K[1] >>> 16, K[3] & 0xffff0000 | K[0] & 0x0000ffff]; // Carry bit\n\n this._b = 0; // Iterate the system four times\n\n for (var i = 0; i < 4; i++) {\n nextState.call(this);\n } // Modify the counters\n\n\n for (var i = 0; i < 8; i++) {\n C[i] ^= X[i + 4 & 7];\n } // IV setup\n\n\n if (iv) {\n // Shortcuts\n var IV = iv.words;\n var IV_0 = IV[0];\n var IV_1 = IV[1]; // Generate four subvectors\n\n var i0 = (IV_0 << 8 | IV_0 >>> 24) & 0x00ff00ff | (IV_0 << 24 | IV_0 >>> 8) & 0xff00ff00;\n var i2 = (IV_1 << 8 | IV_1 >>> 24) & 0x00ff00ff | (IV_1 << 24 | IV_1 >>> 8) & 0xff00ff00;\n var i1 = i0 >>> 16 | i2 & 0xffff0000;\n var i3 = i2 << 16 | i0 & 0x0000ffff; // Modify counter values\n\n C[0] ^= i0;\n C[1] ^= i1;\n C[2] ^= i2;\n C[3] ^= i3;\n C[4] ^= i0;\n C[5] ^= i1;\n C[6] ^= i2;\n C[7] ^= i3; // Iterate the system four times\n\n for (var i = 0; i < 4; i++) {\n nextState.call(this);\n }\n }\n },\n _doProcessBlock: function _doProcessBlock(M, offset) {\n // Shortcut\n var X = this._X; // Iterate the system\n\n nextState.call(this); // Generate four keystream words\n\n S[0] = X[0] ^ X[5] >>> 16 ^ X[3] << 16;\n S[1] = X[2] ^ X[7] >>> 16 ^ X[5] << 16;\n S[2] = X[4] ^ X[1] >>> 16 ^ X[7] << 16;\n S[3] = X[6] ^ X[3] >>> 16 ^ X[1] << 16;\n\n for (var i = 0; i < 4; i++) {\n // Swap endian\n S[i] = (S[i] << 8 | S[i] >>> 24) & 0x00ff00ff | (S[i] << 24 | S[i] >>> 8) & 0xff00ff00; // Encrypt\n\n M[offset + i] ^= S[i];\n }\n },\n blockSize: 128 / 32,\n ivSize: 64 / 32\n });\n\n function nextState() {\n // Shortcuts\n var X = this._X;\n var C = this._C; // Save old counter values\n\n for (var i = 0; i < 8; i++) {\n C_[i] = C[i];\n } // Calculate new counter values\n\n\n C[0] = C[0] + 0x4d34d34d + this._b | 0;\n C[1] = C[1] + 0xd34d34d3 + (C[0] >>> 0 < C_[0] >>> 0 ? 1 : 0) | 0;\n C[2] = C[2] + 0x34d34d34 + (C[1] >>> 0 < C_[1] >>> 0 ? 1 : 0) | 0;\n C[3] = C[3] + 0x4d34d34d + (C[2] >>> 0 < C_[2] >>> 0 ? 1 : 0) | 0;\n C[4] = C[4] + 0xd34d34d3 + (C[3] >>> 0 < C_[3] >>> 0 ? 1 : 0) | 0;\n C[5] = C[5] + 0x34d34d34 + (C[4] >>> 0 < C_[4] >>> 0 ? 1 : 0) | 0;\n C[6] = C[6] + 0x4d34d34d + (C[5] >>> 0 < C_[5] >>> 0 ? 1 : 0) | 0;\n C[7] = C[7] + 0xd34d34d3 + (C[6] >>> 0 < C_[6] >>> 0 ? 1 : 0) | 0;\n this._b = C[7] >>> 0 < C_[7] >>> 0 ? 1 : 0; // Calculate the g-values\n\n for (var i = 0; i < 8; i++) {\n var gx = X[i] + C[i]; // Construct high and low argument for squaring\n\n var ga = gx & 0xffff;\n var gb = gx >>> 16; // Calculate high and low result of squaring\n\n var gh = ((ga * ga >>> 17) + ga * gb >>> 15) + gb * gb;\n var gl = ((gx & 0xffff0000) * gx | 0) + ((gx & 0x0000ffff) * gx | 0); // High XOR low\n\n G[i] = gh ^ gl;\n } // Calculate new state values\n\n\n X[0] = G[0] + (G[7] << 16 | G[7] >>> 16) + (G[6] << 16 | G[6] >>> 16) | 0;\n X[1] = G[1] + (G[0] << 8 | G[0] >>> 24) + G[7] | 0;\n X[2] = G[2] + (G[1] << 16 | G[1] >>> 16) + (G[0] << 16 | G[0] >>> 16) | 0;\n X[3] = G[3] + (G[2] << 8 | G[2] >>> 24) + G[1] | 0;\n X[4] = G[4] + (G[3] << 16 | G[3] >>> 16) + (G[2] << 16 | G[2] >>> 16) | 0;\n X[5] = G[5] + (G[4] << 8 | G[4] >>> 24) + G[3] | 0;\n X[6] = G[6] + (G[5] << 16 | G[5] >>> 16) + (G[4] << 16 | G[4] >>> 16) | 0;\n X[7] = G[7] + (G[6] << 8 | G[6] >>> 24) + G[5] | 0;\n }\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n */\n\n\n C.Rabbit = StreamCipher._createHelper(Rabbit);\n })();\n\n return CryptoJS.Rabbit;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/rabbit.js?"); | |
| 1196 | - | |
| 1197 | -/***/ }), | |
| 1198 | - | |
| 1199 | -/***/ "./node_modules/crypto-js/rc4.js": | |
| 1200 | -/*!***************************************!*\ | |
| 1201 | - !*** ./node_modules/crypto-js/rc4.js ***! | |
| 1202 | - \***************************************/ | |
| 1203 | -/*! no static exports found */ | |
| 1204 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1205 | - | |
| 1206 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./enc-base64 */ \"./node_modules/crypto-js/enc-base64.js\"), __webpack_require__(/*! ./md5 */ \"./node_modules/crypto-js/md5.js\"), __webpack_require__(/*! ./evpkdf */ \"./node_modules/crypto-js/evpkdf.js\"), __webpack_require__(/*! ./cipher-core */ \"./node_modules/crypto-js/cipher-core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var StreamCipher = C_lib.StreamCipher;\n var C_algo = C.algo;\n /**\n * RC4 stream cipher algorithm.\n */\n\n var RC4 = C_algo.RC4 = StreamCipher.extend({\n _doReset: function _doReset() {\n // Shortcuts\n var key = this._key;\n var keyWords = key.words;\n var keySigBytes = key.sigBytes; // Init sbox\n\n var S = this._S = [];\n\n for (var i = 0; i < 256; i++) {\n S[i] = i;\n } // Key setup\n\n\n for (var i = 0, j = 0; i < 256; i++) {\n var keyByteIndex = i % keySigBytes;\n var keyByte = keyWords[keyByteIndex >>> 2] >>> 24 - keyByteIndex % 4 * 8 & 0xff;\n j = (j + S[i] + keyByte) % 256; // Swap\n\n var t = S[i];\n S[i] = S[j];\n S[j] = t;\n } // Counters\n\n\n this._i = this._j = 0;\n },\n _doProcessBlock: function _doProcessBlock(M, offset) {\n M[offset] ^= generateKeystreamWord.call(this);\n },\n keySize: 256 / 32,\n ivSize: 0\n });\n\n function generateKeystreamWord() {\n // Shortcuts\n var S = this._S;\n var i = this._i;\n var j = this._j; // Generate keystream word\n\n var keystreamWord = 0;\n\n for (var n = 0; n < 4; n++) {\n i = (i + 1) % 256;\n j = (j + S[i]) % 256; // Swap\n\n var t = S[i];\n S[i] = S[j];\n S[j] = t;\n keystreamWord |= S[(S[i] + S[j]) % 256] << 24 - n * 8;\n } // Update counters\n\n\n this._i = i;\n this._j = j;\n return keystreamWord;\n }\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n */\n\n\n C.RC4 = StreamCipher._createHelper(RC4);\n /**\n * Modified RC4 stream cipher algorithm.\n */\n\n var RC4Drop = C_algo.RC4Drop = RC4.extend({\n /**\n * Configuration options.\n *\n * @property {number} drop The number of keystream words to drop. Default 192\n */\n cfg: RC4.cfg.extend({\n drop: 192\n }),\n _doReset: function _doReset() {\n RC4._doReset.call(this); // Drop\n\n\n for (var i = this.cfg.drop; i > 0; i--) {\n generateKeystreamWord.call(this);\n }\n }\n });\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n */\n\n C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n })();\n\n return CryptoJS.RC4;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/rc4.js?"); | |
| 1207 | - | |
| 1208 | -/***/ }), | |
| 1209 | - | |
| 1210 | -/***/ "./node_modules/crypto-js/ripemd160.js": | |
| 1211 | -/*!*********************************************!*\ | |
| 1212 | - !*** ./node_modules/crypto-js/ripemd160.js ***! | |
| 1213 | - \*********************************************/ | |
| 1214 | -/*! no static exports found */ | |
| 1215 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1216 | - | |
| 1217 | -eval(";\n\n(function (root, factory) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n /** @preserve\n (c) 2012 by Cédric Mesnil. All rights reserved.\n \tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n \t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n \tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n (function (Math) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var Hasher = C_lib.Hasher;\n var C_algo = C.algo; // Constants table\n\n var _zl = WordArray.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n\n var _zr = WordArray.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n\n var _sl = WordArray.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]);\n\n var _sr = WordArray.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]);\n\n var _hl = WordArray.create([0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\n var _hr = WordArray.create([0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n /**\n * RIPEMD160 hash algorithm.\n */\n\n\n var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n _doReset: function _doReset() {\n this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n },\n _doProcessBlock: function _doProcessBlock(M, offset) {\n // Swap endian\n for (var i = 0; i < 16; i++) {\n // Shortcuts\n var offset_i = offset + i;\n var M_offset_i = M[offset_i]; // Swap\n\n M[offset_i] = (M_offset_i << 8 | M_offset_i >>> 24) & 0x00ff00ff | (M_offset_i << 24 | M_offset_i >>> 8) & 0xff00ff00;\n } // Shortcut\n\n\n var H = this._hash.words;\n var hl = _hl.words;\n var hr = _hr.words;\n var zl = _zl.words;\n var zr = _zr.words;\n var sl = _sl.words;\n var sr = _sr.words; // Working variables\n\n var al, bl, cl, dl, el;\n var ar, br, cr, dr, er;\n ar = al = H[0];\n br = bl = H[1];\n cr = cl = H[2];\n dr = dl = H[3];\n er = el = H[4]; // Computation\n\n var t;\n\n for (var i = 0; i < 80; i += 1) {\n t = al + M[offset + zl[i]] | 0;\n\n if (i < 16) {\n t += f1(bl, cl, dl) + hl[0];\n } else if (i < 32) {\n t += f2(bl, cl, dl) + hl[1];\n } else if (i < 48) {\n t += f3(bl, cl, dl) + hl[2];\n } else if (i < 64) {\n t += f4(bl, cl, dl) + hl[3];\n } else {\n // if (i<80) {\n t += f5(bl, cl, dl) + hl[4];\n }\n\n t = t | 0;\n t = rotl(t, sl[i]);\n t = t + el | 0;\n al = el;\n el = dl;\n dl = rotl(cl, 10);\n cl = bl;\n bl = t;\n t = ar + M[offset + zr[i]] | 0;\n\n if (i < 16) {\n t += f5(br, cr, dr) + hr[0];\n } else if (i < 32) {\n t += f4(br, cr, dr) + hr[1];\n } else if (i < 48) {\n t += f3(br, cr, dr) + hr[2];\n } else if (i < 64) {\n t += f2(br, cr, dr) + hr[3];\n } else {\n // if (i<80) {\n t += f1(br, cr, dr) + hr[4];\n }\n\n t = t | 0;\n t = rotl(t, sr[i]);\n t = t + er | 0;\n ar = er;\n er = dr;\n dr = rotl(cr, 10);\n cr = br;\n br = t;\n } // Intermediate hash value\n\n\n t = H[1] + cl + dr | 0;\n H[1] = H[2] + dl + er | 0;\n H[2] = H[3] + el + ar | 0;\n H[3] = H[4] + al + br | 0;\n H[4] = H[0] + bl + cr | 0;\n H[0] = t;\n },\n _doFinalize: function _doFinalize() {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n var nBitsTotal = this._nDataBytes * 8;\n var nBitsLeft = data.sigBytes * 8; // Add padding\n\n dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32;\n dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = (nBitsTotal << 8 | nBitsTotal >>> 24) & 0x00ff00ff | (nBitsTotal << 24 | nBitsTotal >>> 8) & 0xff00ff00;\n data.sigBytes = (dataWords.length + 1) * 4; // Hash final blocks\n\n this._process(); // Shortcuts\n\n\n var hash = this._hash;\n var H = hash.words; // Swap endian\n\n for (var i = 0; i < 5; i++) {\n // Shortcut\n var H_i = H[i]; // Swap\n\n H[i] = (H_i << 8 | H_i >>> 24) & 0x00ff00ff | (H_i << 24 | H_i >>> 8) & 0xff00ff00;\n } // Return final computed hash\n\n\n return hash;\n },\n clone: function clone() {\n var clone = Hasher.clone.call(this);\n clone._hash = this._hash.clone();\n return clone;\n }\n });\n\n function f1(x, y, z) {\n return x ^ y ^ z;\n }\n\n function f2(x, y, z) {\n return x & y | ~x & z;\n }\n\n function f3(x, y, z) {\n return (x | ~y) ^ z;\n }\n\n function f4(x, y, z) {\n return x & z | y & ~z;\n }\n\n function f5(x, y, z) {\n return x ^ (y | ~z);\n }\n\n function rotl(x, n) {\n return x << n | x >>> 32 - n;\n }\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.RIPEMD160('message');\n * var hash = CryptoJS.RIPEMD160(wordArray);\n */\n\n\n C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n */\n\n C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n })(Math);\n\n return CryptoJS.RIPEMD160;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/ripemd160.js?"); | |
| 1218 | - | |
| 1219 | -/***/ }), | |
| 1220 | - | |
| 1221 | -/***/ "./node_modules/crypto-js/sha1.js": | |
| 1222 | -/*!****************************************!*\ | |
| 1223 | - !*** ./node_modules/crypto-js/sha1.js ***! | |
| 1224 | - \****************************************/ | |
| 1225 | -/*! no static exports found */ | |
| 1226 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1227 | - | |
| 1228 | -eval(";\n\n(function (root, factory) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var Hasher = C_lib.Hasher;\n var C_algo = C.algo; // Reusable object\n\n var W = [];\n /**\n * SHA-1 hash algorithm.\n */\n\n var SHA1 = C_algo.SHA1 = Hasher.extend({\n _doReset: function _doReset() {\n this._hash = new WordArray.init([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0]);\n },\n _doProcessBlock: function _doProcessBlock(M, offset) {\n // Shortcut\n var H = this._hash.words; // Working variables\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4]; // Computation\n\n for (var i = 0; i < 80; i++) {\n if (i < 16) {\n W[i] = M[offset + i] | 0;\n } else {\n var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n W[i] = n << 1 | n >>> 31;\n }\n\n var t = (a << 5 | a >>> 27) + e + W[i];\n\n if (i < 20) {\n t += (b & c | ~b & d) + 0x5a827999;\n } else if (i < 40) {\n t += (b ^ c ^ d) + 0x6ed9eba1;\n } else if (i < 60) {\n t += (b & c | b & d | c & d) - 0x70e44324;\n } else\n /* if (i < 80) */\n {\n t += (b ^ c ^ d) - 0x359d3e2a;\n }\n\n e = d;\n d = c;\n c = b << 30 | b >>> 2;\n b = a;\n a = t;\n } // Intermediate hash value\n\n\n H[0] = H[0] + a | 0;\n H[1] = H[1] + b | 0;\n H[2] = H[2] + c | 0;\n H[3] = H[3] + d | 0;\n H[4] = H[4] + e | 0;\n },\n _doFinalize: function _doFinalize() {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n var nBitsTotal = this._nDataBytes * 8;\n var nBitsLeft = data.sigBytes * 8; // Add padding\n\n dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32;\n dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = nBitsTotal;\n data.sigBytes = dataWords.length * 4; // Hash final blocks\n\n this._process(); // Return final computed hash\n\n\n return this._hash;\n },\n clone: function clone() {\n var clone = Hasher.clone.call(this);\n clone._hash = this._hash.clone();\n return clone;\n }\n });\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.SHA1('message');\n * var hash = CryptoJS.SHA1(wordArray);\n */\n\n C.SHA1 = Hasher._createHelper(SHA1);\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacSHA1(message, key);\n */\n\n C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n })();\n\n return CryptoJS.SHA1;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/sha1.js?"); | |
| 1229 | - | |
| 1230 | -/***/ }), | |
| 1231 | - | |
| 1232 | -/***/ "./node_modules/crypto-js/sha224.js": | |
| 1233 | -/*!******************************************!*\ | |
| 1234 | - !*** ./node_modules/crypto-js/sha224.js ***! | |
| 1235 | - \******************************************/ | |
| 1236 | -/*! no static exports found */ | |
| 1237 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1238 | - | |
| 1239 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./sha256 */ \"./node_modules/crypto-js/sha256.js\"));\n } else {}\n})(this, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var C_algo = C.algo;\n var SHA256 = C_algo.SHA256;\n /**\n * SHA-224 hash algorithm.\n */\n\n var SHA224 = C_algo.SHA224 = SHA256.extend({\n _doReset: function _doReset() {\n this._hash = new WordArray.init([0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4]);\n },\n _doFinalize: function _doFinalize() {\n var hash = SHA256._doFinalize.call(this);\n\n hash.sigBytes -= 4;\n return hash;\n }\n });\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.SHA224('message');\n * var hash = CryptoJS.SHA224(wordArray);\n */\n\n C.SHA224 = SHA256._createHelper(SHA224);\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacSHA224(message, key);\n */\n\n C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n })();\n\n return CryptoJS.SHA224;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/sha224.js?"); | |
| 1240 | - | |
| 1241 | -/***/ }), | |
| 1242 | - | |
| 1243 | -/***/ "./node_modules/crypto-js/sha256.js": | |
| 1244 | -/*!******************************************!*\ | |
| 1245 | - !*** ./node_modules/crypto-js/sha256.js ***! | |
| 1246 | - \******************************************/ | |
| 1247 | -/*! no static exports found */ | |
| 1248 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1249 | - | |
| 1250 | -eval(";\n\n(function (root, factory) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n (function (Math) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var Hasher = C_lib.Hasher;\n var C_algo = C.algo; // Initialization and round constants tables\n\n var H = [];\n var K = []; // Compute constants\n\n (function () {\n function isPrime(n) {\n var sqrtN = Math.sqrt(n);\n\n for (var factor = 2; factor <= sqrtN; factor++) {\n if (!(n % factor)) {\n return false;\n }\n }\n\n return true;\n }\n\n function getFractionalBits(n) {\n return (n - (n | 0)) * 0x100000000 | 0;\n }\n\n var n = 2;\n var nPrime = 0;\n\n while (nPrime < 64) {\n if (isPrime(n)) {\n if (nPrime < 8) {\n H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n }\n\n K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n nPrime++;\n }\n\n n++;\n }\n })(); // Reusable object\n\n\n var W = [];\n /**\n * SHA-256 hash algorithm.\n */\n\n var SHA256 = C_algo.SHA256 = Hasher.extend({\n _doReset: function _doReset() {\n this._hash = new WordArray.init(H.slice(0));\n },\n _doProcessBlock: function _doProcessBlock(M, offset) {\n // Shortcut\n var H = this._hash.words; // Working variables\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n var f = H[5];\n var g = H[6];\n var h = H[7]; // Computation\n\n for (var i = 0; i < 64; i++) {\n if (i < 16) {\n W[i] = M[offset + i] | 0;\n } else {\n var gamma0x = W[i - 15];\n var gamma0 = (gamma0x << 25 | gamma0x >>> 7) ^ (gamma0x << 14 | gamma0x >>> 18) ^ gamma0x >>> 3;\n var gamma1x = W[i - 2];\n var gamma1 = (gamma1x << 15 | gamma1x >>> 17) ^ (gamma1x << 13 | gamma1x >>> 19) ^ gamma1x >>> 10;\n W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n }\n\n var ch = e & f ^ ~e & g;\n var maj = a & b ^ a & c ^ b & c;\n var sigma0 = (a << 30 | a >>> 2) ^ (a << 19 | a >>> 13) ^ (a << 10 | a >>> 22);\n var sigma1 = (e << 26 | e >>> 6) ^ (e << 21 | e >>> 11) ^ (e << 7 | e >>> 25);\n var t1 = h + sigma1 + ch + K[i] + W[i];\n var t2 = sigma0 + maj;\n h = g;\n g = f;\n f = e;\n e = d + t1 | 0;\n d = c;\n c = b;\n b = a;\n a = t1 + t2 | 0;\n } // Intermediate hash value\n\n\n H[0] = H[0] + a | 0;\n H[1] = H[1] + b | 0;\n H[2] = H[2] + c | 0;\n H[3] = H[3] + d | 0;\n H[4] = H[4] + e | 0;\n H[5] = H[5] + f | 0;\n H[6] = H[6] + g | 0;\n H[7] = H[7] + h | 0;\n },\n _doFinalize: function _doFinalize() {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n var nBitsTotal = this._nDataBytes * 8;\n var nBitsLeft = data.sigBytes * 8; // Add padding\n\n dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32;\n dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = nBitsTotal;\n data.sigBytes = dataWords.length * 4; // Hash final blocks\n\n this._process(); // Return final computed hash\n\n\n return this._hash;\n },\n clone: function clone() {\n var clone = Hasher.clone.call(this);\n clone._hash = this._hash.clone();\n return clone;\n }\n });\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.SHA256('message');\n * var hash = CryptoJS.SHA256(wordArray);\n */\n\n C.SHA256 = Hasher._createHelper(SHA256);\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacSHA256(message, key);\n */\n\n C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n })(Math);\n\n return CryptoJS.SHA256;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/sha256.js?"); | |
| 1251 | - | |
| 1252 | -/***/ }), | |
| 1253 | - | |
| 1254 | -/***/ "./node_modules/crypto-js/sha3.js": | |
| 1255 | -/*!****************************************!*\ | |
| 1256 | - !*** ./node_modules/crypto-js/sha3.js ***! | |
| 1257 | - \****************************************/ | |
| 1258 | -/*! no static exports found */ | |
| 1259 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1260 | - | |
| 1261 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./x64-core */ \"./node_modules/crypto-js/x64-core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n (function (Math) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var Hasher = C_lib.Hasher;\n var C_x64 = C.x64;\n var X64Word = C_x64.Word;\n var C_algo = C.algo; // Constants tables\n\n var RHO_OFFSETS = [];\n var PI_INDEXES = [];\n var ROUND_CONSTANTS = []; // Compute Constants\n\n (function () {\n // Compute rho offset constants\n var x = 1,\n y = 0;\n\n for (var t = 0; t < 24; t++) {\n RHO_OFFSETS[x + 5 * y] = (t + 1) * (t + 2) / 2 % 64;\n var newX = y % 5;\n var newY = (2 * x + 3 * y) % 5;\n x = newX;\n y = newY;\n } // Compute pi index constants\n\n\n for (var x = 0; x < 5; x++) {\n for (var y = 0; y < 5; y++) {\n PI_INDEXES[x + 5 * y] = y + (2 * x + 3 * y) % 5 * 5;\n }\n } // Compute round constants\n\n\n var LFSR = 0x01;\n\n for (var i = 0; i < 24; i++) {\n var roundConstantMsw = 0;\n var roundConstantLsw = 0;\n\n for (var j = 0; j < 7; j++) {\n if (LFSR & 0x01) {\n var bitPosition = (1 << j) - 1;\n\n if (bitPosition < 32) {\n roundConstantLsw ^= 1 << bitPosition;\n } else\n /* if (bitPosition >= 32) */\n {\n roundConstantMsw ^= 1 << bitPosition - 32;\n }\n } // Compute next LFSR\n\n\n if (LFSR & 0x80) {\n // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n LFSR = LFSR << 1 ^ 0x71;\n } else {\n LFSR <<= 1;\n }\n }\n\n ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n }\n })(); // Reusable objects for temporary values\n\n\n var T = [];\n\n (function () {\n for (var i = 0; i < 25; i++) {\n T[i] = X64Word.create();\n }\n })();\n /**\n * SHA-3 hash algorithm.\n */\n\n\n var SHA3 = C_algo.SHA3 = Hasher.extend({\n /**\n * Configuration options.\n *\n * @property {number} outputLength\n * The desired number of bits in the output hash.\n * Only values permitted are: 224, 256, 384, 512.\n * Default: 512\n */\n cfg: Hasher.cfg.extend({\n outputLength: 512\n }),\n _doReset: function _doReset() {\n var state = this._state = [];\n\n for (var i = 0; i < 25; i++) {\n state[i] = new X64Word.init();\n }\n\n this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n },\n _doProcessBlock: function _doProcessBlock(M, offset) {\n // Shortcuts\n var state = this._state;\n var nBlockSizeLanes = this.blockSize / 2; // Absorb\n\n for (var i = 0; i < nBlockSizeLanes; i++) {\n // Shortcuts\n var M2i = M[offset + 2 * i];\n var M2i1 = M[offset + 2 * i + 1]; // Swap endian\n\n M2i = (M2i << 8 | M2i >>> 24) & 0x00ff00ff | (M2i << 24 | M2i >>> 8) & 0xff00ff00;\n M2i1 = (M2i1 << 8 | M2i1 >>> 24) & 0x00ff00ff | (M2i1 << 24 | M2i1 >>> 8) & 0xff00ff00; // Absorb message into state\n\n var lane = state[i];\n lane.high ^= M2i1;\n lane.low ^= M2i;\n } // Rounds\n\n\n for (var round = 0; round < 24; round++) {\n // Theta\n for (var x = 0; x < 5; x++) {\n // Mix column lanes\n var tMsw = 0,\n tLsw = 0;\n\n for (var y = 0; y < 5; y++) {\n var lane = state[x + 5 * y];\n tMsw ^= lane.high;\n tLsw ^= lane.low;\n } // Temporary values\n\n\n var Tx = T[x];\n Tx.high = tMsw;\n Tx.low = tLsw;\n }\n\n for (var x = 0; x < 5; x++) {\n // Shortcuts\n var Tx4 = T[(x + 4) % 5];\n var Tx1 = T[(x + 1) % 5];\n var Tx1Msw = Tx1.high;\n var Tx1Lsw = Tx1.low; // Mix surrounding columns\n\n var tMsw = Tx4.high ^ (Tx1Msw << 1 | Tx1Lsw >>> 31);\n var tLsw = Tx4.low ^ (Tx1Lsw << 1 | Tx1Msw >>> 31);\n\n for (var y = 0; y < 5; y++) {\n var lane = state[x + 5 * y];\n lane.high ^= tMsw;\n lane.low ^= tLsw;\n }\n } // Rho Pi\n\n\n for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n var tMsw;\n var tLsw; // Shortcuts\n\n var lane = state[laneIndex];\n var laneMsw = lane.high;\n var laneLsw = lane.low;\n var rhoOffset = RHO_OFFSETS[laneIndex]; // Rotate lanes\n\n if (rhoOffset < 32) {\n tMsw = laneMsw << rhoOffset | laneLsw >>> 32 - rhoOffset;\n tLsw = laneLsw << rhoOffset | laneMsw >>> 32 - rhoOffset;\n } else\n /* if (rhoOffset >= 32) */\n {\n tMsw = laneLsw << rhoOffset - 32 | laneMsw >>> 64 - rhoOffset;\n tLsw = laneMsw << rhoOffset - 32 | laneLsw >>> 64 - rhoOffset;\n } // Transpose lanes\n\n\n var TPiLane = T[PI_INDEXES[laneIndex]];\n TPiLane.high = tMsw;\n TPiLane.low = tLsw;\n } // Rho pi at x = y = 0\n\n\n var T0 = T[0];\n var state0 = state[0];\n T0.high = state0.high;\n T0.low = state0.low; // Chi\n\n for (var x = 0; x < 5; x++) {\n for (var y = 0; y < 5; y++) {\n // Shortcuts\n var laneIndex = x + 5 * y;\n var lane = state[laneIndex];\n var TLane = T[laneIndex];\n var Tx1Lane = T[(x + 1) % 5 + 5 * y];\n var Tx2Lane = T[(x + 2) % 5 + 5 * y]; // Mix rows\n\n lane.high = TLane.high ^ ~Tx1Lane.high & Tx2Lane.high;\n lane.low = TLane.low ^ ~Tx1Lane.low & Tx2Lane.low;\n }\n } // Iota\n\n\n var lane = state[0];\n var roundConstant = ROUND_CONSTANTS[round];\n lane.high ^= roundConstant.high;\n lane.low ^= roundConstant.low;\n }\n },\n _doFinalize: function _doFinalize() {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n var nBitsTotal = this._nDataBytes * 8;\n var nBitsLeft = data.sigBytes * 8;\n var blockSizeBits = this.blockSize * 32; // Add padding\n\n dataWords[nBitsLeft >>> 5] |= 0x1 << 24 - nBitsLeft % 32;\n dataWords[(Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits >>> 5) - 1] |= 0x80;\n data.sigBytes = dataWords.length * 4; // Hash final blocks\n\n this._process(); // Shortcuts\n\n\n var state = this._state;\n var outputLengthBytes = this.cfg.outputLength / 8;\n var outputLengthLanes = outputLengthBytes / 8; // Squeeze\n\n var hashWords = [];\n\n for (var i = 0; i < outputLengthLanes; i++) {\n // Shortcuts\n var lane = state[i];\n var laneMsw = lane.high;\n var laneLsw = lane.low; // Swap endian\n\n laneMsw = (laneMsw << 8 | laneMsw >>> 24) & 0x00ff00ff | (laneMsw << 24 | laneMsw >>> 8) & 0xff00ff00;\n laneLsw = (laneLsw << 8 | laneLsw >>> 24) & 0x00ff00ff | (laneLsw << 24 | laneLsw >>> 8) & 0xff00ff00; // Squeeze state to retrieve hash\n\n hashWords.push(laneLsw);\n hashWords.push(laneMsw);\n } // Return final computed hash\n\n\n return new WordArray.init(hashWords, outputLengthBytes);\n },\n clone: function clone() {\n var clone = Hasher.clone.call(this);\n\n var state = clone._state = this._state.slice(0);\n\n for (var i = 0; i < 25; i++) {\n state[i] = state[i].clone();\n }\n\n return clone;\n }\n });\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.SHA3('message');\n * var hash = CryptoJS.SHA3(wordArray);\n */\n\n C.SHA3 = Hasher._createHelper(SHA3);\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacSHA3(message, key);\n */\n\n C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n })(Math);\n\n return CryptoJS.SHA3;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/sha3.js?"); | |
| 1262 | - | |
| 1263 | -/***/ }), | |
| 1264 | - | |
| 1265 | -/***/ "./node_modules/crypto-js/sha384.js": | |
| 1266 | -/*!******************************************!*\ | |
| 1267 | - !*** ./node_modules/crypto-js/sha384.js ***! | |
| 1268 | - \******************************************/ | |
| 1269 | -/*! no static exports found */ | |
| 1270 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1271 | - | |
| 1272 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./x64-core */ \"./node_modules/crypto-js/x64-core.js\"), __webpack_require__(/*! ./sha512 */ \"./node_modules/crypto-js/sha512.js\"));\n } else {}\n})(this, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_x64 = C.x64;\n var X64Word = C_x64.Word;\n var X64WordArray = C_x64.WordArray;\n var C_algo = C.algo;\n var SHA512 = C_algo.SHA512;\n /**\n * SHA-384 hash algorithm.\n */\n\n var SHA384 = C_algo.SHA384 = SHA512.extend({\n _doReset: function _doReset() {\n this._hash = new X64WordArray.init([new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507), new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939), new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511), new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)]);\n },\n _doFinalize: function _doFinalize() {\n var hash = SHA512._doFinalize.call(this);\n\n hash.sigBytes -= 16;\n return hash;\n }\n });\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.SHA384('message');\n * var hash = CryptoJS.SHA384(wordArray);\n */\n\n C.SHA384 = SHA512._createHelper(SHA384);\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacSHA384(message, key);\n */\n\n C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n })();\n\n return CryptoJS.SHA384;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/sha384.js?"); | |
| 1273 | - | |
| 1274 | -/***/ }), | |
| 1275 | - | |
| 1276 | -/***/ "./node_modules/crypto-js/sha512.js": | |
| 1277 | -/*!******************************************!*\ | |
| 1278 | - !*** ./node_modules/crypto-js/sha512.js ***! | |
| 1279 | - \******************************************/ | |
| 1280 | -/*! no static exports found */ | |
| 1281 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1282 | - | |
| 1283 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./x64-core */ \"./node_modules/crypto-js/x64-core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var Hasher = C_lib.Hasher;\n var C_x64 = C.x64;\n var X64Word = C_x64.Word;\n var X64WordArray = C_x64.WordArray;\n var C_algo = C.algo;\n\n function X64Word_create() {\n return X64Word.create.apply(X64Word, arguments);\n } // Constants\n\n\n var K = [X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd), X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc), X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019), X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118), X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe), X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2), X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1), X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694), X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3), X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65), X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483), X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5), X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210), X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4), X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725), X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70), X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926), X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df), X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8), X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b), X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001), X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30), X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910), X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8), X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53), X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8), X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb), X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3), X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60), X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec), X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9), X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b), X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207), X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178), X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6), X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b), X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493), X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c), X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a), X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)]; // Reusable objects\n\n var W = [];\n\n (function () {\n for (var i = 0; i < 80; i++) {\n W[i] = X64Word_create();\n }\n })();\n /**\n * SHA-512 hash algorithm.\n */\n\n\n var SHA512 = C_algo.SHA512 = Hasher.extend({\n _doReset: function _doReset() {\n this._hash = new X64WordArray.init([new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b), new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1), new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f), new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)]);\n },\n _doProcessBlock: function _doProcessBlock(M, offset) {\n // Shortcuts\n var H = this._hash.words;\n var H0 = H[0];\n var H1 = H[1];\n var H2 = H[2];\n var H3 = H[3];\n var H4 = H[4];\n var H5 = H[5];\n var H6 = H[6];\n var H7 = H[7];\n var H0h = H0.high;\n var H0l = H0.low;\n var H1h = H1.high;\n var H1l = H1.low;\n var H2h = H2.high;\n var H2l = H2.low;\n var H3h = H3.high;\n var H3l = H3.low;\n var H4h = H4.high;\n var H4l = H4.low;\n var H5h = H5.high;\n var H5l = H5.low;\n var H6h = H6.high;\n var H6l = H6.low;\n var H7h = H7.high;\n var H7l = H7.low; // Working variables\n\n var ah = H0h;\n var al = H0l;\n var bh = H1h;\n var bl = H1l;\n var ch = H2h;\n var cl = H2l;\n var dh = H3h;\n var dl = H3l;\n var eh = H4h;\n var el = H4l;\n var fh = H5h;\n var fl = H5l;\n var gh = H6h;\n var gl = H6l;\n var hh = H7h;\n var hl = H7l; // Rounds\n\n for (var i = 0; i < 80; i++) {\n var Wil;\n var Wih; // Shortcut\n\n var Wi = W[i]; // Extend message\n\n if (i < 16) {\n Wih = Wi.high = M[offset + i * 2] | 0;\n Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n } else {\n // Gamma0\n var gamma0x = W[i - 15];\n var gamma0xh = gamma0x.high;\n var gamma0xl = gamma0x.low;\n var gamma0h = (gamma0xh >>> 1 | gamma0xl << 31) ^ (gamma0xh >>> 8 | gamma0xl << 24) ^ gamma0xh >>> 7;\n var gamma0l = (gamma0xl >>> 1 | gamma0xh << 31) ^ (gamma0xl >>> 8 | gamma0xh << 24) ^ (gamma0xl >>> 7 | gamma0xh << 25); // Gamma1\n\n var gamma1x = W[i - 2];\n var gamma1xh = gamma1x.high;\n var gamma1xl = gamma1x.low;\n var gamma1h = (gamma1xh >>> 19 | gamma1xl << 13) ^ (gamma1xh << 3 | gamma1xl >>> 29) ^ gamma1xh >>> 6;\n var gamma1l = (gamma1xl >>> 19 | gamma1xh << 13) ^ (gamma1xl << 3 | gamma1xh >>> 29) ^ (gamma1xl >>> 6 | gamma1xh << 26); // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\n var Wi7 = W[i - 7];\n var Wi7h = Wi7.high;\n var Wi7l = Wi7.low;\n var Wi16 = W[i - 16];\n var Wi16h = Wi16.high;\n var Wi16l = Wi16.low;\n Wil = gamma0l + Wi7l;\n Wih = gamma0h + Wi7h + (Wil >>> 0 < gamma0l >>> 0 ? 1 : 0);\n Wil = Wil + gamma1l;\n Wih = Wih + gamma1h + (Wil >>> 0 < gamma1l >>> 0 ? 1 : 0);\n Wil = Wil + Wi16l;\n Wih = Wih + Wi16h + (Wil >>> 0 < Wi16l >>> 0 ? 1 : 0);\n Wi.high = Wih;\n Wi.low = Wil;\n }\n\n var chh = eh & fh ^ ~eh & gh;\n var chl = el & fl ^ ~el & gl;\n var majh = ah & bh ^ ah & ch ^ bh & ch;\n var majl = al & bl ^ al & cl ^ bl & cl;\n var sigma0h = (ah >>> 28 | al << 4) ^ (ah << 30 | al >>> 2) ^ (ah << 25 | al >>> 7);\n var sigma0l = (al >>> 28 | ah << 4) ^ (al << 30 | ah >>> 2) ^ (al << 25 | ah >>> 7);\n var sigma1h = (eh >>> 14 | el << 18) ^ (eh >>> 18 | el << 14) ^ (eh << 23 | el >>> 9);\n var sigma1l = (el >>> 14 | eh << 18) ^ (el >>> 18 | eh << 14) ^ (el << 23 | eh >>> 9); // t1 = h + sigma1 + ch + K[i] + W[i]\n\n var Ki = K[i];\n var Kih = Ki.high;\n var Kil = Ki.low;\n var t1l = hl + sigma1l;\n var t1h = hh + sigma1h + (t1l >>> 0 < hl >>> 0 ? 1 : 0);\n var t1l = t1l + chl;\n var t1h = t1h + chh + (t1l >>> 0 < chl >>> 0 ? 1 : 0);\n var t1l = t1l + Kil;\n var t1h = t1h + Kih + (t1l >>> 0 < Kil >>> 0 ? 1 : 0);\n var t1l = t1l + Wil;\n var t1h = t1h + Wih + (t1l >>> 0 < Wil >>> 0 ? 1 : 0); // t2 = sigma0 + maj\n\n var t2l = sigma0l + majl;\n var t2h = sigma0h + majh + (t2l >>> 0 < sigma0l >>> 0 ? 1 : 0); // Update working variables\n\n hh = gh;\n hl = gl;\n gh = fh;\n gl = fl;\n fh = eh;\n fl = el;\n el = dl + t1l | 0;\n eh = dh + t1h + (el >>> 0 < dl >>> 0 ? 1 : 0) | 0;\n dh = ch;\n dl = cl;\n ch = bh;\n cl = bl;\n bh = ah;\n bl = al;\n al = t1l + t2l | 0;\n ah = t1h + t2h + (al >>> 0 < t1l >>> 0 ? 1 : 0) | 0;\n } // Intermediate hash value\n\n\n H0l = H0.low = H0l + al;\n H0.high = H0h + ah + (H0l >>> 0 < al >>> 0 ? 1 : 0);\n H1l = H1.low = H1l + bl;\n H1.high = H1h + bh + (H1l >>> 0 < bl >>> 0 ? 1 : 0);\n H2l = H2.low = H2l + cl;\n H2.high = H2h + ch + (H2l >>> 0 < cl >>> 0 ? 1 : 0);\n H3l = H3.low = H3l + dl;\n H3.high = H3h + dh + (H3l >>> 0 < dl >>> 0 ? 1 : 0);\n H4l = H4.low = H4l + el;\n H4.high = H4h + eh + (H4l >>> 0 < el >>> 0 ? 1 : 0);\n H5l = H5.low = H5l + fl;\n H5.high = H5h + fh + (H5l >>> 0 < fl >>> 0 ? 1 : 0);\n H6l = H6.low = H6l + gl;\n H6.high = H6h + gh + (H6l >>> 0 < gl >>> 0 ? 1 : 0);\n H7l = H7.low = H7l + hl;\n H7.high = H7h + hh + (H7l >>> 0 < hl >>> 0 ? 1 : 0);\n },\n _doFinalize: function _doFinalize() {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n var nBitsTotal = this._nDataBytes * 8;\n var nBitsLeft = data.sigBytes * 8; // Add padding\n\n dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32;\n dataWords[(nBitsLeft + 128 >>> 10 << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n dataWords[(nBitsLeft + 128 >>> 10 << 5) + 31] = nBitsTotal;\n data.sigBytes = dataWords.length * 4; // Hash final blocks\n\n this._process(); // Convert hash to 32-bit word array before returning\n\n\n var hash = this._hash.toX32(); // Return final computed hash\n\n\n return hash;\n },\n clone: function clone() {\n var clone = Hasher.clone.call(this);\n clone._hash = this._hash.clone();\n return clone;\n },\n blockSize: 1024 / 32\n });\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.SHA512('message');\n * var hash = CryptoJS.SHA512(wordArray);\n */\n\n C.SHA512 = Hasher._createHelper(SHA512);\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacSHA512(message, key);\n */\n\n C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n })();\n\n return CryptoJS.SHA512;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/sha512.js?"); | |
| 1284 | - | |
| 1285 | -/***/ }), | |
| 1286 | - | |
| 1287 | -/***/ "./node_modules/crypto-js/tripledes.js": | |
| 1288 | -/*!*********************************************!*\ | |
| 1289 | - !*** ./node_modules/crypto-js/tripledes.js ***! | |
| 1290 | - \*********************************************/ | |
| 1291 | -/*! no static exports found */ | |
| 1292 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1293 | - | |
| 1294 | -eval(";\n\n(function (root, factory, undef) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"), __webpack_require__(/*! ./enc-base64 */ \"./node_modules/crypto-js/enc-base64.js\"), __webpack_require__(/*! ./md5 */ \"./node_modules/crypto-js/md5.js\"), __webpack_require__(/*! ./evpkdf */ \"./node_modules/crypto-js/evpkdf.js\"), __webpack_require__(/*! ./cipher-core */ \"./node_modules/crypto-js/cipher-core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var BlockCipher = C_lib.BlockCipher;\n var C_algo = C.algo; // Permuted Choice 1 constants\n\n var PC1 = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4]; // Permuted Choice 2 constants\n\n var PC2 = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32]; // Cumulative bit shift constants\n\n var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28]; // SBOXes and round permutation constants\n\n var SBOX_P = [{\n 0x0: 0x808200,\n 0x10000000: 0x8000,\n 0x20000000: 0x808002,\n 0x30000000: 0x2,\n 0x40000000: 0x200,\n 0x50000000: 0x808202,\n 0x60000000: 0x800202,\n 0x70000000: 0x800000,\n 0x80000000: 0x202,\n 0x90000000: 0x800200,\n 0xa0000000: 0x8200,\n 0xb0000000: 0x808000,\n 0xc0000000: 0x8002,\n 0xd0000000: 0x800002,\n 0xe0000000: 0x0,\n 0xf0000000: 0x8202,\n 0x8000000: 0x0,\n 0x18000000: 0x808202,\n 0x28000000: 0x8202,\n 0x38000000: 0x8000,\n 0x48000000: 0x808200,\n 0x58000000: 0x200,\n 0x68000000: 0x808002,\n 0x78000000: 0x2,\n 0x88000000: 0x800200,\n 0x98000000: 0x8200,\n 0xa8000000: 0x808000,\n 0xb8000000: 0x800202,\n 0xc8000000: 0x800002,\n 0xd8000000: 0x8002,\n 0xe8000000: 0x202,\n 0xf8000000: 0x800000,\n 0x1: 0x8000,\n 0x10000001: 0x2,\n 0x20000001: 0x808200,\n 0x30000001: 0x800000,\n 0x40000001: 0x808002,\n 0x50000001: 0x8200,\n 0x60000001: 0x200,\n 0x70000001: 0x800202,\n 0x80000001: 0x808202,\n 0x90000001: 0x808000,\n 0xa0000001: 0x800002,\n 0xb0000001: 0x8202,\n 0xc0000001: 0x202,\n 0xd0000001: 0x800200,\n 0xe0000001: 0x8002,\n 0xf0000001: 0x0,\n 0x8000001: 0x808202,\n 0x18000001: 0x808000,\n 0x28000001: 0x800000,\n 0x38000001: 0x200,\n 0x48000001: 0x8000,\n 0x58000001: 0x800002,\n 0x68000001: 0x2,\n 0x78000001: 0x8202,\n 0x88000001: 0x8002,\n 0x98000001: 0x800202,\n 0xa8000001: 0x202,\n 0xb8000001: 0x808200,\n 0xc8000001: 0x800200,\n 0xd8000001: 0x0,\n 0xe8000001: 0x8200,\n 0xf8000001: 0x808002\n }, {\n 0x0: 0x40084010,\n 0x1000000: 0x4000,\n 0x2000000: 0x80000,\n 0x3000000: 0x40080010,\n 0x4000000: 0x40000010,\n 0x5000000: 0x40084000,\n 0x6000000: 0x40004000,\n 0x7000000: 0x10,\n 0x8000000: 0x84000,\n 0x9000000: 0x40004010,\n 0xa000000: 0x40000000,\n 0xb000000: 0x84010,\n 0xc000000: 0x80010,\n 0xd000000: 0x0,\n 0xe000000: 0x4010,\n 0xf000000: 0x40080000,\n 0x800000: 0x40004000,\n 0x1800000: 0x84010,\n 0x2800000: 0x10,\n 0x3800000: 0x40004010,\n 0x4800000: 0x40084010,\n 0x5800000: 0x40000000,\n 0x6800000: 0x80000,\n 0x7800000: 0x40080010,\n 0x8800000: 0x80010,\n 0x9800000: 0x0,\n 0xa800000: 0x4000,\n 0xb800000: 0x40080000,\n 0xc800000: 0x40000010,\n 0xd800000: 0x84000,\n 0xe800000: 0x40084000,\n 0xf800000: 0x4010,\n 0x10000000: 0x0,\n 0x11000000: 0x40080010,\n 0x12000000: 0x40004010,\n 0x13000000: 0x40084000,\n 0x14000000: 0x40080000,\n 0x15000000: 0x10,\n 0x16000000: 0x84010,\n 0x17000000: 0x4000,\n 0x18000000: 0x4010,\n 0x19000000: 0x80000,\n 0x1a000000: 0x80010,\n 0x1b000000: 0x40000010,\n 0x1c000000: 0x84000,\n 0x1d000000: 0x40004000,\n 0x1e000000: 0x40000000,\n 0x1f000000: 0x40084010,\n 0x10800000: 0x84010,\n 0x11800000: 0x80000,\n 0x12800000: 0x40080000,\n 0x13800000: 0x4000,\n 0x14800000: 0x40004000,\n 0x15800000: 0x40084010,\n 0x16800000: 0x10,\n 0x17800000: 0x40000000,\n 0x18800000: 0x40084000,\n 0x19800000: 0x40000010,\n 0x1a800000: 0x40004010,\n 0x1b800000: 0x80010,\n 0x1c800000: 0x0,\n 0x1d800000: 0x4010,\n 0x1e800000: 0x40080010,\n 0x1f800000: 0x84000\n }, {\n 0x0: 0x104,\n 0x100000: 0x0,\n 0x200000: 0x4000100,\n 0x300000: 0x10104,\n 0x400000: 0x10004,\n 0x500000: 0x4000004,\n 0x600000: 0x4010104,\n 0x700000: 0x4010000,\n 0x800000: 0x4000000,\n 0x900000: 0x4010100,\n 0xa00000: 0x10100,\n 0xb00000: 0x4010004,\n 0xc00000: 0x4000104,\n 0xd00000: 0x10000,\n 0xe00000: 0x4,\n 0xf00000: 0x100,\n 0x80000: 0x4010100,\n 0x180000: 0x4010004,\n 0x280000: 0x0,\n 0x380000: 0x4000100,\n 0x480000: 0x4000004,\n 0x580000: 0x10000,\n 0x680000: 0x10004,\n 0x780000: 0x104,\n 0x880000: 0x4,\n 0x980000: 0x100,\n 0xa80000: 0x4010000,\n 0xb80000: 0x10104,\n 0xc80000: 0x10100,\n 0xd80000: 0x4000104,\n 0xe80000: 0x4010104,\n 0xf80000: 0x4000000,\n 0x1000000: 0x4010100,\n 0x1100000: 0x10004,\n 0x1200000: 0x10000,\n 0x1300000: 0x4000100,\n 0x1400000: 0x100,\n 0x1500000: 0x4010104,\n 0x1600000: 0x4000004,\n 0x1700000: 0x0,\n 0x1800000: 0x4000104,\n 0x1900000: 0x4000000,\n 0x1a00000: 0x4,\n 0x1b00000: 0x10100,\n 0x1c00000: 0x4010000,\n 0x1d00000: 0x104,\n 0x1e00000: 0x10104,\n 0x1f00000: 0x4010004,\n 0x1080000: 0x4000000,\n 0x1180000: 0x104,\n 0x1280000: 0x4010100,\n 0x1380000: 0x0,\n 0x1480000: 0x10004,\n 0x1580000: 0x4000100,\n 0x1680000: 0x100,\n 0x1780000: 0x4010004,\n 0x1880000: 0x10000,\n 0x1980000: 0x4010104,\n 0x1a80000: 0x10104,\n 0x1b80000: 0x4000004,\n 0x1c80000: 0x4000104,\n 0x1d80000: 0x4010000,\n 0x1e80000: 0x4,\n 0x1f80000: 0x10100\n }, {\n 0x0: 0x80401000,\n 0x10000: 0x80001040,\n 0x20000: 0x401040,\n 0x30000: 0x80400000,\n 0x40000: 0x0,\n 0x50000: 0x401000,\n 0x60000: 0x80000040,\n 0x70000: 0x400040,\n 0x80000: 0x80000000,\n 0x90000: 0x400000,\n 0xa0000: 0x40,\n 0xb0000: 0x80001000,\n 0xc0000: 0x80400040,\n 0xd0000: 0x1040,\n 0xe0000: 0x1000,\n 0xf0000: 0x80401040,\n 0x8000: 0x80001040,\n 0x18000: 0x40,\n 0x28000: 0x80400040,\n 0x38000: 0x80001000,\n 0x48000: 0x401000,\n 0x58000: 0x80401040,\n 0x68000: 0x0,\n 0x78000: 0x80400000,\n 0x88000: 0x1000,\n 0x98000: 0x80401000,\n 0xa8000: 0x400000,\n 0xb8000: 0x1040,\n 0xc8000: 0x80000000,\n 0xd8000: 0x400040,\n 0xe8000: 0x401040,\n 0xf8000: 0x80000040,\n 0x100000: 0x400040,\n 0x110000: 0x401000,\n 0x120000: 0x80000040,\n 0x130000: 0x0,\n 0x140000: 0x1040,\n 0x150000: 0x80400040,\n 0x160000: 0x80401000,\n 0x170000: 0x80001040,\n 0x180000: 0x80401040,\n 0x190000: 0x80000000,\n 0x1a0000: 0x80400000,\n 0x1b0000: 0x401040,\n 0x1c0000: 0x80001000,\n 0x1d0000: 0x400000,\n 0x1e0000: 0x40,\n 0x1f0000: 0x1000,\n 0x108000: 0x80400000,\n 0x118000: 0x80401040,\n 0x128000: 0x0,\n 0x138000: 0x401000,\n 0x148000: 0x400040,\n 0x158000: 0x80000000,\n 0x168000: 0x80001040,\n 0x178000: 0x40,\n 0x188000: 0x80000040,\n 0x198000: 0x1000,\n 0x1a8000: 0x80001000,\n 0x1b8000: 0x80400040,\n 0x1c8000: 0x1040,\n 0x1d8000: 0x80401000,\n 0x1e8000: 0x400000,\n 0x1f8000: 0x401040\n }, {\n 0x0: 0x80,\n 0x1000: 0x1040000,\n 0x2000: 0x40000,\n 0x3000: 0x20000000,\n 0x4000: 0x20040080,\n 0x5000: 0x1000080,\n 0x6000: 0x21000080,\n 0x7000: 0x40080,\n 0x8000: 0x1000000,\n 0x9000: 0x20040000,\n 0xa000: 0x20000080,\n 0xb000: 0x21040080,\n 0xc000: 0x21040000,\n 0xd000: 0x0,\n 0xe000: 0x1040080,\n 0xf000: 0x21000000,\n 0x800: 0x1040080,\n 0x1800: 0x21000080,\n 0x2800: 0x80,\n 0x3800: 0x1040000,\n 0x4800: 0x40000,\n 0x5800: 0x20040080,\n 0x6800: 0x21040000,\n 0x7800: 0x20000000,\n 0x8800: 0x20040000,\n 0x9800: 0x0,\n 0xa800: 0x21040080,\n 0xb800: 0x1000080,\n 0xc800: 0x20000080,\n 0xd800: 0x21000000,\n 0xe800: 0x1000000,\n 0xf800: 0x40080,\n 0x10000: 0x40000,\n 0x11000: 0x80,\n 0x12000: 0x20000000,\n 0x13000: 0x21000080,\n 0x14000: 0x1000080,\n 0x15000: 0x21040000,\n 0x16000: 0x20040080,\n 0x17000: 0x1000000,\n 0x18000: 0x21040080,\n 0x19000: 0x21000000,\n 0x1a000: 0x1040000,\n 0x1b000: 0x20040000,\n 0x1c000: 0x40080,\n 0x1d000: 0x20000080,\n 0x1e000: 0x0,\n 0x1f000: 0x1040080,\n 0x10800: 0x21000080,\n 0x11800: 0x1000000,\n 0x12800: 0x1040000,\n 0x13800: 0x20040080,\n 0x14800: 0x20000000,\n 0x15800: 0x1040080,\n 0x16800: 0x80,\n 0x17800: 0x21040000,\n 0x18800: 0x40080,\n 0x19800: 0x21040080,\n 0x1a800: 0x0,\n 0x1b800: 0x21000000,\n 0x1c800: 0x1000080,\n 0x1d800: 0x40000,\n 0x1e800: 0x20040000,\n 0x1f800: 0x20000080\n }, {\n 0x0: 0x10000008,\n 0x100: 0x2000,\n 0x200: 0x10200000,\n 0x300: 0x10202008,\n 0x400: 0x10002000,\n 0x500: 0x200000,\n 0x600: 0x200008,\n 0x700: 0x10000000,\n 0x800: 0x0,\n 0x900: 0x10002008,\n 0xa00: 0x202000,\n 0xb00: 0x8,\n 0xc00: 0x10200008,\n 0xd00: 0x202008,\n 0xe00: 0x2008,\n 0xf00: 0x10202000,\n 0x80: 0x10200000,\n 0x180: 0x10202008,\n 0x280: 0x8,\n 0x380: 0x200000,\n 0x480: 0x202008,\n 0x580: 0x10000008,\n 0x680: 0x10002000,\n 0x780: 0x2008,\n 0x880: 0x200008,\n 0x980: 0x2000,\n 0xa80: 0x10002008,\n 0xb80: 0x10200008,\n 0xc80: 0x0,\n 0xd80: 0x10202000,\n 0xe80: 0x202000,\n 0xf80: 0x10000000,\n 0x1000: 0x10002000,\n 0x1100: 0x10200008,\n 0x1200: 0x10202008,\n 0x1300: 0x2008,\n 0x1400: 0x200000,\n 0x1500: 0x10000000,\n 0x1600: 0x10000008,\n 0x1700: 0x202000,\n 0x1800: 0x202008,\n 0x1900: 0x0,\n 0x1a00: 0x8,\n 0x1b00: 0x10200000,\n 0x1c00: 0x2000,\n 0x1d00: 0x10002008,\n 0x1e00: 0x10202000,\n 0x1f00: 0x200008,\n 0x1080: 0x8,\n 0x1180: 0x202000,\n 0x1280: 0x200000,\n 0x1380: 0x10000008,\n 0x1480: 0x10002000,\n 0x1580: 0x2008,\n 0x1680: 0x10202008,\n 0x1780: 0x10200000,\n 0x1880: 0x10202000,\n 0x1980: 0x10200008,\n 0x1a80: 0x2000,\n 0x1b80: 0x202008,\n 0x1c80: 0x200008,\n 0x1d80: 0x0,\n 0x1e80: 0x10000000,\n 0x1f80: 0x10002008\n }, {\n 0x0: 0x100000,\n 0x10: 0x2000401,\n 0x20: 0x400,\n 0x30: 0x100401,\n 0x40: 0x2100401,\n 0x50: 0x0,\n 0x60: 0x1,\n 0x70: 0x2100001,\n 0x80: 0x2000400,\n 0x90: 0x100001,\n 0xa0: 0x2000001,\n 0xb0: 0x2100400,\n 0xc0: 0x2100000,\n 0xd0: 0x401,\n 0xe0: 0x100400,\n 0xf0: 0x2000000,\n 0x8: 0x2100001,\n 0x18: 0x0,\n 0x28: 0x2000401,\n 0x38: 0x2100400,\n 0x48: 0x100000,\n 0x58: 0x2000001,\n 0x68: 0x2000000,\n 0x78: 0x401,\n 0x88: 0x100401,\n 0x98: 0x2000400,\n 0xa8: 0x2100000,\n 0xb8: 0x100001,\n 0xc8: 0x400,\n 0xd8: 0x2100401,\n 0xe8: 0x1,\n 0xf8: 0x100400,\n 0x100: 0x2000000,\n 0x110: 0x100000,\n 0x120: 0x2000401,\n 0x130: 0x2100001,\n 0x140: 0x100001,\n 0x150: 0x2000400,\n 0x160: 0x2100400,\n 0x170: 0x100401,\n 0x180: 0x401,\n 0x190: 0x2100401,\n 0x1a0: 0x100400,\n 0x1b0: 0x1,\n 0x1c0: 0x0,\n 0x1d0: 0x2100000,\n 0x1e0: 0x2000001,\n 0x1f0: 0x400,\n 0x108: 0x100400,\n 0x118: 0x2000401,\n 0x128: 0x2100001,\n 0x138: 0x1,\n 0x148: 0x2000000,\n 0x158: 0x100000,\n 0x168: 0x401,\n 0x178: 0x2100400,\n 0x188: 0x2000001,\n 0x198: 0x2100000,\n 0x1a8: 0x0,\n 0x1b8: 0x2100401,\n 0x1c8: 0x100401,\n 0x1d8: 0x400,\n 0x1e8: 0x2000400,\n 0x1f8: 0x100001\n }, {\n 0x0: 0x8000820,\n 0x1: 0x20000,\n 0x2: 0x8000000,\n 0x3: 0x20,\n 0x4: 0x20020,\n 0x5: 0x8020820,\n 0x6: 0x8020800,\n 0x7: 0x800,\n 0x8: 0x8020000,\n 0x9: 0x8000800,\n 0xa: 0x20800,\n 0xb: 0x8020020,\n 0xc: 0x820,\n 0xd: 0x0,\n 0xe: 0x8000020,\n 0xf: 0x20820,\n 0x80000000: 0x800,\n 0x80000001: 0x8020820,\n 0x80000002: 0x8000820,\n 0x80000003: 0x8000000,\n 0x80000004: 0x8020000,\n 0x80000005: 0x20800,\n 0x80000006: 0x20820,\n 0x80000007: 0x20,\n 0x80000008: 0x8000020,\n 0x80000009: 0x820,\n 0x8000000a: 0x20020,\n 0x8000000b: 0x8020800,\n 0x8000000c: 0x0,\n 0x8000000d: 0x8020020,\n 0x8000000e: 0x8000800,\n 0x8000000f: 0x20000,\n 0x10: 0x20820,\n 0x11: 0x8020800,\n 0x12: 0x20,\n 0x13: 0x800,\n 0x14: 0x8000800,\n 0x15: 0x8000020,\n 0x16: 0x8020020,\n 0x17: 0x20000,\n 0x18: 0x0,\n 0x19: 0x20020,\n 0x1a: 0x8020000,\n 0x1b: 0x8000820,\n 0x1c: 0x8020820,\n 0x1d: 0x20800,\n 0x1e: 0x820,\n 0x1f: 0x8000000,\n 0x80000010: 0x20000,\n 0x80000011: 0x800,\n 0x80000012: 0x8020020,\n 0x80000013: 0x20820,\n 0x80000014: 0x20,\n 0x80000015: 0x8020000,\n 0x80000016: 0x8000000,\n 0x80000017: 0x8000820,\n 0x80000018: 0x8020820,\n 0x80000019: 0x8000020,\n 0x8000001a: 0x8000800,\n 0x8000001b: 0x0,\n 0x8000001c: 0x20800,\n 0x8000001d: 0x820,\n 0x8000001e: 0x20020,\n 0x8000001f: 0x8020800\n }]; // Masks that select the SBOX input\n\n var SBOX_MASK = [0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000, 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f];\n /**\n * DES block cipher algorithm.\n */\n\n var DES = C_algo.DES = BlockCipher.extend({\n _doReset: function _doReset() {\n // Shortcuts\n var key = this._key;\n var keyWords = key.words; // Select 56 bits according to PC1\n\n var keyBits = [];\n\n for (var i = 0; i < 56; i++) {\n var keyBitPos = PC1[i] - 1;\n keyBits[i] = keyWords[keyBitPos >>> 5] >>> 31 - keyBitPos % 32 & 1;\n } // Assemble 16 subkeys\n\n\n var subKeys = this._subKeys = [];\n\n for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n // Create subkey\n var subKey = subKeys[nSubKey] = []; // Shortcut\n\n var bitShift = BIT_SHIFTS[nSubKey]; // Select 48 bits according to PC2\n\n for (var i = 0; i < 24; i++) {\n // Select from the left 28 key bits\n subKey[i / 6 | 0] |= keyBits[(PC2[i] - 1 + bitShift) % 28] << 31 - i % 6; // Select from the right 28 key bits\n\n subKey[4 + (i / 6 | 0)] |= keyBits[28 + (PC2[i + 24] - 1 + bitShift) % 28] << 31 - i % 6;\n } // Since each subkey is applied to an expanded 32-bit input,\n // the subkey can be broken into 8 values scaled to 32-bits,\n // which allows the key to be used without expansion\n\n\n subKey[0] = subKey[0] << 1 | subKey[0] >>> 31;\n\n for (var i = 1; i < 7; i++) {\n subKey[i] = subKey[i] >>> (i - 1) * 4 + 3;\n }\n\n subKey[7] = subKey[7] << 5 | subKey[7] >>> 27;\n } // Compute inverse subkeys\n\n\n var invSubKeys = this._invSubKeys = [];\n\n for (var i = 0; i < 16; i++) {\n invSubKeys[i] = subKeys[15 - i];\n }\n },\n encryptBlock: function encryptBlock(M, offset) {\n this._doCryptBlock(M, offset, this._subKeys);\n },\n decryptBlock: function decryptBlock(M, offset) {\n this._doCryptBlock(M, offset, this._invSubKeys);\n },\n _doCryptBlock: function _doCryptBlock(M, offset, subKeys) {\n // Get input\n this._lBlock = M[offset];\n this._rBlock = M[offset + 1]; // Initial permutation\n\n exchangeLR.call(this, 4, 0x0f0f0f0f);\n exchangeLR.call(this, 16, 0x0000ffff);\n exchangeRL.call(this, 2, 0x33333333);\n exchangeRL.call(this, 8, 0x00ff00ff);\n exchangeLR.call(this, 1, 0x55555555); // Rounds\n\n for (var round = 0; round < 16; round++) {\n // Shortcuts\n var subKey = subKeys[round];\n var lBlock = this._lBlock;\n var rBlock = this._rBlock; // Feistel function\n\n var f = 0;\n\n for (var i = 0; i < 8; i++) {\n f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n }\n\n this._lBlock = rBlock;\n this._rBlock = lBlock ^ f;\n } // Undo swap from last round\n\n\n var t = this._lBlock;\n this._lBlock = this._rBlock;\n this._rBlock = t; // Final permutation\n\n exchangeLR.call(this, 1, 0x55555555);\n exchangeRL.call(this, 8, 0x00ff00ff);\n exchangeRL.call(this, 2, 0x33333333);\n exchangeLR.call(this, 16, 0x0000ffff);\n exchangeLR.call(this, 4, 0x0f0f0f0f); // Set output\n\n M[offset] = this._lBlock;\n M[offset + 1] = this._rBlock;\n },\n keySize: 64 / 32,\n ivSize: 64 / 32,\n blockSize: 64 / 32\n }); // Swap bits across the left and right words\n\n function exchangeLR(offset, mask) {\n var t = (this._lBlock >>> offset ^ this._rBlock) & mask;\n this._rBlock ^= t;\n this._lBlock ^= t << offset;\n }\n\n function exchangeRL(offset, mask) {\n var t = (this._rBlock >>> offset ^ this._lBlock) & mask;\n this._lBlock ^= t;\n this._rBlock ^= t << offset;\n }\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n */\n\n\n C.DES = BlockCipher._createHelper(DES);\n /**\n * Triple-DES block cipher algorithm.\n */\n\n var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n _doReset: function _doReset() {\n // Shortcuts\n var key = this._key;\n var keyWords = key.words; // Make sure the key length is valid (64, 128 or >= 192 bit)\n\n if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n } // Extend the key according to the keying options defined in 3DES standard\n\n\n var key1 = keyWords.slice(0, 2);\n var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6); // Create DES instances\n\n this._des1 = DES.createEncryptor(WordArray.create(key1));\n this._des2 = DES.createEncryptor(WordArray.create(key2));\n this._des3 = DES.createEncryptor(WordArray.create(key3));\n },\n encryptBlock: function encryptBlock(M, offset) {\n this._des1.encryptBlock(M, offset);\n\n this._des2.decryptBlock(M, offset);\n\n this._des3.encryptBlock(M, offset);\n },\n decryptBlock: function decryptBlock(M, offset) {\n this._des3.decryptBlock(M, offset);\n\n this._des2.encryptBlock(M, offset);\n\n this._des1.decryptBlock(M, offset);\n },\n keySize: 192 / 32,\n ivSize: 64 / 32,\n blockSize: 64 / 32\n });\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n */\n\n C.TripleDES = BlockCipher._createHelper(TripleDES);\n })();\n\n return CryptoJS.TripleDES;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/tripledes.js?"); | |
| 1295 | - | |
| 1296 | -/***/ }), | |
| 1297 | - | |
| 1298 | -/***/ "./node_modules/crypto-js/x64-core.js": | |
| 1299 | -/*!********************************************!*\ | |
| 1300 | - !*** ./node_modules/crypto-js/x64-core.js ***! | |
| 1301 | - \********************************************/ | |
| 1302 | -/*! no static exports found */ | |
| 1303 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1304 | - | |
| 1305 | -eval(";\n\n(function (root, factory) {\n if (true) {\n // CommonJS\n module.exports = exports = factory(__webpack_require__(/*! ./core */ \"./node_modules/crypto-js/core.js\"));\n } else {}\n})(this, function (CryptoJS) {\n (function (undefined) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var Base = C_lib.Base;\n var X32WordArray = C_lib.WordArray;\n /**\n * x64 namespace.\n */\n\n var C_x64 = C.x64 = {};\n /**\n * A 64-bit word.\n */\n\n var X64Word = C_x64.Word = Base.extend({\n /**\n * Initializes a newly created 64-bit word.\n *\n * @param {number} high The high 32 bits.\n * @param {number} low The low 32 bits.\n *\n * @example\n *\n * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n */\n init: function init(high, low) {\n this.high = high;\n this.low = low;\n }\n /**\n * Bitwise NOTs this word.\n *\n * @return {X64Word} A new x64-Word object after negating.\n *\n * @example\n *\n * var negated = x64Word.not();\n */\n // not: function () {\n // var high = ~this.high;\n // var low = ~this.low;\n // return X64Word.create(high, low);\n // },\n\n /**\n * Bitwise ANDs this word with the passed word.\n *\n * @param {X64Word} word The x64-Word to AND with this word.\n *\n * @return {X64Word} A new x64-Word object after ANDing.\n *\n * @example\n *\n * var anded = x64Word.and(anotherX64Word);\n */\n // and: function (word) {\n // var high = this.high & word.high;\n // var low = this.low & word.low;\n // return X64Word.create(high, low);\n // },\n\n /**\n * Bitwise ORs this word with the passed word.\n *\n * @param {X64Word} word The x64-Word to OR with this word.\n *\n * @return {X64Word} A new x64-Word object after ORing.\n *\n * @example\n *\n * var ored = x64Word.or(anotherX64Word);\n */\n // or: function (word) {\n // var high = this.high | word.high;\n // var low = this.low | word.low;\n // return X64Word.create(high, low);\n // },\n\n /**\n * Bitwise XORs this word with the passed word.\n *\n * @param {X64Word} word The x64-Word to XOR with this word.\n *\n * @return {X64Word} A new x64-Word object after XORing.\n *\n * @example\n *\n * var xored = x64Word.xor(anotherX64Word);\n */\n // xor: function (word) {\n // var high = this.high ^ word.high;\n // var low = this.low ^ word.low;\n // return X64Word.create(high, low);\n // },\n\n /**\n * Shifts this word n bits to the left.\n *\n * @param {number} n The number of bits to shift.\n *\n * @return {X64Word} A new x64-Word object after shifting.\n *\n * @example\n *\n * var shifted = x64Word.shiftL(25);\n */\n // shiftL: function (n) {\n // if (n < 32) {\n // var high = (this.high << n) | (this.low >>> (32 - n));\n // var low = this.low << n;\n // } else {\n // var high = this.low << (n - 32);\n // var low = 0;\n // }\n // return X64Word.create(high, low);\n // },\n\n /**\n * Shifts this word n bits to the right.\n *\n * @param {number} n The number of bits to shift.\n *\n * @return {X64Word} A new x64-Word object after shifting.\n *\n * @example\n *\n * var shifted = x64Word.shiftR(7);\n */\n // shiftR: function (n) {\n // if (n < 32) {\n // var low = (this.low >>> n) | (this.high << (32 - n));\n // var high = this.high >>> n;\n // } else {\n // var low = this.high >>> (n - 32);\n // var high = 0;\n // }\n // return X64Word.create(high, low);\n // },\n\n /**\n * Rotates this word n bits to the left.\n *\n * @param {number} n The number of bits to rotate.\n *\n * @return {X64Word} A new x64-Word object after rotating.\n *\n * @example\n *\n * var rotated = x64Word.rotL(25);\n */\n // rotL: function (n) {\n // return this.shiftL(n).or(this.shiftR(64 - n));\n // },\n\n /**\n * Rotates this word n bits to the right.\n *\n * @param {number} n The number of bits to rotate.\n *\n * @return {X64Word} A new x64-Word object after rotating.\n *\n * @example\n *\n * var rotated = x64Word.rotR(7);\n */\n // rotR: function (n) {\n // return this.shiftR(n).or(this.shiftL(64 - n));\n // },\n\n /**\n * Adds this word with the passed word.\n *\n * @param {X64Word} word The x64-Word to add with this word.\n *\n * @return {X64Word} A new x64-Word object after adding.\n *\n * @example\n *\n * var added = x64Word.add(anotherX64Word);\n */\n // add: function (word) {\n // var low = (this.low + word.low) | 0;\n // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n // var high = (this.high + word.high + carry) | 0;\n // return X64Word.create(high, low);\n // }\n\n });\n /**\n * An array of 64-bit words.\n *\n * @property {Array} words The array of CryptoJS.x64.Word objects.\n * @property {number} sigBytes The number of significant bytes in this word array.\n */\n\n var X64WordArray = C_x64.WordArray = Base.extend({\n /**\n * Initializes a newly created word array.\n *\n * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n *\n * @example\n *\n * var wordArray = CryptoJS.x64.WordArray.create();\n *\n * var wordArray = CryptoJS.x64.WordArray.create([\n * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n * ]);\n *\n * var wordArray = CryptoJS.x64.WordArray.create([\n * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n * ], 10);\n */\n init: function init(words, sigBytes) {\n words = this.words = words || [];\n\n if (sigBytes != undefined) {\n this.sigBytes = sigBytes;\n } else {\n this.sigBytes = words.length * 8;\n }\n },\n\n /**\n * Converts this 64-bit word array to a 32-bit word array.\n *\n * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n *\n * @example\n *\n * var x32WordArray = x64WordArray.toX32();\n */\n toX32: function toX32() {\n // Shortcuts\n var x64Words = this.words;\n var x64WordsLength = x64Words.length; // Convert\n\n var x32Words = [];\n\n for (var i = 0; i < x64WordsLength; i++) {\n var x64Word = x64Words[i];\n x32Words.push(x64Word.high);\n x32Words.push(x64Word.low);\n }\n\n return X32WordArray.create(x32Words, this.sigBytes);\n },\n\n /**\n * Creates a copy of this word array.\n *\n * @return {X64WordArray} The clone.\n *\n * @example\n *\n * var clone = x64WordArray.clone();\n */\n clone: function clone() {\n var clone = Base.clone.call(this); // Clone \"words\" array\n\n var words = clone.words = this.words.slice(0); // Clone each X64Word object\n\n var wordsLength = words.length;\n\n for (var i = 0; i < wordsLength; i++) {\n words[i] = words[i].clone();\n }\n\n return clone;\n }\n });\n })();\n\n return CryptoJS;\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/crypto-js/x64-core.js?"); | |
| 1306 | - | |
| 1307 | -/***/ }), | |
| 1308 | - | |
| 1309 | -/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/font/iconfont.css": | |
| 1310 | -/*!************************************************************************************************************!*\ | |
| 1311 | - !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/font/iconfont.css ***! | |
| 1312 | - \************************************************************************************************************/ | |
| 1313 | -/*! no static exports found */ | |
| 1314 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1315 | - | |
| 1316 | -eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_GET_URL_IMPORT___ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/getUrl.js */ \"./node_modules/css-loader/dist/runtime/getUrl.js\");\nvar ___CSS_LOADER_URL_IMPORT_0___ = __webpack_require__(/*! ./iconfont.woff?t=1650593394582 */ \"./src/font/iconfont.woff?t=1650593394582\");\nvar ___CSS_LOADER_URL_IMPORT_1___ = __webpack_require__(/*! ./iconfont.ttf?t=1650593394582 */ \"./src/font/iconfont.ttf?t=1650593394582\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\n// Module\nexports.push([module.i, \"@font-face {\\n font-family: \\\"vssfont\\\";\\n /* Project id 3338995 */\\n src: url(\\\"data:application/x-font-woff2;charset=utf-8;base64,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\\\") format(\\\"woff2\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") format(\\\"woff\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format(\\\"truetype\\\"); }\\n\\n.vssfont {\\n font-family: \\\"vssfont\\\" !important;\\n font-size: 16px;\\n font-style: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale; }\\n\\n.vss-video-ratio-1:before {\\n content: \\\"\\\\ea41\\\"; }\\n\\n.vss-fullscreen1:before {\\n content: \\\"\\\\e60a\\\"; }\\n\\n.vss-video-ratio:before {\\n content: \\\"\\\\e661\\\"; }\\n\\n.vss-video-fill:before {\\n content: \\\"\\\\e671\\\"; }\\n\\n.vss-video-fill-1:before {\\n content: \\\"\\\\e600\\\"; }\\n\\n.vss-mute:before {\\n content: \\\"\\\\e851\\\"; }\\n\\n.vss-pause:before {\\n content: \\\"\\\\ea8a\\\"; }\\n\\n.vss-play:before {\\n content: \\\"\\\\e653\\\"; }\\n\\n.vss-open-voice:before {\\n content: \\\"\\\\e753\\\"; }\\n\\n.vss-snapshot:before {\\n content: \\\"\\\\e604\\\"; }\\n\\n.vss-stop:before {\\n content: \\\"\\\\e611\\\"; }\\n\\n.vss-mode:before {\\n content: \\\"\\\\e61e\\\"; }\\n\\n.vss-cancel-fullscreen:before {\\n content: \\\"\\\\e61f\\\"; }\\n\\n.vss-fullscreen:before {\\n content: \\\"\\\\e620\\\"; }\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack://WebMediaPlayer/./src/font/iconfont.css?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js"); | |
| 1317 | - | |
| 1318 | -/***/ }), | |
| 1319 | - | |
| 1320 | -/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/styles/index.css": | |
| 1321 | -/*!***********************************************************************************************************!*\ | |
| 1322 | - !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/styles/index.css ***! | |
| 1323 | - \***********************************************************************************************************/ | |
| 1324 | -/*! no static exports found */ | |
| 1325 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1326 | - | |
| 1327 | -eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \"@charset \\\"UTF-8\\\";\\n.vss-loading {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n margin: auto;\\n background-color: rgba(0, 0, 0, 0.6);\\n z-index: 9; }\\n\\n.vss-loading-center {\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n display: flex;\\n align-items: center;\\n flex-direction: column;\\n justify-content: center; }\\n\\n.vss-loading-icon {\\n display: block;\\n margin-bottom: 5px;\\n border: 3px solid #f3f3f3;\\n border-radius: 50%;\\n border-top: 3px solid #ad2605;\\n width: 25px;\\n height: 25px;\\n animation: load .5s linear infinite; }\\n\\n.vss-loading-img {\\n margin-bottom: 5px;\\n width: 40px;\\n height: 40px; }\\n\\n.vss-loading-text {\\n color: #ffffff;\\n font-size: 14px; }\\n\\n.vss-canvas {\\n width: 100%;\\n height: 100%;\\n position: absolute;\\n top: 0;\\n left: 0;\\n background: #000000; }\\n\\n.vss-big-play-button {\\n position: absolute;\\n z-index: 100;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n width: 50px;\\n height: 50px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n margin: auto;\\n color: #ffffff;\\n border-radius: 50%;\\n background-color: rgba(255, 255, 255, 0.4); }\\n\\n.vss-big-play-icon {\\n font-size: 24px;\\n margin-left: 3px; }\\n\\n.vss-pointer {\\n cursor: pointer; }\\n\\n.vss-control-show .vss-control-bar {\\n opacity: 1;\\n visibility: visible; }\\n\\n.vss-control-bar {\\n height: 34px;\\n position: absolute;\\n bottom: 0;\\n width: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n color: #ffffff;\\n background-color: rgba(43, 51, 63, 0.7);\\n z-index: 20;\\n opacity: 0;\\n visibility: hidden;\\n transition: all .2s ease-in-out; }\\n\\n.vss-control-bar-right, .vss-control-bar-left {\\n display: flex;\\n align-items: center;\\n flex-shrink: 0; }\\n\\n.vss-full-screen-btn {\\n width: 34px;\\n height: 34px;\\n display: flex;\\n align-items: center;\\n justify-content: center; }\\n\\n.vss-control-btn {\\n width: 34px;\\n height: 34px;\\n display: flex;\\n align-items: center;\\n justify-content: center; }\\n\\n.vss-item-box {\\n height: 34px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n padding: 0 5px; }\\n\\n.vss-control-bar-conter {\\n width: 100%; }\\n\\n/*回放进度条*/\\n.vss-time-box {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n color: #ffffff; }\\n\\n.vss-time-left-text, .vss-time-right-text {\\n flex-shrink: 0;\\n font-size: 13px;\\n margin: 0 5px; }\\n\\n.vss-time-schedule {\\n width: 100%;\\n padding: 0 5px; }\\n\\n.vss-time-track-out {\\n position: relative;\\n width: 100%;\\n height: 3px;\\n vertical-align: middle; }\\n\\n.vss-time-track {\\n position: relative;\\n width: 100%;\\n height: 3px;\\n background-color: #ffffff;\\n vertical-align: middle;\\n cursor: pointer;\\n border-radius: 3px; }\\n\\n/*.vss-time-track:hover {*/\\n/* height: 5px;*/\\n/*}*/\\n.vss-time-progress {\\n position: absolute;\\n left: 0;\\n top: 0;\\n height: 100%;\\n width: 0;\\n background-color: #00ABBE;\\n border-top-left-radius: 3px;\\n border-bottom-left-radius: 3px;\\n user-select: none; }\\n\\n/*.vss-time-track:hover + .vss-time-button-wrapper {*/\\n/* top: -3.5px;*/\\n/*}*/\\n.vss-time-button-wrapper {\\n height: 12px;\\n width: 12px;\\n position: absolute;\\n z-index: 1001;\\n top: -5px;\\n transform: translateX(-50%);\\n background-color: transparent;\\n text-align: center;\\n user-select: none;\\n line-height: normal;\\n cursor: pointer; }\\n\\n.vss-time-button-wrapper:hover .vss-time-button-wrapper_tip:not(.vss-hide) {\\n display: block; }\\n\\n.vss-time-button-wrapper_tip {\\n display: none;\\n position: absolute;\\n top: -30px;\\n background-color: rgba(0, 0, 0, 0.5);\\n border: 1px solid rgba(0, 0, 0, 0.6);\\n padding: 2px 5px;\\n color: #ffffff;\\n height: 16px;\\n z-index: 10;\\n border-radius: 3px;\\n transform: translateX(calc(-50% + 6px));\\n white-space: nowrap; }\\n\\n.vss-time-button-wrapper_tip:after {\\n position: absolute;\\n content: '';\\n left: 0;\\n right: 0;\\n margin: 0 auto;\\n width: 0;\\n bottom: -6px;\\n border-top: 5px solid rgba(0, 0, 0, 0.5);\\n border-left: 5px solid transparent;\\n border-right: 5px solid transparent; }\\n\\n.vss-time-button-wrapper_button {\\n width: 12px;\\n height: 12px;\\n border: 1px solid #333;\\n background-color: #fff;\\n border-radius: 50%;\\n transition: .2s;\\n user-select: none; }\\n\\n.vss-time-button-wrapper_button:hover {\\n transform: scale(1.2); }\\n\\n.vss-full-screen-btn span {\\n font-size: 18px; }\\n\\n.vss-poster-box {\\n width: 100%;\\n height: 100%;\\n position: absolute;\\n top: 0;\\n left: 0;\\n overflow: hidden; }\\n\\n.vss-poster-image {\\n width: 100%;\\n height: 100%; }\\n\\n@keyframes load {\\n 0% {\\n transform: rotate(0deg); }\\n 100% {\\n transform: rotate(360deg); } }\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack://WebMediaPlayer/./src/styles/index.css?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js"); | |
| 1328 | - | |
| 1329 | -/***/ }), | |
| 1330 | - | |
| 1331 | -/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/styles/index.scss": | |
| 1332 | -/*!************************************************************************************************************!*\ | |
| 1333 | - !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/styles/index.scss ***! | |
| 1334 | - \************************************************************************************************************/ | |
| 1335 | -/*! no static exports found */ | |
| 1336 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1337 | - | |
| 1338 | -eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \"@charset \\\"UTF-8\\\";\\n.vss-player {\\n -moz-user-select: none;\\n /* Firefox私有属性 */\\n -webkit-user-select: none;\\n /* WebKit内核私有属性 */\\n -ms-user-select: none;\\n /* IE私有属性(IE10及以后) */\\n -khtml-user-select: none;\\n /* KHTML内核私有属性 */\\n -o-user-select: none;\\n /* Opera私有属性 */\\n user-select: none;\\n /* CSS3属性 */\\n z-index: 5; }\\n .vss-player:after {\\n position: absolute;\\n content: '';\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n margin: auto;\\n z-index: 10; }\\n\\n.vss-shade {\\n /* 要设置 x 轴和 y 轴的阴影都是 0 */\\n box-shadow: 0 0 5px rgba(0, 0, 0, 0.5); }\\n\\n.vss-mask {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n margin: auto;\\n background-color: rgba(0, 0, 0, 0.6);\\n z-index: 9; }\\n\\n.vss-mask-center {\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n display: flex;\\n align-items: center;\\n flex-direction: column;\\n justify-content: center; }\\n\\n.vss-loading-logo-img {\\n display: block;\\n width: 240px;\\n margin-bottom: 5px; }\\n\\n.vss-loading-logo-text {\\n letter-spacing: 2px;\\n text-align: center;\\n font-size: 18px;\\n font-weight: 600;\\n background: linear-gradient(90deg, #833ab4 0%, #fd1d1d 33.3%, #fcb045 66.6%, #833ab4 100%);\\n -webkit-background-clip: text;\\n /*截取背景区域为文字*/\\n color: transparent;\\n background-size: 300% 100%;\\n /*扩大背景区域*/\\n animation: logoText-animation 4s infinite linear; }\\n\\n@keyframes logoText-animation {\\n 0% {\\n background-position: 0 0; }\\n 100% {\\n background-position: -150% 0; } }\\n\\n.vss-show {\\n display: block !important; }\\n\\n.vss-hide {\\n display: none !important; }\\n\\n/*禁止复制*/\\n.no-copy {\\n -moz-user-select: none;\\n /* Firefox私有属性 */\\n -webkit-user-select: none;\\n /* WebKit内核私有属性 */\\n -ms-user-select: none;\\n /* IE私有属性(IE10及以后) */\\n -khtml-user-select: none;\\n /* KHTML内核私有属性 */\\n -o-user-select: none;\\n /* Opera私有属性 */\\n user-select: none;\\n /* CSS3属性 */ }\\n\\n.vss-contextm-menu {\\n position: absolute;\\n top: 0;\\n left: 0;\\n color: #333;\\n background-color: #ffffff;\\n padding: 5px 0;\\n opacity: 0;\\n visibility: hidden;\\n margin: 0;\\n border-radius: 2px;\\n z-index: 10005;\\n list-style: none;\\n box-shadow: 0 1.5px 4px rgba(0, 0, 0, 0.24), 0 1.5px 6px rgba(0, 0, 0, 0.12);\\n font-family: Roboto-Medium, 'Noto Sans CJK DemiLight', 'Microsoft YaHei', Arial, Helvetica, sans-serif;\\n box-sizing: initial; }\\n .vss-contextm-menu.vss-contextm-menu-show {\\n opacity: 1;\\n visibility: visible; }\\n .vss-contextm-menu li {\\n position: relative;\\n max-width: 360px;\\n padding: 5px 15px;\\n text-align: left;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n font-size: 14px;\\n color: #383838;\\n transition: all .2s;\\n user-select: none;\\n cursor: pointer; }\\n .vss-contextm-menu li:hover {\\n background-color: #c8c8c8; }\\n\\n.vss-message-box {\\n position: absolute;\\n bottom: 34px;\\n left: 0;\\n z-index: 10;\\n max-height: 200px;\\n padding: 0 15px;\\n opacity: 1;\\n visibility: visible;\\n transition: all .2s ease-in-out; }\\n .vss-message-box .vss-message-item {\\n color: #c1c1c1;\\n font-size: 12px;\\n text-shadow: 1px 1px 2px #000000; }\\n .vss-message-box.vss-message-hide {\\n opacity: 0;\\n visibility: hidden; }\\n\\n.vss-export-message-box {\\n position: absolute;\\n bottom: 34px;\\n right: 0;\\n z-index: 10;\\n max-height: 200px;\\n max-width: 200px;\\n padding: 0 15px;\\n opacity: 1;\\n visibility: visible;\\n transition: all .2s ease-in-out; }\\n .vss-export-message-box .vss-export-message-item {\\n color: #c1c1c1;\\n font-size: 12px;\\n text-shadow: 1px 1px 2px #000000; }\\n .vss-export-message-box.vss-export-message-hide {\\n opacity: 0;\\n visibility: hidden; }\\n\\n.vss-osd-message-box {\\n position: absolute;\\n background-color: rgba(0, 0, 0, 0.5);\\n z-index: 10;\\n max-height: 15em;\\n max-width: 30em;\\n overflow: hidden;\\n padding: 1em;\\n opacity: 1;\\n visibility: visible;\\n height: fit-content;\\n color: #c1c1c1; }\\n .vss-osd-message-box.pos_righttop {\\n right: 1em;\\n top: 1em; }\\n .vss-osd-message-box.pos_lefttop {\\n left: 1em;\\n top: 1em; }\\n .vss-osd-message-box.pos_rightbottom {\\n right: 1em;\\n bottom: 40px; }\\n .vss-osd-message-box.pos_leftbottom {\\n left: 1em;\\n bottom: 40px; }\\n .vss-osd-message-box.pos_center {\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%); }\\n .vss-osd-message-box .vss-osd-message-item {\\n font-size: 12px; }\\n .vss-osd-message-box .vss-osd-message-item.vss-move-top {\\n margin-top: -1em; }\\n .vss-osd-message-box.vss-osd-message-hide {\\n opacity: 0;\\n visibility: hidden; }\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack://WebMediaPlayer/./src/styles/index.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js"); | |
| 1339 | - | |
| 1340 | -/***/ }), | |
| 1341 | - | |
| 1342 | -/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/styles/range.css": | |
| 1343 | -/*!***********************************************************************************************************!*\ | |
| 1344 | - !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/styles/range.css ***! | |
| 1345 | - \***********************************************************************************************************/ | |
| 1346 | -/*! no static exports found */ | |
| 1347 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1348 | - | |
| 1349 | -eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \"@charset \\\"UTF-8\\\";\\ninput[type=range] {\\n -webkit-appearance: none; }\\n\\ninput[type=range]::-webkit-slider-thumb {\\n -webkit-appearance: none; }\\n\\ninput[type=range]::-webkit-slider-runnable-track {\\n height: 15px;\\n border-radius: 10px;\\n /*将轨道设为圆角的*/ }\\n\\ninput[type=range]:focus {\\n outline: none; }\\n\\ninput[type=range]::-webkit-slider-thumb {\\n -webkit-appearance: none;\\n height: 15px;\\n width: 15px;\\n margin-top: -2px;\\n /*使滑块超出轨道部分的偏移量相等*/\\n background: #ffffff;\\n border-radius: 50%;\\n /*外观设置为圆形*/ }\\n\\n.conter {\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%); }\\n\\n.Loding {\\n margin: 0 auto;\\n margin-bottom: 5px;\\n border: 3px solid #f3f3f3;\\n border-radius: 50%;\\n border-top: 3px solid #2e8e9a;\\n width: 25px;\\n height: 25px;\\n /* animation-name:load; */\\n animation: load .5s linear infinite; }\\n\\n.LodingTitle {\\n margin-top: 20px;\\n color: #fff;\\n font-size: 14px; }\\n\\n@keyframes load {\\n 0% {\\n transform: rotate(0deg); }\\n 100% {\\n transform: rotate(360deg); } }\\n\\n/* 中间大播放按钮样式 */\\n.bigPlayBox {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n background-color: rgba(0, 0, 0, 0.5);\\n cursor: pointer;\\n width: 80px;\\n height: 80px;\\n border-radius: 40px;\\n text-align: center;\\n line-height: 80px;\\n font-size: 36px;\\n color: #fff;\\n z-index: 9; }\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack://WebMediaPlayer/./src/styles/range.css?./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js"); | |
| 1350 | - | |
| 1351 | -/***/ }), | |
| 1352 | - | |
| 1353 | -/***/ "./node_modules/css-loader/dist/runtime/api.js": | |
| 1354 | -/*!*****************************************************!*\ | |
| 1355 | - !*** ./node_modules/css-loader/dist/runtime/api.js ***! | |
| 1356 | - \*****************************************************/ | |
| 1357 | -/*! no static exports found */ | |
| 1358 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1359 | - | |
| 1360 | -"use strict"; | |
| 1361 | -eval("\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\n\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/css-loader/dist/runtime/api.js?"); | |
| 1362 | - | |
| 1363 | -/***/ }), | |
| 1364 | - | |
| 1365 | -/***/ "./node_modules/css-loader/dist/runtime/getUrl.js": | |
| 1366 | -/*!********************************************************!*\ | |
| 1367 | - !*** ./node_modules/css-loader/dist/runtime/getUrl.js ***! | |
| 1368 | - \********************************************************/ | |
| 1369 | -/*! no static exports found */ | |
| 1370 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1371 | - | |
| 1372 | -"use strict"; | |
| 1373 | -eval("\n\nmodule.exports = function (url, options) {\n if (!options) {\n // eslint-disable-next-line no-param-reassign\n options = {};\n } // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n\n\n url = url && url.__esModule ? url.default : url;\n\n if (typeof url !== 'string') {\n return url;\n } // If url is already wrapped in quotes, remove them\n\n\n if (/^['\"].*['\"]$/.test(url)) {\n // eslint-disable-next-line no-param-reassign\n url = url.slice(1, -1);\n }\n\n if (options.hash) {\n // eslint-disable-next-line no-param-reassign\n url += options.hash;\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n'), \"\\\"\");\n }\n\n return url;\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/css-loader/dist/runtime/getUrl.js?"); | |
| 1374 | - | |
| 1375 | -/***/ }), | |
| 1376 | - | |
| 1377 | -/***/ "./node_modules/des.js/lib/des.js": | |
| 1378 | -/*!****************************************!*\ | |
| 1379 | - !*** ./node_modules/des.js/lib/des.js ***! | |
| 1380 | - \****************************************/ | |
| 1381 | -/*! no static exports found */ | |
| 1382 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1383 | - | |
| 1384 | -"use strict"; | |
| 1385 | -eval("\n\nexports.utils = __webpack_require__(/*! ./des/utils */ \"./node_modules/des.js/lib/des/utils.js\");\nexports.Cipher = __webpack_require__(/*! ./des/cipher */ \"./node_modules/des.js/lib/des/cipher.js\");\nexports.DES = __webpack_require__(/*! ./des/des */ \"./node_modules/des.js/lib/des/des.js\");\nexports.CBC = __webpack_require__(/*! ./des/cbc */ \"./node_modules/des.js/lib/des/cbc.js\");\nexports.EDE = __webpack_require__(/*! ./des/ede */ \"./node_modules/des.js/lib/des/ede.js\");\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/des.js/lib/des.js?"); | |
| 1386 | - | |
| 1387 | -/***/ }), | |
| 1388 | - | |
| 1389 | -/***/ "./node_modules/des.js/lib/des/cbc.js": | |
| 1390 | -/*!********************************************!*\ | |
| 1391 | - !*** ./node_modules/des.js/lib/des/cbc.js ***! | |
| 1392 | - \********************************************/ | |
| 1393 | -/*! no static exports found */ | |
| 1394 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1395 | - | |
| 1396 | -"use strict"; | |
| 1397 | -eval("\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n this.iv = new Array(8);\n\n for (var i = 0; i < this.iv.length; i++) {\n this.iv[i] = iv[i];\n }\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n\n this._cbcInit();\n }\n\n inherits(CBC, Base);\n var keys = Object.keys(proto);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n var iv = state.iv;\n\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++) {\n iv[i] ^= inp[inOff + i];\n }\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++) {\n iv[i] = out[outOff + i];\n }\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++) {\n out[outOff + i] ^= iv[i];\n }\n\n for (var i = 0; i < this.blockSize; i++) {\n iv[i] = inp[inOff + i];\n }\n }\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/des.js/lib/des/cbc.js?"); | |
| 1398 | - | |
| 1399 | -/***/ }), | |
| 1400 | - | |
| 1401 | -/***/ "./node_modules/des.js/lib/des/cipher.js": | |
| 1402 | -/*!***********************************************!*\ | |
| 1403 | - !*** ./node_modules/des.js/lib/des/cipher.js ***! | |
| 1404 | - \***********************************************/ | |
| 1405 | -/*! no static exports found */ | |
| 1406 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1407 | - | |
| 1408 | -"use strict"; | |
| 1409 | -eval("\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\");\n\nfunction Cipher(options) {\n this.options = options;\n this.type = this.options.type;\n this.blockSize = 8;\n\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\n\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {// Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0) return [];\n if (this.type === 'decrypt') return this._updateDecrypt(data);else return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n\n for (var i = 0; i < min; i++) {\n this.buffer[this.bufferOff + i] = data[off + i];\n }\n\n this.bufferOff += min; // Shift next\n\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n var count = (this.bufferOff + data.length) / this.blockSize | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n if (this.bufferOff === this.buffer.length) outputOff += this._flushBuffer(out, outputOff);\n } // Write blocks\n\n\n var max = data.length - (data.length - inputOff) % this.blockSize;\n\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n\n outputOff += this.blockSize;\n } // Queue rest\n\n\n for (; inputOff < data.length; inputOff++, this.bufferOff++) {\n this.buffer[this.bufferOff] = data[inputOff];\n }\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize); // TODO(indutny): optimize it, this is far from optimal\n\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n } // Buffer rest of the input\n\n\n inputOff += this._buffer(data, inputOff);\n return out;\n};\n\nCipher.prototype.final = function _final(buffer) {\n var first;\n if (buffer) first = this.update(buffer);\n var last;\n if (this.type === 'encrypt') last = this._finalEncrypt();else last = this._finalDecrypt();\n if (first) return first.concat(last);else return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0) return false;\n\n while (off < buffer.length) {\n buffer[off++] = 0;\n }\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff)) return [];\n var out = new Array(this.blockSize);\n\n this._update(this.buffer, 0, out, 0);\n\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/des.js/lib/des/cipher.js?"); | |
| 1410 | - | |
| 1411 | -/***/ }), | |
| 1412 | - | |
| 1413 | -/***/ "./node_modules/des.js/lib/des/des.js": | |
| 1414 | -/*!********************************************!*\ | |
| 1415 | - !*** ./node_modules/des.js/lib/des/des.js ***! | |
| 1416 | - \********************************************/ | |
| 1417 | -/*! no static exports found */ | |
| 1418 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1419 | - | |
| 1420 | -"use strict"; | |
| 1421 | -eval("\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/des.js/lib/des/utils.js\");\n\nvar Cipher = __webpack_require__(/*! ./cipher */ \"./node_modules/des.js/lib/des/cipher.js\");\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n var state = new DESState();\n this._desState = state;\n this.deriveKeys(state, options.key);\n}\n\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4); // Initial Permutation\n\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n if (this.type === 'encrypt') this._encrypt(state, l, r, state.tmp, 0);else this._decrypt(state, l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n\n for (var i = off; i < buffer.length; i++) {\n buffer[i] = value;\n }\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n\n for (var i = buffer.length - pad; i < buffer.length; i++) {\n assert.equal(buffer[i], pad);\n }\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart; // Apply f() x16 times\n\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1]; // f(r, k)\n\n utils.expand(r, state.tmp, 0);\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n } // Reverse Initial Permutation\n\n\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart; // Apply f() x16 times\n\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1]; // f(r, k)\n\n utils.expand(l, state.tmp, 0);\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n } // Reverse Initial Permutation\n\n\n utils.rip(l, r, out, off);\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/des.js/lib/des/des.js?"); | |
| 1422 | - | |
| 1423 | -/***/ }), | |
| 1424 | - | |
| 1425 | -/***/ "./node_modules/des.js/lib/des/ede.js": | |
| 1426 | -/*!********************************************!*\ | |
| 1427 | - !*** ./node_modules/des.js/lib/des/ede.js ***! | |
| 1428 | - \********************************************/ | |
| 1429 | -/*! no static exports found */ | |
| 1430 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1431 | - | |
| 1432 | -"use strict"; | |
| 1433 | -eval("\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar Cipher = __webpack_require__(/*! ./cipher */ \"./node_modules/des.js/lib/des/cipher.js\");\n\nvar DES = __webpack_require__(/*! ./des */ \"./node_modules/des.js/lib/des/des.js\");\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [DES.create({\n type: 'encrypt',\n key: k1\n }), DES.create({\n type: 'decrypt',\n key: k2\n }), DES.create({\n type: 'encrypt',\n key: k3\n })];\n } else {\n this.ciphers = [DES.create({\n type: 'decrypt',\n key: k3\n }), DES.create({\n type: 'encrypt',\n key: k2\n }), DES.create({\n type: 'decrypt',\n key: k1\n })];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\n\ninherits(EDE, Cipher);\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n\n state.ciphers[1]._update(out, outOff, out, outOff);\n\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/des.js/lib/des/ede.js?"); | |
| 1434 | - | |
| 1435 | -/***/ }), | |
| 1436 | - | |
| 1437 | -/***/ "./node_modules/des.js/lib/des/utils.js": | |
| 1438 | -/*!**********************************************!*\ | |
| 1439 | - !*** ./node_modules/des.js/lib/des/utils.js ***! | |
| 1440 | - \**********************************************/ | |
| 1441 | -/*! no static exports found */ | |
| 1442 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1443 | - | |
| 1444 | -"use strict"; | |
| 1445 | -eval("\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = bytes[0 + off] << 24 | bytes[1 + off] << 16 | bytes[2 + off] << 8 | bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = value >>> 16 & 0xff;\n bytes[2 + off] = value >>> 8 & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inR >>> j + i & 1;\n }\n\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inL >>> j + i & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= inR >>> j + i & 1;\n }\n\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= inL >>> j + i & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= inR >>> j + i & 1;\n outL <<= 1;\n outL |= inL >>> j + i & 1;\n }\n }\n\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= inR >>> j + i & 1;\n outR <<= 1;\n outR |= inL >>> j + i & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0; // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inR >> j + i & 1;\n }\n\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inL >> j + i & 1;\n }\n }\n\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inR >> j + i & 1;\n } // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n\n\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= inR >> j + i & 1;\n }\n\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= inL >> j + i & 1;\n }\n }\n\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= inL >> j + i & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return num << shift & 0xfffffff | num >>> 28 - shift;\n};\n\nvar pc2table = [// inL => outL\n14, 11, 17, 4, 27, 23, 25, 0, 13, 22, 7, 18, 5, 9, 16, 24, 2, 20, 12, 21, 1, 8, 15, 26, // inR => outR\n15, 4, 25, 19, 9, 1, 26, 16, 5, 11, 23, 8, 12, 7, 17, 0, 22, 3, 10, 14, 6, 20, 27, 24];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n var len = pc2table.length >>> 1;\n\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= inL >>> pc2table[i] & 0x1;\n }\n\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= inR >>> pc2table[i] & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n outL = (r & 1) << 5 | r >>> 27;\n\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= r >>> i & 0x3f;\n }\n\n for (var i = 11; i >= 3; i -= 4) {\n outR |= r >>> i & 0x3f;\n outR <<= 6;\n }\n\n outR |= (r & 0x1f) << 1 | r >>> 31;\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1, 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8, 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7, 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13, 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14, 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5, 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2, 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9, 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10, 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1, 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7, 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12, 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3, 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9, 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8, 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14, 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1, 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6, 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13, 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3, 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5, 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8, 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10, 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13, 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10, 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6, 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7, 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12, 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4, 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2, 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13, 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n\n for (var i = 0; i < 4; i++) {\n var b = inL >>> 18 - i * 6 & 0x3f;\n var sb = sTable[i * 0x40 + b];\n out <<= 4;\n out |= sb;\n }\n\n for (var i = 0; i < 4; i++) {\n var b = inR >>> 18 - i * 6 & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n out <<= 4;\n out |= sb;\n }\n\n return out >>> 0;\n};\n\nvar permuteTable = [16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22, 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7];\n\nexports.permute = function permute(num) {\n var out = 0;\n\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= num >>> permuteTable[i] & 0x1;\n }\n\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n\n while (str.length < size) {\n str = '0' + str;\n }\n\n var out = [];\n\n for (var i = 0; i < size; i += group) {\n out.push(str.slice(i, i + group));\n }\n\n return out.join(' ');\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/des.js/lib/des/utils.js?"); | |
| 1446 | - | |
| 1447 | -/***/ }), | |
| 1448 | - | |
| 1449 | -/***/ "./node_modules/diffie-hellman/browser.js": | |
| 1450 | -/*!************************************************!*\ | |
| 1451 | - !*** ./node_modules/diffie-hellman/browser.js ***! | |
| 1452 | - \************************************************/ | |
| 1453 | -/*! no static exports found */ | |
| 1454 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1455 | - | |
| 1456 | -eval("/* WEBPACK VAR INJECTION */(function(Buffer) {var generatePrime = __webpack_require__(/*! ./lib/generatePrime */ \"./node_modules/diffie-hellman/lib/generatePrime.js\");\n\nvar primes = __webpack_require__(/*! ./lib/primes.json */ \"./node_modules/diffie-hellman/lib/primes.json\");\n\nvar DH = __webpack_require__(/*! ./lib/dh */ \"./node_modules/diffie-hellman/lib/dh.js\");\n\nfunction getDiffieHellman(mod) {\n var prime = new Buffer(primes[mod].prime, 'hex');\n var gen = new Buffer(primes[mod].gen, 'hex');\n return new DH(prime, gen);\n}\n\nvar ENCODINGS = {\n 'binary': true,\n 'hex': true,\n 'base64': true\n};\n\nfunction createDiffieHellman(prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator);\n }\n\n enc = enc || 'binary';\n genc = genc || 'binary';\n generator = generator || new Buffer([2]);\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc);\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true);\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc);\n }\n\n return new DH(prime, generator, true);\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman;\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node-libs-browser/node_modules/buffer/index.js */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/diffie-hellman/browser.js?"); | |
| 1457 | - | |
| 1458 | -/***/ }), | |
| 1459 | - | |
| 1460 | -/***/ "./node_modules/diffie-hellman/lib/dh.js": | |
| 1461 | -/*!***********************************************!*\ | |
| 1462 | - !*** ./node_modules/diffie-hellman/lib/dh.js ***! | |
| 1463 | - \***********************************************/ | |
| 1464 | -/*! no static exports found */ | |
| 1465 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1466 | - | |
| 1467 | -eval("/* WEBPACK VAR INJECTION */(function(Buffer) {var BN = __webpack_require__(/*! bn.js */ \"./node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js\");\n\nvar MillerRabin = __webpack_require__(/*! miller-rabin */ \"./node_modules/miller-rabin/lib/mr.js\");\n\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\n\nvar primes = __webpack_require__(/*! ./generatePrime */ \"./node_modules/diffie-hellman/lib/generatePrime.js\");\n\nvar randomBytes = __webpack_require__(/*! randombytes */ \"./node_modules/randombytes/browser.js\");\n\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\n\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n\n if (hex in primeCache) {\n return primeCache[hex];\n }\n\n var error = 0;\n\n if (prime.isEven() || !primes.simpleSieve || !primes.fermatTest(prime) || !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n\n primeCache[hex] = error;\n return error;\n }\n\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n\n var rem;\n\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n\n break;\n\n case '05':\n rem = prime.mod(TEN);\n\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n\n break;\n\n default:\n error += 4;\n }\n\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\n\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function get() {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n\n return this._primeCode;\n }\n});\n\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node-libs-browser/node_modules/buffer/index.js */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/diffie-hellman/lib/dh.js?"); | |
| 1468 | - | |
| 1469 | -/***/ }), | |
| 1470 | - | |
| 1471 | -/***/ "./node_modules/diffie-hellman/lib/generatePrime.js": | |
| 1472 | -/*!**********************************************************!*\ | |
| 1473 | - !*** ./node_modules/diffie-hellman/lib/generatePrime.js ***! | |
| 1474 | - \**********************************************************/ | |
| 1475 | -/*! no static exports found */ | |
| 1476 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1477 | - | |
| 1478 | -eval("var randomBytes = __webpack_require__(/*! randombytes */ \"./node_modules/randombytes/browser.js\");\n\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js\");\n\nvar TWENTYFOUR = new BN(24);\n\nvar MillerRabin = __webpack_require__(/*! miller-rabin */ \"./node_modules/miller-rabin/lib/mr.js\");\n\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null) return primes;\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n\n for (var j = 0; j < i && res[j] <= sqrt; j++) {\n if (k % res[j] === 0) break;\n }\n\n if (i !== j && res[j] <= sqrt) continue;\n res[i++] = k;\n }\n\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++) {\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n\n gen = new BN(gen);\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n\n if (num.isEven()) {\n num.iadd(ONE);\n }\n\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n\n n2 = num.shrn(1);\n\n if (simpleSieve(n2) && simpleSieve(num) && fermatTest(n2) && fermatTest(num) && millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n}\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/diffie-hellman/lib/generatePrime.js?"); | |
| 1479 | - | |
| 1480 | -/***/ }), | |
| 1481 | - | |
| 1482 | -/***/ "./node_modules/diffie-hellman/lib/primes.json": | |
| 1483 | -/*!*****************************************************!*\ | |
| 1484 | - !*** ./node_modules/diffie-hellman/lib/primes.json ***! | |
| 1485 | - \*****************************************************/ | |
| 1486 | -/*! exports provided: modp1, modp2, modp5, modp14, modp15, modp16, modp17, modp18, default */ | |
| 1487 | -/***/ (function(module) { | |
| 1488 | - | |
| 1489 | -eval("module.exports = JSON.parse(\"{\\\"modp1\\\":{\\\"gen\\\":\\\"02\\\",\\\"prime\\\":\\\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff\\\"},\\\"modp2\\\":{\\\"gen\\\":\\\"02\\\",\\\"prime\\\":\\\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff\\\"},\\\"modp5\\\":{\\\"gen\\\":\\\"02\\\",\\\"prime\\\":\\\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff\\\"},\\\"modp14\\\":{\\\"gen\\\":\\\"02\\\",\\\"prime\\\":\\\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff\\\"},\\\"modp15\\\":{\\\"gen\\\":\\\"02\\\",\\\"prime\\\":\\\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff\\\"},\\\"modp16\\\":{\\\"gen\\\":\\\"02\\\",\\\"prime\\\":\\\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff\\\"},\\\"modp17\\\":{\\\"gen\\\":\\\"02\\\",\\\"prime\\\":\\\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff\\\"},\\\"modp18\\\":{\\\"gen\\\":\\\"02\\\",\\\"prime\\\":\\\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff\\\"}}\");\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/diffie-hellman/lib/primes.json?"); | |
| 1490 | - | |
| 1491 | -/***/ }), | |
| 1492 | - | |
| 1493 | -/***/ "./node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js": | |
| 1494 | -/*!******************************************************************!*\ | |
| 1495 | - !*** ./node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js ***! | |
| 1496 | - \******************************************************************/ | |
| 1497 | -/*! no static exports found */ | |
| 1498 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1499 | - | |
| 1500 | -eval("/* WEBPACK VAR INJECTION */(function(module) {(function (module, exports) {\n 'use strict'; // Utils\n\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n } // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n\n\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n } // BN\n\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0; // Reduction context\n\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n var Buffer;\n\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = __webpack_require__(/*! buffer */ 4).Buffer;\n }\n } catch (e) {}\n\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n\n if (endian !== 'le') return; // Reverse the bytes\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray(number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n\n return this.strip();\n };\n\n function parseHex4Bits(string, index) {\n var c = string.charCodeAt(index); // 'A' - 'F'\n\n if (c >= 65 && c <= 70) {\n return c - 55; // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87; // '0' - '9'\n } else {\n return c - 48 & 0xf;\n }\n }\n\n function parseHexByte(string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex(number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n } // 24-bits chunks\n\n\n var off = 0;\n var j = 0;\n var w;\n\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase(str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul; // 'a'\n\n if (c >= 49) {\n r += c - 49 + 0xa; // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa; // '0' - '9'\n } else {\n r += c;\n }\n }\n\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase(number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1; // Find length of limb in base\n\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand(size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n\n return this;\n }; // Remove leading `0` from `this`\n\n\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign() {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n\n return this;\n };\n\n BN.prototype.inspect = function inspect() {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n */\n\n\n var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = ((w << off | carry) & 0xffffff).toString(16);\n carry = w >>> 24 - off & 0xffffff;\n\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n\n off += 2;\n\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base]; // var groupBase = Math.pow(base, groupSize);\n\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n\n if (this.isZero()) {\n out = '0' + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber() {\n var ret = this.words[0];\n\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + this.words[1] * 0x4000000;\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n\n return this.negative !== 0 ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\n var t = w;\n var r = 0;\n\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n\n if ((t & 0x1) === 0) {\n r++;\n }\n\n return r;\n }; // Return number of used bits in a BN\n\n\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n\n var hi = this._countBits(w);\n\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray(num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n\n return w;\n } // Number of trailing zero bits\n\n\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n\n r += b;\n if (b !== 26) break;\n }\n\n return r;\n };\n\n BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos(width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos(width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n }; // Return negative clone of `this`\n\n\n BN.prototype.neg = function neg() {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n }; // Or `num` with `this` in-place\n\n\n BN.prototype.iuor = function iuor(num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n }; // Or `num` with `this`\n\n\n BN.prototype.or = function or(num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor(num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n }; // And `num` with `this` in-place\n\n\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n return this.strip();\n };\n\n BN.prototype.iand = function iand(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n }; // And `num` with `this`\n\n\n BN.prototype.and = function and(num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand(num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n }; // Xor `num` with `this` in-place\n\n\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n }; // Xor `num` with `this`\n\n\n BN.prototype.xor = function xor(num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor(num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n }; // Not ``this`` with ``width`` bitwidth\n\n\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26; // Extend the buffer with leading zeroes\n\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n } // Handle complete words\n\n\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n } // Handle the residue\n\n\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n } // And remove leading zeroes\n\n\n return this.strip();\n };\n\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n }; // Set `bit` of `this`\n\n\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | 1 << wbit;\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n }; // Add `num` to `this` in-place\n\n\n BN.prototype.iadd = function iadd(num) {\n var r; // negative + positive\n\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign(); // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n } // a.length > b.length\n\n\n var a, b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++; // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n }; // Add `num` to `this`\n\n\n BN.prototype.add = function add(num) {\n var res;\n\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n return num.clone().iadd(this);\n }; // Subtract `num` from `this` in-place\n\n\n BN.prototype.isub = function isub(num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign(); // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n } // At this point both numbers are positive\n\n\n var cmp = this.cmp(num); // Optimization - zeroify\n\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n } // a > b\n\n\n var a, b;\n\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n } // Copy rest of the words\n\n\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n }; // Subtract `num` from `this`\n\n\n BN.prototype.sub = function sub(num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = self.length + num.length | 0;\n out.length = len;\n len = len - 1 | 0; // Peel one iteration (compiler can't do it, because of code complexity)\n\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += r / 0x4000000 | 0;\n rword = r & 0x3ffffff;\n }\n\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n } // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n\n\n var comb10MulTo = function comb10MulTo(self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = mid + Math.imul(ah0, bl0) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = mid + Math.imul(ah1, bl0) | 0;\n hi = Math.imul(ah1, bh0);\n lo = lo + Math.imul(al0, bl1) | 0;\n mid = mid + Math.imul(al0, bh1) | 0;\n mid = mid + Math.imul(ah0, bl1) | 0;\n hi = hi + Math.imul(ah0, bh1) | 0;\n var w1 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = mid + Math.imul(ah2, bl0) | 0;\n hi = Math.imul(ah2, bh0);\n lo = lo + Math.imul(al1, bl1) | 0;\n mid = mid + Math.imul(al1, bh1) | 0;\n mid = mid + Math.imul(ah1, bl1) | 0;\n hi = hi + Math.imul(ah1, bh1) | 0;\n lo = lo + Math.imul(al0, bl2) | 0;\n mid = mid + Math.imul(al0, bh2) | 0;\n mid = mid + Math.imul(ah0, bl2) | 0;\n hi = hi + Math.imul(ah0, bh2) | 0;\n var w2 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = mid + Math.imul(ah3, bl0) | 0;\n hi = Math.imul(ah3, bh0);\n lo = lo + Math.imul(al2, bl1) | 0;\n mid = mid + Math.imul(al2, bh1) | 0;\n mid = mid + Math.imul(ah2, bl1) | 0;\n hi = hi + Math.imul(ah2, bh1) | 0;\n lo = lo + Math.imul(al1, bl2) | 0;\n mid = mid + Math.imul(al1, bh2) | 0;\n mid = mid + Math.imul(ah1, bl2) | 0;\n hi = hi + Math.imul(ah1, bh2) | 0;\n lo = lo + Math.imul(al0, bl3) | 0;\n mid = mid + Math.imul(al0, bh3) | 0;\n mid = mid + Math.imul(ah0, bl3) | 0;\n hi = hi + Math.imul(ah0, bh3) | 0;\n var w3 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = mid + Math.imul(ah4, bl0) | 0;\n hi = Math.imul(ah4, bh0);\n lo = lo + Math.imul(al3, bl1) | 0;\n mid = mid + Math.imul(al3, bh1) | 0;\n mid = mid + Math.imul(ah3, bl1) | 0;\n hi = hi + Math.imul(ah3, bh1) | 0;\n lo = lo + Math.imul(al2, bl2) | 0;\n mid = mid + Math.imul(al2, bh2) | 0;\n mid = mid + Math.imul(ah2, bl2) | 0;\n hi = hi + Math.imul(ah2, bh2) | 0;\n lo = lo + Math.imul(al1, bl3) | 0;\n mid = mid + Math.imul(al1, bh3) | 0;\n mid = mid + Math.imul(ah1, bl3) | 0;\n hi = hi + Math.imul(ah1, bh3) | 0;\n lo = lo + Math.imul(al0, bl4) | 0;\n mid = mid + Math.imul(al0, bh4) | 0;\n mid = mid + Math.imul(ah0, bl4) | 0;\n hi = hi + Math.imul(ah0, bh4) | 0;\n var w4 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = mid + Math.imul(ah5, bl0) | 0;\n hi = Math.imul(ah5, bh0);\n lo = lo + Math.imul(al4, bl1) | 0;\n mid = mid + Math.imul(al4, bh1) | 0;\n mid = mid + Math.imul(ah4, bl1) | 0;\n hi = hi + Math.imul(ah4, bh1) | 0;\n lo = lo + Math.imul(al3, bl2) | 0;\n mid = mid + Math.imul(al3, bh2) | 0;\n mid = mid + Math.imul(ah3, bl2) | 0;\n hi = hi + Math.imul(ah3, bh2) | 0;\n lo = lo + Math.imul(al2, bl3) | 0;\n mid = mid + Math.imul(al2, bh3) | 0;\n mid = mid + Math.imul(ah2, bl3) | 0;\n hi = hi + Math.imul(ah2, bh3) | 0;\n lo = lo + Math.imul(al1, bl4) | 0;\n mid = mid + Math.imul(al1, bh4) | 0;\n mid = mid + Math.imul(ah1, bl4) | 0;\n hi = hi + Math.imul(ah1, bh4) | 0;\n lo = lo + Math.imul(al0, bl5) | 0;\n mid = mid + Math.imul(al0, bh5) | 0;\n mid = mid + Math.imul(ah0, bl5) | 0;\n hi = hi + Math.imul(ah0, bh5) | 0;\n var w5 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = mid + Math.imul(ah6, bl0) | 0;\n hi = Math.imul(ah6, bh0);\n lo = lo + Math.imul(al5, bl1) | 0;\n mid = mid + Math.imul(al5, bh1) | 0;\n mid = mid + Math.imul(ah5, bl1) | 0;\n hi = hi + Math.imul(ah5, bh1) | 0;\n lo = lo + Math.imul(al4, bl2) | 0;\n mid = mid + Math.imul(al4, bh2) | 0;\n mid = mid + Math.imul(ah4, bl2) | 0;\n hi = hi + Math.imul(ah4, bh2) | 0;\n lo = lo + Math.imul(al3, bl3) | 0;\n mid = mid + Math.imul(al3, bh3) | 0;\n mid = mid + Math.imul(ah3, bl3) | 0;\n hi = hi + Math.imul(ah3, bh3) | 0;\n lo = lo + Math.imul(al2, bl4) | 0;\n mid = mid + Math.imul(al2, bh4) | 0;\n mid = mid + Math.imul(ah2, bl4) | 0;\n hi = hi + Math.imul(ah2, bh4) | 0;\n lo = lo + Math.imul(al1, bl5) | 0;\n mid = mid + Math.imul(al1, bh5) | 0;\n mid = mid + Math.imul(ah1, bl5) | 0;\n hi = hi + Math.imul(ah1, bh5) | 0;\n lo = lo + Math.imul(al0, bl6) | 0;\n mid = mid + Math.imul(al0, bh6) | 0;\n mid = mid + Math.imul(ah0, bl6) | 0;\n hi = hi + Math.imul(ah0, bh6) | 0;\n var w6 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = mid + Math.imul(ah7, bl0) | 0;\n hi = Math.imul(ah7, bh0);\n lo = lo + Math.imul(al6, bl1) | 0;\n mid = mid + Math.imul(al6, bh1) | 0;\n mid = mid + Math.imul(ah6, bl1) | 0;\n hi = hi + Math.imul(ah6, bh1) | 0;\n lo = lo + Math.imul(al5, bl2) | 0;\n mid = mid + Math.imul(al5, bh2) | 0;\n mid = mid + Math.imul(ah5, bl2) | 0;\n hi = hi + Math.imul(ah5, bh2) | 0;\n lo = lo + Math.imul(al4, bl3) | 0;\n mid = mid + Math.imul(al4, bh3) | 0;\n mid = mid + Math.imul(ah4, bl3) | 0;\n hi = hi + Math.imul(ah4, bh3) | 0;\n lo = lo + Math.imul(al3, bl4) | 0;\n mid = mid + Math.imul(al3, bh4) | 0;\n mid = mid + Math.imul(ah3, bl4) | 0;\n hi = hi + Math.imul(ah3, bh4) | 0;\n lo = lo + Math.imul(al2, bl5) | 0;\n mid = mid + Math.imul(al2, bh5) | 0;\n mid = mid + Math.imul(ah2, bl5) | 0;\n hi = hi + Math.imul(ah2, bh5) | 0;\n lo = lo + Math.imul(al1, bl6) | 0;\n mid = mid + Math.imul(al1, bh6) | 0;\n mid = mid + Math.imul(ah1, bl6) | 0;\n hi = hi + Math.imul(ah1, bh6) | 0;\n lo = lo + Math.imul(al0, bl7) | 0;\n mid = mid + Math.imul(al0, bh7) | 0;\n mid = mid + Math.imul(ah0, bl7) | 0;\n hi = hi + Math.imul(ah0, bh7) | 0;\n var w7 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = mid + Math.imul(ah8, bl0) | 0;\n hi = Math.imul(ah8, bh0);\n lo = lo + Math.imul(al7, bl1) | 0;\n mid = mid + Math.imul(al7, bh1) | 0;\n mid = mid + Math.imul(ah7, bl1) | 0;\n hi = hi + Math.imul(ah7, bh1) | 0;\n lo = lo + Math.imul(al6, bl2) | 0;\n mid = mid + Math.imul(al6, bh2) | 0;\n mid = mid + Math.imul(ah6, bl2) | 0;\n hi = hi + Math.imul(ah6, bh2) | 0;\n lo = lo + Math.imul(al5, bl3) | 0;\n mid = mid + Math.imul(al5, bh3) | 0;\n mid = mid + Math.imul(ah5, bl3) | 0;\n hi = hi + Math.imul(ah5, bh3) | 0;\n lo = lo + Math.imul(al4, bl4) | 0;\n mid = mid + Math.imul(al4, bh4) | 0;\n mid = mid + Math.imul(ah4, bl4) | 0;\n hi = hi + Math.imul(ah4, bh4) | 0;\n lo = lo + Math.imul(al3, bl5) | 0;\n mid = mid + Math.imul(al3, bh5) | 0;\n mid = mid + Math.imul(ah3, bl5) | 0;\n hi = hi + Math.imul(ah3, bh5) | 0;\n lo = lo + Math.imul(al2, bl6) | 0;\n mid = mid + Math.imul(al2, bh6) | 0;\n mid = mid + Math.imul(ah2, bl6) | 0;\n hi = hi + Math.imul(ah2, bh6) | 0;\n lo = lo + Math.imul(al1, bl7) | 0;\n mid = mid + Math.imul(al1, bh7) | 0;\n mid = mid + Math.imul(ah1, bl7) | 0;\n hi = hi + Math.imul(ah1, bh7) | 0;\n lo = lo + Math.imul(al0, bl8) | 0;\n mid = mid + Math.imul(al0, bh8) | 0;\n mid = mid + Math.imul(ah0, bl8) | 0;\n hi = hi + Math.imul(ah0, bh8) | 0;\n var w8 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = mid + Math.imul(ah9, bl0) | 0;\n hi = Math.imul(ah9, bh0);\n lo = lo + Math.imul(al8, bl1) | 0;\n mid = mid + Math.imul(al8, bh1) | 0;\n mid = mid + Math.imul(ah8, bl1) | 0;\n hi = hi + Math.imul(ah8, bh1) | 0;\n lo = lo + Math.imul(al7, bl2) | 0;\n mid = mid + Math.imul(al7, bh2) | 0;\n mid = mid + Math.imul(ah7, bl2) | 0;\n hi = hi + Math.imul(ah7, bh2) | 0;\n lo = lo + Math.imul(al6, bl3) | 0;\n mid = mid + Math.imul(al6, bh3) | 0;\n mid = mid + Math.imul(ah6, bl3) | 0;\n hi = hi + Math.imul(ah6, bh3) | 0;\n lo = lo + Math.imul(al5, bl4) | 0;\n mid = mid + Math.imul(al5, bh4) | 0;\n mid = mid + Math.imul(ah5, bl4) | 0;\n hi = hi + Math.imul(ah5, bh4) | 0;\n lo = lo + Math.imul(al4, bl5) | 0;\n mid = mid + Math.imul(al4, bh5) | 0;\n mid = mid + Math.imul(ah4, bl5) | 0;\n hi = hi + Math.imul(ah4, bh5) | 0;\n lo = lo + Math.imul(al3, bl6) | 0;\n mid = mid + Math.imul(al3, bh6) | 0;\n mid = mid + Math.imul(ah3, bl6) | 0;\n hi = hi + Math.imul(ah3, bh6) | 0;\n lo = lo + Math.imul(al2, bl7) | 0;\n mid = mid + Math.imul(al2, bh7) | 0;\n mid = mid + Math.imul(ah2, bl7) | 0;\n hi = hi + Math.imul(ah2, bh7) | 0;\n lo = lo + Math.imul(al1, bl8) | 0;\n mid = mid + Math.imul(al1, bh8) | 0;\n mid = mid + Math.imul(ah1, bl8) | 0;\n hi = hi + Math.imul(ah1, bh8) | 0;\n lo = lo + Math.imul(al0, bl9) | 0;\n mid = mid + Math.imul(al0, bh9) | 0;\n mid = mid + Math.imul(ah0, bl9) | 0;\n hi = hi + Math.imul(ah0, bh9) | 0;\n var w9 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = mid + Math.imul(ah9, bl1) | 0;\n hi = Math.imul(ah9, bh1);\n lo = lo + Math.imul(al8, bl2) | 0;\n mid = mid + Math.imul(al8, bh2) | 0;\n mid = mid + Math.imul(ah8, bl2) | 0;\n hi = hi + Math.imul(ah8, bh2) | 0;\n lo = lo + Math.imul(al7, bl3) | 0;\n mid = mid + Math.imul(al7, bh3) | 0;\n mid = mid + Math.imul(ah7, bl3) | 0;\n hi = hi + Math.imul(ah7, bh3) | 0;\n lo = lo + Math.imul(al6, bl4) | 0;\n mid = mid + Math.imul(al6, bh4) | 0;\n mid = mid + Math.imul(ah6, bl4) | 0;\n hi = hi + Math.imul(ah6, bh4) | 0;\n lo = lo + Math.imul(al5, bl5) | 0;\n mid = mid + Math.imul(al5, bh5) | 0;\n mid = mid + Math.imul(ah5, bl5) | 0;\n hi = hi + Math.imul(ah5, bh5) | 0;\n lo = lo + Math.imul(al4, bl6) | 0;\n mid = mid + Math.imul(al4, bh6) | 0;\n mid = mid + Math.imul(ah4, bl6) | 0;\n hi = hi + Math.imul(ah4, bh6) | 0;\n lo = lo + Math.imul(al3, bl7) | 0;\n mid = mid + Math.imul(al3, bh7) | 0;\n mid = mid + Math.imul(ah3, bl7) | 0;\n hi = hi + Math.imul(ah3, bh7) | 0;\n lo = lo + Math.imul(al2, bl8) | 0;\n mid = mid + Math.imul(al2, bh8) | 0;\n mid = mid + Math.imul(ah2, bl8) | 0;\n hi = hi + Math.imul(ah2, bh8) | 0;\n lo = lo + Math.imul(al1, bl9) | 0;\n mid = mid + Math.imul(al1, bh9) | 0;\n mid = mid + Math.imul(ah1, bl9) | 0;\n hi = hi + Math.imul(ah1, bh9) | 0;\n var w10 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = mid + Math.imul(ah9, bl2) | 0;\n hi = Math.imul(ah9, bh2);\n lo = lo + Math.imul(al8, bl3) | 0;\n mid = mid + Math.imul(al8, bh3) | 0;\n mid = mid + Math.imul(ah8, bl3) | 0;\n hi = hi + Math.imul(ah8, bh3) | 0;\n lo = lo + Math.imul(al7, bl4) | 0;\n mid = mid + Math.imul(al7, bh4) | 0;\n mid = mid + Math.imul(ah7, bl4) | 0;\n hi = hi + Math.imul(ah7, bh4) | 0;\n lo = lo + Math.imul(al6, bl5) | 0;\n mid = mid + Math.imul(al6, bh5) | 0;\n mid = mid + Math.imul(ah6, bl5) | 0;\n hi = hi + Math.imul(ah6, bh5) | 0;\n lo = lo + Math.imul(al5, bl6) | 0;\n mid = mid + Math.imul(al5, bh6) | 0;\n mid = mid + Math.imul(ah5, bl6) | 0;\n hi = hi + Math.imul(ah5, bh6) | 0;\n lo = lo + Math.imul(al4, bl7) | 0;\n mid = mid + Math.imul(al4, bh7) | 0;\n mid = mid + Math.imul(ah4, bl7) | 0;\n hi = hi + Math.imul(ah4, bh7) | 0;\n lo = lo + Math.imul(al3, bl8) | 0;\n mid = mid + Math.imul(al3, bh8) | 0;\n mid = mid + Math.imul(ah3, bl8) | 0;\n hi = hi + Math.imul(ah3, bh8) | 0;\n lo = lo + Math.imul(al2, bl9) | 0;\n mid = mid + Math.imul(al2, bh9) | 0;\n mid = mid + Math.imul(ah2, bl9) | 0;\n hi = hi + Math.imul(ah2, bh9) | 0;\n var w11 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = mid + Math.imul(ah9, bl3) | 0;\n hi = Math.imul(ah9, bh3);\n lo = lo + Math.imul(al8, bl4) | 0;\n mid = mid + Math.imul(al8, bh4) | 0;\n mid = mid + Math.imul(ah8, bl4) | 0;\n hi = hi + Math.imul(ah8, bh4) | 0;\n lo = lo + Math.imul(al7, bl5) | 0;\n mid = mid + Math.imul(al7, bh5) | 0;\n mid = mid + Math.imul(ah7, bl5) | 0;\n hi = hi + Math.imul(ah7, bh5) | 0;\n lo = lo + Math.imul(al6, bl6) | 0;\n mid = mid + Math.imul(al6, bh6) | 0;\n mid = mid + Math.imul(ah6, bl6) | 0;\n hi = hi + Math.imul(ah6, bh6) | 0;\n lo = lo + Math.imul(al5, bl7) | 0;\n mid = mid + Math.imul(al5, bh7) | 0;\n mid = mid + Math.imul(ah5, bl7) | 0;\n hi = hi + Math.imul(ah5, bh7) | 0;\n lo = lo + Math.imul(al4, bl8) | 0;\n mid = mid + Math.imul(al4, bh8) | 0;\n mid = mid + Math.imul(ah4, bl8) | 0;\n hi = hi + Math.imul(ah4, bh8) | 0;\n lo = lo + Math.imul(al3, bl9) | 0;\n mid = mid + Math.imul(al3, bh9) | 0;\n mid = mid + Math.imul(ah3, bl9) | 0;\n hi = hi + Math.imul(ah3, bh9) | 0;\n var w12 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = mid + Math.imul(ah9, bl4) | 0;\n hi = Math.imul(ah9, bh4);\n lo = lo + Math.imul(al8, bl5) | 0;\n mid = mid + Math.imul(al8, bh5) | 0;\n mid = mid + Math.imul(ah8, bl5) | 0;\n hi = hi + Math.imul(ah8, bh5) | 0;\n lo = lo + Math.imul(al7, bl6) | 0;\n mid = mid + Math.imul(al7, bh6) | 0;\n mid = mid + Math.imul(ah7, bl6) | 0;\n hi = hi + Math.imul(ah7, bh6) | 0;\n lo = lo + Math.imul(al6, bl7) | 0;\n mid = mid + Math.imul(al6, bh7) | 0;\n mid = mid + Math.imul(ah6, bl7) | 0;\n hi = hi + Math.imul(ah6, bh7) | 0;\n lo = lo + Math.imul(al5, bl8) | 0;\n mid = mid + Math.imul(al5, bh8) | 0;\n mid = mid + Math.imul(ah5, bl8) | 0;\n hi = hi + Math.imul(ah5, bh8) | 0;\n lo = lo + Math.imul(al4, bl9) | 0;\n mid = mid + Math.imul(al4, bh9) | 0;\n mid = mid + Math.imul(ah4, bl9) | 0;\n hi = hi + Math.imul(ah4, bh9) | 0;\n var w13 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = mid + Math.imul(ah9, bl5) | 0;\n hi = Math.imul(ah9, bh5);\n lo = lo + Math.imul(al8, bl6) | 0;\n mid = mid + Math.imul(al8, bh6) | 0;\n mid = mid + Math.imul(ah8, bl6) | 0;\n hi = hi + Math.imul(ah8, bh6) | 0;\n lo = lo + Math.imul(al7, bl7) | 0;\n mid = mid + Math.imul(al7, bh7) | 0;\n mid = mid + Math.imul(ah7, bl7) | 0;\n hi = hi + Math.imul(ah7, bh7) | 0;\n lo = lo + Math.imul(al6, bl8) | 0;\n mid = mid + Math.imul(al6, bh8) | 0;\n mid = mid + Math.imul(ah6, bl8) | 0;\n hi = hi + Math.imul(ah6, bh8) | 0;\n lo = lo + Math.imul(al5, bl9) | 0;\n mid = mid + Math.imul(al5, bh9) | 0;\n mid = mid + Math.imul(ah5, bl9) | 0;\n hi = hi + Math.imul(ah5, bh9) | 0;\n var w14 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = mid + Math.imul(ah9, bl6) | 0;\n hi = Math.imul(ah9, bh6);\n lo = lo + Math.imul(al8, bl7) | 0;\n mid = mid + Math.imul(al8, bh7) | 0;\n mid = mid + Math.imul(ah8, bl7) | 0;\n hi = hi + Math.imul(ah8, bh7) | 0;\n lo = lo + Math.imul(al7, bl8) | 0;\n mid = mid + Math.imul(al7, bh8) | 0;\n mid = mid + Math.imul(ah7, bl8) | 0;\n hi = hi + Math.imul(ah7, bh8) | 0;\n lo = lo + Math.imul(al6, bl9) | 0;\n mid = mid + Math.imul(al6, bh9) | 0;\n mid = mid + Math.imul(ah6, bl9) | 0;\n hi = hi + Math.imul(ah6, bh9) | 0;\n var w15 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = mid + Math.imul(ah9, bl7) | 0;\n hi = Math.imul(ah9, bh7);\n lo = lo + Math.imul(al8, bl8) | 0;\n mid = mid + Math.imul(al8, bh8) | 0;\n mid = mid + Math.imul(ah8, bl8) | 0;\n hi = hi + Math.imul(ah8, bh8) | 0;\n lo = lo + Math.imul(al7, bl9) | 0;\n mid = mid + Math.imul(al7, bh9) | 0;\n mid = mid + Math.imul(ah7, bl9) | 0;\n hi = hi + Math.imul(ah7, bh9) | 0;\n var w16 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = mid + Math.imul(ah9, bl8) | 0;\n hi = Math.imul(ah9, bh8);\n lo = lo + Math.imul(al8, bl9) | 0;\n mid = mid + Math.imul(al8, bh9) | 0;\n mid = mid + Math.imul(ah8, bl9) | 0;\n hi = hi + Math.imul(ah8, bh9) | 0;\n var w17 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = mid + Math.imul(ah9, bl9) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n\n return out;\n }; // Polyfill comb\n\n\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n var carry = 0;\n var hncarry = 0;\n\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n ncarry = ncarry + (r / 0x4000000 | 0) | 0;\n lo = lo + rword | 0;\n rword = lo & 0x3ffffff;\n ncarry = ncarry + (lo >>> 26) | 0;\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo(num, out) {\n var res;\n var len = this.length + num.length;\n\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n }; // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n\n function FFTM(x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT(N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n }; // Returns binary-reversed representation of `x`\n\n\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n\n return rb;\n }; // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n\n\n FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n /* jshint maxdepth : false */\n\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b(n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b(ws, N) {\n var carry = 0;\n\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {\n var carry = 0;\n\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n } // Pad with zeroes\n\n\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub(N) {\n var ph = new Array(N);\n\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n }; // Multiply `this` by `num`\n\n\n BN.prototype.mul = function mul(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n }; // Multiply employing FFT\n\n\n BN.prototype.mulf = function mulf(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n }; // In-place Multiplication\n\n\n BN.prototype.imul = function imul(num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000); // Carry\n\n var carry = 0;\n\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += w / 0x4000000 | 0; // NOTE: lo is 27bit maximum\n\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln(num) {\n return this.clone().imuln(num);\n }; // `this` * `this`\n\n\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n }; // `this` * `this` in-place\n\n\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n }; // Math.pow(`this`, `num`)\n\n\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1); // Skip leading zeroes\n\n var res = this;\n\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\n }\n }\n\n return res;\n }; // Shift-left in-place\n\n\n BN.prototype.iushln = function iushln(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = 0x3ffffff >>> 26 - r << 26 - r;\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = (this.words[i] | 0) - newCarry << r;\n this.words[i] = c | carry;\n carry = newCarry >>> 26 - r;\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln(bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n }; // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n\n\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n\n if (hint) {\n h = (hint - hint % 26) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n var maskedWords = extended;\n h -= s;\n h = Math.max(0, h); // Extended mode, copy masked part\n\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n\n maskedWords.length = s;\n }\n\n if (s === 0) {// No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = carry << 26 - r | word >>> r;\n carry = word & mask;\n } // Push carried bits as a mask\n\n\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n }; // Shift-left\n\n\n BN.prototype.shln = function shln(bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln(bits) {\n return this.clone().iushln(bits);\n }; // Shift-right\n\n\n BN.prototype.shrn = function shrn(bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn(bits) {\n return this.clone().iushrn(bits);\n }; // Test if n bit is set\n\n\n BN.prototype.testn = function testn(bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) return false; // Check bit and return\n\n var w = this.words[s];\n return !!(w & q);\n }; // Return only lowers bits of number (in-place)\n\n\n BN.prototype.imaskn = function imaskn(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n }; // Return only lowers bits of number\n\n\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n }; // Add plain number `num` to `this`\n\n\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num); // Possible sign change\n\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n } // Add without checks\n\n\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num; // Carry\n\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n\n this.length = Math.max(this.length, i + 1);\n return this;\n }; // Subtract plain number `num` from `this`\n\n\n BN.prototype.isubn = function isubn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - (right / 0x4000000 | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip(); // Subtraction overflow\n\n assert(carry === -1);\n carry = 0;\n\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n\n this.negative = 1;\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num; // Normalize\n\n var bhi = b.words[b.length - 1] | 0;\n\n var bhiBits = this._countBits(bhi);\n\n shift = 26 - bhiBits;\n\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n } // Initialize quotient\n\n\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n\n if (diff.negative === 0) {\n a = diff;\n\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n\n a._ishlnsubmul(b, 1, j);\n\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n\n if (q) {\n q.words[j] = qj;\n }\n }\n\n if (q) {\n q.strip();\n }\n\n a.strip(); // Denormalize\n\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n }; // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n\n\n BN.prototype.divmod = function divmod(num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n } // Both numbers are positive at this point\n // Strip both numbers to approximate shift value\n\n\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n } // Very short reduction\n\n\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n }; // Find `this` / `num`\n\n\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n }; // Find `this` % `num`\n\n\n BN.prototype.mod = function mod(num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod(num) {\n return this.divmod(num, 'mod', true).mod;\n }; // Find Round(`this` / `num`)\n\n\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num); // Fast case - exact division\n\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half); // Round down\n\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up\n\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n }; // In-place division by number\n\n\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = w / num | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n } // A * x + B * y = x\n\n\n var A = new BN(1);\n var B = new BN(0); // C * x + D * y = y\n\n var C = new BN(0);\n var D = new BN(1);\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n x.iushrn(i);\n\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n y.iushrn(j);\n\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n }; // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n\n\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n a.iushrn(i);\n\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n b.iushrn(j);\n\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0; // Remove common factor of two\n\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n }; // Invert number in the field F(num)\n\n\n BN.prototype.invm = function invm(num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd() {\n return (this.words[0] & 1) === 1;\n }; // And first word and num\n\n\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n }; // Increment at the bit position in-line\n\n\n BN.prototype.bincn = function bincn(bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) {\n this._expand(s + 1);\n\n this.words[s] |= q;\n return this;\n } // Add bit and propagate, if needed\n\n\n var carry = q;\n\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n\n\n BN.prototype.cmp = function cmp(num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Unsigned comparison\n\n\n BN.prototype.ucmp = function ucmp(num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n var res = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n if (a === b) continue;\n\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n\n break;\n }\n\n return res;\n };\n\n BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq(num) {\n return this.cmp(num) === 0;\n }; //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n\n\n BN.red = function red(num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed() {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd(num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd(num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub(num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub(num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl(num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr() {\n assert(this.red, 'redSqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr() {\n assert(this.red, 'redISqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.isqr(this);\n }; // Square root over p\n\n\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm() {\n assert(this.red, 'redInvm works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.invm(this);\n }; // Return negative clone of `this` % `red modulo`\n\n\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n\n this.red._verify1(this);\n\n return this.red.pow(this, num);\n }; // Prime numbers with efficient reduction\n\n\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n }; // Pseudo-Mersenne prime\n\n function MPrime(name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp() {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce(num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n\n inherits(K256, MPrime);\n\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n } // Shift by 9 limbs\n\n\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = (next & mask) << 4 | prev >>> 22;\n prev = next;\n }\n\n prev >>>= 22;\n input.words[i - 10] = prev;\n\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK(num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n\n var lo = 0;\n\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + (lo / 0x4000000 | 0);\n } // Fast length reduction\n\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n\n return num;\n };\n\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n\n inherits(P224, MPrime);\n\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n\n inherits(P192, MPrime);\n\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n num.words[i] = lo;\n carry = hi;\n }\n\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n\n return num;\n }; // Exported mostly for testing purposes, use plain name instead\n\n\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n\n primes[name] = prime;\n return prime;\n }; //\n // Base reduction engine\n //\n\n\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1(a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2(a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red, 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res;\n };\n\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res;\n };\n\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1); // Fast case\n\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n } // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n\n\n var q = this.m.subn(1);\n var s = 0;\n\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg(); // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n\n while (t.cmp(one) !== 0) {\n var tmp = t;\n\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm(a) {\n var inv = a._invmp(this.m);\n\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow(a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom(num) {\n var res = num.clone();\n res.red = null;\n return res;\n }; //\n // Montgomery method engine\n //\n\n\n BN.mont = function mont(num) {\n return new Mont(num);\n };\n\n function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom(num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul(a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm(a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})( false || module, this);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js?"); | |
| 1501 | - | |
| 1502 | -/***/ }), | |
| 1503 | - | |
| 1504 | -/***/ "./node_modules/elliptic/lib/elliptic.js": | |
| 1505 | -/*!***********************************************!*\ | |
| 1506 | - !*** ./node_modules/elliptic/lib/elliptic.js ***! | |
| 1507 | - \***********************************************/ | |
| 1508 | -/*! no static exports found */ | |
| 1509 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1510 | - | |
| 1511 | -"use strict"; | |
| 1512 | -eval("\n\nvar elliptic = exports;\nelliptic.version = __webpack_require__(/*! ../package.json */ \"./node_modules/elliptic/package.json\").version;\nelliptic.utils = __webpack_require__(/*! ./elliptic/utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\nelliptic.rand = __webpack_require__(/*! brorand */ \"./node_modules/brorand/index.js\");\nelliptic.curve = __webpack_require__(/*! ./elliptic/curve */ \"./node_modules/elliptic/lib/elliptic/curve/index.js\");\nelliptic.curves = __webpack_require__(/*! ./elliptic/curves */ \"./node_modules/elliptic/lib/elliptic/curves.js\"); // Protocols\n\nelliptic.ec = __webpack_require__(/*! ./elliptic/ec */ \"./node_modules/elliptic/lib/elliptic/ec/index.js\");\nelliptic.eddsa = __webpack_require__(/*! ./elliptic/eddsa */ \"./node_modules/elliptic/lib/elliptic/eddsa/index.js\");\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/elliptic/lib/elliptic.js?"); | |
| 1513 | - | |
| 1514 | -/***/ }), | |
| 1515 | - | |
| 1516 | -/***/ "./node_modules/elliptic/lib/elliptic/curve/base.js": | |
| 1517 | -/*!**********************************************************!*\ | |
| 1518 | - !*** ./node_modules/elliptic/lib/elliptic/curve/base.js ***! | |
| 1519 | - \**********************************************************/ | |
| 1520 | -/*! no static exports found */ | |
| 1521 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1522 | - | |
| 1523 | -"use strict"; | |
| 1524 | -eval("\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/elliptic/node_modules/bn.js/lib/bn.js\");\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\n\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16); // Use Montgomery, when there is no fast reduction for the prime\n\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p); // Useful for many curves\n\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red); // Curve configuration, optional\n\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed); // Temporary arrays\n\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n this._bitLength = this.n ? this.n.bitLength() : 0; // Generalized Greg Maxwell's trick\n\n var adjustCount = this.n && this.p.div(this.n);\n\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\n\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << doubles.step + 1) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3; // Translate into more windowed form\n\n var repr = [];\n var j;\n var nafW;\n\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n\n for (var l = j + doubles.step - 1; l >= j; l--) {\n nafW = (nafW << 1) + naf[l];\n }\n\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i) b = b.mixedAdd(doubles.points[j]);else if (nafW === -i) b = b.mixedAdd(doubles.points[j].neg());\n }\n\n a = a.add(b);\n }\n\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4; // Precompute window\n\n var nafPoints = p._getNAFPoints(w);\n\n w = nafPoints.wnd;\n var wnd = nafPoints.points; // Get NAF form\n\n var naf = getNAF(k, w, this._bitLength); // Add `this`*(N+1) for every w-NAF index\n\n var acc = this.jpoint(null, null, null);\n\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--) {\n l++;\n }\n\n if (i >= 0) l++;\n acc = acc.dblp(l);\n if (i < 0) break;\n var z = naf[i];\n assert(z !== 0);\n\n if (p.type === 'affine') {\n // J +- P\n if (z > 0) acc = acc.mixedAdd(wnd[z - 1 >> 1]);else acc = acc.mixedAdd(wnd[-z - 1 >> 1].neg());\n } else {\n // J +- J\n if (z > 0) acc = acc.add(wnd[z - 1 >> 1]);else acc = acc.add(wnd[-z - 1 >> 1].neg());\n }\n }\n\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW, points, coeffs, len, jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3; // Fill all arrays\n\n var max = 0;\n var i;\n var j;\n var p;\n\n for (i = 0; i < len; i++) {\n p = points[i];\n\n var nafPoints = p._getNAFPoints(defW);\n\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n } // Comb small window NAFs\n\n\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [points[a],\n /* 1 */\n null,\n /* 3 */\n null,\n /* 5 */\n points[b]\n /* 7 */\n ]; // Try to avoid Projective points, if possible\n\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [-3,\n /* -1 -1 */\n -1,\n /* -1 0 */\n -5,\n /* -1 1 */\n -7,\n /* 0 -1 */\n 0,\n /* 0 0 */\n 7,\n /* 0 1 */\n 5,\n /* 1 -1 */\n 1,\n /* 1 0 */\n 3\n /* 1 1 */\n ];\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0) zero = false;\n }\n\n if (!zero) break;\n k++;\n i--;\n }\n\n if (i >= 0) k++;\n acc = acc.dblp(k);\n if (i < 0) break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0) continue;else if (z > 0) p = wnd[j][z - 1 >> 1];else if (z < 0) p = wnd[j][-z - 1 >> 1].neg();\n if (p.type === 'affine') acc = acc.mixedAdd(p);else acc = acc.add(p);\n }\n } // Zeroify references\n\n\n for (i = 0; i < len; i++) {\n wnd[i] = null;\n }\n\n if (jacobianResult) return acc;else return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\n\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function\n /*other*/\neq() {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n var len = this.p.byteLength(); // uncompressed, hybrid-odd, hybrid-even\n\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) && bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06) assert(bytes[bytes.length - 1] % 2 === 0);else if (bytes[0] === 0x07) assert(bytes[bytes.length - 1] % 2 === 1);\n var res = this.point(bytes.slice(1, 1 + len), bytes.slice(1 + len, 1 + 2 * len));\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) && bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n if (compact) return [this.getY().isEven() ? 0x02 : 0x03].concat(x);\n return [0x04].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed) return this;\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed) return false;\n var doubles = this.precomputed.doubles;\n if (!doubles) return false;\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles) return this.precomputed.doubles;\n var doubles = [this];\n var acc = this;\n\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++) {\n acc = acc.dbl();\n }\n\n doubles.push(acc);\n }\n\n return {\n step: step,\n points: doubles\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf) return this.precomputed.naf;\n var res = [this];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n\n for (var i = 1; i < max; i++) {\n res[i] = res[i - 1].add(dbl);\n }\n\n return {\n wnd: wnd,\n points: res\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n\n for (var i = 0; i < k; i++) {\n r = r.dbl();\n }\n\n return r;\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/elliptic/lib/elliptic/curve/base.js?"); | |
| 1525 | - | |
| 1526 | -/***/ }), | |
| 1527 | - | |
| 1528 | -/***/ "./node_modules/elliptic/lib/elliptic/curve/edwards.js": | |
| 1529 | -/*!*************************************************************!*\ | |
| 1530 | - !*** ./node_modules/elliptic/lib/elliptic/curve/edwards.js ***! | |
| 1531 | - \*************************************************************/ | |
| 1532 | -/*! no static exports found */ | |
| 1533 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1534 | - | |
| 1535 | -"use strict"; | |
| 1536 | -eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/elliptic/node_modules/bn.js/lib/bn.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar Base = __webpack_require__(/*! ./base */ \"./node_modules/elliptic/lib/elliptic/curve/base.js\");\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n Base.call(this, 'edwards', conf);\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\n\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA) return num.redNeg();else return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC) return num;else return this.c.redMul(num);\n}; // Just for compatibility with Short curve\n\n\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red) x = x.toRed(this.red);\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) throw new Error('invalid point');\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd) y = y.redNeg();\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red) y = y.toRed(this.red); // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd) throw new Error('invalid point');else return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0) throw new Error('invalid point');\n if (x.fromRed().isOdd() !== odd) x = x.redNeg();\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity()) return true; // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n\n point.normalize();\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red) this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one; // Use extended coordinates\n\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne) this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\n\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) + ' y: ' + this.y.fromRed().toString(16, 2) + ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 && (this.y.cmp(this.z) === 0 || this.zOne && this.y.cmp(this.curve.c) === 0);\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n // A = X1^2\n var a = this.x.redSqr(); // B = Y1^2\n\n var b = this.y.redSqr(); // C = 2 * Z1^2\n\n var c = this.z.redSqr();\n c = c.redIAdd(c); // D = a * A\n\n var d = this.curve._mulA(a); // E = (X1 + Y1)^2 - A - B\n\n\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b); // G = D + B\n\n var g = d.redAdd(b); // F = G - C\n\n var f = g.redSub(c); // H = D - B\n\n var h = d.redSub(b); // X3 = E * F\n\n var nx = e.redMul(f); // Y3 = G * H\n\n var ny = g.redMul(h); // T3 = E * H\n\n var nt = e.redMul(h); // Z3 = F * G\n\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr(); // C = X1^2\n\n var c = this.x.redSqr(); // D = Y1^2\n\n var d = this.y.redSqr();\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c); // F = E + D\n\n var f = e.redAdd(d);\n\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two)); // Y3 = F * (E - D)\n\n ny = f.redMul(e.redSub(d)); // Z3 = F^2 - 2 * F\n\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr(); // J = F - 2 * H\n\n j = f.redSub(h).redISub(h); // X3 = (B-C-D)*J\n\n nx = b.redSub(c).redISub(d).redMul(j); // Y3 = F * (E - D)\n\n ny = f.redMul(e.redSub(d)); // Z3 = F * J\n\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d); // H = (c * Z1)^2\n\n h = this.curve._mulC(this.z).redSqr(); // J = E - 2 * H\n\n j = e.redSub(h).redSub(h); // X3 = c * (B - E) * J\n\n nx = this.curve._mulC(b.redISub(e)).redMul(j); // Y3 = c * E * (C - D)\n\n ny = this.curve._mulC(e).redMul(c.redISub(d)); // Z3 = E * J\n\n nz = e.redMul(j);\n }\n\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity()) return this; // Double in extended coordinates\n\n if (this.curve.extended) return this._extDbl();else return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x)); // B = (Y1 + X1) * (Y2 + X2)\n\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x)); // C = T1 * k * T2\n\n var c = this.t.redMul(this.curve.dd).redMul(p.t); // D = Z1 * 2 * Z2\n\n var d = this.z.redMul(p.z.redAdd(p.z)); // E = B - A\n\n var e = b.redSub(a); // F = D - C\n\n var f = d.redSub(c); // G = D + C\n\n var g = d.redAdd(c); // H = B + A\n\n var h = b.redAdd(a); // X3 = E * F\n\n var nx = e.redMul(f); // Y3 = G * H\n\n var ny = g.redMul(h); // T3 = E * H\n\n var nt = e.redMul(h); // Z3 = F * G\n\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n // A = Z1 * Z2\n var a = this.z.redMul(p.z); // B = A^2\n\n var b = a.redSqr(); // C = X1 * X2\n\n var c = this.x.redMul(p.x); // D = Y1 * Y2\n\n var d = this.y.redMul(p.y); // E = d * C * D\n\n var e = this.curve.d.redMul(c).redMul(d); // F = B - E\n\n var f = b.redSub(e); // G = B + E\n\n var g = b.redAdd(e); // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c))); // Z3 = F * G\n\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c)); // Z3 = c * F * G\n\n nz = this.curve._mulC(f).redMul(g);\n }\n\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity()) return p;\n if (p.isInfinity()) return this;\n if (this.curve.extended) return this._extAdd(p);else return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k)) return this.curve._fixedNafMul(this, k);else return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [this, p], [k1, k2], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [this, p], [k1, k2], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne) return this; // Normalize coordinates\n\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t) this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(), this.y, this.z, this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other || this.getX().cmp(other.getX()) === 0 && this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0) return true;\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0) return false;\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0) return true;\n }\n}; // Compatibility with BaseCurve\n\n\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/elliptic/lib/elliptic/curve/edwards.js?"); | |
| 1537 | - | |
| 1538 | -/***/ }), | |
| 1539 | - | |
| 1540 | -/***/ "./node_modules/elliptic/lib/elliptic/curve/index.js": | |
| 1541 | -/*!***********************************************************!*\ | |
| 1542 | - !*** ./node_modules/elliptic/lib/elliptic/curve/index.js ***! | |
| 1543 | - \***********************************************************/ | |
| 1544 | -/*! no static exports found */ | |
| 1545 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1546 | - | |
| 1547 | -"use strict"; | |
| 1548 | -eval("\n\nvar curve = exports;\ncurve.base = __webpack_require__(/*! ./base */ \"./node_modules/elliptic/lib/elliptic/curve/base.js\");\ncurve.short = __webpack_require__(/*! ./short */ \"./node_modules/elliptic/lib/elliptic/curve/short.js\");\ncurve.mont = __webpack_require__(/*! ./mont */ \"./node_modules/elliptic/lib/elliptic/curve/mont.js\");\ncurve.edwards = __webpack_require__(/*! ./edwards */ \"./node_modules/elliptic/lib/elliptic/curve/edwards.js\");\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/elliptic/lib/elliptic/curve/index.js?"); | |
| 1549 | - | |
| 1550 | -/***/ }), | |
| 1551 | - | |
| 1552 | -/***/ "./node_modules/elliptic/lib/elliptic/curve/mont.js": | |
| 1553 | -/*!**********************************************************!*\ | |
| 1554 | - !*** ./node_modules/elliptic/lib/elliptic/curve/mont.js ***! | |
| 1555 | - \**********************************************************/ | |
| 1556 | -/*! no static exports found */ | |
| 1557 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1558 | - | |
| 1559 | -"use strict"; | |
| 1560 | -eval("\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/elliptic/node_modules/bn.js/lib/bn.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar Base = __webpack_require__(/*! ./base */ \"./node_modules/elliptic/lib/elliptic/curve/base.js\");\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\n\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n }\n}\n\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {// No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) + ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n // A = X1 + Z1\n var a = this.x.redAdd(this.z); // AA = A^2\n\n var aa = a.redSqr(); // B = X1 - Z1\n\n var b = this.x.redSub(this.z); // BB = B^2\n\n var bb = b.redSqr(); // C = AA - BB\n\n var c = aa.redSub(bb); // X3 = AA * BB\n\n var nx = aa.redMul(bb); // Z3 = C * (BB + A24 * C)\n\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n // A = X2 + Z2\n var a = this.x.redAdd(this.z); // B = X2 - Z2\n\n var b = this.x.redSub(this.z); // C = X3 + Z3\n\n var c = p.x.redAdd(p.z); // D = X3 - Z3\n\n var d = p.x.redSub(p.z); // DA = D * A\n\n var da = d.redMul(a); // CB = C * B\n\n var cb = c.redMul(b); // X5 = Z1 * (DA + CB)^2\n\n var nx = diff.z.redMul(da.redAdd(cb).redSqr()); // Z5 = X1 * (DA - CB)^2\n\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n\n var b = this.curve.point(null, null); // (N / 2) * Q\n\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1)) {\n bits.push(t.andln(1));\n }\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c); // N * Q = 2 * ((N / 2) * Q + Q))\n\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c); // N * Q + Q = 2 * ((N / 2) * Q + Q)\n\n a = a.dbl();\n }\n }\n\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n return this.x.fromRed();\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/elliptic/lib/elliptic/curve/mont.js?"); | |
| 1561 | - | |
| 1562 | -/***/ }), | |
| 1563 | - | |
| 1564 | -/***/ "./node_modules/elliptic/lib/elliptic/curve/short.js": | |
| 1565 | -/*!***********************************************************!*\ | |
| 1566 | - !*** ./node_modules/elliptic/lib/elliptic/curve/short.js ***! | |
| 1567 | - \***********************************************************/ | |
| 1568 | -/*! no static exports found */ | |
| 1569 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1570 | - | |
| 1571 | -"use strict"; | |
| 1572 | -eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/elliptic/node_modules/bn.js/lib/bn.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar Base = __webpack_require__(/*! ./base */ \"./node_modules/elliptic/lib/elliptic/curve/base.js\");\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0; // If the curve is endomorphic, precalculate beta and lambda\n\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\n\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1) return; // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n\n var beta;\n var lambda;\n\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p); // Choose the smallest beta\n\n\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n } // Get basis vectors, used for balanced length-two representation\n\n\n var basis;\n\n if (conf.basis) {\n basis = conf.basis.map(function (vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16)\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [l1, l2];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2)); // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1); // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n\n var a0;\n var b0; // First vector\n\n var a1;\n var b1; // Second vector\n\n var a2;\n var b2;\n var prevR;\n var i = 0;\n var r;\n var x;\n\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n\n prevR = r;\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n\n a2 = r.neg();\n b2 = x;\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n } // Normalize signs\n\n\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [{\n a: a1,\n b: b1\n }, {\n a: a2,\n b: b2\n }];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b); // Calculate answer\n\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return {\n k1: k1,\n k2: k2\n };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red) x = x.toRed(this.red);\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) throw new Error('invalid point'); // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd) y = y.redNeg();\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf) return true;\n var x = point.x;\n var y = point.y;\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd = function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n\n var p = points[i];\n\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult); // Clean-up references to points and coefficients\n\n\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n\n return res;\n};\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16); // Force redgomery representation when loading from JSON\n\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n\n if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\n\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo) return;\n var pre = this.precomputed;\n if (pre && pre.beta) return pre.beta;\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n\n if (pre) {\n var curve = this.curve;\n\n var endoMul = function endoMul(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul)\n }\n };\n }\n\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed) return [this.x, this.y];\n return [this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1)\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1)\n }\n }];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string') obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2]) return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [res].concat(pre.doubles.points.map(obj2point))\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [res].concat(pre.naf.points.map(obj2point))\n }\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) + ' y: ' + this.y.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf) return p; // P + O = P\n\n if (p.inf) return this; // P + P = 2P\n\n if (this.eq(p)) return this.dbl(); // P + (-P) = O\n\n if (this.neg().eq(p)) return this.curve.point(null, null); // P + Q = O\n\n if (this.x.cmp(p.x) === 0) return this.curve.point(null, null);\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0) c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf) return this; // 2P = O\n\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0) return this.curve.point(null, null);\n var a = this.curve.a;\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity()) return this;else if (this._hasDoubles(k)) return this.curve._fixedNafMul(this, k);else if (this.curve.endo) return this.curve._endoWnafMulAdd([this], [k]);else return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [this, p2];\n var coeffs = [k1, k2];\n if (this.curve.endo) return this.curve._endoWnafMulAdd(points, coeffs);else return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [this, p2];\n var coeffs = [k1, k2];\n if (this.curve.endo) return this.curve._endoWnafMulAdd(points, coeffs, true);else return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p || this.inf === p.inf && (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf) return this;\n var res = this.curve.point(this.x, this.y.redNeg());\n\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n\n var negate = function negate(p) {\n return p.neg();\n };\n\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate)\n }\n };\n }\n\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf) return this.curve.jpoint(null, null, null);\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n\n if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n}\n\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity()) return this.curve.point(null, null);\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity()) return p; // P + O = P\n\n if (p.isInfinity()) return this; // 12M + 4S + 7A\n\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0) return this.curve.jpoint(null, null, null);else return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity()) return p.toJ(); // P + O = P\n\n if (p.isInfinity()) return this; // 8M + 3S + 7A\n\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0) return this.curve.jpoint(null, null, null);else return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0) return this;\n if (this.isInfinity()) return this;\n if (!pow) return this.dbl();\n var i;\n\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n\n for (i = 0; i < pow; i++) {\n r = r.dbl();\n }\n\n return r;\n } // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n\n\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr(); // Reuse results\n\n var jyd = jy.redAdd(jy);\n\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow) jz4 = jz4.redMul(jyd4);\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity()) return this;\n if (this.curve.zeroA) return this._zeroDbl();else if (this.curve.threeA) return this._threeDbl();else return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz; // Z = 1\n\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n // XX = X1^2\n var xx = this.x.redSqr(); // YY = Y1^2\n\n var yy = this.y.redSqr(); // YYYY = YY^2\n\n var yyyy = yy.redSqr(); // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s); // M = 3 * XX + a; a = 0\n\n var m = xx.redAdd(xx).redIAdd(xx); // T = M ^ 2 - 2*S\n\n var t = m.redSqr().redISub(s).redISub(s); // 8 * YYYY\n\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8); // X3 = T\n\n nx = t; // Y3 = M * (S - T) - 8 * YYYY\n\n ny = m.redMul(s.redISub(t)).redISub(yyyy8); // Z3 = 2*Y1\n\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n // A = X1^2\n var a = this.x.redSqr(); // B = Y1^2\n\n var b = this.y.redSqr(); // C = B^2\n\n var c = b.redSqr(); // D = 2 * ((X1 + B)^2 - A - C)\n\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d); // E = 3 * A\n\n var e = a.redAdd(a).redIAdd(a); // F = E^2\n\n var f = e.redSqr(); // 8 * C\n\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8); // X3 = F - 2 * D\n\n nx = f.redISub(d).redISub(d); // Y3 = E * (D - X3) - 8 * C\n\n ny = e.redMul(d.redISub(nx)).redISub(c8); // Z3 = 2 * Y1 * Z1\n\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz; // Z = 1\n\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n // XX = X1^2\n var xx = this.x.redSqr(); // YY = Y1^2\n\n var yy = this.y.redSqr(); // YYYY = YY^2\n\n var yyyy = yy.redSqr(); // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s); // M = 3 * XX + a\n\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a); // T = M^2 - 2 * S\n\n var t = m.redSqr().redISub(s).redISub(s); // X3 = T\n\n nx = t; // Y3 = M * (S - T) - 8 * YYYY\n\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8); // Z3 = 2 * Y1\n\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n // delta = Z1^2\n var delta = this.z.redSqr(); // gamma = Y1^2\n\n var gamma = this.y.redSqr(); // beta = X1 * gamma\n\n var beta = this.x.redMul(gamma); // alpha = 3 * (X1 - delta) * (X1 + delta)\n\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha); // X3 = alpha^2 - 8 * beta\n\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8); // Z3 = (Y1 + Z1)^2 - gamma - delta\n\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta); // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a; // 4M + 6S + 10A\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA) return this.dbl().add(this); // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n // XX = X1^2\n\n var xx = this.x.redSqr(); // YY = Y1^2\n\n var yy = this.y.redSqr(); // ZZ = Z1^2\n\n var zz = this.z.redSqr(); // YYYY = YY^2\n\n var yyyy = yy.redSqr(); // M = 3 * XX + a * ZZ2; a = 0\n\n var m = xx.redAdd(xx).redIAdd(xx); // MM = M^2\n\n var mm = m.redSqr(); // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm); // EE = E^2\n\n var ee = e.redSqr(); // T = 16*YYYY\n\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t); // U = (M + E)^2 - MM - EE - T\n\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t); // X3 = 4 * (X1 * EE - 4 * YY * U)\n\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx); // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny); // Z3 = (Z1 + E)^2 - ZZ - EE\n\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine') return this.eq(p.toJ());\n if (this === p) return true; // x1 * z2^2 == x2 * z1^2\n\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0) return false; // y1 * z2^3 == y2 * z1^3\n\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0) return true;\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0) return false;\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0) return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '<EC JPoint Infinity>';\n return '<EC JPoint x: ' + this.x.toString(16, 2) + ' y: ' + this.y.toString(16, 2) + ' z: ' + this.z.toString(16, 2) + '>';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/elliptic/lib/elliptic/curve/short.js?"); | |
| 1573 | - | |
| 1574 | -/***/ }), | |
| 1575 | - | |
| 1576 | -/***/ "./node_modules/elliptic/lib/elliptic/curves.js": | |
| 1577 | -/*!******************************************************!*\ | |
| 1578 | - !*** ./node_modules/elliptic/lib/elliptic/curves.js ***! | |
| 1579 | - \******************************************************/ | |
| 1580 | -/*! no static exports found */ | |
| 1581 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1582 | - | |
| 1583 | -"use strict"; | |
| 1584 | -eval("\n\nvar curves = exports;\n\nvar hash = __webpack_require__(/*! hash.js */ \"./node_modules/hash.js/lib/hash.js\");\n\nvar curve = __webpack_require__(/*! ./curve */ \"./node_modules/elliptic/lib/elliptic/curve/index.js\");\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short') this.curve = new curve.short(options);else if (options.type === 'edwards') this.curve = new curve.edwards(options);else this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\n\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function get() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve\n });\n return curve;\n }\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: ['188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012', '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811']\n});\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: ['b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21', 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34']\n});\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: ['6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296', '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5']\n});\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' + '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' + 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: ['aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' + '5502f25d bf55296c 3a545e38 72760ab7', '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' + '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f']\n});\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' + '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' + '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' + 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: ['000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' + '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' + 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66', '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' + '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' + '3fad0761 353c7086 a272c240 88be9476 9fd16650']\n});\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: ['9']\n});\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: ['216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a', // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658']\n});\nvar pre;\n\ntry {\n pre = __webpack_require__(/*! ./precomputed/secp256k1 */ \"./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js\");\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [{\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3'\n }, {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15'\n }],\n gRed: false,\n g: ['79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798', '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8', pre]\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/elliptic/lib/elliptic/curves.js?"); | |
| 1585 | - | |
| 1586 | -/***/ }), | |
| 1587 | - | |
| 1588 | -/***/ "./node_modules/elliptic/lib/elliptic/ec/index.js": | |
| 1589 | -/*!********************************************************!*\ | |
| 1590 | - !*** ./node_modules/elliptic/lib/elliptic/ec/index.js ***! | |
| 1591 | - \********************************************************/ | |
| 1592 | -/*! no static exports found */ | |
| 1593 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1594 | - | |
| 1595 | -"use strict"; | |
| 1596 | -eval("\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/elliptic/node_modules/bn.js/lib/bn.js\");\n\nvar HmacDRBG = __webpack_require__(/*! hmac-drbg */ \"./node_modules/hmac-drbg/lib/hmac-drbg.js\");\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\n\nvar curves = __webpack_require__(/*! ../curves */ \"./node_modules/elliptic/lib/elliptic/curves.js\");\n\nvar rand = __webpack_require__(/*! brorand */ \"./node_modules/brorand/index.js\");\n\nvar assert = utils.assert;\n\nvar KeyPair = __webpack_require__(/*! ./key */ \"./node_modules/elliptic/lib/elliptic/ec/key.js\");\n\nvar Signature = __webpack_require__(/*! ./signature */ \"./node_modules/elliptic/lib/elliptic/ec/signature.js\");\n\nfunction EC(options) {\n if (!(this instanceof EC)) return new EC(options); // Shortcut `elliptic.ec(curve-name)`\n\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options), 'Unknown curve ' + options);\n options = curves[options];\n } // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n\n\n if (options instanceof curves.PresetCurve) options = {\n curve: options\n };\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g; // Point on curve\n\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1); // Hash for function for DRBG\n\n this.hash = options.hash || options.curve.hash;\n}\n\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options) options = {}; // Instantiate Hmac_DRBG\n\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray()\n });\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0) continue;\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0) msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0) return msg.sub(this.n);else return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n\n if (!options) options = {};\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16)); // Zero-extend key to provide enough entropy\n\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes); // Zero-extend nonce to have the same byte size as N\n\n var nonce = msg.toArray('be', bytes); // Instantiate Hmac_DRBG\n\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8'\n }); // Number of bytes to generate\n\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0;; iter++) {\n var k = options.k ? options.k(iter) : new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0) continue;\n var kp = this.g.mul(k);\n if (kp.isInfinity()) continue;\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0) continue;\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0) continue;\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) | (kpX.cmp(r) !== 0 ? 2 : 0); // Use complement of `s`, if it is > `n / 2`\n\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({\n r: r,\n s: s,\n recoveryParam: recoveryParam\n });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex'); // Perform primitive values validation\n\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0) return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0) return false; // Validate signature\n\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity()) return false;\n return p.getX().umod(this.n).cmp(r) === 0;\n } // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity()) return false; // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function (msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s; // A set LSB signifies that the y-coordinate is odd\n\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey) throw new Error('Unable to find sencond key candinate'); // 1.1. Let x = r + jn.\n\n if (isSecondKey) r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);else r = this.curve.pointFromX(r, isYOdd);\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n); // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function (e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null) return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q)) return i;\n }\n\n throw new Error('Unable to find valid recovery factor');\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/elliptic/lib/elliptic/ec/index.js?"); | |
| 1597 | - | |
| 1598 | -/***/ }), | |
| 1599 | - | |
| 1600 | -/***/ "./node_modules/elliptic/lib/elliptic/ec/key.js": | |
| 1601 | -/*!******************************************************!*\ | |
| 1602 | - !*** ./node_modules/elliptic/lib/elliptic/ec/key.js ***! | |
| 1603 | - \******************************************************/ | |
| 1604 | -/*! no static exports found */ | |
| 1605 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1606 | - | |
| 1607 | -"use strict"; | |
| 1608 | -eval("\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/elliptic/node_modules/bn.js/lib/bn.js\");\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\n\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null; // KeyPair(ec, { priv: ..., pub: ... })\n\n if (options.priv) this._importPrivate(options.priv, options.privEnc);\n if (options.pub) this._importPublic(options.pub, options.pubEnc);\n}\n\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair) return pub;\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair) return priv;\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n if (pub.isInfinity()) return {\n result: false,\n reason: 'Invalid public key'\n };\n if (!pub.validate()) return {\n result: false,\n reason: 'Public key is not a point'\n };\n if (!pub.mul(this.ec.curve.n).isInfinity()) return {\n result: false,\n reason: 'Public key * N != O'\n };\n return {\n result: true,\n reason: null\n };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub) this.pub = this.ec.g.mul(this.priv);\n if (!enc) return this.pub;\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex') return this.priv.toString(16, 2);else return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16); // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' || this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n\n this.pub = this.ec.curve.decodePoint(key, enc);\n}; // ECDH\n\n\nKeyPair.prototype.derive = function derive(pub) {\n if (!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n\n return pub.mul(this.priv).getX();\n}; // ECDSA\n\n\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) + ' pub: ' + (this.pub && this.pub.inspect()) + ' >';\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/elliptic/lib/elliptic/ec/key.js?"); | |
| 1609 | - | |
| 1610 | -/***/ }), | |
| 1611 | - | |
| 1612 | -/***/ "./node_modules/elliptic/lib/elliptic/ec/signature.js": | |
| 1613 | -/*!************************************************************!*\ | |
| 1614 | - !*** ./node_modules/elliptic/lib/elliptic/ec/signature.js ***! | |
| 1615 | - \************************************************************/ | |
| 1616 | -/*! no static exports found */ | |
| 1617 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1618 | - | |
| 1619 | -"use strict"; | |
| 1620 | -eval("\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/elliptic/node_modules/bn.js/lib/bn.js\");\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\n\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature) return options;\n if (this._importDER(options, enc)) return;\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined) this.recoveryParam = null;else this.recoveryParam = options.recoveryParam;\n}\n\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n\n if (!(initial & 0x80)) {\n return initial;\n }\n\n var octetLen = initial & 0xf; // Indefinite length or overflow\n\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n } // Leading zeroes\n\n\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n\n if (i === 0) {\n return buf;\n }\n\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n\n if (data[p.place++] !== 0x30) {\n return false;\n }\n\n var len = getLength(data, p);\n\n if (len === false) {\n return false;\n }\n\n if (len + p.place !== data.length) {\n return false;\n }\n\n if (data[p.place++] !== 0x02) {\n return false;\n }\n\n var rlen = getLength(data, p);\n\n if (rlen === false) {\n return false;\n }\n\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n\n if (data[p.place++] !== 0x02) {\n return false;\n }\n\n var slen = getLength(data, p);\n\n if (slen === false) {\n return false;\n }\n\n if (data.length !== slen + p.place) {\n return false;\n }\n\n var s = data.slice(p.place, slen + p.place);\n\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n\n while (--octets) {\n arr.push(len >>> (octets << 3) & 0xff);\n }\n\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray(); // Pad values\n\n if (r[0] & 0x80) r = [0].concat(r); // Pad values\n\n if (s[0] & 0x80) s = [0].concat(s);\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n\n var arr = [0x02];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [0x30];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/elliptic/lib/elliptic/ec/signature.js?"); | |
| 1621 | - | |
| 1622 | -/***/ }), | |
| 1623 | - | |
| 1624 | -/***/ "./node_modules/elliptic/lib/elliptic/eddsa/index.js": | |
| 1625 | -/*!***********************************************************!*\ | |
| 1626 | - !*** ./node_modules/elliptic/lib/elliptic/eddsa/index.js ***! | |
| 1627 | - \***********************************************************/ | |
| 1628 | -/*! no static exports found */ | |
| 1629 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1630 | - | |
| 1631 | -"use strict"; | |
| 1632 | -eval("\n\nvar hash = __webpack_require__(/*! hash.js */ \"./node_modules/hash.js/lib/hash.js\");\n\nvar curves = __webpack_require__(/*! ../curves */ \"./node_modules/elliptic/lib/elliptic/curves.js\");\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\n\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\n\nvar KeyPair = __webpack_require__(/*! ./key */ \"./node_modules/elliptic/lib/elliptic/eddsa/key.js\");\n\nvar Signature = __webpack_require__(/*! ./signature */ \"./node_modules/elliptic/lib/elliptic/eddsa/signature.js\");\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n if (!(this instanceof EDDSA)) return new EDDSA(curve);\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\n\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message).mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({\n R: R,\n S: S,\n Rencoded: Rencoded\n });\n};\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\n\n\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n\n for (var i = 0; i < arguments.length; i++) {\n hash.update(arguments[i]);\n }\n\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature) return sig;\n return new Signature(this, sig);\n};\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\n\n\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/elliptic/lib/elliptic/eddsa/index.js?"); | |
| 1633 | - | |
| 1634 | -/***/ }), | |
| 1635 | - | |
| 1636 | -/***/ "./node_modules/elliptic/lib/elliptic/eddsa/key.js": | |
| 1637 | -/*!*********************************************************!*\ | |
| 1638 | - !*** ./node_modules/elliptic/lib/elliptic/eddsa/key.js ***! | |
| 1639 | - \*********************************************************/ | |
| 1640 | -/*! no static exports found */ | |
| 1641 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1642 | - | |
| 1643 | -"use strict"; | |
| 1644 | -eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\n\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array<Byte>} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array<Byte>} [params.pub] - public key point encoded as bytes\n*\n*/\n\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub)) this._pub = params.pub;else this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair) return pub;\n return new KeyPair(eddsa, {\n pub: pub\n });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair) return secret;\n return new KeyPair(eddsa, {\n secret: secret\n });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes) return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n return a;\n});\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/elliptic/lib/elliptic/eddsa/key.js?"); | |
| 1645 | - | |
| 1646 | -/***/ }), | |
| 1647 | - | |
| 1648 | -/***/ "./node_modules/elliptic/lib/elliptic/eddsa/signature.js": | |
| 1649 | -/*!***************************************************************!*\ | |
| 1650 | - !*** ./node_modules/elliptic/lib/elliptic/eddsa/signature.js ***! | |
| 1651 | - \***************************************************************/ | |
| 1652 | -/*! no static exports found */ | |
| 1653 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1654 | - | |
| 1655 | -"use strict"; | |
| 1656 | -eval("\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/elliptic/node_modules/bn.js/lib/bn.js\");\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\n\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array<Bytes>|Object} sig -\n* @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes\n* @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array<Bytes>} [sig.Rencoded] - R point encoded\n* @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded\n*/\n\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n if (typeof sig !== 'object') sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength)\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n if (eddsa.isPoint(sig.R)) this._R = sig.R;\n if (sig.S instanceof BN) this._S = sig.S;\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/elliptic/lib/elliptic/eddsa/signature.js?"); | |
| 1657 | - | |
| 1658 | -/***/ }), | |
| 1659 | - | |
| 1660 | -/***/ "./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js": | |
| 1661 | -/*!*********************************************************************!*\ | |
| 1662 | - !*** ./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js ***! | |
| 1663 | - \*********************************************************************/ | |
| 1664 | -/*! no static exports found */ | |
| 1665 | -/***/ (function(module, exports) { | |
| 1666 | - | |
| 1667 | -eval("module.exports = {\n doubles: {\n step: 4,\n points: [['e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a', 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'], ['8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508', '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'], ['175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739', 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'], ['363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640', '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'], ['8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c', '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'], ['723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda', '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'], ['eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa', '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'], ['100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0', 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'], ['e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d', '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'], ['feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d', 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'], ['da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1', '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'], ['53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0', '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'], ['8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047', '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'], ['385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862', '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'], ['6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7', '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'], ['3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd', '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'], ['85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83', '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'], ['948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a', '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'], ['6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8', 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'], ['e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d', '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'], ['e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725', '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'], ['213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754', '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'], ['4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c', '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'], ['fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6', '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'], ['76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39', 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'], ['c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891', '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'], ['d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b', 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'], ['b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03', '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'], ['e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d', 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'], ['a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070', '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'], ['90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4', 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'], ['8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da', '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'], ['e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11', '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'], ['8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e', 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'], ['e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41', '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'], ['b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef', '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'], ['d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8', 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'], ['324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d', '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'], ['4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96', '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'], ['9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd', 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'], ['6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5', '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'], ['a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266', '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'], ['7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71', '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'], ['928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac', 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'], ['85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751', '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'], ['ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e', '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'], ['827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241', 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'], ['eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3', 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'], ['e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f', '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'], ['1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19', 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'], ['146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be', 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'], ['fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9', '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'], ['da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2', '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'], ['a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13', '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'], ['174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c', 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'], ['959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba', '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'], ['d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151', 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'], ['64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073', 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'], ['8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458', '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'], ['13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b', '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'], ['bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366', 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'], ['8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa', '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'], ['8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0', '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'], ['dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787', '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'], ['f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e', 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82']]\n },\n naf: {\n wnd: 7,\n points: [['f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9', '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'], ['2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4', 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'], ['5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc', '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'], ['acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe', 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'], ['774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb', 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'], ['f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8', 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'], ['d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e', '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'], ['defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34', '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'], ['2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c', '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'], ['352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5', '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'], ['2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f', '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'], ['9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714', '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'], ['daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729', 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'], ['c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db', '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'], ['6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4', 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'], ['1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5', 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'], ['605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479', '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'], ['62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d', '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'], ['80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f', '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'], ['7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb', 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'], ['d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9', 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'], ['49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963', '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'], ['77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74', '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'], ['f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530', 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'], ['463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b', '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'], ['f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247', 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'], ['caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1', 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'], ['2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120', '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'], ['7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435', '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'], ['754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18', '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'], ['e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8', '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'], ['186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb', '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'], ['df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f', '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'], ['5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143', 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'], ['290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba', 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'], ['af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45', 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'], ['766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a', '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'], ['59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e', 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'], ['f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8', 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'], ['7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c', '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'], ['948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519', 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'], ['7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab', '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'], ['3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca', 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'], ['d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf', '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'], ['1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610', '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'], ['733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4', 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'], ['15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c', 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'], ['a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940', 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'], ['e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980', 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'], ['311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3', '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'], ['34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf', '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'], ['f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63', '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'], ['d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448', 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'], ['32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf', '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'], ['7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5', '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'], ['ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6', '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'], ['16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5', '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'], ['eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99', 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'], ['78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51', 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'], ['494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5', '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'], ['a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5', '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'], ['c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997', '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'], ['841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881', '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'], ['5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5', '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'], ['36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66', 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'], ['336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726', 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'], ['8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede', '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'], ['1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94', '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'], ['85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31', '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'], ['29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51', 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'], ['a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252', 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'], ['4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5', 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'], ['d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b', '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'], ['ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4', '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'], ['af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f', '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'], ['e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889', '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'], ['591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246', 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'], ['11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984', '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'], ['3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a', 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'], ['cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030', 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'], ['c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197', '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'], ['c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593', 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'], ['a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef', '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'], ['347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38', '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'], ['da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a', '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'], ['c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111', '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'], ['4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502', '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'], ['3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea', 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'], ['cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26', '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'], ['b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986', '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'], ['d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e', '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'], ['48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4', '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'], ['dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda', 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'], ['6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859', 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'], ['e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f', 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'], ['eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c', '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'], ['13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942', 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'], ['ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a', '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'], ['b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80', '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'], ['ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d', '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'], ['8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1', 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'], ['52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63', 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'], ['e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352', '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'], ['7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193', 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'], ['5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00', '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'], ['32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58', 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'], ['e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7', 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'], ['8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8', 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'], ['4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e', '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'], ['3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d', 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'], ['674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b', '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'], ['d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f', 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'], ['30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6', '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'], ['be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297', '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'], ['93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a', '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'], ['b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c', 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'], ['d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52', '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'], ['d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb', 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'], ['463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065', 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'], ['7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917', '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'], ['74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9', 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'], ['30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3', '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'], ['9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57', '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'], ['176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66', 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'], ['75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8', '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'], ['809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721', '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'], ['1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180', '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9']]\n }\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js?"); | |
| 1668 | - | |
| 1669 | -/***/ }), | |
| 1670 | - | |
| 1671 | -/***/ "./node_modules/elliptic/lib/elliptic/utils.js": | |
| 1672 | -/*!*****************************************************!*\ | |
| 1673 | - !*** ./node_modules/elliptic/lib/elliptic/utils.js ***! | |
| 1674 | - \*****************************************************/ | |
| 1675 | -/*! no static exports found */ | |
| 1676 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1677 | - | |
| 1678 | -"use strict"; | |
| 1679 | -eval("\n\nvar utils = exports;\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/elliptic/node_modules/bn.js/lib/bn.js\");\n\nvar minAssert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\");\n\nvar minUtils = __webpack_require__(/*! minimalistic-crypto-utils */ \"./node_modules/minimalistic-crypto-utils/lib/utils.js\");\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode; // Represent num in a w-NAF form\n\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n var ws = 1 << w + 1;\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1) z = (ws >> 1) - mod;else z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\n\nutils.getNAF = getNAF; // Represent k1, k2 in a Joint Sparse Form\n\nfunction getJSF(k1, k2) {\n var jsf = [[], []];\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = k1.andln(3) + d1 & 3;\n var m24 = k2.andln(3) + d2 & 3;\n if (m14 === 3) m14 = -1;\n if (m24 === 3) m24 = -1;\n var u1;\n\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = k1.andln(7) + d1 & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2) u1 = -m14;else u1 = m14;\n }\n\n jsf[0].push(u1);\n var u2;\n\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = k2.andln(7) + d2 & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2) u2 = -m24;else u2 = m24;\n }\n\n jsf[1].push(u2); // Second phase\n\n if (2 * d1 === u1 + 1) d1 = 1 - d1;\n if (2 * d2 === u2 + 1) d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\n\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] : this[key] = computer.call(this);\n };\n}\n\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') : bytes;\n}\n\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\n\nutils.intFromLE = intFromLE;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/elliptic/lib/elliptic/utils.js?"); | |
| 1680 | - | |
| 1681 | -/***/ }), | |
| 1682 | - | |
| 1683 | -/***/ "./node_modules/elliptic/node_modules/bn.js/lib/bn.js": | |
| 1684 | -/*!************************************************************!*\ | |
| 1685 | - !*** ./node_modules/elliptic/node_modules/bn.js/lib/bn.js ***! | |
| 1686 | - \************************************************************/ | |
| 1687 | -/*! no static exports found */ | |
| 1688 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1689 | - | |
| 1690 | -eval("/* WEBPACK VAR INJECTION */(function(module) {(function (module, exports) {\n 'use strict'; // Utils\n\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n } // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n\n\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n } // BN\n\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0; // Reduction context\n\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n var Buffer;\n\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = __webpack_require__(/*! buffer */ 10).Buffer;\n }\n } catch (e) {}\n\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n\n if (endian !== 'le') return; // Reverse the bytes\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray(number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n\n return this.strip();\n };\n\n function parseHex4Bits(string, index) {\n var c = string.charCodeAt(index); // 'A' - 'F'\n\n if (c >= 65 && c <= 70) {\n return c - 55; // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87; // '0' - '9'\n } else {\n return c - 48 & 0xf;\n }\n }\n\n function parseHexByte(string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex(number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n } // 24-bits chunks\n\n\n var off = 0;\n var j = 0;\n var w;\n\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase(str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul; // 'a'\n\n if (c >= 49) {\n r += c - 49 + 0xa; // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa; // '0' - '9'\n } else {\n r += c;\n }\n }\n\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase(number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1; // Find length of limb in base\n\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand(size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n\n return this;\n }; // Remove leading `0` from `this`\n\n\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign() {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n\n return this;\n };\n\n BN.prototype.inspect = function inspect() {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n */\n\n\n var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = ((w << off | carry) & 0xffffff).toString(16);\n carry = w >>> 24 - off & 0xffffff;\n\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n\n off += 2;\n\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base]; // var groupBase = Math.pow(base, groupSize);\n\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n\n if (this.isZero()) {\n out = '0' + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber() {\n var ret = this.words[0];\n\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + this.words[1] * 0x4000000;\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n\n return this.negative !== 0 ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\n var t = w;\n var r = 0;\n\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n\n if ((t & 0x1) === 0) {\n r++;\n }\n\n return r;\n }; // Return number of used bits in a BN\n\n\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n\n var hi = this._countBits(w);\n\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray(num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n\n return w;\n } // Number of trailing zero bits\n\n\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n\n r += b;\n if (b !== 26) break;\n }\n\n return r;\n };\n\n BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos(width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos(width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n }; // Return negative clone of `this`\n\n\n BN.prototype.neg = function neg() {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n }; // Or `num` with `this` in-place\n\n\n BN.prototype.iuor = function iuor(num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n }; // Or `num` with `this`\n\n\n BN.prototype.or = function or(num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor(num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n }; // And `num` with `this` in-place\n\n\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n return this.strip();\n };\n\n BN.prototype.iand = function iand(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n }; // And `num` with `this`\n\n\n BN.prototype.and = function and(num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand(num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n }; // Xor `num` with `this` in-place\n\n\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n }; // Xor `num` with `this`\n\n\n BN.prototype.xor = function xor(num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor(num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n }; // Not ``this`` with ``width`` bitwidth\n\n\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26; // Extend the buffer with leading zeroes\n\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n } // Handle complete words\n\n\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n } // Handle the residue\n\n\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n } // And remove leading zeroes\n\n\n return this.strip();\n };\n\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n }; // Set `bit` of `this`\n\n\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | 1 << wbit;\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n }; // Add `num` to `this` in-place\n\n\n BN.prototype.iadd = function iadd(num) {\n var r; // negative + positive\n\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign(); // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n } // a.length > b.length\n\n\n var a, b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++; // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n }; // Add `num` to `this`\n\n\n BN.prototype.add = function add(num) {\n var res;\n\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n return num.clone().iadd(this);\n }; // Subtract `num` from `this` in-place\n\n\n BN.prototype.isub = function isub(num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign(); // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n } // At this point both numbers are positive\n\n\n var cmp = this.cmp(num); // Optimization - zeroify\n\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n } // a > b\n\n\n var a, b;\n\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n } // Copy rest of the words\n\n\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n }; // Subtract `num` from `this`\n\n\n BN.prototype.sub = function sub(num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = self.length + num.length | 0;\n out.length = len;\n len = len - 1 | 0; // Peel one iteration (compiler can't do it, because of code complexity)\n\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += r / 0x4000000 | 0;\n rword = r & 0x3ffffff;\n }\n\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n } // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n\n\n var comb10MulTo = function comb10MulTo(self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = mid + Math.imul(ah0, bl0) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = mid + Math.imul(ah1, bl0) | 0;\n hi = Math.imul(ah1, bh0);\n lo = lo + Math.imul(al0, bl1) | 0;\n mid = mid + Math.imul(al0, bh1) | 0;\n mid = mid + Math.imul(ah0, bl1) | 0;\n hi = hi + Math.imul(ah0, bh1) | 0;\n var w1 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = mid + Math.imul(ah2, bl0) | 0;\n hi = Math.imul(ah2, bh0);\n lo = lo + Math.imul(al1, bl1) | 0;\n mid = mid + Math.imul(al1, bh1) | 0;\n mid = mid + Math.imul(ah1, bl1) | 0;\n hi = hi + Math.imul(ah1, bh1) | 0;\n lo = lo + Math.imul(al0, bl2) | 0;\n mid = mid + Math.imul(al0, bh2) | 0;\n mid = mid + Math.imul(ah0, bl2) | 0;\n hi = hi + Math.imul(ah0, bh2) | 0;\n var w2 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = mid + Math.imul(ah3, bl0) | 0;\n hi = Math.imul(ah3, bh0);\n lo = lo + Math.imul(al2, bl1) | 0;\n mid = mid + Math.imul(al2, bh1) | 0;\n mid = mid + Math.imul(ah2, bl1) | 0;\n hi = hi + Math.imul(ah2, bh1) | 0;\n lo = lo + Math.imul(al1, bl2) | 0;\n mid = mid + Math.imul(al1, bh2) | 0;\n mid = mid + Math.imul(ah1, bl2) | 0;\n hi = hi + Math.imul(ah1, bh2) | 0;\n lo = lo + Math.imul(al0, bl3) | 0;\n mid = mid + Math.imul(al0, bh3) | 0;\n mid = mid + Math.imul(ah0, bl3) | 0;\n hi = hi + Math.imul(ah0, bh3) | 0;\n var w3 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = mid + Math.imul(ah4, bl0) | 0;\n hi = Math.imul(ah4, bh0);\n lo = lo + Math.imul(al3, bl1) | 0;\n mid = mid + Math.imul(al3, bh1) | 0;\n mid = mid + Math.imul(ah3, bl1) | 0;\n hi = hi + Math.imul(ah3, bh1) | 0;\n lo = lo + Math.imul(al2, bl2) | 0;\n mid = mid + Math.imul(al2, bh2) | 0;\n mid = mid + Math.imul(ah2, bl2) | 0;\n hi = hi + Math.imul(ah2, bh2) | 0;\n lo = lo + Math.imul(al1, bl3) | 0;\n mid = mid + Math.imul(al1, bh3) | 0;\n mid = mid + Math.imul(ah1, bl3) | 0;\n hi = hi + Math.imul(ah1, bh3) | 0;\n lo = lo + Math.imul(al0, bl4) | 0;\n mid = mid + Math.imul(al0, bh4) | 0;\n mid = mid + Math.imul(ah0, bl4) | 0;\n hi = hi + Math.imul(ah0, bh4) | 0;\n var w4 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = mid + Math.imul(ah5, bl0) | 0;\n hi = Math.imul(ah5, bh0);\n lo = lo + Math.imul(al4, bl1) | 0;\n mid = mid + Math.imul(al4, bh1) | 0;\n mid = mid + Math.imul(ah4, bl1) | 0;\n hi = hi + Math.imul(ah4, bh1) | 0;\n lo = lo + Math.imul(al3, bl2) | 0;\n mid = mid + Math.imul(al3, bh2) | 0;\n mid = mid + Math.imul(ah3, bl2) | 0;\n hi = hi + Math.imul(ah3, bh2) | 0;\n lo = lo + Math.imul(al2, bl3) | 0;\n mid = mid + Math.imul(al2, bh3) | 0;\n mid = mid + Math.imul(ah2, bl3) | 0;\n hi = hi + Math.imul(ah2, bh3) | 0;\n lo = lo + Math.imul(al1, bl4) | 0;\n mid = mid + Math.imul(al1, bh4) | 0;\n mid = mid + Math.imul(ah1, bl4) | 0;\n hi = hi + Math.imul(ah1, bh4) | 0;\n lo = lo + Math.imul(al0, bl5) | 0;\n mid = mid + Math.imul(al0, bh5) | 0;\n mid = mid + Math.imul(ah0, bl5) | 0;\n hi = hi + Math.imul(ah0, bh5) | 0;\n var w5 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = mid + Math.imul(ah6, bl0) | 0;\n hi = Math.imul(ah6, bh0);\n lo = lo + Math.imul(al5, bl1) | 0;\n mid = mid + Math.imul(al5, bh1) | 0;\n mid = mid + Math.imul(ah5, bl1) | 0;\n hi = hi + Math.imul(ah5, bh1) | 0;\n lo = lo + Math.imul(al4, bl2) | 0;\n mid = mid + Math.imul(al4, bh2) | 0;\n mid = mid + Math.imul(ah4, bl2) | 0;\n hi = hi + Math.imul(ah4, bh2) | 0;\n lo = lo + Math.imul(al3, bl3) | 0;\n mid = mid + Math.imul(al3, bh3) | 0;\n mid = mid + Math.imul(ah3, bl3) | 0;\n hi = hi + Math.imul(ah3, bh3) | 0;\n lo = lo + Math.imul(al2, bl4) | 0;\n mid = mid + Math.imul(al2, bh4) | 0;\n mid = mid + Math.imul(ah2, bl4) | 0;\n hi = hi + Math.imul(ah2, bh4) | 0;\n lo = lo + Math.imul(al1, bl5) | 0;\n mid = mid + Math.imul(al1, bh5) | 0;\n mid = mid + Math.imul(ah1, bl5) | 0;\n hi = hi + Math.imul(ah1, bh5) | 0;\n lo = lo + Math.imul(al0, bl6) | 0;\n mid = mid + Math.imul(al0, bh6) | 0;\n mid = mid + Math.imul(ah0, bl6) | 0;\n hi = hi + Math.imul(ah0, bh6) | 0;\n var w6 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = mid + Math.imul(ah7, bl0) | 0;\n hi = Math.imul(ah7, bh0);\n lo = lo + Math.imul(al6, bl1) | 0;\n mid = mid + Math.imul(al6, bh1) | 0;\n mid = mid + Math.imul(ah6, bl1) | 0;\n hi = hi + Math.imul(ah6, bh1) | 0;\n lo = lo + Math.imul(al5, bl2) | 0;\n mid = mid + Math.imul(al5, bh2) | 0;\n mid = mid + Math.imul(ah5, bl2) | 0;\n hi = hi + Math.imul(ah5, bh2) | 0;\n lo = lo + Math.imul(al4, bl3) | 0;\n mid = mid + Math.imul(al4, bh3) | 0;\n mid = mid + Math.imul(ah4, bl3) | 0;\n hi = hi + Math.imul(ah4, bh3) | 0;\n lo = lo + Math.imul(al3, bl4) | 0;\n mid = mid + Math.imul(al3, bh4) | 0;\n mid = mid + Math.imul(ah3, bl4) | 0;\n hi = hi + Math.imul(ah3, bh4) | 0;\n lo = lo + Math.imul(al2, bl5) | 0;\n mid = mid + Math.imul(al2, bh5) | 0;\n mid = mid + Math.imul(ah2, bl5) | 0;\n hi = hi + Math.imul(ah2, bh5) | 0;\n lo = lo + Math.imul(al1, bl6) | 0;\n mid = mid + Math.imul(al1, bh6) | 0;\n mid = mid + Math.imul(ah1, bl6) | 0;\n hi = hi + Math.imul(ah1, bh6) | 0;\n lo = lo + Math.imul(al0, bl7) | 0;\n mid = mid + Math.imul(al0, bh7) | 0;\n mid = mid + Math.imul(ah0, bl7) | 0;\n hi = hi + Math.imul(ah0, bh7) | 0;\n var w7 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = mid + Math.imul(ah8, bl0) | 0;\n hi = Math.imul(ah8, bh0);\n lo = lo + Math.imul(al7, bl1) | 0;\n mid = mid + Math.imul(al7, bh1) | 0;\n mid = mid + Math.imul(ah7, bl1) | 0;\n hi = hi + Math.imul(ah7, bh1) | 0;\n lo = lo + Math.imul(al6, bl2) | 0;\n mid = mid + Math.imul(al6, bh2) | 0;\n mid = mid + Math.imul(ah6, bl2) | 0;\n hi = hi + Math.imul(ah6, bh2) | 0;\n lo = lo + Math.imul(al5, bl3) | 0;\n mid = mid + Math.imul(al5, bh3) | 0;\n mid = mid + Math.imul(ah5, bl3) | 0;\n hi = hi + Math.imul(ah5, bh3) | 0;\n lo = lo + Math.imul(al4, bl4) | 0;\n mid = mid + Math.imul(al4, bh4) | 0;\n mid = mid + Math.imul(ah4, bl4) | 0;\n hi = hi + Math.imul(ah4, bh4) | 0;\n lo = lo + Math.imul(al3, bl5) | 0;\n mid = mid + Math.imul(al3, bh5) | 0;\n mid = mid + Math.imul(ah3, bl5) | 0;\n hi = hi + Math.imul(ah3, bh5) | 0;\n lo = lo + Math.imul(al2, bl6) | 0;\n mid = mid + Math.imul(al2, bh6) | 0;\n mid = mid + Math.imul(ah2, bl6) | 0;\n hi = hi + Math.imul(ah2, bh6) | 0;\n lo = lo + Math.imul(al1, bl7) | 0;\n mid = mid + Math.imul(al1, bh7) | 0;\n mid = mid + Math.imul(ah1, bl7) | 0;\n hi = hi + Math.imul(ah1, bh7) | 0;\n lo = lo + Math.imul(al0, bl8) | 0;\n mid = mid + Math.imul(al0, bh8) | 0;\n mid = mid + Math.imul(ah0, bl8) | 0;\n hi = hi + Math.imul(ah0, bh8) | 0;\n var w8 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = mid + Math.imul(ah9, bl0) | 0;\n hi = Math.imul(ah9, bh0);\n lo = lo + Math.imul(al8, bl1) | 0;\n mid = mid + Math.imul(al8, bh1) | 0;\n mid = mid + Math.imul(ah8, bl1) | 0;\n hi = hi + Math.imul(ah8, bh1) | 0;\n lo = lo + Math.imul(al7, bl2) | 0;\n mid = mid + Math.imul(al7, bh2) | 0;\n mid = mid + Math.imul(ah7, bl2) | 0;\n hi = hi + Math.imul(ah7, bh2) | 0;\n lo = lo + Math.imul(al6, bl3) | 0;\n mid = mid + Math.imul(al6, bh3) | 0;\n mid = mid + Math.imul(ah6, bl3) | 0;\n hi = hi + Math.imul(ah6, bh3) | 0;\n lo = lo + Math.imul(al5, bl4) | 0;\n mid = mid + Math.imul(al5, bh4) | 0;\n mid = mid + Math.imul(ah5, bl4) | 0;\n hi = hi + Math.imul(ah5, bh4) | 0;\n lo = lo + Math.imul(al4, bl5) | 0;\n mid = mid + Math.imul(al4, bh5) | 0;\n mid = mid + Math.imul(ah4, bl5) | 0;\n hi = hi + Math.imul(ah4, bh5) | 0;\n lo = lo + Math.imul(al3, bl6) | 0;\n mid = mid + Math.imul(al3, bh6) | 0;\n mid = mid + Math.imul(ah3, bl6) | 0;\n hi = hi + Math.imul(ah3, bh6) | 0;\n lo = lo + Math.imul(al2, bl7) | 0;\n mid = mid + Math.imul(al2, bh7) | 0;\n mid = mid + Math.imul(ah2, bl7) | 0;\n hi = hi + Math.imul(ah2, bh7) | 0;\n lo = lo + Math.imul(al1, bl8) | 0;\n mid = mid + Math.imul(al1, bh8) | 0;\n mid = mid + Math.imul(ah1, bl8) | 0;\n hi = hi + Math.imul(ah1, bh8) | 0;\n lo = lo + Math.imul(al0, bl9) | 0;\n mid = mid + Math.imul(al0, bh9) | 0;\n mid = mid + Math.imul(ah0, bl9) | 0;\n hi = hi + Math.imul(ah0, bh9) | 0;\n var w9 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = mid + Math.imul(ah9, bl1) | 0;\n hi = Math.imul(ah9, bh1);\n lo = lo + Math.imul(al8, bl2) | 0;\n mid = mid + Math.imul(al8, bh2) | 0;\n mid = mid + Math.imul(ah8, bl2) | 0;\n hi = hi + Math.imul(ah8, bh2) | 0;\n lo = lo + Math.imul(al7, bl3) | 0;\n mid = mid + Math.imul(al7, bh3) | 0;\n mid = mid + Math.imul(ah7, bl3) | 0;\n hi = hi + Math.imul(ah7, bh3) | 0;\n lo = lo + Math.imul(al6, bl4) | 0;\n mid = mid + Math.imul(al6, bh4) | 0;\n mid = mid + Math.imul(ah6, bl4) | 0;\n hi = hi + Math.imul(ah6, bh4) | 0;\n lo = lo + Math.imul(al5, bl5) | 0;\n mid = mid + Math.imul(al5, bh5) | 0;\n mid = mid + Math.imul(ah5, bl5) | 0;\n hi = hi + Math.imul(ah5, bh5) | 0;\n lo = lo + Math.imul(al4, bl6) | 0;\n mid = mid + Math.imul(al4, bh6) | 0;\n mid = mid + Math.imul(ah4, bl6) | 0;\n hi = hi + Math.imul(ah4, bh6) | 0;\n lo = lo + Math.imul(al3, bl7) | 0;\n mid = mid + Math.imul(al3, bh7) | 0;\n mid = mid + Math.imul(ah3, bl7) | 0;\n hi = hi + Math.imul(ah3, bh7) | 0;\n lo = lo + Math.imul(al2, bl8) | 0;\n mid = mid + Math.imul(al2, bh8) | 0;\n mid = mid + Math.imul(ah2, bl8) | 0;\n hi = hi + Math.imul(ah2, bh8) | 0;\n lo = lo + Math.imul(al1, bl9) | 0;\n mid = mid + Math.imul(al1, bh9) | 0;\n mid = mid + Math.imul(ah1, bl9) | 0;\n hi = hi + Math.imul(ah1, bh9) | 0;\n var w10 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = mid + Math.imul(ah9, bl2) | 0;\n hi = Math.imul(ah9, bh2);\n lo = lo + Math.imul(al8, bl3) | 0;\n mid = mid + Math.imul(al8, bh3) | 0;\n mid = mid + Math.imul(ah8, bl3) | 0;\n hi = hi + Math.imul(ah8, bh3) | 0;\n lo = lo + Math.imul(al7, bl4) | 0;\n mid = mid + Math.imul(al7, bh4) | 0;\n mid = mid + Math.imul(ah7, bl4) | 0;\n hi = hi + Math.imul(ah7, bh4) | 0;\n lo = lo + Math.imul(al6, bl5) | 0;\n mid = mid + Math.imul(al6, bh5) | 0;\n mid = mid + Math.imul(ah6, bl5) | 0;\n hi = hi + Math.imul(ah6, bh5) | 0;\n lo = lo + Math.imul(al5, bl6) | 0;\n mid = mid + Math.imul(al5, bh6) | 0;\n mid = mid + Math.imul(ah5, bl6) | 0;\n hi = hi + Math.imul(ah5, bh6) | 0;\n lo = lo + Math.imul(al4, bl7) | 0;\n mid = mid + Math.imul(al4, bh7) | 0;\n mid = mid + Math.imul(ah4, bl7) | 0;\n hi = hi + Math.imul(ah4, bh7) | 0;\n lo = lo + Math.imul(al3, bl8) | 0;\n mid = mid + Math.imul(al3, bh8) | 0;\n mid = mid + Math.imul(ah3, bl8) | 0;\n hi = hi + Math.imul(ah3, bh8) | 0;\n lo = lo + Math.imul(al2, bl9) | 0;\n mid = mid + Math.imul(al2, bh9) | 0;\n mid = mid + Math.imul(ah2, bl9) | 0;\n hi = hi + Math.imul(ah2, bh9) | 0;\n var w11 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = mid + Math.imul(ah9, bl3) | 0;\n hi = Math.imul(ah9, bh3);\n lo = lo + Math.imul(al8, bl4) | 0;\n mid = mid + Math.imul(al8, bh4) | 0;\n mid = mid + Math.imul(ah8, bl4) | 0;\n hi = hi + Math.imul(ah8, bh4) | 0;\n lo = lo + Math.imul(al7, bl5) | 0;\n mid = mid + Math.imul(al7, bh5) | 0;\n mid = mid + Math.imul(ah7, bl5) | 0;\n hi = hi + Math.imul(ah7, bh5) | 0;\n lo = lo + Math.imul(al6, bl6) | 0;\n mid = mid + Math.imul(al6, bh6) | 0;\n mid = mid + Math.imul(ah6, bl6) | 0;\n hi = hi + Math.imul(ah6, bh6) | 0;\n lo = lo + Math.imul(al5, bl7) | 0;\n mid = mid + Math.imul(al5, bh7) | 0;\n mid = mid + Math.imul(ah5, bl7) | 0;\n hi = hi + Math.imul(ah5, bh7) | 0;\n lo = lo + Math.imul(al4, bl8) | 0;\n mid = mid + Math.imul(al4, bh8) | 0;\n mid = mid + Math.imul(ah4, bl8) | 0;\n hi = hi + Math.imul(ah4, bh8) | 0;\n lo = lo + Math.imul(al3, bl9) | 0;\n mid = mid + Math.imul(al3, bh9) | 0;\n mid = mid + Math.imul(ah3, bl9) | 0;\n hi = hi + Math.imul(ah3, bh9) | 0;\n var w12 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = mid + Math.imul(ah9, bl4) | 0;\n hi = Math.imul(ah9, bh4);\n lo = lo + Math.imul(al8, bl5) | 0;\n mid = mid + Math.imul(al8, bh5) | 0;\n mid = mid + Math.imul(ah8, bl5) | 0;\n hi = hi + Math.imul(ah8, bh5) | 0;\n lo = lo + Math.imul(al7, bl6) | 0;\n mid = mid + Math.imul(al7, bh6) | 0;\n mid = mid + Math.imul(ah7, bl6) | 0;\n hi = hi + Math.imul(ah7, bh6) | 0;\n lo = lo + Math.imul(al6, bl7) | 0;\n mid = mid + Math.imul(al6, bh7) | 0;\n mid = mid + Math.imul(ah6, bl7) | 0;\n hi = hi + Math.imul(ah6, bh7) | 0;\n lo = lo + Math.imul(al5, bl8) | 0;\n mid = mid + Math.imul(al5, bh8) | 0;\n mid = mid + Math.imul(ah5, bl8) | 0;\n hi = hi + Math.imul(ah5, bh8) | 0;\n lo = lo + Math.imul(al4, bl9) | 0;\n mid = mid + Math.imul(al4, bh9) | 0;\n mid = mid + Math.imul(ah4, bl9) | 0;\n hi = hi + Math.imul(ah4, bh9) | 0;\n var w13 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = mid + Math.imul(ah9, bl5) | 0;\n hi = Math.imul(ah9, bh5);\n lo = lo + Math.imul(al8, bl6) | 0;\n mid = mid + Math.imul(al8, bh6) | 0;\n mid = mid + Math.imul(ah8, bl6) | 0;\n hi = hi + Math.imul(ah8, bh6) | 0;\n lo = lo + Math.imul(al7, bl7) | 0;\n mid = mid + Math.imul(al7, bh7) | 0;\n mid = mid + Math.imul(ah7, bl7) | 0;\n hi = hi + Math.imul(ah7, bh7) | 0;\n lo = lo + Math.imul(al6, bl8) | 0;\n mid = mid + Math.imul(al6, bh8) | 0;\n mid = mid + Math.imul(ah6, bl8) | 0;\n hi = hi + Math.imul(ah6, bh8) | 0;\n lo = lo + Math.imul(al5, bl9) | 0;\n mid = mid + Math.imul(al5, bh9) | 0;\n mid = mid + Math.imul(ah5, bl9) | 0;\n hi = hi + Math.imul(ah5, bh9) | 0;\n var w14 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = mid + Math.imul(ah9, bl6) | 0;\n hi = Math.imul(ah9, bh6);\n lo = lo + Math.imul(al8, bl7) | 0;\n mid = mid + Math.imul(al8, bh7) | 0;\n mid = mid + Math.imul(ah8, bl7) | 0;\n hi = hi + Math.imul(ah8, bh7) | 0;\n lo = lo + Math.imul(al7, bl8) | 0;\n mid = mid + Math.imul(al7, bh8) | 0;\n mid = mid + Math.imul(ah7, bl8) | 0;\n hi = hi + Math.imul(ah7, bh8) | 0;\n lo = lo + Math.imul(al6, bl9) | 0;\n mid = mid + Math.imul(al6, bh9) | 0;\n mid = mid + Math.imul(ah6, bl9) | 0;\n hi = hi + Math.imul(ah6, bh9) | 0;\n var w15 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = mid + Math.imul(ah9, bl7) | 0;\n hi = Math.imul(ah9, bh7);\n lo = lo + Math.imul(al8, bl8) | 0;\n mid = mid + Math.imul(al8, bh8) | 0;\n mid = mid + Math.imul(ah8, bl8) | 0;\n hi = hi + Math.imul(ah8, bh8) | 0;\n lo = lo + Math.imul(al7, bl9) | 0;\n mid = mid + Math.imul(al7, bh9) | 0;\n mid = mid + Math.imul(ah7, bl9) | 0;\n hi = hi + Math.imul(ah7, bh9) | 0;\n var w16 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = mid + Math.imul(ah9, bl8) | 0;\n hi = Math.imul(ah9, bh8);\n lo = lo + Math.imul(al8, bl9) | 0;\n mid = mid + Math.imul(al8, bh9) | 0;\n mid = mid + Math.imul(ah8, bl9) | 0;\n hi = hi + Math.imul(ah8, bh9) | 0;\n var w17 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = mid + Math.imul(ah9, bl9) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n\n return out;\n }; // Polyfill comb\n\n\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n var carry = 0;\n var hncarry = 0;\n\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n ncarry = ncarry + (r / 0x4000000 | 0) | 0;\n lo = lo + rword | 0;\n rword = lo & 0x3ffffff;\n ncarry = ncarry + (lo >>> 26) | 0;\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo(num, out) {\n var res;\n var len = this.length + num.length;\n\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n }; // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n\n function FFTM(x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT(N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n }; // Returns binary-reversed representation of `x`\n\n\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n\n return rb;\n }; // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n\n\n FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n /* jshint maxdepth : false */\n\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b(n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b(ws, N) {\n var carry = 0;\n\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {\n var carry = 0;\n\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n } // Pad with zeroes\n\n\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub(N) {\n var ph = new Array(N);\n\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n }; // Multiply `this` by `num`\n\n\n BN.prototype.mul = function mul(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n }; // Multiply employing FFT\n\n\n BN.prototype.mulf = function mulf(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n }; // In-place Multiplication\n\n\n BN.prototype.imul = function imul(num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000); // Carry\n\n var carry = 0;\n\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += w / 0x4000000 | 0; // NOTE: lo is 27bit maximum\n\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln(num) {\n return this.clone().imuln(num);\n }; // `this` * `this`\n\n\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n }; // `this` * `this` in-place\n\n\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n }; // Math.pow(`this`, `num`)\n\n\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1); // Skip leading zeroes\n\n var res = this;\n\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\n }\n }\n\n return res;\n }; // Shift-left in-place\n\n\n BN.prototype.iushln = function iushln(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = 0x3ffffff >>> 26 - r << 26 - r;\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = (this.words[i] | 0) - newCarry << r;\n this.words[i] = c | carry;\n carry = newCarry >>> 26 - r;\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln(bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n }; // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n\n\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n\n if (hint) {\n h = (hint - hint % 26) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n var maskedWords = extended;\n h -= s;\n h = Math.max(0, h); // Extended mode, copy masked part\n\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n\n maskedWords.length = s;\n }\n\n if (s === 0) {// No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = carry << 26 - r | word >>> r;\n carry = word & mask;\n } // Push carried bits as a mask\n\n\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n }; // Shift-left\n\n\n BN.prototype.shln = function shln(bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln(bits) {\n return this.clone().iushln(bits);\n }; // Shift-right\n\n\n BN.prototype.shrn = function shrn(bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn(bits) {\n return this.clone().iushrn(bits);\n }; // Test if n bit is set\n\n\n BN.prototype.testn = function testn(bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) return false; // Check bit and return\n\n var w = this.words[s];\n return !!(w & q);\n }; // Return only lowers bits of number (in-place)\n\n\n BN.prototype.imaskn = function imaskn(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n }; // Return only lowers bits of number\n\n\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n }; // Add plain number `num` to `this`\n\n\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num); // Possible sign change\n\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n } // Add without checks\n\n\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num; // Carry\n\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n\n this.length = Math.max(this.length, i + 1);\n return this;\n }; // Subtract plain number `num` from `this`\n\n\n BN.prototype.isubn = function isubn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - (right / 0x4000000 | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip(); // Subtraction overflow\n\n assert(carry === -1);\n carry = 0;\n\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n\n this.negative = 1;\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num; // Normalize\n\n var bhi = b.words[b.length - 1] | 0;\n\n var bhiBits = this._countBits(bhi);\n\n shift = 26 - bhiBits;\n\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n } // Initialize quotient\n\n\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n\n if (diff.negative === 0) {\n a = diff;\n\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n\n a._ishlnsubmul(b, 1, j);\n\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n\n if (q) {\n q.words[j] = qj;\n }\n }\n\n if (q) {\n q.strip();\n }\n\n a.strip(); // Denormalize\n\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n }; // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n\n\n BN.prototype.divmod = function divmod(num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n } // Both numbers are positive at this point\n // Strip both numbers to approximate shift value\n\n\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n } // Very short reduction\n\n\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n }; // Find `this` / `num`\n\n\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n }; // Find `this` % `num`\n\n\n BN.prototype.mod = function mod(num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod(num) {\n return this.divmod(num, 'mod', true).mod;\n }; // Find Round(`this` / `num`)\n\n\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num); // Fast case - exact division\n\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half); // Round down\n\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up\n\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n }; // In-place division by number\n\n\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = w / num | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n } // A * x + B * y = x\n\n\n var A = new BN(1);\n var B = new BN(0); // C * x + D * y = y\n\n var C = new BN(0);\n var D = new BN(1);\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n x.iushrn(i);\n\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n y.iushrn(j);\n\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n }; // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n\n\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n a.iushrn(i);\n\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n b.iushrn(j);\n\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0; // Remove common factor of two\n\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n }; // Invert number in the field F(num)\n\n\n BN.prototype.invm = function invm(num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd() {\n return (this.words[0] & 1) === 1;\n }; // And first word and num\n\n\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n }; // Increment at the bit position in-line\n\n\n BN.prototype.bincn = function bincn(bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) {\n this._expand(s + 1);\n\n this.words[s] |= q;\n return this;\n } // Add bit and propagate, if needed\n\n\n var carry = q;\n\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n\n\n BN.prototype.cmp = function cmp(num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Unsigned comparison\n\n\n BN.prototype.ucmp = function ucmp(num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n var res = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n if (a === b) continue;\n\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n\n break;\n }\n\n return res;\n };\n\n BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq(num) {\n return this.cmp(num) === 0;\n }; //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n\n\n BN.red = function red(num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed() {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd(num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd(num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub(num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub(num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl(num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr() {\n assert(this.red, 'redSqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr() {\n assert(this.red, 'redISqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.isqr(this);\n }; // Square root over p\n\n\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm() {\n assert(this.red, 'redInvm works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.invm(this);\n }; // Return negative clone of `this` % `red modulo`\n\n\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n\n this.red._verify1(this);\n\n return this.red.pow(this, num);\n }; // Prime numbers with efficient reduction\n\n\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n }; // Pseudo-Mersenne prime\n\n function MPrime(name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp() {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce(num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n\n inherits(K256, MPrime);\n\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n } // Shift by 9 limbs\n\n\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = (next & mask) << 4 | prev >>> 22;\n prev = next;\n }\n\n prev >>>= 22;\n input.words[i - 10] = prev;\n\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK(num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n\n var lo = 0;\n\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + (lo / 0x4000000 | 0);\n } // Fast length reduction\n\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n\n return num;\n };\n\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n\n inherits(P224, MPrime);\n\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n\n inherits(P192, MPrime);\n\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n num.words[i] = lo;\n carry = hi;\n }\n\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n\n return num;\n }; // Exported mostly for testing purposes, use plain name instead\n\n\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n\n primes[name] = prime;\n return prime;\n }; //\n // Base reduction engine\n //\n\n\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1(a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2(a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red, 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res;\n };\n\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res;\n };\n\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1); // Fast case\n\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n } // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n\n\n var q = this.m.subn(1);\n var s = 0;\n\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg(); // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n\n while (t.cmp(one) !== 0) {\n var tmp = t;\n\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm(a) {\n var inv = a._invmp(this.m);\n\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow(a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom(num) {\n var res = num.clone();\n res.red = null;\n return res;\n }; //\n // Montgomery method engine\n //\n\n\n BN.mont = function mont(num) {\n return new Mont(num);\n };\n\n function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom(num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul(a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm(a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})( false || module, this);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/elliptic/node_modules/bn.js/lib/bn.js?"); | |
| 1691 | - | |
| 1692 | -/***/ }), | |
| 1693 | - | |
| 1694 | -/***/ "./node_modules/elliptic/package.json": | |
| 1695 | -/*!********************************************!*\ | |
| 1696 | - !*** ./node_modules/elliptic/package.json ***! | |
| 1697 | - \********************************************/ | |
| 1698 | -/*! exports provided: _args, _from, _id, _inBundle, _integrity, _location, _phantomChildren, _requested, _requiredBy, _resolved, _spec, _where, author, bugs, dependencies, description, devDependencies, files, homepage, keywords, license, main, name, repository, scripts, version, default */ | |
| 1699 | -/***/ (function(module) { | |
| 1700 | - | |
| 1701 | -eval("module.exports = JSON.parse(\"{\\\"_args\\\":[[\\\"elliptic@6.5.4\\\",\\\"G:\\\\\\\\yolin\\\\\\\\SkeyeWebPlayerSourceCode\\\"]],\\\"_from\\\":\\\"elliptic@6.5.4\\\",\\\"_id\\\":\\\"elliptic@6.5.4\\\",\\\"_inBundle\\\":false,\\\"_integrity\\\":\\\"sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==\\\",\\\"_location\\\":\\\"/elliptic\\\",\\\"_phantomChildren\\\":{},\\\"_requested\\\":{\\\"type\\\":\\\"version\\\",\\\"registry\\\":true,\\\"raw\\\":\\\"elliptic@6.5.4\\\",\\\"name\\\":\\\"elliptic\\\",\\\"escapedName\\\":\\\"elliptic\\\",\\\"rawSpec\\\":\\\"6.5.4\\\",\\\"saveSpec\\\":null,\\\"fetchSpec\\\":\\\"6.5.4\\\"},\\\"_requiredBy\\\":[\\\"/browserify-sign\\\",\\\"/create-ecdh\\\"],\\\"_resolved\\\":\\\"https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz\\\",\\\"_spec\\\":\\\"6.5.4\\\",\\\"_where\\\":\\\"G:\\\\\\\\yolin\\\\\\\\SkeyeWebPlayerSourceCode\\\",\\\"author\\\":{\\\"name\\\":\\\"Fedor Indutny\\\",\\\"email\\\":\\\"fedor@indutny.com\\\"},\\\"bugs\\\":{\\\"url\\\":\\\"https://github.com/indutny/elliptic/issues\\\"},\\\"dependencies\\\":{\\\"bn.js\\\":\\\"^4.11.9\\\",\\\"brorand\\\":\\\"^1.1.0\\\",\\\"hash.js\\\":\\\"^1.0.0\\\",\\\"hmac-drbg\\\":\\\"^1.0.1\\\",\\\"inherits\\\":\\\"^2.0.4\\\",\\\"minimalistic-assert\\\":\\\"^1.0.1\\\",\\\"minimalistic-crypto-utils\\\":\\\"^1.0.1\\\"},\\\"description\\\":\\\"EC cryptography\\\",\\\"devDependencies\\\":{\\\"brfs\\\":\\\"^2.0.2\\\",\\\"coveralls\\\":\\\"^3.1.0\\\",\\\"eslint\\\":\\\"^7.6.0\\\",\\\"grunt\\\":\\\"^1.2.1\\\",\\\"grunt-browserify\\\":\\\"^5.3.0\\\",\\\"grunt-cli\\\":\\\"^1.3.2\\\",\\\"grunt-contrib-connect\\\":\\\"^3.0.0\\\",\\\"grunt-contrib-copy\\\":\\\"^1.0.0\\\",\\\"grunt-contrib-uglify\\\":\\\"^5.0.0\\\",\\\"grunt-mocha-istanbul\\\":\\\"^5.0.2\\\",\\\"grunt-saucelabs\\\":\\\"^9.0.1\\\",\\\"istanbul\\\":\\\"^0.4.5\\\",\\\"mocha\\\":\\\"^8.0.1\\\"},\\\"files\\\":[\\\"lib\\\"],\\\"homepage\\\":\\\"https://github.com/indutny/elliptic\\\",\\\"keywords\\\":[\\\"EC\\\",\\\"Elliptic\\\",\\\"curve\\\",\\\"Cryptography\\\"],\\\"license\\\":\\\"MIT\\\",\\\"main\\\":\\\"lib/elliptic.js\\\",\\\"name\\\":\\\"elliptic\\\",\\\"repository\\\":{\\\"type\\\":\\\"git\\\",\\\"url\\\":\\\"git+ssh://git@github.com/indutny/elliptic.git\\\"},\\\"scripts\\\":{\\\"lint\\\":\\\"eslint lib test\\\",\\\"lint:fix\\\":\\\"npm run lint -- --fix\\\",\\\"test\\\":\\\"npm run lint && npm run unit\\\",\\\"unit\\\":\\\"istanbul test _mocha --reporter=spec test/index.js\\\",\\\"version\\\":\\\"grunt dist && git add dist/\\\"},\\\"version\\\":\\\"6.5.4\\\"}\");\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/elliptic/package.json?"); | |
| 1702 | - | |
| 1703 | -/***/ }), | |
| 1704 | - | |
| 1705 | -/***/ "./node_modules/es6-promise/dist/es6-promise.js": | |
| 1706 | -/*!******************************************************!*\ | |
| 1707 | - !*** ./node_modules/es6-promise/dist/es6-promise.js ***! | |
| 1708 | - \******************************************************/ | |
| 1709 | -/*! no static exports found */ | |
| 1710 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1711 | - | |
| 1712 | -eval("/* WEBPACK VAR INJECTION */(function(process, global) {/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.8+1e68dce6\n */\n(function (global, factory) {\n true ? module.exports = factory() : undefined;\n})(this, function () {\n 'use strict';\n\n function objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n }\n\n function isFunction(x) {\n return typeof x === 'function';\n }\n\n var _isArray = void 0;\n\n if (Array.isArray) {\n _isArray = Array.isArray;\n } else {\n _isArray = function _isArray(x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n }\n\n var isArray = _isArray;\n var len = 0;\n var vertxNext = void 0;\n var customSchedulerFn = void 0;\n\n var asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n };\n\n function setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n }\n\n function setAsap(asapFn) {\n asap = asapFn;\n }\n\n var browserWindow = typeof window !== 'undefined' ? window : undefined;\n var browserGlobal = browserWindow || {};\n var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\n var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]'; // test for web worker but not in IE10\n\n var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined'; // node\n\n function useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n } // vertx\n\n\n function useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n }\n\n function useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, {\n characterData: true\n });\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n } // web worker\n\n\n function useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n }\n\n function useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n }\n\n var queue = new Array(1000);\n\n function flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n callback(arg);\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n }\n\n function attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n }\n\n var scheduleFlush = void 0; // Decide what async method to use to triggering processing of queued callbacks:\n\n if (isNode) {\n scheduleFlush = useNextTick();\n } else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n } else if (isWorker) {\n scheduleFlush = useMessageChannel();\n } else if (browserWindow === undefined && \"function\" === 'function') {\n scheduleFlush = attemptVertx();\n } else {\n scheduleFlush = useSetTimeout();\n }\n\n function then(onFulfillment, onRejection) {\n var parent = this;\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n }\n /**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n \n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n \n promise.then(function(value){\n // value === 1\n });\n ```\n \n Instead of writing the above, your code now simply becomes the following:\n \n ```javascript\n let promise = Promise.resolve(1);\n \n promise.then(function(value){\n // value === 1\n });\n ```\n \n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n */\n\n\n function resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n }\n\n var PROMISE_ID = Math.random().toString(36).substring(2);\n\n function noop() {}\n\n var PENDING = void 0;\n var FULFILLED = 1;\n var REJECTED = 2;\n\n function selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n }\n\n function cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n }\n\n function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n }\n\n function handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n\n sealed = true;\n\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n\n sealed = true;\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n }\n\n function handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n }\n\n function handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n }\n\n function resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n var then$$1 = void 0;\n\n try {\n then$$1 = value.then;\n } catch (error) {\n reject(promise, error);\n return;\n }\n\n handleMaybeThenable(promise, value, then$$1);\n } else {\n fulfill(promise, value);\n }\n }\n\n function publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n }\n\n function fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n }\n\n function reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._state = REJECTED;\n promise._result = reason;\n asap(publishRejection, promise);\n }\n\n function subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n parent._onerror = null;\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n }\n\n function publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n }\n\n function invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = true;\n\n if (hasCallback) {\n try {\n value = callback(detail);\n } catch (e) {\n succeeded = false;\n error = e;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n }\n\n if (promise._state !== PENDING) {// noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (succeeded === false) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n }\n\n function initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n }\n\n var id = 0;\n\n function nextId() {\n return id++;\n }\n\n function makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n }\n\n function validationError() {\n return new Error('Array Methods must be provided an Array');\n }\n\n var Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n\n this._enumerate(input);\n\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n if (resolve$$1 === resolve$1) {\n var _then = void 0;\n\n var error = void 0;\n var didError = false;\n\n try {\n _then = entry.then;\n } catch (e) {\n didError = true;\n error = e;\n }\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n\n if (didError) {\n reject(promise, error);\n } else {\n handleMaybeThenable(promise, entry, _then);\n }\n\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n }();\n /**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n \n Example:\n \n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n \n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n \n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n \n Example:\n \n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n \n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n \n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n */\n\n\n function all(entries) {\n return new Enumerator(this, entries).promise;\n }\n /**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n \n Example:\n \n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n \n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n \n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n \n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n \n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n \n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n \n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n \n An example real-world use case is implementing timeouts:\n \n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n \n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n */\n\n\n function race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n }\n /**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n \n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n \n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n \n Instead of writing the above, your code now simply becomes the following:\n \n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n \n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n \n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n */\n\n\n function reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n }\n\n function needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n }\n\n function needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n }\n /**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n \n Terminology\n -----------\n \n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n \n A promise can be in one of three states: pending, fulfilled, or rejected.\n \n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n \n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n \n \n Basic Usage:\n ------------\n \n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n \n // on failure\n reject(reason);\n });\n \n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n \n Advanced Usage:\n ---------------\n \n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n \n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n \n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n \n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n \n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n \n Unlike callbacks, promises are great composable primitives.\n \n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n \n return values;\n });\n ```\n \n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n */\n\n\n var Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n if (isFunction(callback)) {\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n }\n\n return promise.then(callback, callback);\n };\n\n return Promise;\n }();\n\n Promise$1.prototype.then = then;\n Promise$1.all = all;\n Promise$1.race = race;\n Promise$1.resolve = resolve$1;\n Promise$1.reject = reject$1;\n Promise$1._setScheduler = setScheduler;\n Promise$1._setAsap = setAsap;\n Promise$1._asap = asap;\n /*global self*/\n\n function polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {// silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n } // Strange compat..\n\n\n Promise$1.polyfill = polyfill;\n Promise$1.Promise = Promise$1;\n return Promise$1;\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../process/browser.js */ \"./node_modules/process/browser.js\"), __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/es6-promise/dist/es6-promise.js?"); | |
| 1713 | - | |
| 1714 | -/***/ }), | |
| 1715 | - | |
| 1716 | -/***/ "./node_modules/evp_bytestokey/index.js": | |
| 1717 | -/*!**********************************************!*\ | |
| 1718 | - !*** ./node_modules/evp_bytestokey/index.js ***! | |
| 1719 | - \**********************************************/ | |
| 1720 | -/*! no static exports found */ | |
| 1721 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1722 | - | |
| 1723 | -eval("var Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar MD5 = __webpack_require__(/*! md5.js */ \"./node_modules/md5.js/index.js\");\n/* eslint-disable camelcase */\n\n\nfunction EVP_BytesToKey(password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary');\n\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary');\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length');\n }\n\n var keyLen = keyBits / 8;\n var key = Buffer.alloc(keyLen);\n var iv = Buffer.alloc(ivLen || 0);\n var tmp = Buffer.alloc(0);\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5();\n hash.update(tmp);\n hash.update(password);\n if (salt) hash.update(salt);\n tmp = hash.digest();\n var used = 0;\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen;\n used = Math.min(keyLen, tmp.length);\n tmp.copy(key, keyStart, 0, used);\n keyLen -= used;\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen;\n var length = Math.min(ivLen, tmp.length - used);\n tmp.copy(iv, ivStart, used, used + length);\n ivLen -= length;\n }\n }\n\n tmp.fill(0);\n return {\n key: key,\n iv: iv\n };\n}\n\nmodule.exports = EVP_BytesToKey;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/evp_bytestokey/index.js?"); | |
| 1724 | - | |
| 1725 | -/***/ }), | |
| 1726 | - | |
| 1727 | -/***/ "./node_modules/global/window.js": | |
| 1728 | -/*!***************************************!*\ | |
| 1729 | - !*** ./node_modules/global/window.js ***! | |
| 1730 | - \***************************************/ | |
| 1731 | -/*! no static exports found */ | |
| 1732 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1733 | - | |
| 1734 | -eval("/* WEBPACK VAR INJECTION */(function(global) {var win;\n\nif (typeof window !== \"undefined\") {\n win = window;\n} else if (typeof global !== \"undefined\") {\n win = global;\n} else if (typeof self !== \"undefined\") {\n win = self;\n} else {\n win = {};\n}\n\nmodule.exports = win;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/global/window.js?"); | |
| 1735 | - | |
| 1736 | -/***/ }), | |
| 1737 | - | |
| 1738 | -/***/ "./node_modules/hash-base/index.js": | |
| 1739 | -/*!*****************************************!*\ | |
| 1740 | - !*** ./node_modules/hash-base/index.js ***! | |
| 1741 | - \*****************************************/ | |
| 1742 | -/*! no static exports found */ | |
| 1743 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1744 | - | |
| 1745 | -"use strict"; | |
| 1746 | -eval("\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar Transform = __webpack_require__(/*! readable-stream */ \"./node_modules/hash-base/node_modules/readable-stream/readable-browser.js\").Transform;\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nfunction throwIfNotStringOrBuffer(val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer');\n }\n}\n\nfunction HashBase(blockSize) {\n Transform.call(this);\n this._block = Buffer.allocUnsafe(blockSize);\n this._blockSize = blockSize;\n this._blockOffset = 0;\n this._length = [0, 0, 0, 0];\n this._finalized = false;\n}\n\ninherits(HashBase, Transform);\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null;\n\n try {\n this.update(chunk, encoding);\n } catch (err) {\n error = err;\n }\n\n callback(error);\n};\n\nHashBase.prototype._flush = function (callback) {\n var error = null;\n\n try {\n this.push(this.digest());\n } catch (err) {\n error = err;\n }\n\n callback(error);\n};\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data');\n if (this._finalized) throw new Error('Digest already called');\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding); // consume data\n\n var block = this._block;\n var offset = 0;\n\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) {\n block[i++] = data[offset++];\n }\n\n this._update();\n\n this._blockOffset = 0;\n }\n\n while (offset < data.length) {\n block[this._blockOffset++] = data[offset++];\n } // update length\n\n\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry;\n carry = this._length[j] / 0x0100000000 | 0;\n if (carry > 0) this._length[j] -= 0x0100000000 * carry;\n }\n\n return this;\n};\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented');\n};\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called');\n this._finalized = true;\n\n var digest = this._digest();\n\n if (encoding !== undefined) digest = digest.toString(encoding); // reset state\n\n this._block.fill(0);\n\n this._blockOffset = 0;\n\n for (var i = 0; i < 4; ++i) {\n this._length[i] = 0;\n }\n\n return digest;\n};\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented');\n};\n\nmodule.exports = HashBase;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash-base/index.js?"); | |
| 1747 | - | |
| 1748 | -/***/ }), | |
| 1749 | - | |
| 1750 | -/***/ "./node_modules/hash-base/node_modules/readable-stream/errors-browser.js": | |
| 1751 | -/*!*******************************************************************************!*\ | |
| 1752 | - !*** ./node_modules/hash-base/node_modules/readable-stream/errors-browser.js ***! | |
| 1753 | - \*******************************************************************************/ | |
| 1754 | -/*! no static exports found */ | |
| 1755 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1756 | - | |
| 1757 | -"use strict"; | |
| 1758 | -eval("\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError = /*#__PURE__*/function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash-base/node_modules/readable-stream/errors-browser.js?"); | |
| 1759 | - | |
| 1760 | -/***/ }), | |
| 1761 | - | |
| 1762 | -/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js": | |
| 1763 | -/*!***********************************************************************************!*\ | |
| 1764 | - !*** ./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js ***! | |
| 1765 | - \***********************************************************************************/ | |
| 1766 | -/*! no static exports found */ | |
| 1767 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1768 | - | |
| 1769 | -"use strict"; | |
| 1770 | -eval("/* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n/*<replacement>*/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/*</replacement>*/\n\n\nmodule.exports = Duplex;\n\nvar Readable = __webpack_require__(/*! ./_stream_readable */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js\");\n\nvar Writable = __webpack_require__(/*! ./_stream_writable */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js\");\n\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js?"); | |
| 1771 | - | |
| 1772 | -/***/ }), | |
| 1773 | - | |
| 1774 | -/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js": | |
| 1775 | -/*!****************************************************************************************!*\ | |
| 1776 | - !*** ./node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js ***! | |
| 1777 | - \****************************************************************************************/ | |
| 1778 | -/*! no static exports found */ | |
| 1779 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1780 | - | |
| 1781 | -"use strict"; | |
| 1782 | -eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n\nmodule.exports = PassThrough;\n\nvar Transform = __webpack_require__(/*! ./_stream_transform */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js\");\n\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js?"); | |
| 1783 | - | |
| 1784 | -/***/ }), | |
| 1785 | - | |
| 1786 | -/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js": | |
| 1787 | -/*!*************************************************************************************!*\ | |
| 1788 | - !*** ./node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js ***! | |
| 1789 | - \*************************************************************************************/ | |
| 1790 | -/*! no static exports found */ | |
| 1791 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1792 | - | |
| 1793 | -"use strict"; | |
| 1794 | -eval("/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\nmodule.exports = Readable;\n/*<replacement>*/\n\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n/*<replacement>*/\n\nvar EE = __webpack_require__(/*! events */ \"./node_modules/node-libs-browser/node_modules/events/events.js\").EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Stream = __webpack_require__(/*! ./internal/streams/stream */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js\");\n/*</replacement>*/\n\n\nvar Buffer = __webpack_require__(/*! buffer */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*<replacement>*/\n\n\nvar debugUtil = __webpack_require__(/*! util */ 0);\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/*</replacement>*/\n\n\nvar BufferList = __webpack_require__(/*! ./internal/streams/buffer_list */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js\");\n\nvar destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js\");\n\nvar _require = __webpack_require__(/*! ./internal/streams/state */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js\"),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = __webpack_require__(/*! ../errors */ \"./node_modules/hash-base/node_modules/readable-stream/errors-browser.js\").codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js\");\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = __webpack_require__(/*! string_decoder/ */ \"./node_modules/string_decoder/lib/string_decoder.js\").StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js\");\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = __webpack_require__(/*! string_decoder/ */ \"./node_modules/string_decoder/lib/string_decoder.js\").StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = __webpack_require__(/*! ./internal/streams/async_iterator */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js\");\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = __webpack_require__(/*! ./internal/streams/from */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js\");\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\"), __webpack_require__(/*! ./../../../../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js?"); | |
| 1795 | - | |
| 1796 | -/***/ }), | |
| 1797 | - | |
| 1798 | -/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js": | |
| 1799 | -/*!**************************************************************************************!*\ | |
| 1800 | - !*** ./node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js ***! | |
| 1801 | - \**************************************************************************************/ | |
| 1802 | -/*! no static exports found */ | |
| 1803 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1804 | - | |
| 1805 | -"use strict"; | |
| 1806 | -eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n\nmodule.exports = Transform;\n\nvar _require$codes = __webpack_require__(/*! ../errors */ \"./node_modules/hash-base/node_modules/readable-stream/errors-browser.js\").codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js\");\n\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js?"); | |
| 1807 | - | |
| 1808 | -/***/ }), | |
| 1809 | - | |
| 1810 | -/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js": | |
| 1811 | -/*!*************************************************************************************!*\ | |
| 1812 | - !*** ./node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js ***! | |
| 1813 | - \*************************************************************************************/ | |
| 1814 | -/*! no static exports found */ | |
| 1815 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1816 | - | |
| 1817 | -"use strict"; | |
| 1818 | -eval("/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n\nmodule.exports = Writable;\n/* <replacement> */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\n\n\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n/*<replacement>*/\n\nvar internalUtil = {\n deprecate: __webpack_require__(/*! util-deprecate */ \"./node_modules/util-deprecate/browser.js\")\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Stream = __webpack_require__(/*! ./internal/streams/stream */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js\");\n/*</replacement>*/\n\n\nvar Buffer = __webpack_require__(/*! buffer */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js\");\n\nvar _require = __webpack_require__(/*! ./internal/streams/state */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js\"),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = __webpack_require__(/*! ../errors */ \"./node_modules/hash-base/node_modules/readable-stream/errors-browser.js\").codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js\");\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js\"); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\"), __webpack_require__(/*! ./../../../../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js?"); | |
| 1819 | - | |
| 1820 | -/***/ }), | |
| 1821 | - | |
| 1822 | -/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js": | |
| 1823 | -/*!****************************************************************************************************!*\ | |
| 1824 | - !*** ./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js ***! | |
| 1825 | - \****************************************************************************************************/ | |
| 1826 | -/*! no static exports found */ | |
| 1827 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1828 | - | |
| 1829 | -"use strict"; | |
| 1830 | -eval("/* WEBPACK VAR INJECTION */(function(process) {\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar finished = __webpack_require__(/*! ./end-of-stream */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js\");\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this; // if we have detected an error in the meanwhile\n // reject straight away\n\n\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this; // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n\n\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js?"); | |
| 1831 | - | |
| 1832 | -/***/ }), | |
| 1833 | - | |
| 1834 | -/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js": | |
| 1835 | -/*!*************************************************************************************************!*\ | |
| 1836 | - !*** ./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js ***! | |
| 1837 | - \*************************************************************************************************/ | |
| 1838 | -/*! no static exports found */ | |
| 1839 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1840 | - | |
| 1841 | -"use strict"; | |
| 1842 | -eval("\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nvar _require = __webpack_require__(/*! buffer */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\"),\n Buffer = _require.Buffer;\n\nvar _require2 = __webpack_require__(/*! util */ 1),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js?"); | |
| 1843 | - | |
| 1844 | -/***/ }), | |
| 1845 | - | |
| 1846 | -/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js": | |
| 1847 | -/*!*********************************************************************************************!*\ | |
| 1848 | - !*** ./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js ***! | |
| 1849 | - \*********************************************************************************************/ | |
| 1850 | -/*! no static exports found */ | |
| 1851 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1852 | - | |
| 1853 | -"use strict"; | |
| 1854 | -eval("/* WEBPACK VAR INJECTION */(function(process) { // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js?"); | |
| 1855 | - | |
| 1856 | -/***/ }), | |
| 1857 | - | |
| 1858 | -/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js": | |
| 1859 | -/*!***************************************************************************************************!*\ | |
| 1860 | - !*** ./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js ***! | |
| 1861 | - \***************************************************************************************************/ | |
| 1862 | -/*! no static exports found */ | |
| 1863 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1864 | - | |
| 1865 | -"use strict"; | |
| 1866 | -eval("// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n\nvar ERR_STREAM_PREMATURE_CLOSE = __webpack_require__(/*! ../../../errors */ \"./node_modules/hash-base/node_modules/readable-stream/errors-browser.js\").codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js?"); | |
| 1867 | - | |
| 1868 | -/***/ }), | |
| 1869 | - | |
| 1870 | -/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js": | |
| 1871 | -/*!**************************************************************************************************!*\ | |
| 1872 | - !*** ./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js ***! | |
| 1873 | - \**************************************************************************************************/ | |
| 1874 | -/*! no static exports found */ | |
| 1875 | -/***/ (function(module, exports) { | |
| 1876 | - | |
| 1877 | -eval("module.exports = function () {\n throw new Error('Readable.from is not available in the browser');\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js?"); | |
| 1878 | - | |
| 1879 | -/***/ }), | |
| 1880 | - | |
| 1881 | -/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js": | |
| 1882 | -/*!**********************************************************************************************!*\ | |
| 1883 | - !*** ./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js ***! | |
| 1884 | - \**********************************************************************************************/ | |
| 1885 | -/*! no static exports found */ | |
| 1886 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1887 | - | |
| 1888 | -"use strict"; | |
| 1889 | -eval("// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = __webpack_require__(/*! ../../../errors */ \"./node_modules/hash-base/node_modules/readable-stream/errors-browser.js\").codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = __webpack_require__(/*! ./end-of-stream */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js\");\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js?"); | |
| 1890 | - | |
| 1891 | -/***/ }), | |
| 1892 | - | |
| 1893 | -/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js": | |
| 1894 | -/*!*******************************************************************************************!*\ | |
| 1895 | - !*** ./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js ***! | |
| 1896 | - \*******************************************************************************************/ | |
| 1897 | -/*! no static exports found */ | |
| 1898 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1899 | - | |
| 1900 | -"use strict"; | |
| 1901 | -eval("\n\nvar ERR_INVALID_OPT_VALUE = __webpack_require__(/*! ../../../errors */ \"./node_modules/hash-base/node_modules/readable-stream/errors-browser.js\").codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js?"); | |
| 1902 | - | |
| 1903 | -/***/ }), | |
| 1904 | - | |
| 1905 | -/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js": | |
| 1906 | -/*!****************************************************************************************************!*\ | |
| 1907 | - !*** ./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js ***! | |
| 1908 | - \****************************************************************************************************/ | |
| 1909 | -/*! no static exports found */ | |
| 1910 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1911 | - | |
| 1912 | -eval("module.exports = __webpack_require__(/*! events */ \"./node_modules/node-libs-browser/node_modules/events/events.js\").EventEmitter;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js?"); | |
| 1913 | - | |
| 1914 | -/***/ }), | |
| 1915 | - | |
| 1916 | -/***/ "./node_modules/hash-base/node_modules/readable-stream/readable-browser.js": | |
| 1917 | -/*!*********************************************************************************!*\ | |
| 1918 | - !*** ./node_modules/hash-base/node_modules/readable-stream/readable-browser.js ***! | |
| 1919 | - \*********************************************************************************/ | |
| 1920 | -/*! no static exports found */ | |
| 1921 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1922 | - | |
| 1923 | -eval("exports = module.exports = __webpack_require__(/*! ./lib/_stream_readable.js */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js\");\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = __webpack_require__(/*! ./lib/_stream_writable.js */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js\");\nexports.Duplex = __webpack_require__(/*! ./lib/_stream_duplex.js */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js\");\nexports.Transform = __webpack_require__(/*! ./lib/_stream_transform.js */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js\");\nexports.PassThrough = __webpack_require__(/*! ./lib/_stream_passthrough.js */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js\");\nexports.finished = __webpack_require__(/*! ./lib/internal/streams/end-of-stream.js */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js\");\nexports.pipeline = __webpack_require__(/*! ./lib/internal/streams/pipeline.js */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js\");\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash-base/node_modules/readable-stream/readable-browser.js?"); | |
| 1924 | - | |
| 1925 | -/***/ }), | |
| 1926 | - | |
| 1927 | -/***/ "./node_modules/hash.js/lib/hash.js": | |
| 1928 | -/*!******************************************!*\ | |
| 1929 | - !*** ./node_modules/hash.js/lib/hash.js ***! | |
| 1930 | - \******************************************/ | |
| 1931 | -/*! no static exports found */ | |
| 1932 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1933 | - | |
| 1934 | -eval("var hash = exports;\nhash.utils = __webpack_require__(/*! ./hash/utils */ \"./node_modules/hash.js/lib/hash/utils.js\");\nhash.common = __webpack_require__(/*! ./hash/common */ \"./node_modules/hash.js/lib/hash/common.js\");\nhash.sha = __webpack_require__(/*! ./hash/sha */ \"./node_modules/hash.js/lib/hash/sha.js\");\nhash.ripemd = __webpack_require__(/*! ./hash/ripemd */ \"./node_modules/hash.js/lib/hash/ripemd.js\");\nhash.hmac = __webpack_require__(/*! ./hash/hmac */ \"./node_modules/hash.js/lib/hash/hmac.js\"); // Proxy hash functions to the main object\n\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash.js/lib/hash.js?"); | |
| 1935 | - | |
| 1936 | -/***/ }), | |
| 1937 | - | |
| 1938 | -/***/ "./node_modules/hash.js/lib/hash/common.js": | |
| 1939 | -/*!*************************************************!*\ | |
| 1940 | - !*** ./node_modules/hash.js/lib/hash/common.js ***! | |
| 1941 | - \*************************************************/ | |
| 1942 | -/*! no static exports found */ | |
| 1943 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1944 | - | |
| 1945 | -"use strict"; | |
| 1946 | -eval("\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/hash.js/lib/hash/utils.js\");\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\");\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\n\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending) this.pending = msg;else this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length; // Enough data, try updating\n\n if (this.pending.length >= this._delta8) {\n msg = this.pending; // Process pending data in blocks\n\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0) this.pending = null;\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n\n for (var i = 0; i < msg.length; i += this._delta32) {\n this._update(msg, i, i + this._delta32);\n }\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - (len + this.padLength) % bytes;\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n\n for (var i = 1; i < k; i++) {\n res[i] = 0;\n } // Append length\n\n\n len <<= 3;\n\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++) {\n res[i++] = 0;\n }\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = len >>> 24 & 0xff;\n res[i++] = len >>> 16 & 0xff;\n res[i++] = len >>> 8 & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = len >>> 8 & 0xff;\n res[i++] = len >>> 16 & 0xff;\n res[i++] = len >>> 24 & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++) {\n res[i++] = 0;\n }\n }\n\n return res;\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash.js/lib/hash/common.js?"); | |
| 1947 | - | |
| 1948 | -/***/ }), | |
| 1949 | - | |
| 1950 | -/***/ "./node_modules/hash.js/lib/hash/hmac.js": | |
| 1951 | -/*!***********************************************!*\ | |
| 1952 | - !*** ./node_modules/hash.js/lib/hash/hmac.js ***! | |
| 1953 | - \***********************************************/ | |
| 1954 | -/*! no static exports found */ | |
| 1955 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1956 | - | |
| 1957 | -"use strict"; | |
| 1958 | -eval("\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/hash.js/lib/hash/utils.js\");\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\");\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac)) return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\n\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize) key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize); // Add padding to key\n\n for (var i = key.length; i < this.blockSize; i++) {\n key.push(0);\n }\n\n for (i = 0; i < key.length; i++) {\n key[i] ^= 0x36;\n }\n\n this.inner = new this.Hash().update(key); // 0x36 ^ 0x5c = 0x6a\n\n for (i = 0; i < key.length; i++) {\n key[i] ^= 0x6a;\n }\n\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash.js/lib/hash/hmac.js?"); | |
| 1959 | - | |
| 1960 | -/***/ }), | |
| 1961 | - | |
| 1962 | -/***/ "./node_modules/hash.js/lib/hash/ripemd.js": | |
| 1963 | -/*!*************************************************!*\ | |
| 1964 | - !*** ./node_modules/hash.js/lib/hash/ripemd.js ***! | |
| 1965 | - \*************************************************/ | |
| 1966 | -/*! no static exports found */ | |
| 1967 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1968 | - | |
| 1969 | -"use strict"; | |
| 1970 | -eval("\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/hash.js/lib/hash/utils.js\");\n\nvar common = __webpack_require__(/*! ./common */ \"./node_modules/hash.js/lib/hash/common.js\");\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160)) return new RIPEMD160();\n BlockHash.call(this);\n this.h = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n this.endian = 'little';\n}\n\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n\n for (var j = 0; j < 80; j++) {\n var T = sum32(rotl32(sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)), s[j]), E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(rotl32(sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)), sh[j]), Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex') return utils.toHex32(this.h, 'little');else return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15) return x ^ y ^ z;else if (j <= 31) return x & y | ~x & z;else if (j <= 47) return (x | ~y) ^ z;else if (j <= 63) return x & z | y & ~z;else return x ^ (y | ~z);\n}\n\nfunction K(j) {\n if (j <= 15) return 0x00000000;else if (j <= 31) return 0x5a827999;else if (j <= 47) return 0x6ed9eba1;else if (j <= 63) return 0x8f1bbcdc;else return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15) return 0x50a28be6;else if (j <= 31) return 0x5c4dd124;else if (j <= 47) return 0x6d703ef3;else if (j <= 63) return 0x7a6d76e9;else return 0x00000000;\n}\n\nvar r = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13];\nvar rh = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11];\nvar s = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6];\nvar sh = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11];\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash.js/lib/hash/ripemd.js?"); | |
| 1971 | - | |
| 1972 | -/***/ }), | |
| 1973 | - | |
| 1974 | -/***/ "./node_modules/hash.js/lib/hash/sha.js": | |
| 1975 | -/*!**********************************************!*\ | |
| 1976 | - !*** ./node_modules/hash.js/lib/hash/sha.js ***! | |
| 1977 | - \**********************************************/ | |
| 1978 | -/*! no static exports found */ | |
| 1979 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1980 | - | |
| 1981 | -"use strict"; | |
| 1982 | -eval("\n\nexports.sha1 = __webpack_require__(/*! ./sha/1 */ \"./node_modules/hash.js/lib/hash/sha/1.js\");\nexports.sha224 = __webpack_require__(/*! ./sha/224 */ \"./node_modules/hash.js/lib/hash/sha/224.js\");\nexports.sha256 = __webpack_require__(/*! ./sha/256 */ \"./node_modules/hash.js/lib/hash/sha/256.js\");\nexports.sha384 = __webpack_require__(/*! ./sha/384 */ \"./node_modules/hash.js/lib/hash/sha/384.js\");\nexports.sha512 = __webpack_require__(/*! ./sha/512 */ \"./node_modules/hash.js/lib/hash/sha/512.js\");\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash.js/lib/hash/sha.js?"); | |
| 1983 | - | |
| 1984 | -/***/ }), | |
| 1985 | - | |
| 1986 | -/***/ "./node_modules/hash.js/lib/hash/sha/1.js": | |
| 1987 | -/*!************************************************!*\ | |
| 1988 | - !*** ./node_modules/hash.js/lib/hash/sha/1.js ***! | |
| 1989 | - \************************************************/ | |
| 1990 | -/*! no static exports found */ | |
| 1991 | -/***/ (function(module, exports, __webpack_require__) { | |
| 1992 | - | |
| 1993 | -"use strict"; | |
| 1994 | -eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/hash.js/lib/hash/utils.js\");\n\nvar common = __webpack_require__(/*! ../common */ \"./node_modules/hash.js/lib/hash/common.js\");\n\nvar shaCommon = __webpack_require__(/*! ./common */ \"./node_modules/hash.js/lib/hash/sha/common.js\");\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\nvar sha1_K = [0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xCA62C1D6];\n\nfunction SHA1() {\n if (!(this instanceof SHA1)) return new SHA1();\n BlockHash.call(this);\n this.h = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++) {\n W[i] = msg[start + i];\n }\n\n for (; i < W.length; i++) {\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n }\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex') return utils.toHex32(this.h, 'big');else return utils.split32(this.h, 'big');\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash.js/lib/hash/sha/1.js?"); | |
| 1995 | - | |
| 1996 | -/***/ }), | |
| 1997 | - | |
| 1998 | -/***/ "./node_modules/hash.js/lib/hash/sha/224.js": | |
| 1999 | -/*!**************************************************!*\ | |
| 2000 | - !*** ./node_modules/hash.js/lib/hash/sha/224.js ***! | |
| 2001 | - \**************************************************/ | |
| 2002 | -/*! no static exports found */ | |
| 2003 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2004 | - | |
| 2005 | -"use strict"; | |
| 2006 | -eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/hash.js/lib/hash/utils.js\");\n\nvar SHA256 = __webpack_require__(/*! ./256 */ \"./node_modules/hash.js/lib/hash/sha/256.js\");\n\nfunction SHA224() {\n if (!(this instanceof SHA224)) return new SHA224();\n SHA256.call(this);\n this.h = [0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4];\n}\n\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex') return utils.toHex32(this.h.slice(0, 7), 'big');else return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash.js/lib/hash/sha/224.js?"); | |
| 2007 | - | |
| 2008 | -/***/ }), | |
| 2009 | - | |
| 2010 | -/***/ "./node_modules/hash.js/lib/hash/sha/256.js": | |
| 2011 | -/*!**************************************************!*\ | |
| 2012 | - !*** ./node_modules/hash.js/lib/hash/sha/256.js ***! | |
| 2013 | - \**************************************************/ | |
| 2014 | -/*! no static exports found */ | |
| 2015 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2016 | - | |
| 2017 | -"use strict"; | |
| 2018 | -eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/hash.js/lib/hash/utils.js\");\n\nvar common = __webpack_require__(/*! ../common */ \"./node_modules/hash.js/lib/hash/common.js\");\n\nvar shaCommon = __webpack_require__(/*! ./common */ \"./node_modules/hash.js/lib/hash/sha/common.js\");\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\");\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\nvar BlockHash = common.BlockHash;\nvar sha256_K = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n\nfunction SHA256() {\n if (!(this instanceof SHA256)) return new SHA256();\n BlockHash.call(this);\n this.h = [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19];\n this.k = sha256_K;\n this.W = new Array(64);\n}\n\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++) {\n W[i] = msg[start + i];\n }\n\n for (; i < W.length; i++) {\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n }\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n assert(this.k.length === W.length);\n\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex') return utils.toHex32(this.h, 'big');else return utils.split32(this.h, 'big');\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash.js/lib/hash/sha/256.js?"); | |
| 2019 | - | |
| 2020 | -/***/ }), | |
| 2021 | - | |
| 2022 | -/***/ "./node_modules/hash.js/lib/hash/sha/384.js": | |
| 2023 | -/*!**************************************************!*\ | |
| 2024 | - !*** ./node_modules/hash.js/lib/hash/sha/384.js ***! | |
| 2025 | - \**************************************************/ | |
| 2026 | -/*! no static exports found */ | |
| 2027 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2028 | - | |
| 2029 | -"use strict"; | |
| 2030 | -eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/hash.js/lib/hash/utils.js\");\n\nvar SHA512 = __webpack_require__(/*! ./512 */ \"./node_modules/hash.js/lib/hash/sha/512.js\");\n\nfunction SHA384() {\n if (!(this instanceof SHA384)) return new SHA384();\n SHA512.call(this);\n this.h = [0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939, 0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4];\n}\n\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex') return utils.toHex32(this.h.slice(0, 12), 'big');else return utils.split32(this.h.slice(0, 12), 'big');\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash.js/lib/hash/sha/384.js?"); | |
| 2031 | - | |
| 2032 | -/***/ }), | |
| 2033 | - | |
| 2034 | -/***/ "./node_modules/hash.js/lib/hash/sha/512.js": | |
| 2035 | -/*!**************************************************!*\ | |
| 2036 | - !*** ./node_modules/hash.js/lib/hash/sha/512.js ***! | |
| 2037 | - \**************************************************/ | |
| 2038 | -/*! no static exports found */ | |
| 2039 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2040 | - | |
| 2041 | -"use strict"; | |
| 2042 | -eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/hash.js/lib/hash/utils.js\");\n\nvar common = __webpack_require__(/*! ../common */ \"./node_modules/hash.js/lib/hash/common.js\");\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\");\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\nvar BlockHash = common.BlockHash;\nvar sha512_K = [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817];\n\nfunction SHA512() {\n if (!(this instanceof SHA512)) return new SHA512();\n BlockHash.call(this);\n this.h = [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1, 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179];\n this.k = sha512_K;\n this.W = new Array(160);\n}\n\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W; // 32 x 32bit words\n\n for (var i = 0; i < 32; i++) {\n W[i] = msg[start + i];\n }\n\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n\n var c3_lo = W[i - 31];\n W[i] = sum64_4_hi(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n assert(this.k.length === W.length);\n\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n var T1_hi = sum64_5_hi(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo, c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo, c4_hi, c4_lo);\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n hh = gh;\n hl = gl;\n gh = fh;\n gl = fl;\n fh = eh;\n fl = el;\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n dh = ch;\n dl = cl;\n ch = bh;\n cl = bl;\n bh = ah;\n bl = al;\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex') return utils.toHex32(this.h, 'big');else return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = xh & yh ^ ~xh & zh;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = xl & yl ^ ~xl & zl;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = xh & yh ^ xh & zh ^ yh & zh;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = xl & yl ^ xl & zl ^ yl & zl;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n\n var c2_hi = shr64_hi(xh, xl, 6);\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n\n var c2_lo = shr64_lo(xh, xl, 6);\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash.js/lib/hash/sha/512.js?"); | |
| 2043 | - | |
| 2044 | -/***/ }), | |
| 2045 | - | |
| 2046 | -/***/ "./node_modules/hash.js/lib/hash/sha/common.js": | |
| 2047 | -/*!*****************************************************!*\ | |
| 2048 | - !*** ./node_modules/hash.js/lib/hash/sha/common.js ***! | |
| 2049 | - \*****************************************************/ | |
| 2050 | -/*! no static exports found */ | |
| 2051 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2052 | - | |
| 2053 | -"use strict"; | |
| 2054 | -eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/hash.js/lib/hash/utils.js\");\n\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0) return ch32(x, y, z);\n if (s === 1 || s === 3) return p32(x, y, z);\n if (s === 2) return maj32(x, y, z);\n}\n\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return x & y ^ ~x & z;\n}\n\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return x & y ^ x & z ^ y & z;\n}\n\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\n\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\n\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\n\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ x >>> 3;\n}\n\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ x >>> 10;\n}\n\nexports.g1_256 = g1_256;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash.js/lib/hash/sha/common.js?"); | |
| 2055 | - | |
| 2056 | -/***/ }), | |
| 2057 | - | |
| 2058 | -/***/ "./node_modules/hash.js/lib/hash/utils.js": | |
| 2059 | -/*!************************************************!*\ | |
| 2060 | - !*** ./node_modules/hash.js/lib/hash/utils.js ***! | |
| 2061 | - \************************************************/ | |
| 2062 | -/*! no static exports found */ | |
| 2063 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2064 | - | |
| 2065 | -"use strict"; | |
| 2066 | -eval("\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\");\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg)) return msg.slice();\n if (!msg) return [];\n var res = [];\n\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = c >> 6 | 192;\n res[p++] = c & 63 | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = c >> 18 | 240;\n res[p++] = c >> 12 & 63 | 128;\n res[p++] = c >> 6 & 63 | 128;\n res[p++] = c & 63 | 128;\n } else {\n res[p++] = c >> 12 | 224;\n res[p++] = c >> 6 & 63 | 128;\n res[p++] = c & 63 | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0) msg = '0' + msg;\n\n for (i = 0; i < msg.length; i += 2) {\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n }\n } else {\n for (i = 0; i < msg.length; i++) {\n res[i] = msg[i] | 0;\n }\n }\n\n return res;\n}\n\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n\n for (var i = 0; i < msg.length; i++) {\n res += zero2(msg[i].toString(16));\n }\n\n return res;\n}\n\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = w >>> 24 | w >>> 8 & 0xff00 | w << 8 & 0xff0000 | (w & 0xff) << 24;\n return res >>> 0;\n}\n\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little') w = htonl(w);\n res += zero8(w.toString(16));\n }\n\n return res;\n}\n\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1) return '0' + word;else return word;\n}\n\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7) return '0' + word;else if (word.length === 6) return '00' + word;else if (word.length === 5) return '000' + word;else if (word.length === 4) return '0000' + word;else if (word.length === 3) return '00000' + word;else if (word.length === 2) return '000000' + word;else if (word.length === 1) return '0000000' + word;else return word;\n}\n\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big') w = msg[k] << 24 | msg[k + 1] << 16 | msg[k + 2] << 8 | msg[k + 3];else w = msg[k + 3] << 24 | msg[k + 2] << 16 | msg[k + 1] << 8 | msg[k];\n res[i] = w >>> 0;\n }\n\n return res;\n}\n\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = m >>> 16 & 0xff;\n res[k + 2] = m >>> 8 & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = m >>> 16 & 0xff;\n res[k + 1] = m >>> 8 & 0xff;\n res[k] = m & 0xff;\n }\n }\n\n return res;\n}\n\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return w >>> b | w << 32 - b;\n}\n\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return w << b | w >>> 32 - b;\n}\n\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return a + b >>> 0;\n}\n\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return a + b + c >>> 0;\n}\n\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return a + b + c + d >>> 0;\n}\n\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return a + b + c + d + e >>> 0;\n}\n\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n var lo = al + bl >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\n\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = al + bl >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\n\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\n\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = lo + bl >>> 0;\n carry += lo < al ? 1 : 0;\n lo = lo + cl >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = lo + dl >>> 0;\n carry += lo < dl ? 1 : 0;\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\n\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\n\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = lo + bl >>> 0;\n carry += lo < al ? 1 : 0;\n lo = lo + cl >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = lo + dl >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = lo + el >>> 0;\n carry += lo < el ? 1 : 0;\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\n\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n return lo >>> 0;\n}\n\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = al << 32 - num | ah >>> num;\n return r >>> 0;\n}\n\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = ah << 32 - num | al >>> num;\n return r >>> 0;\n}\n\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\n\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = ah << 32 - num | al >>> num;\n return r >>> 0;\n}\n\nexports.shr64_lo = shr64_lo;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hash.js/lib/hash/utils.js?"); | |
| 2067 | - | |
| 2068 | -/***/ }), | |
| 2069 | - | |
| 2070 | -/***/ "./node_modules/hmac-drbg/lib/hmac-drbg.js": | |
| 2071 | -/*!*************************************************!*\ | |
| 2072 | - !*** ./node_modules/hmac-drbg/lib/hmac-drbg.js ***! | |
| 2073 | - \*************************************************/ | |
| 2074 | -/*! no static exports found */ | |
| 2075 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2076 | - | |
| 2077 | -"use strict"; | |
| 2078 | -eval("\n\nvar hash = __webpack_require__(/*! hash.js */ \"./node_modules/hash.js/lib/hash.js\");\n\nvar utils = __webpack_require__(/*! minimalistic-crypto-utils */ \"./node_modules/minimalistic-crypto-utils/lib/utils.js\");\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\");\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG)) return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= this.minEntropy / 8, 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._init(entropy, nonce, pers);\n}\n\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac().update(this.V).update([0x00]);\n\n if (seed) kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed) return;\n this.K = this._hmac().update(this.V).update([0x01]).update(seed).digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n assert(entropy.length >= this.minEntropy / 8, 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval) throw new Error('Reseed is required'); // Optional encoding\n\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n } // Optional additional data\n\n\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n\n this._update(add);\n }\n\n var temp = [];\n\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n\n this._update(add);\n\n this._reseed++;\n return utils.encode(res, enc);\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/hmac-drbg/lib/hmac-drbg.js?"); | |
| 2079 | - | |
| 2080 | -/***/ }), | |
| 2081 | - | |
| 2082 | -/***/ "./node_modules/ieee754/index.js": | |
| 2083 | -/*!***************************************!*\ | |
| 2084 | - !*** ./node_modules/ieee754/index.js ***! | |
| 2085 | - \***************************************/ | |
| 2086 | -/*! no static exports found */ | |
| 2087 | -/***/ (function(module, exports) { | |
| 2088 | - | |
| 2089 | -eval("/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? nBytes - 1 : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n i += d;\n e = s & (1 << -nBits) - 1;\n s >>= -nBits;\n nBits += eLen;\n\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : (s ? -1 : 1) * Infinity;\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n};\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n var i = isLE ? 0 : nBytes - 1;\n var d = isLE ? 1 : -1;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = e << mLen | m;\n eLen += mLen;\n\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/ieee754/index.js?"); | |
| 2090 | - | |
| 2091 | -/***/ }), | |
| 2092 | - | |
| 2093 | -/***/ "./node_modules/inherits/inherits_browser.js": | |
| 2094 | -/*!***************************************************!*\ | |
| 2095 | - !*** ./node_modules/inherits/inherits_browser.js ***! | |
| 2096 | - \***************************************************/ | |
| 2097 | -/*! no static exports found */ | |
| 2098 | -/***/ (function(module, exports) { | |
| 2099 | - | |
| 2100 | -eval("if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/inherits/inherits_browser.js?"); | |
| 2101 | - | |
| 2102 | -/***/ }), | |
| 2103 | - | |
| 2104 | -/***/ "./node_modules/isarray/index.js": | |
| 2105 | -/*!***************************************!*\ | |
| 2106 | - !*** ./node_modules/isarray/index.js ***! | |
| 2107 | - \***************************************/ | |
| 2108 | -/*! no static exports found */ | |
| 2109 | -/***/ (function(module, exports) { | |
| 2110 | - | |
| 2111 | -eval("var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/isarray/index.js?"); | |
| 2112 | - | |
| 2113 | -/***/ }), | |
| 2114 | - | |
| 2115 | -/***/ "./node_modules/md5.js/index.js": | |
| 2116 | -/*!**************************************!*\ | |
| 2117 | - !*** ./node_modules/md5.js/index.js ***! | |
| 2118 | - \**************************************/ | |
| 2119 | -/*! no static exports found */ | |
| 2120 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2121 | - | |
| 2122 | -"use strict"; | |
| 2123 | -eval("\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar HashBase = __webpack_require__(/*! hash-base */ \"./node_modules/hash-base/index.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar ARRAY16 = new Array(16);\n\nfunction MD5() {\n HashBase.call(this, 64); // state\n\n this._a = 0x67452301;\n this._b = 0xefcdab89;\n this._c = 0x98badcfe;\n this._d = 0x10325476;\n}\n\ninherits(MD5, HashBase);\n\nMD5.prototype._update = function () {\n var M = ARRAY16;\n\n for (var i = 0; i < 16; ++i) {\n M[i] = this._block.readInt32LE(i * 4);\n }\n\n var a = this._a;\n var b = this._b;\n var c = this._c;\n var d = this._d;\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7);\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12);\n c = fnF(c, d, a, b, M[2], 0x242070db, 17);\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22);\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7);\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12);\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17);\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22);\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7);\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12);\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17);\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22);\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7);\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12);\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17);\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22);\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5);\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9);\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14);\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20);\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5);\n d = fnG(d, a, b, c, M[10], 0x02441453, 9);\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14);\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20);\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5);\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9);\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14);\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20);\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5);\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9);\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14);\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20);\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4);\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11);\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16);\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23);\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4);\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11);\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16);\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23);\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4);\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11);\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16);\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23);\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4);\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11);\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16);\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23);\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6);\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10);\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15);\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21);\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6);\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10);\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15);\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21);\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6);\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10);\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15);\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21);\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6);\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10);\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15);\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21);\n this._a = this._a + a | 0;\n this._b = this._b + b | 0;\n this._c = this._c + c | 0;\n this._d = this._d + d | 0;\n};\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80;\n\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64);\n\n this._update();\n\n this._blockOffset = 0;\n }\n\n this._block.fill(0, this._blockOffset, 56);\n\n this._block.writeUInt32LE(this._length[0], 56);\n\n this._block.writeUInt32LE(this._length[1], 60);\n\n this._update(); // produce result\n\n\n var buffer = Buffer.allocUnsafe(16);\n buffer.writeInt32LE(this._a, 0);\n buffer.writeInt32LE(this._b, 4);\n buffer.writeInt32LE(this._c, 8);\n buffer.writeInt32LE(this._d, 12);\n return buffer;\n};\n\nfunction rotl(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction fnF(a, b, c, d, m, k, s) {\n return rotl(a + (b & c | ~b & d) + m + k | 0, s) + b | 0;\n}\n\nfunction fnG(a, b, c, d, m, k, s) {\n return rotl(a + (b & d | c & ~d) + m + k | 0, s) + b | 0;\n}\n\nfunction fnH(a, b, c, d, m, k, s) {\n return rotl(a + (b ^ c ^ d) + m + k | 0, s) + b | 0;\n}\n\nfunction fnI(a, b, c, d, m, k, s) {\n return rotl(a + (c ^ (b | ~d)) + m + k | 0, s) + b | 0;\n}\n\nmodule.exports = MD5;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/md5.js/index.js?"); | |
| 2124 | - | |
| 2125 | -/***/ }), | |
| 2126 | - | |
| 2127 | -/***/ "./node_modules/miller-rabin/lib/mr.js": | |
| 2128 | -/*!*********************************************!*\ | |
| 2129 | - !*** ./node_modules/miller-rabin/lib/mr.js ***! | |
| 2130 | - \*********************************************/ | |
| 2131 | -/*! no static exports found */ | |
| 2132 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2133 | - | |
| 2134 | -eval("var bn = __webpack_require__(/*! bn.js */ \"./node_modules/miller-rabin/node_modules/bn.js/lib/bn.js\");\n\nvar brorand = __webpack_require__(/*! brorand */ \"./node_modules/brorand/index.js\");\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\n\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8); // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n\n do {\n var a = new bn(this.rand.generate(min_bytes));\n } while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n if (!k) k = Math.max(1, len / 48 | 0); // Find d and s, (n - 1) = (2 ^ s) * d;\n\n var n1 = n.subn(1);\n\n for (var s = 0; !n1.testn(s); s++) {}\n\n var d = n.shrn(s);\n var rn1 = n1.toRed(red);\n var prime = true;\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n if (cb) cb(a);\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n if (x.cmp(rone) === 0) return false;\n if (x.cmp(rn1) === 0) break;\n }\n\n if (i === s) return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n if (!k) k = Math.max(1, len / 48 | 0); // Find d and s, (n - 1) = (2 ^ s) * d;\n\n var n1 = n.subn(1);\n\n for (var s = 0; !n1.testn(s); s++) {}\n\n var d = n.shrn(s);\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0) return g;\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n if (x.cmp(rone) === 0) return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0) break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/miller-rabin/lib/mr.js?"); | |
| 2135 | - | |
| 2136 | -/***/ }), | |
| 2137 | - | |
| 2138 | -/***/ "./node_modules/miller-rabin/node_modules/bn.js/lib/bn.js": | |
| 2139 | -/*!****************************************************************!*\ | |
| 2140 | - !*** ./node_modules/miller-rabin/node_modules/bn.js/lib/bn.js ***! | |
| 2141 | - \****************************************************************/ | |
| 2142 | -/*! no static exports found */ | |
| 2143 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2144 | - | |
| 2145 | -eval("/* WEBPACK VAR INJECTION */(function(module) {(function (module, exports) {\n 'use strict'; // Utils\n\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n } // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n\n\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n } // BN\n\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0; // Reduction context\n\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n var Buffer;\n\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = __webpack_require__(/*! buffer */ 5).Buffer;\n }\n } catch (e) {}\n\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n\n if (endian !== 'le') return; // Reverse the bytes\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray(number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n\n return this.strip();\n };\n\n function parseHex4Bits(string, index) {\n var c = string.charCodeAt(index); // 'A' - 'F'\n\n if (c >= 65 && c <= 70) {\n return c - 55; // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87; // '0' - '9'\n } else {\n return c - 48 & 0xf;\n }\n }\n\n function parseHexByte(string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex(number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n } // 24-bits chunks\n\n\n var off = 0;\n var j = 0;\n var w;\n\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase(str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul; // 'a'\n\n if (c >= 49) {\n r += c - 49 + 0xa; // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa; // '0' - '9'\n } else {\n r += c;\n }\n }\n\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase(number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1; // Find length of limb in base\n\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand(size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n\n return this;\n }; // Remove leading `0` from `this`\n\n\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign() {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n\n return this;\n };\n\n BN.prototype.inspect = function inspect() {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n */\n\n\n var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = ((w << off | carry) & 0xffffff).toString(16);\n carry = w >>> 24 - off & 0xffffff;\n\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n\n off += 2;\n\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base]; // var groupBase = Math.pow(base, groupSize);\n\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n\n if (this.isZero()) {\n out = '0' + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber() {\n var ret = this.words[0];\n\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + this.words[1] * 0x4000000;\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n\n return this.negative !== 0 ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\n var t = w;\n var r = 0;\n\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n\n if ((t & 0x1) === 0) {\n r++;\n }\n\n return r;\n }; // Return number of used bits in a BN\n\n\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n\n var hi = this._countBits(w);\n\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray(num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n\n return w;\n } // Number of trailing zero bits\n\n\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n\n r += b;\n if (b !== 26) break;\n }\n\n return r;\n };\n\n BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos(width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos(width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n }; // Return negative clone of `this`\n\n\n BN.prototype.neg = function neg() {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n }; // Or `num` with `this` in-place\n\n\n BN.prototype.iuor = function iuor(num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n }; // Or `num` with `this`\n\n\n BN.prototype.or = function or(num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor(num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n }; // And `num` with `this` in-place\n\n\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n return this.strip();\n };\n\n BN.prototype.iand = function iand(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n }; // And `num` with `this`\n\n\n BN.prototype.and = function and(num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand(num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n }; // Xor `num` with `this` in-place\n\n\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n }; // Xor `num` with `this`\n\n\n BN.prototype.xor = function xor(num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor(num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n }; // Not ``this`` with ``width`` bitwidth\n\n\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26; // Extend the buffer with leading zeroes\n\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n } // Handle complete words\n\n\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n } // Handle the residue\n\n\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n } // And remove leading zeroes\n\n\n return this.strip();\n };\n\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n }; // Set `bit` of `this`\n\n\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | 1 << wbit;\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n }; // Add `num` to `this` in-place\n\n\n BN.prototype.iadd = function iadd(num) {\n var r; // negative + positive\n\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign(); // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n } // a.length > b.length\n\n\n var a, b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++; // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n }; // Add `num` to `this`\n\n\n BN.prototype.add = function add(num) {\n var res;\n\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n return num.clone().iadd(this);\n }; // Subtract `num` from `this` in-place\n\n\n BN.prototype.isub = function isub(num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign(); // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n } // At this point both numbers are positive\n\n\n var cmp = this.cmp(num); // Optimization - zeroify\n\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n } // a > b\n\n\n var a, b;\n\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n } // Copy rest of the words\n\n\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n }; // Subtract `num` from `this`\n\n\n BN.prototype.sub = function sub(num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = self.length + num.length | 0;\n out.length = len;\n len = len - 1 | 0; // Peel one iteration (compiler can't do it, because of code complexity)\n\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += r / 0x4000000 | 0;\n rword = r & 0x3ffffff;\n }\n\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n } // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n\n\n var comb10MulTo = function comb10MulTo(self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = mid + Math.imul(ah0, bl0) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = mid + Math.imul(ah1, bl0) | 0;\n hi = Math.imul(ah1, bh0);\n lo = lo + Math.imul(al0, bl1) | 0;\n mid = mid + Math.imul(al0, bh1) | 0;\n mid = mid + Math.imul(ah0, bl1) | 0;\n hi = hi + Math.imul(ah0, bh1) | 0;\n var w1 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = mid + Math.imul(ah2, bl0) | 0;\n hi = Math.imul(ah2, bh0);\n lo = lo + Math.imul(al1, bl1) | 0;\n mid = mid + Math.imul(al1, bh1) | 0;\n mid = mid + Math.imul(ah1, bl1) | 0;\n hi = hi + Math.imul(ah1, bh1) | 0;\n lo = lo + Math.imul(al0, bl2) | 0;\n mid = mid + Math.imul(al0, bh2) | 0;\n mid = mid + Math.imul(ah0, bl2) | 0;\n hi = hi + Math.imul(ah0, bh2) | 0;\n var w2 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = mid + Math.imul(ah3, bl0) | 0;\n hi = Math.imul(ah3, bh0);\n lo = lo + Math.imul(al2, bl1) | 0;\n mid = mid + Math.imul(al2, bh1) | 0;\n mid = mid + Math.imul(ah2, bl1) | 0;\n hi = hi + Math.imul(ah2, bh1) | 0;\n lo = lo + Math.imul(al1, bl2) | 0;\n mid = mid + Math.imul(al1, bh2) | 0;\n mid = mid + Math.imul(ah1, bl2) | 0;\n hi = hi + Math.imul(ah1, bh2) | 0;\n lo = lo + Math.imul(al0, bl3) | 0;\n mid = mid + Math.imul(al0, bh3) | 0;\n mid = mid + Math.imul(ah0, bl3) | 0;\n hi = hi + Math.imul(ah0, bh3) | 0;\n var w3 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = mid + Math.imul(ah4, bl0) | 0;\n hi = Math.imul(ah4, bh0);\n lo = lo + Math.imul(al3, bl1) | 0;\n mid = mid + Math.imul(al3, bh1) | 0;\n mid = mid + Math.imul(ah3, bl1) | 0;\n hi = hi + Math.imul(ah3, bh1) | 0;\n lo = lo + Math.imul(al2, bl2) | 0;\n mid = mid + Math.imul(al2, bh2) | 0;\n mid = mid + Math.imul(ah2, bl2) | 0;\n hi = hi + Math.imul(ah2, bh2) | 0;\n lo = lo + Math.imul(al1, bl3) | 0;\n mid = mid + Math.imul(al1, bh3) | 0;\n mid = mid + Math.imul(ah1, bl3) | 0;\n hi = hi + Math.imul(ah1, bh3) | 0;\n lo = lo + Math.imul(al0, bl4) | 0;\n mid = mid + Math.imul(al0, bh4) | 0;\n mid = mid + Math.imul(ah0, bl4) | 0;\n hi = hi + Math.imul(ah0, bh4) | 0;\n var w4 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = mid + Math.imul(ah5, bl0) | 0;\n hi = Math.imul(ah5, bh0);\n lo = lo + Math.imul(al4, bl1) | 0;\n mid = mid + Math.imul(al4, bh1) | 0;\n mid = mid + Math.imul(ah4, bl1) | 0;\n hi = hi + Math.imul(ah4, bh1) | 0;\n lo = lo + Math.imul(al3, bl2) | 0;\n mid = mid + Math.imul(al3, bh2) | 0;\n mid = mid + Math.imul(ah3, bl2) | 0;\n hi = hi + Math.imul(ah3, bh2) | 0;\n lo = lo + Math.imul(al2, bl3) | 0;\n mid = mid + Math.imul(al2, bh3) | 0;\n mid = mid + Math.imul(ah2, bl3) | 0;\n hi = hi + Math.imul(ah2, bh3) | 0;\n lo = lo + Math.imul(al1, bl4) | 0;\n mid = mid + Math.imul(al1, bh4) | 0;\n mid = mid + Math.imul(ah1, bl4) | 0;\n hi = hi + Math.imul(ah1, bh4) | 0;\n lo = lo + Math.imul(al0, bl5) | 0;\n mid = mid + Math.imul(al0, bh5) | 0;\n mid = mid + Math.imul(ah0, bl5) | 0;\n hi = hi + Math.imul(ah0, bh5) | 0;\n var w5 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = mid + Math.imul(ah6, bl0) | 0;\n hi = Math.imul(ah6, bh0);\n lo = lo + Math.imul(al5, bl1) | 0;\n mid = mid + Math.imul(al5, bh1) | 0;\n mid = mid + Math.imul(ah5, bl1) | 0;\n hi = hi + Math.imul(ah5, bh1) | 0;\n lo = lo + Math.imul(al4, bl2) | 0;\n mid = mid + Math.imul(al4, bh2) | 0;\n mid = mid + Math.imul(ah4, bl2) | 0;\n hi = hi + Math.imul(ah4, bh2) | 0;\n lo = lo + Math.imul(al3, bl3) | 0;\n mid = mid + Math.imul(al3, bh3) | 0;\n mid = mid + Math.imul(ah3, bl3) | 0;\n hi = hi + Math.imul(ah3, bh3) | 0;\n lo = lo + Math.imul(al2, bl4) | 0;\n mid = mid + Math.imul(al2, bh4) | 0;\n mid = mid + Math.imul(ah2, bl4) | 0;\n hi = hi + Math.imul(ah2, bh4) | 0;\n lo = lo + Math.imul(al1, bl5) | 0;\n mid = mid + Math.imul(al1, bh5) | 0;\n mid = mid + Math.imul(ah1, bl5) | 0;\n hi = hi + Math.imul(ah1, bh5) | 0;\n lo = lo + Math.imul(al0, bl6) | 0;\n mid = mid + Math.imul(al0, bh6) | 0;\n mid = mid + Math.imul(ah0, bl6) | 0;\n hi = hi + Math.imul(ah0, bh6) | 0;\n var w6 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = mid + Math.imul(ah7, bl0) | 0;\n hi = Math.imul(ah7, bh0);\n lo = lo + Math.imul(al6, bl1) | 0;\n mid = mid + Math.imul(al6, bh1) | 0;\n mid = mid + Math.imul(ah6, bl1) | 0;\n hi = hi + Math.imul(ah6, bh1) | 0;\n lo = lo + Math.imul(al5, bl2) | 0;\n mid = mid + Math.imul(al5, bh2) | 0;\n mid = mid + Math.imul(ah5, bl2) | 0;\n hi = hi + Math.imul(ah5, bh2) | 0;\n lo = lo + Math.imul(al4, bl3) | 0;\n mid = mid + Math.imul(al4, bh3) | 0;\n mid = mid + Math.imul(ah4, bl3) | 0;\n hi = hi + Math.imul(ah4, bh3) | 0;\n lo = lo + Math.imul(al3, bl4) | 0;\n mid = mid + Math.imul(al3, bh4) | 0;\n mid = mid + Math.imul(ah3, bl4) | 0;\n hi = hi + Math.imul(ah3, bh4) | 0;\n lo = lo + Math.imul(al2, bl5) | 0;\n mid = mid + Math.imul(al2, bh5) | 0;\n mid = mid + Math.imul(ah2, bl5) | 0;\n hi = hi + Math.imul(ah2, bh5) | 0;\n lo = lo + Math.imul(al1, bl6) | 0;\n mid = mid + Math.imul(al1, bh6) | 0;\n mid = mid + Math.imul(ah1, bl6) | 0;\n hi = hi + Math.imul(ah1, bh6) | 0;\n lo = lo + Math.imul(al0, bl7) | 0;\n mid = mid + Math.imul(al0, bh7) | 0;\n mid = mid + Math.imul(ah0, bl7) | 0;\n hi = hi + Math.imul(ah0, bh7) | 0;\n var w7 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = mid + Math.imul(ah8, bl0) | 0;\n hi = Math.imul(ah8, bh0);\n lo = lo + Math.imul(al7, bl1) | 0;\n mid = mid + Math.imul(al7, bh1) | 0;\n mid = mid + Math.imul(ah7, bl1) | 0;\n hi = hi + Math.imul(ah7, bh1) | 0;\n lo = lo + Math.imul(al6, bl2) | 0;\n mid = mid + Math.imul(al6, bh2) | 0;\n mid = mid + Math.imul(ah6, bl2) | 0;\n hi = hi + Math.imul(ah6, bh2) | 0;\n lo = lo + Math.imul(al5, bl3) | 0;\n mid = mid + Math.imul(al5, bh3) | 0;\n mid = mid + Math.imul(ah5, bl3) | 0;\n hi = hi + Math.imul(ah5, bh3) | 0;\n lo = lo + Math.imul(al4, bl4) | 0;\n mid = mid + Math.imul(al4, bh4) | 0;\n mid = mid + Math.imul(ah4, bl4) | 0;\n hi = hi + Math.imul(ah4, bh4) | 0;\n lo = lo + Math.imul(al3, bl5) | 0;\n mid = mid + Math.imul(al3, bh5) | 0;\n mid = mid + Math.imul(ah3, bl5) | 0;\n hi = hi + Math.imul(ah3, bh5) | 0;\n lo = lo + Math.imul(al2, bl6) | 0;\n mid = mid + Math.imul(al2, bh6) | 0;\n mid = mid + Math.imul(ah2, bl6) | 0;\n hi = hi + Math.imul(ah2, bh6) | 0;\n lo = lo + Math.imul(al1, bl7) | 0;\n mid = mid + Math.imul(al1, bh7) | 0;\n mid = mid + Math.imul(ah1, bl7) | 0;\n hi = hi + Math.imul(ah1, bh7) | 0;\n lo = lo + Math.imul(al0, bl8) | 0;\n mid = mid + Math.imul(al0, bh8) | 0;\n mid = mid + Math.imul(ah0, bl8) | 0;\n hi = hi + Math.imul(ah0, bh8) | 0;\n var w8 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = mid + Math.imul(ah9, bl0) | 0;\n hi = Math.imul(ah9, bh0);\n lo = lo + Math.imul(al8, bl1) | 0;\n mid = mid + Math.imul(al8, bh1) | 0;\n mid = mid + Math.imul(ah8, bl1) | 0;\n hi = hi + Math.imul(ah8, bh1) | 0;\n lo = lo + Math.imul(al7, bl2) | 0;\n mid = mid + Math.imul(al7, bh2) | 0;\n mid = mid + Math.imul(ah7, bl2) | 0;\n hi = hi + Math.imul(ah7, bh2) | 0;\n lo = lo + Math.imul(al6, bl3) | 0;\n mid = mid + Math.imul(al6, bh3) | 0;\n mid = mid + Math.imul(ah6, bl3) | 0;\n hi = hi + Math.imul(ah6, bh3) | 0;\n lo = lo + Math.imul(al5, bl4) | 0;\n mid = mid + Math.imul(al5, bh4) | 0;\n mid = mid + Math.imul(ah5, bl4) | 0;\n hi = hi + Math.imul(ah5, bh4) | 0;\n lo = lo + Math.imul(al4, bl5) | 0;\n mid = mid + Math.imul(al4, bh5) | 0;\n mid = mid + Math.imul(ah4, bl5) | 0;\n hi = hi + Math.imul(ah4, bh5) | 0;\n lo = lo + Math.imul(al3, bl6) | 0;\n mid = mid + Math.imul(al3, bh6) | 0;\n mid = mid + Math.imul(ah3, bl6) | 0;\n hi = hi + Math.imul(ah3, bh6) | 0;\n lo = lo + Math.imul(al2, bl7) | 0;\n mid = mid + Math.imul(al2, bh7) | 0;\n mid = mid + Math.imul(ah2, bl7) | 0;\n hi = hi + Math.imul(ah2, bh7) | 0;\n lo = lo + Math.imul(al1, bl8) | 0;\n mid = mid + Math.imul(al1, bh8) | 0;\n mid = mid + Math.imul(ah1, bl8) | 0;\n hi = hi + Math.imul(ah1, bh8) | 0;\n lo = lo + Math.imul(al0, bl9) | 0;\n mid = mid + Math.imul(al0, bh9) | 0;\n mid = mid + Math.imul(ah0, bl9) | 0;\n hi = hi + Math.imul(ah0, bh9) | 0;\n var w9 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = mid + Math.imul(ah9, bl1) | 0;\n hi = Math.imul(ah9, bh1);\n lo = lo + Math.imul(al8, bl2) | 0;\n mid = mid + Math.imul(al8, bh2) | 0;\n mid = mid + Math.imul(ah8, bl2) | 0;\n hi = hi + Math.imul(ah8, bh2) | 0;\n lo = lo + Math.imul(al7, bl3) | 0;\n mid = mid + Math.imul(al7, bh3) | 0;\n mid = mid + Math.imul(ah7, bl3) | 0;\n hi = hi + Math.imul(ah7, bh3) | 0;\n lo = lo + Math.imul(al6, bl4) | 0;\n mid = mid + Math.imul(al6, bh4) | 0;\n mid = mid + Math.imul(ah6, bl4) | 0;\n hi = hi + Math.imul(ah6, bh4) | 0;\n lo = lo + Math.imul(al5, bl5) | 0;\n mid = mid + Math.imul(al5, bh5) | 0;\n mid = mid + Math.imul(ah5, bl5) | 0;\n hi = hi + Math.imul(ah5, bh5) | 0;\n lo = lo + Math.imul(al4, bl6) | 0;\n mid = mid + Math.imul(al4, bh6) | 0;\n mid = mid + Math.imul(ah4, bl6) | 0;\n hi = hi + Math.imul(ah4, bh6) | 0;\n lo = lo + Math.imul(al3, bl7) | 0;\n mid = mid + Math.imul(al3, bh7) | 0;\n mid = mid + Math.imul(ah3, bl7) | 0;\n hi = hi + Math.imul(ah3, bh7) | 0;\n lo = lo + Math.imul(al2, bl8) | 0;\n mid = mid + Math.imul(al2, bh8) | 0;\n mid = mid + Math.imul(ah2, bl8) | 0;\n hi = hi + Math.imul(ah2, bh8) | 0;\n lo = lo + Math.imul(al1, bl9) | 0;\n mid = mid + Math.imul(al1, bh9) | 0;\n mid = mid + Math.imul(ah1, bl9) | 0;\n hi = hi + Math.imul(ah1, bh9) | 0;\n var w10 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = mid + Math.imul(ah9, bl2) | 0;\n hi = Math.imul(ah9, bh2);\n lo = lo + Math.imul(al8, bl3) | 0;\n mid = mid + Math.imul(al8, bh3) | 0;\n mid = mid + Math.imul(ah8, bl3) | 0;\n hi = hi + Math.imul(ah8, bh3) | 0;\n lo = lo + Math.imul(al7, bl4) | 0;\n mid = mid + Math.imul(al7, bh4) | 0;\n mid = mid + Math.imul(ah7, bl4) | 0;\n hi = hi + Math.imul(ah7, bh4) | 0;\n lo = lo + Math.imul(al6, bl5) | 0;\n mid = mid + Math.imul(al6, bh5) | 0;\n mid = mid + Math.imul(ah6, bl5) | 0;\n hi = hi + Math.imul(ah6, bh5) | 0;\n lo = lo + Math.imul(al5, bl6) | 0;\n mid = mid + Math.imul(al5, bh6) | 0;\n mid = mid + Math.imul(ah5, bl6) | 0;\n hi = hi + Math.imul(ah5, bh6) | 0;\n lo = lo + Math.imul(al4, bl7) | 0;\n mid = mid + Math.imul(al4, bh7) | 0;\n mid = mid + Math.imul(ah4, bl7) | 0;\n hi = hi + Math.imul(ah4, bh7) | 0;\n lo = lo + Math.imul(al3, bl8) | 0;\n mid = mid + Math.imul(al3, bh8) | 0;\n mid = mid + Math.imul(ah3, bl8) | 0;\n hi = hi + Math.imul(ah3, bh8) | 0;\n lo = lo + Math.imul(al2, bl9) | 0;\n mid = mid + Math.imul(al2, bh9) | 0;\n mid = mid + Math.imul(ah2, bl9) | 0;\n hi = hi + Math.imul(ah2, bh9) | 0;\n var w11 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = mid + Math.imul(ah9, bl3) | 0;\n hi = Math.imul(ah9, bh3);\n lo = lo + Math.imul(al8, bl4) | 0;\n mid = mid + Math.imul(al8, bh4) | 0;\n mid = mid + Math.imul(ah8, bl4) | 0;\n hi = hi + Math.imul(ah8, bh4) | 0;\n lo = lo + Math.imul(al7, bl5) | 0;\n mid = mid + Math.imul(al7, bh5) | 0;\n mid = mid + Math.imul(ah7, bl5) | 0;\n hi = hi + Math.imul(ah7, bh5) | 0;\n lo = lo + Math.imul(al6, bl6) | 0;\n mid = mid + Math.imul(al6, bh6) | 0;\n mid = mid + Math.imul(ah6, bl6) | 0;\n hi = hi + Math.imul(ah6, bh6) | 0;\n lo = lo + Math.imul(al5, bl7) | 0;\n mid = mid + Math.imul(al5, bh7) | 0;\n mid = mid + Math.imul(ah5, bl7) | 0;\n hi = hi + Math.imul(ah5, bh7) | 0;\n lo = lo + Math.imul(al4, bl8) | 0;\n mid = mid + Math.imul(al4, bh8) | 0;\n mid = mid + Math.imul(ah4, bl8) | 0;\n hi = hi + Math.imul(ah4, bh8) | 0;\n lo = lo + Math.imul(al3, bl9) | 0;\n mid = mid + Math.imul(al3, bh9) | 0;\n mid = mid + Math.imul(ah3, bl9) | 0;\n hi = hi + Math.imul(ah3, bh9) | 0;\n var w12 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = mid + Math.imul(ah9, bl4) | 0;\n hi = Math.imul(ah9, bh4);\n lo = lo + Math.imul(al8, bl5) | 0;\n mid = mid + Math.imul(al8, bh5) | 0;\n mid = mid + Math.imul(ah8, bl5) | 0;\n hi = hi + Math.imul(ah8, bh5) | 0;\n lo = lo + Math.imul(al7, bl6) | 0;\n mid = mid + Math.imul(al7, bh6) | 0;\n mid = mid + Math.imul(ah7, bl6) | 0;\n hi = hi + Math.imul(ah7, bh6) | 0;\n lo = lo + Math.imul(al6, bl7) | 0;\n mid = mid + Math.imul(al6, bh7) | 0;\n mid = mid + Math.imul(ah6, bl7) | 0;\n hi = hi + Math.imul(ah6, bh7) | 0;\n lo = lo + Math.imul(al5, bl8) | 0;\n mid = mid + Math.imul(al5, bh8) | 0;\n mid = mid + Math.imul(ah5, bl8) | 0;\n hi = hi + Math.imul(ah5, bh8) | 0;\n lo = lo + Math.imul(al4, bl9) | 0;\n mid = mid + Math.imul(al4, bh9) | 0;\n mid = mid + Math.imul(ah4, bl9) | 0;\n hi = hi + Math.imul(ah4, bh9) | 0;\n var w13 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = mid + Math.imul(ah9, bl5) | 0;\n hi = Math.imul(ah9, bh5);\n lo = lo + Math.imul(al8, bl6) | 0;\n mid = mid + Math.imul(al8, bh6) | 0;\n mid = mid + Math.imul(ah8, bl6) | 0;\n hi = hi + Math.imul(ah8, bh6) | 0;\n lo = lo + Math.imul(al7, bl7) | 0;\n mid = mid + Math.imul(al7, bh7) | 0;\n mid = mid + Math.imul(ah7, bl7) | 0;\n hi = hi + Math.imul(ah7, bh7) | 0;\n lo = lo + Math.imul(al6, bl8) | 0;\n mid = mid + Math.imul(al6, bh8) | 0;\n mid = mid + Math.imul(ah6, bl8) | 0;\n hi = hi + Math.imul(ah6, bh8) | 0;\n lo = lo + Math.imul(al5, bl9) | 0;\n mid = mid + Math.imul(al5, bh9) | 0;\n mid = mid + Math.imul(ah5, bl9) | 0;\n hi = hi + Math.imul(ah5, bh9) | 0;\n var w14 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = mid + Math.imul(ah9, bl6) | 0;\n hi = Math.imul(ah9, bh6);\n lo = lo + Math.imul(al8, bl7) | 0;\n mid = mid + Math.imul(al8, bh7) | 0;\n mid = mid + Math.imul(ah8, bl7) | 0;\n hi = hi + Math.imul(ah8, bh7) | 0;\n lo = lo + Math.imul(al7, bl8) | 0;\n mid = mid + Math.imul(al7, bh8) | 0;\n mid = mid + Math.imul(ah7, bl8) | 0;\n hi = hi + Math.imul(ah7, bh8) | 0;\n lo = lo + Math.imul(al6, bl9) | 0;\n mid = mid + Math.imul(al6, bh9) | 0;\n mid = mid + Math.imul(ah6, bl9) | 0;\n hi = hi + Math.imul(ah6, bh9) | 0;\n var w15 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = mid + Math.imul(ah9, bl7) | 0;\n hi = Math.imul(ah9, bh7);\n lo = lo + Math.imul(al8, bl8) | 0;\n mid = mid + Math.imul(al8, bh8) | 0;\n mid = mid + Math.imul(ah8, bl8) | 0;\n hi = hi + Math.imul(ah8, bh8) | 0;\n lo = lo + Math.imul(al7, bl9) | 0;\n mid = mid + Math.imul(al7, bh9) | 0;\n mid = mid + Math.imul(ah7, bl9) | 0;\n hi = hi + Math.imul(ah7, bh9) | 0;\n var w16 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = mid + Math.imul(ah9, bl8) | 0;\n hi = Math.imul(ah9, bh8);\n lo = lo + Math.imul(al8, bl9) | 0;\n mid = mid + Math.imul(al8, bh9) | 0;\n mid = mid + Math.imul(ah8, bl9) | 0;\n hi = hi + Math.imul(ah8, bh9) | 0;\n var w17 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = mid + Math.imul(ah9, bl9) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n\n return out;\n }; // Polyfill comb\n\n\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n var carry = 0;\n var hncarry = 0;\n\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n ncarry = ncarry + (r / 0x4000000 | 0) | 0;\n lo = lo + rword | 0;\n rword = lo & 0x3ffffff;\n ncarry = ncarry + (lo >>> 26) | 0;\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo(num, out) {\n var res;\n var len = this.length + num.length;\n\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n }; // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n\n function FFTM(x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT(N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n }; // Returns binary-reversed representation of `x`\n\n\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n\n return rb;\n }; // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n\n\n FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n /* jshint maxdepth : false */\n\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b(n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b(ws, N) {\n var carry = 0;\n\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {\n var carry = 0;\n\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n } // Pad with zeroes\n\n\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub(N) {\n var ph = new Array(N);\n\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n }; // Multiply `this` by `num`\n\n\n BN.prototype.mul = function mul(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n }; // Multiply employing FFT\n\n\n BN.prototype.mulf = function mulf(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n }; // In-place Multiplication\n\n\n BN.prototype.imul = function imul(num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000); // Carry\n\n var carry = 0;\n\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += w / 0x4000000 | 0; // NOTE: lo is 27bit maximum\n\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln(num) {\n return this.clone().imuln(num);\n }; // `this` * `this`\n\n\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n }; // `this` * `this` in-place\n\n\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n }; // Math.pow(`this`, `num`)\n\n\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1); // Skip leading zeroes\n\n var res = this;\n\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\n }\n }\n\n return res;\n }; // Shift-left in-place\n\n\n BN.prototype.iushln = function iushln(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = 0x3ffffff >>> 26 - r << 26 - r;\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = (this.words[i] | 0) - newCarry << r;\n this.words[i] = c | carry;\n carry = newCarry >>> 26 - r;\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln(bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n }; // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n\n\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n\n if (hint) {\n h = (hint - hint % 26) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n var maskedWords = extended;\n h -= s;\n h = Math.max(0, h); // Extended mode, copy masked part\n\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n\n maskedWords.length = s;\n }\n\n if (s === 0) {// No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = carry << 26 - r | word >>> r;\n carry = word & mask;\n } // Push carried bits as a mask\n\n\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n }; // Shift-left\n\n\n BN.prototype.shln = function shln(bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln(bits) {\n return this.clone().iushln(bits);\n }; // Shift-right\n\n\n BN.prototype.shrn = function shrn(bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn(bits) {\n return this.clone().iushrn(bits);\n }; // Test if n bit is set\n\n\n BN.prototype.testn = function testn(bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) return false; // Check bit and return\n\n var w = this.words[s];\n return !!(w & q);\n }; // Return only lowers bits of number (in-place)\n\n\n BN.prototype.imaskn = function imaskn(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n }; // Return only lowers bits of number\n\n\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n }; // Add plain number `num` to `this`\n\n\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num); // Possible sign change\n\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n } // Add without checks\n\n\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num; // Carry\n\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n\n this.length = Math.max(this.length, i + 1);\n return this;\n }; // Subtract plain number `num` from `this`\n\n\n BN.prototype.isubn = function isubn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - (right / 0x4000000 | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip(); // Subtraction overflow\n\n assert(carry === -1);\n carry = 0;\n\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n\n this.negative = 1;\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num; // Normalize\n\n var bhi = b.words[b.length - 1] | 0;\n\n var bhiBits = this._countBits(bhi);\n\n shift = 26 - bhiBits;\n\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n } // Initialize quotient\n\n\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n\n if (diff.negative === 0) {\n a = diff;\n\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n\n a._ishlnsubmul(b, 1, j);\n\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n\n if (q) {\n q.words[j] = qj;\n }\n }\n\n if (q) {\n q.strip();\n }\n\n a.strip(); // Denormalize\n\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n }; // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n\n\n BN.prototype.divmod = function divmod(num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n } // Both numbers are positive at this point\n // Strip both numbers to approximate shift value\n\n\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n } // Very short reduction\n\n\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n }; // Find `this` / `num`\n\n\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n }; // Find `this` % `num`\n\n\n BN.prototype.mod = function mod(num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod(num) {\n return this.divmod(num, 'mod', true).mod;\n }; // Find Round(`this` / `num`)\n\n\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num); // Fast case - exact division\n\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half); // Round down\n\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up\n\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n }; // In-place division by number\n\n\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = w / num | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n } // A * x + B * y = x\n\n\n var A = new BN(1);\n var B = new BN(0); // C * x + D * y = y\n\n var C = new BN(0);\n var D = new BN(1);\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n x.iushrn(i);\n\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n y.iushrn(j);\n\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n }; // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n\n\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n a.iushrn(i);\n\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n b.iushrn(j);\n\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0; // Remove common factor of two\n\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n }; // Invert number in the field F(num)\n\n\n BN.prototype.invm = function invm(num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd() {\n return (this.words[0] & 1) === 1;\n }; // And first word and num\n\n\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n }; // Increment at the bit position in-line\n\n\n BN.prototype.bincn = function bincn(bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) {\n this._expand(s + 1);\n\n this.words[s] |= q;\n return this;\n } // Add bit and propagate, if needed\n\n\n var carry = q;\n\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n\n\n BN.prototype.cmp = function cmp(num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Unsigned comparison\n\n\n BN.prototype.ucmp = function ucmp(num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n var res = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n if (a === b) continue;\n\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n\n break;\n }\n\n return res;\n };\n\n BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq(num) {\n return this.cmp(num) === 0;\n }; //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n\n\n BN.red = function red(num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed() {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd(num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd(num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub(num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub(num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl(num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr() {\n assert(this.red, 'redSqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr() {\n assert(this.red, 'redISqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.isqr(this);\n }; // Square root over p\n\n\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm() {\n assert(this.red, 'redInvm works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.invm(this);\n }; // Return negative clone of `this` % `red modulo`\n\n\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n\n this.red._verify1(this);\n\n return this.red.pow(this, num);\n }; // Prime numbers with efficient reduction\n\n\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n }; // Pseudo-Mersenne prime\n\n function MPrime(name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp() {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce(num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n\n inherits(K256, MPrime);\n\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n } // Shift by 9 limbs\n\n\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = (next & mask) << 4 | prev >>> 22;\n prev = next;\n }\n\n prev >>>= 22;\n input.words[i - 10] = prev;\n\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK(num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n\n var lo = 0;\n\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + (lo / 0x4000000 | 0);\n } // Fast length reduction\n\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n\n return num;\n };\n\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n\n inherits(P224, MPrime);\n\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n\n inherits(P192, MPrime);\n\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n num.words[i] = lo;\n carry = hi;\n }\n\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n\n return num;\n }; // Exported mostly for testing purposes, use plain name instead\n\n\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n\n primes[name] = prime;\n return prime;\n }; //\n // Base reduction engine\n //\n\n\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1(a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2(a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red, 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res;\n };\n\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res;\n };\n\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1); // Fast case\n\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n } // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n\n\n var q = this.m.subn(1);\n var s = 0;\n\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg(); // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n\n while (t.cmp(one) !== 0) {\n var tmp = t;\n\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm(a) {\n var inv = a._invmp(this.m);\n\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow(a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom(num) {\n var res = num.clone();\n res.red = null;\n return res;\n }; //\n // Montgomery method engine\n //\n\n\n BN.mont = function mont(num) {\n return new Mont(num);\n };\n\n function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom(num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul(a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm(a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})( false || module, this);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/miller-rabin/node_modules/bn.js/lib/bn.js?"); | |
| 2146 | - | |
| 2147 | -/***/ }), | |
| 2148 | - | |
| 2149 | -/***/ "./node_modules/minimalistic-assert/index.js": | |
| 2150 | -/*!***************************************************!*\ | |
| 2151 | - !*** ./node_modules/minimalistic-assert/index.js ***! | |
| 2152 | - \***************************************************/ | |
| 2153 | -/*! no static exports found */ | |
| 2154 | -/***/ (function(module, exports) { | |
| 2155 | - | |
| 2156 | -eval("module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r) throw new Error(msg || 'Assertion failed: ' + l + ' != ' + r);\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/minimalistic-assert/index.js?"); | |
| 2157 | - | |
| 2158 | -/***/ }), | |
| 2159 | - | |
| 2160 | -/***/ "./node_modules/minimalistic-crypto-utils/lib/utils.js": | |
| 2161 | -/*!*************************************************************!*\ | |
| 2162 | - !*** ./node_modules/minimalistic-crypto-utils/lib/utils.js ***! | |
| 2163 | - \*************************************************************/ | |
| 2164 | -/*! no static exports found */ | |
| 2165 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2166 | - | |
| 2167 | -"use strict"; | |
| 2168 | -eval("\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg)) return msg.slice();\n if (!msg) return [];\n var res = [];\n\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++) {\n res[i] = msg[i] | 0;\n }\n\n return res;\n }\n\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0) msg = '0' + msg;\n\n for (var i = 0; i < msg.length; i += 2) {\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi) res.push(hi, lo);else res.push(lo);\n }\n }\n\n return res;\n}\n\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1) return '0' + word;else return word;\n}\n\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n\n for (var i = 0; i < msg.length; i++) {\n res += zero2(msg[i].toString(16));\n }\n\n return res;\n}\n\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex') return toHex(arr);else return arr;\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/minimalistic-crypto-utils/lib/utils.js?"); | |
| 2169 | - | |
| 2170 | -/***/ }), | |
| 2171 | - | |
| 2172 | -/***/ "./node_modules/node-libs-browser/mock/empty.js": | |
| 2173 | -/*!******************************************************!*\ | |
| 2174 | - !*** ./node_modules/node-libs-browser/mock/empty.js ***! | |
| 2175 | - \******************************************************/ | |
| 2176 | -/*! no static exports found */ | |
| 2177 | -/***/ (function(module, exports) { | |
| 2178 | - | |
| 2179 | -eval("\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/node-libs-browser/mock/empty.js?"); | |
| 2180 | - | |
| 2181 | -/***/ }), | |
| 2182 | - | |
| 2183 | -/***/ "./node_modules/node-libs-browser/node_modules/buffer/index.js": | |
| 2184 | -/*!*********************************************************************!*\ | |
| 2185 | - !*** ./node_modules/node-libs-browser/node_modules/buffer/index.js ***! | |
| 2186 | - \*********************************************************************/ | |
| 2187 | -/*! no static exports found */ | |
| 2188 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2189 | - | |
| 2190 | -"use strict"; | |
| 2191 | -eval("/* WEBPACK VAR INJECTION */(function(global) {/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <http://feross.org>\n * @license MIT\n */\n\n/* eslint-disable no-proto */\n\n\nvar base64 = __webpack_require__(/*! base64-js */ \"./node_modules/base64-js/index.js\");\n\nvar ieee754 = __webpack_require__(/*! ieee754 */ \"./node_modules/ieee754/index.js\");\n\nvar isArray = __webpack_require__(/*! isarray */ \"./node_modules/isarray/index.js\");\n\nexports.Buffer = Buffer;\nexports.SlowBuffer = SlowBuffer;\nexports.INSPECT_MAX_BYTES = 50;\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\n\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined ? global.TYPED_ARRAY_SUPPORT : typedArraySupport();\n/*\n * Export kMaxLength after typed array support is determined.\n */\n\nexports.kMaxLength = kMaxLength();\n\nfunction typedArraySupport() {\n try {\n var arr = new Uint8Array(1);\n arr.__proto__ = {\n __proto__: Uint8Array.prototype,\n foo: function foo() {\n return 42;\n }\n };\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0; // ie10 has broken `subarray`\n } catch (e) {\n return false;\n }\n}\n\nfunction kMaxLength() {\n return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff;\n}\n\nfunction createBuffer(that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length');\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n\n that.length = length;\n }\n\n return that;\n}\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\n\nfunction Buffer(arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length);\n } // Common case.\n\n\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error('If encoding is specified then the first argument must be a string');\n }\n\n return allocUnsafe(this, arg);\n }\n\n return from(this, arg, encodingOrOffset, length);\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n// TODO: Legacy, not needed anymore. Remove in next major version.\n\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr;\n};\n\nfunction from(that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number');\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length);\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset);\n }\n\n return fromObject(that, value);\n}\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\n\n\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length);\n};\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n\n if (typeof Symbol !== 'undefined' && Symbol.species && Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n });\n }\n}\n\nfunction assertSize(size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number');\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative');\n }\n}\n\nfunction alloc(that, size, fill, encoding) {\n assertSize(size);\n\n if (size <= 0) {\n return createBuffer(that, size);\n }\n\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string' ? createBuffer(that, size).fill(fill, encoding) : createBuffer(that, size).fill(fill);\n }\n\n return createBuffer(that, size);\n}\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\n\n\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding);\n};\n\nfunction allocUnsafe(that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n\n return that;\n}\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\n\n\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size);\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\n\n\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size);\n};\n\nfunction fromString(that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding');\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n var actual = that.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n\n return that;\n}\n\nfunction fromArrayLike(that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n\n return that;\n}\n\nfunction fromArrayBuffer(that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds');\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds');\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n\n return that;\n}\n\nfunction fromObject(that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that;\n }\n\n obj.copy(that, 0, 0, len);\n return that;\n }\n\n if (obj) {\n if (typeof ArrayBuffer !== 'undefined' && obj.buffer instanceof ArrayBuffer || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0);\n }\n\n return fromArrayLike(that, obj);\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data);\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.');\n}\n\nfunction checked(length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes');\n }\n\n return length | 0;\n}\n\nfunction SlowBuffer(length) {\n if (+length != length) {\n // eslint-disable-line eqeqeq\n length = 0;\n }\n\n return Buffer.alloc(+length);\n}\n\nBuffer.isBuffer = function isBuffer(b) {\n return !!(b != null && b._isBuffer);\n};\n\nBuffer.compare = function compare(a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers');\n }\n\n if (a === b) return 0;\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n};\n\nBuffer.isEncoding = function isEncoding(encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true;\n\n default:\n return false;\n }\n};\n\nBuffer.concat = function concat(list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0);\n }\n\n var i;\n\n if (length === undefined) {\n length = 0;\n\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n\n return buffer;\n};\n\nfunction byteLength(string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length;\n }\n\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength;\n }\n\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0; // Use a for loop to avoid recursion\n\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len;\n\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length;\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2;\n\n case 'hex':\n return len >>> 1;\n\n case 'base64':\n return base64ToBytes(string).length;\n\n default:\n if (loweredCase) return utf8ToBytes(string).length; // assume utf8\n\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\n\nBuffer.byteLength = byteLength;\n\nfunction slowToString(encoding, start, end) {\n var loweredCase = false; // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\n if (start === undefined || start < 0) {\n start = 0;\n } // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n\n\n if (start > this.length) {\n return '';\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return '';\n } // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n\n\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return '';\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end);\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end);\n\n case 'ascii':\n return asciiSlice(this, start, end);\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end);\n\n case 'base64':\n return base64Slice(this, start, end);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n} // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\n\n\nBuffer.prototype._isBuffer = true;\n\nfunction swap(b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16() {\n var len = this.length;\n\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits');\n }\n\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n\n return this;\n};\n\nBuffer.prototype.swap32 = function swap32() {\n var len = this.length;\n\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits');\n }\n\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n\n return this;\n};\n\nBuffer.prototype.swap64 = function swap64() {\n var len = this.length;\n\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits');\n }\n\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n\n return this;\n};\n\nBuffer.prototype.toString = function toString() {\n var length = this.length | 0;\n if (length === 0) return '';\n if (arguments.length === 0) return utf8Slice(this, 0, length);\n return slowToString.apply(this, arguments);\n};\n\nBuffer.prototype.equals = function equals(b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer');\n if (this === b) return true;\n return Buffer.compare(this, b) === 0;\n};\n\nBuffer.prototype.inspect = function inspect() {\n var str = '';\n var max = exports.INSPECT_MAX_BYTES;\n\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n\n return '<Buffer ' + str + '>';\n};\n\nBuffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer');\n }\n\n if (start === undefined) {\n start = 0;\n }\n\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n\n if (thisStart === undefined) {\n thisStart = 0;\n }\n\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index');\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0;\n }\n\n if (thisStart >= thisEnd) {\n return -1;\n }\n\n if (start >= end) {\n return 1;\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n if (this === target) return 0;\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n}; // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\n\n\nfunction bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1; // Normalize byteOffset\n\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n\n byteOffset = +byteOffset; // Coerce to Number.\n\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : buffer.length - 1;\n } // Normalize byteOffset: negative offsets start from the end of the buffer\n\n\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\n if (byteOffset >= buffer.length) {\n if (dir) return -1;else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;else return -1;\n } // Normalize val\n\n\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n } // Finally, search either indexOf (if dir is true) or lastIndexOf\n\n\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1;\n }\n\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n\n if (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n }\n }\n\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n }\n\n throw new TypeError('val must be string, number or Buffer');\n}\n\nfunction arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n\n if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1;\n }\n\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read(buf, i) {\n if (indexSize === 1) {\n return buf[i];\n } else {\n return buf.readUInt16BE(i * indexSize);\n }\n }\n\n var i;\n\n if (dir) {\n var foundIndex = -1;\n\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break;\n }\n }\n\n if (found) return i;\n }\n }\n\n return -1;\n}\n\nBuffer.prototype.includes = function includes(val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1;\n};\n\nBuffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n};\n\nfunction hexWrite(buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n\n if (length > remaining) {\n length = remaining;\n }\n } // must be an even number of digits\n\n\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string');\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i;\n buf[offset + i] = parsed;\n }\n\n return i;\n}\n\nfunction utf8Write(buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n}\n\nfunction asciiWrite(buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length);\n}\n\nfunction latin1Write(buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length);\n}\n\nfunction base64Write(buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length);\n}\n\nfunction ucs2Write(buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n}\n\nBuffer.prototype.write = function write(string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0; // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0; // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n } // legacy write(string, encoding, offset, length) - remove in v0.13\n\n } else {\n throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds');\n }\n\n if (!encoding) encoding = 'utf8';\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length);\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length);\n\n case 'ascii':\n return asciiWrite(this, string, offset, length);\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length);\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer.prototype.toJSON = function toJSON() {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n };\n};\n\nfunction base64Slice(buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf);\n } else {\n return base64.fromByteArray(buf.slice(start, end));\n }\n}\n\nfunction utf8Slice(buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n var i = start;\n\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n\n break;\n\n case 2:\n secondByte = buf[i + 1];\n\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F;\n\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F;\n\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F;\n\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res);\n} // Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\n\n\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray(codePoints) {\n var len = codePoints.length;\n\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n } // Decode in chunks to avoid \"call stack size exceeded\".\n\n\n var res = '';\n var i = 0;\n\n while (i < len) {\n res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n }\n\n return res;\n}\n\nfunction asciiSlice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n\n return ret;\n}\n\nfunction latin1Slice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n\n return ret;\n}\n\nfunction hexSlice(buf, start, end) {\n var len = buf.length;\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n var out = '';\n\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n\n return out;\n}\n\nfunction utf16leSlice(buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n\n return res;\n}\n\nBuffer.prototype.slice = function slice(start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n var newBuf;\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf;\n};\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\n\n\nfunction checkOffset(offset, ext, length) {\n if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint');\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length');\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset];\n};\n\nBuffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | this[offset + 1] << 8;\n};\n\nBuffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] << 8 | this[offset + 1];\n};\n\nBuffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000;\n};\n\nBuffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n};\n\nBuffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\n\nBuffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\n\nBuffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return this[offset];\n return (0xff - this[offset] + 1) * -1;\n};\n\nBuffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | this[offset + 1] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\n\nBuffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | this[offset] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\n\nBuffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n};\n\nBuffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n};\n\nBuffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, true, 23, 4);\n};\n\nBuffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, false, 23, 4);\n};\n\nBuffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, true, 52, 8);\n};\n\nBuffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, false, 52, 8);\n};\n\nfunction checkInt(buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance');\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds');\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = value & 0xff;\n return offset + 1;\n};\n\nfunction objectWriteUInt16(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & 0xff << 8 * (littleEndian ? i : 1 - i)) >>> (littleEndian ? i : 1 - i) * 8;\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n\n return offset + 2;\n};\n\nfunction objectWriteUInt32(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = value >>> (littleEndian ? i : 3 - i) * 8 & 0xff;\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = value >>> 24;\n this[offset + 2] = value >>> 16;\n this[offset + 1] = value >>> 8;\n this[offset] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = value & 0xff;\n return offset + 1;\n};\n\nBuffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n this[offset + 2] = value >>> 16;\n this[offset + 3] = value >>> 24;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n\n return offset + 4;\n};\n\nfunction checkIEEE754(buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n if (offset < 0) throw new RangeError('Index out of range');\n}\n\nfunction writeFloat(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4;\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert);\n};\n\nfunction writeDouble(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8;\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert);\n}; // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\n\nBuffer.prototype.copy = function copy(target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start; // Copy 0 bytes; we're done\n\n if (end === start) return 0;\n if (target.length === 0 || this.length === 0) return 0; // Fatal error conditions\n\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds');\n }\n\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds');\n if (end < 0) throw new RangeError('sourceEnd out of bounds'); // Are we oob?\n\n if (end > this.length) end = this.length;\n\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(target, this.subarray(start, start + len), targetStart);\n }\n\n return len;\n}; // Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\n\n\nBuffer.prototype.fill = function fill(val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n\n if (code < 256) {\n val = code;\n }\n }\n\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string');\n }\n\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding);\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n } // Invalid ranges are not set to a default, so can range check early.\n\n\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index');\n }\n\n if (end <= start) {\n return this;\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n if (!val) val = 0;\n var i;\n\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = Buffer.isBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this;\n}; // HELPER FUNCTIONS\n// ================\n\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\nfunction base64clean(str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, ''); // Node converts strings with length < 2 to ''\n\n if (str.length < 2) return ''; // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n\n return str;\n}\n\nfunction stringtrim(str) {\n if (str.trim) return str.trim();\n return str.replace(/^\\s+|\\s+$/g, '');\n}\n\nfunction toHex(n) {\n if (n < 16) return '0' + n.toString(16);\n return n.toString(16);\n}\n\nfunction utf8ToBytes(string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i); // is surrogate component\n\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } // valid lead\n\n\n leadSurrogate = codePoint;\n continue;\n } // 2 leads in a row\n\n\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue;\n } // valid surrogate pair\n\n\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null; // encode utf8\n\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break;\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break;\n bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break;\n bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break;\n bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else {\n throw new Error('Invalid code point');\n }\n }\n\n return bytes;\n}\n\nfunction asciiToBytes(str) {\n var byteArray = [];\n\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n\n return byteArray;\n}\n\nfunction utf16leToBytes(str, units) {\n var c, hi, lo;\n var byteArray = [];\n\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break;\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray;\n}\n\nfunction base64ToBytes(str) {\n return base64.toByteArray(base64clean(str));\n}\n\nfunction blitBuffer(src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if (i + offset >= dst.length || i >= src.length) break;\n dst[i + offset] = src[i];\n }\n\n return i;\n}\n\nfunction isnan(val) {\n return val !== val; // eslint-disable-line no-self-compare\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/node-libs-browser/node_modules/buffer/index.js?"); | |
| 2192 | - | |
| 2193 | -/***/ }), | |
| 2194 | - | |
| 2195 | -/***/ "./node_modules/node-libs-browser/node_modules/events/events.js": | |
| 2196 | -/*!**********************************************************************!*\ | |
| 2197 | - !*** ./node_modules/node-libs-browser/node_modules/events/events.js ***! | |
| 2198 | - \**********************************************************************/ | |
| 2199 | -/*! no static exports found */ | |
| 2200 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2201 | - | |
| 2202 | -"use strict"; | |
| 2203 | -eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\nvar R = typeof Reflect === 'object' ? Reflect : null;\nvar ReflectApply = R && typeof R.apply === 'function' ? R.apply : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n};\nvar ReflectOwnKeys;\n\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys;\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n};\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\n\nmodule.exports = EventEmitter;\nmodule.exports.once = once; // Backwards-compat with node 0.10.x\n\nEventEmitter.EventEmitter = EventEmitter;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined; // By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\n\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function get() {\n return defaultMaxListeners;\n },\n set: function set(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function () {\n if (this._events === undefined || this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n}; // Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\n\n\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined) return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n\n for (var i = 1; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var doError = type === 'error';\n var events = this._events;\n if (events !== undefined) doError = doError && events.error === undefined;else if (!doError) return false; // If there is no 'error' event listener then throw.\n\n if (doError) {\n var er;\n if (args.length > 0) er = args[0];\n\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n } // At least give some kind of context to the user\n\n\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n if (handler === undefined) return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n\n for (var i = 0; i < len; ++i) {\n ReflectApply(listeners[i], this, args);\n }\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n checkListener(listener);\n events = target._events;\n\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type, listener.listener ? listener.listener : listener); // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n\n events = target._events;\n }\n\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] = prepend ? [listener, existing] : [existing, listener]; // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n } // Check for listener leak\n\n\n m = _getMaxListeners(target);\n\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true; // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n\n var w = new Error('Possible EventEmitter memory leak detected. ' + existing.length + ' ' + String(type) + ' listeners ' + 'added. Use emitter.setMaxListeners() to ' + 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener = function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n};\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0) return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = {\n fired: false,\n wrapFn: undefined,\n target: target,\n type: type,\n listener: listener\n };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener = function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n}; // Emits a 'removeListener' event if and only if the listener was removed.\n\n\nEventEmitter.prototype.removeListener = function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n checkListener(listener);\n events = this._events;\n if (events === undefined) return this;\n list = events[type];\n if (list === undefined) return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0) this._events = Object.create(null);else {\n delete events[type];\n if (events.removeListener) this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0) return this;\n if (position === 0) list.shift();else {\n spliceOne(list, position);\n }\n if (list.length === 1) events[type] = list[0];\n if (events.removeListener !== undefined) this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(type) {\n var listeners, events, i;\n events = this._events;\n if (events === undefined) return this; // not listening for removeListener, no need to emit\n\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0) this._events = Object.create(null);else delete events[type];\n }\n\n return this;\n } // emit removeListener for all listeners on all events\n\n\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n};\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n if (events === undefined) return [];\n var evlistener = events[type];\n if (evlistener === undefined) return [];\n if (typeof evlistener === 'function') return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function (emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\n\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n\n for (var i = 0; i < n; ++i) {\n copy[i] = arr[i];\n }\n\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++) {\n list[index] = list[index + 1];\n }\n\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n\n resolve([].slice.call(arguments));\n }\n\n ;\n eventTargetAgnosticAddListener(emitter, name, resolver, {\n once: true\n });\n\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, {\n once: true\n });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/node-libs-browser/node_modules/events/events.js?"); | |
| 2204 | - | |
| 2205 | -/***/ }), | |
| 2206 | - | |
| 2207 | -/***/ "./node_modules/node-libs-browser/node_modules/timers-browserify/main.js": | |
| 2208 | -/*!*******************************************************************************!*\ | |
| 2209 | - !*** ./node_modules/node-libs-browser/node_modules/timers-browserify/main.js ***! | |
| 2210 | - \*******************************************************************************/ | |
| 2211 | -/*! no static exports found */ | |
| 2212 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2213 | - | |
| 2214 | -eval("/* WEBPACK VAR INJECTION */(function(global) {var scope = typeof global !== \"undefined\" && global || typeof self !== \"undefined\" && self || window;\nvar apply = Function.prototype.apply; // DOM APIs, for completeness\n\nexports.setTimeout = function () {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\n\nexports.setInterval = function () {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\n\nexports.clearTimeout = exports.clearInterval = function (timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\n\nTimeout.prototype.unref = Timeout.prototype.ref = function () {};\n\nTimeout.prototype.close = function () {\n this._clearFn.call(scope, this._id);\n}; // Does not start the time, just sets up the members needed.\n\n\nexports.enroll = function (item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function (item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function (item) {\n clearTimeout(item._idleTimeoutId);\n var msecs = item._idleTimeout;\n\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout) item._onTimeout();\n }, msecs);\n }\n}; // setimmediate attaches itself to the global object\n\n\n__webpack_require__(/*! setimmediate */ \"./node_modules/setimmediate/setImmediate.js\"); // On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\n\n\nexports.setImmediate = typeof self !== \"undefined\" && self.setImmediate || typeof global !== \"undefined\" && global.setImmediate || this && this.setImmediate;\nexports.clearImmediate = typeof self !== \"undefined\" && self.clearImmediate || typeof global !== \"undefined\" && global.clearImmediate || this && this.clearImmediate;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/node-libs-browser/node_modules/timers-browserify/main.js?"); | |
| 2215 | - | |
| 2216 | -/***/ }), | |
| 2217 | - | |
| 2218 | -/***/ "./node_modules/parse-asn1/aesid.json": | |
| 2219 | -/*!********************************************!*\ | |
| 2220 | - !*** ./node_modules/parse-asn1/aesid.json ***! | |
| 2221 | - \********************************************/ | |
| 2222 | -/*! exports provided: 2.16.840.1.101.3.4.1.1, 2.16.840.1.101.3.4.1.2, 2.16.840.1.101.3.4.1.3, 2.16.840.1.101.3.4.1.4, 2.16.840.1.101.3.4.1.21, 2.16.840.1.101.3.4.1.22, 2.16.840.1.101.3.4.1.23, 2.16.840.1.101.3.4.1.24, 2.16.840.1.101.3.4.1.41, 2.16.840.1.101.3.4.1.42, 2.16.840.1.101.3.4.1.43, 2.16.840.1.101.3.4.1.44, default */ | |
| 2223 | -/***/ (function(module) { | |
| 2224 | - | |
| 2225 | -eval("module.exports = JSON.parse(\"{\\\"2.16.840.1.101.3.4.1.1\\\":\\\"aes-128-ecb\\\",\\\"2.16.840.1.101.3.4.1.2\\\":\\\"aes-128-cbc\\\",\\\"2.16.840.1.101.3.4.1.3\\\":\\\"aes-128-ofb\\\",\\\"2.16.840.1.101.3.4.1.4\\\":\\\"aes-128-cfb\\\",\\\"2.16.840.1.101.3.4.1.21\\\":\\\"aes-192-ecb\\\",\\\"2.16.840.1.101.3.4.1.22\\\":\\\"aes-192-cbc\\\",\\\"2.16.840.1.101.3.4.1.23\\\":\\\"aes-192-ofb\\\",\\\"2.16.840.1.101.3.4.1.24\\\":\\\"aes-192-cfb\\\",\\\"2.16.840.1.101.3.4.1.41\\\":\\\"aes-256-ecb\\\",\\\"2.16.840.1.101.3.4.1.42\\\":\\\"aes-256-cbc\\\",\\\"2.16.840.1.101.3.4.1.43\\\":\\\"aes-256-ofb\\\",\\\"2.16.840.1.101.3.4.1.44\\\":\\\"aes-256-cfb\\\"}\");\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/parse-asn1/aesid.json?"); | |
| 2226 | - | |
| 2227 | -/***/ }), | |
| 2228 | - | |
| 2229 | -/***/ "./node_modules/parse-asn1/asn1.js": | |
| 2230 | -/*!*****************************************!*\ | |
| 2231 | - !*** ./node_modules/parse-asn1/asn1.js ***! | |
| 2232 | - \*****************************************/ | |
| 2233 | -/*! no static exports found */ | |
| 2234 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2235 | - | |
| 2236 | -"use strict"; | |
| 2237 | -eval("// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n\n\nvar asn1 = __webpack_require__(/*! asn1.js */ \"./node_modules/asn1.js/lib/asn1.js\");\n\nexports.certificate = __webpack_require__(/*! ./certificate */ \"./node_modules/parse-asn1/certificate.js\");\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(this.key('version').int(), this.key('modulus').int(), this.key('publicExponent').int(), this.key('privateExponent').int(), this.key('prime1').int(), this.key('prime2').int(), this.key('exponent1').int(), this.key('exponent2').int(), this.key('coefficient').int());\n});\nexports.RSAPrivateKey = RSAPrivateKey;\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(this.key('modulus').int(), this.key('publicExponent').int());\n});\nexports.RSAPublicKey = RSAPublicKey;\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(this.key('algorithm').use(AlgorithmIdentifier), this.key('subjectPublicKey').bitstr());\n});\nexports.PublicKey = PublicKey;\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(this.key('algorithm').objid(), this.key('none').null_().optional(), this.key('curve').objid().optional(), this.key('params').seq().obj(this.key('p').int(), this.key('q').int(), this.key('g').int()).optional());\n});\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(this.key('version').int(), this.key('algorithm').use(AlgorithmIdentifier), this.key('subjectPrivateKey').octstr());\n});\nexports.PrivateKey = PrivateKeyInfo;\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(this.key('algorithm').seq().obj(this.key('id').objid(), this.key('decrypt').seq().obj(this.key('kde').seq().obj(this.key('id').objid(), this.key('kdeparams').seq().obj(this.key('salt').octstr(), this.key('iters').int())), this.key('cipher').seq().obj(this.key('algo').objid(), this.key('iv').octstr()))), this.key('subjectPrivateKey').octstr());\n});\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo;\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(this.key('version').int(), this.key('p').int(), this.key('q').int(), this.key('g').int(), this.key('pub_key').int(), this.key('priv_key').int());\n});\nexports.DSAPrivateKey = DSAPrivateKey;\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int();\n});\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(this.key('version').int(), this.key('privateKey').octstr(), this.key('parameters').optional().explicit(0).use(ECParameters), this.key('publicKey').optional().explicit(1).bitstr());\n});\nexports.ECPrivateKey = ECPrivateKey;\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n });\n});\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(this.key('r').int(), this.key('s').int());\n});\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/parse-asn1/asn1.js?"); | |
| 2238 | - | |
| 2239 | -/***/ }), | |
| 2240 | - | |
| 2241 | -/***/ "./node_modules/parse-asn1/certificate.js": | |
| 2242 | -/*!************************************************!*\ | |
| 2243 | - !*** ./node_modules/parse-asn1/certificate.js ***! | |
| 2244 | - \************************************************/ | |
| 2245 | -/*! no static exports found */ | |
| 2246 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2247 | - | |
| 2248 | -"use strict"; | |
| 2249 | -eval("// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n\nvar asn = __webpack_require__(/*! asn1.js */ \"./node_modules/asn1.js/lib/asn1.js\");\n\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n });\n});\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(this.key('type').objid(), this.key('value').any());\n});\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(this.key('algorithm').objid(), this.key('parameters').optional(), this.key('curve').objid().optional());\n});\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(this.key('algorithm').use(AlgorithmIdentifier), this.key('subjectPublicKey').bitstr());\n});\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue);\n});\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName);\n});\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n });\n});\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(this.key('notBefore').use(Time), this.key('notAfter').use(Time));\n});\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(this.key('extnID').objid(), this.key('critical').bool().def(false), this.key('extnValue').octstr());\n});\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(this.key('version').explicit(0).int().optional(), this.key('serialNumber').int(), this.key('signature').use(AlgorithmIdentifier), this.key('issuer').use(Name), this.key('validity').use(Validity), this.key('subject').use(Name), this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo), this.key('issuerUniqueID').implicit(1).bitstr().optional(), this.key('subjectUniqueID').implicit(2).bitstr().optional(), this.key('extensions').explicit(3).seqof(Extension).optional());\n});\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(this.key('tbsCertificate').use(TBSCertificate), this.key('signatureAlgorithm').use(AlgorithmIdentifier), this.key('signatureValue').bitstr());\n});\nmodule.exports = X509Certificate;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/parse-asn1/certificate.js?"); | |
| 2250 | - | |
| 2251 | -/***/ }), | |
| 2252 | - | |
| 2253 | -/***/ "./node_modules/parse-asn1/fixProc.js": | |
| 2254 | -/*!********************************************!*\ | |
| 2255 | - !*** ./node_modules/parse-asn1/fixProc.js ***! | |
| 2256 | - \********************************************/ | |
| 2257 | -/*! no static exports found */ | |
| 2258 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2259 | - | |
| 2260 | -eval("// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m;\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m;\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m;\n\nvar evp = __webpack_require__(/*! evp_bytestokey */ \"./node_modules/evp_bytestokey/index.js\");\n\nvar ciphers = __webpack_require__(/*! browserify-aes */ \"./node_modules/browserify-aes/browser.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nmodule.exports = function (okey, password) {\n var key = okey.toString();\n var match = key.match(findProc);\n var decrypted;\n\n if (!match) {\n var match2 = key.match(fullRegex);\n decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64');\n } else {\n var suite = 'aes' + match[1];\n var iv = Buffer.from(match[2], 'hex');\n var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64');\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key;\n var out = [];\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv);\n out.push(cipher.update(cipherText));\n out.push(cipher.final());\n decrypted = Buffer.concat(out);\n }\n\n var tag = key.match(startRegex)[1];\n return {\n tag: tag,\n data: decrypted\n };\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/parse-asn1/fixProc.js?"); | |
| 2261 | - | |
| 2262 | -/***/ }), | |
| 2263 | - | |
| 2264 | -/***/ "./node_modules/parse-asn1/index.js": | |
| 2265 | -/*!******************************************!*\ | |
| 2266 | - !*** ./node_modules/parse-asn1/index.js ***! | |
| 2267 | - \******************************************/ | |
| 2268 | -/*! no static exports found */ | |
| 2269 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2270 | - | |
| 2271 | -eval("var asn1 = __webpack_require__(/*! ./asn1 */ \"./node_modules/parse-asn1/asn1.js\");\n\nvar aesid = __webpack_require__(/*! ./aesid.json */ \"./node_modules/parse-asn1/aesid.json\");\n\nvar fixProc = __webpack_require__(/*! ./fixProc */ \"./node_modules/parse-asn1/fixProc.js\");\n\nvar ciphers = __webpack_require__(/*! browserify-aes */ \"./node_modules/browserify-aes/browser.js\");\n\nvar compat = __webpack_require__(/*! pbkdf2 */ \"./node_modules/pbkdf2/browser.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nmodule.exports = parseKeys;\n\nfunction parseKeys(buffer) {\n var password;\n\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase;\n buffer = buffer.key;\n }\n\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer);\n }\n\n var stripped = fixProc(buffer, password);\n var type = stripped.tag;\n var data = stripped.data;\n var subtype, ndata;\n\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo;\n // falls through\n\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der');\n }\n\n subtype = ndata.algorithm.algorithm.join('.');\n\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der');\n\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey;\n return {\n type: 'ec',\n data: ndata\n };\n\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der');\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n };\n\n default:\n throw new Error('unknown key id ' + subtype);\n }\n\n // throw new Error('unknown key type ' + type)\n\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der');\n data = decrypt(data, password);\n // falls through\n\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der');\n subtype = ndata.algorithm.algorithm.join('.');\n\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der');\n\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n };\n\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der');\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n };\n\n default:\n throw new Error('unknown key id ' + subtype);\n }\n\n // throw new Error('unknown key type ' + type)\n\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der');\n\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der');\n\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n };\n\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der');\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n };\n\n default:\n throw new Error('unknown key type ' + type);\n }\n}\n\nparseKeys.signature = asn1.signature;\n\nfunction decrypt(data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt;\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10);\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')];\n var iv = data.algorithm.decrypt.cipher.iv;\n var cipherText = data.subjectPrivateKey;\n var keylen = parseInt(algo.split('-')[1], 10) / 8;\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1');\n var cipher = ciphers.createDecipheriv(algo, key, iv);\n var out = [];\n out.push(cipher.update(cipherText));\n out.push(cipher.final());\n return Buffer.concat(out);\n}\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/parse-asn1/index.js?"); | |
| 2272 | - | |
| 2273 | -/***/ }), | |
| 2274 | - | |
| 2275 | -/***/ "./node_modules/path-browserify/index.js": | |
| 2276 | -/*!***********************************************!*\ | |
| 2277 | - !*** ./node_modules/path-browserify/index.js ***! | |
| 2278 | - \***********************************************/ | |
| 2279 | -/*! no static exports found */ | |
| 2280 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2281 | - | |
| 2282 | -eval("/* WEBPACK VAR INJECTION */(function(process) {// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n } // if the path is allowed to go above the root, restore leading ..s\n\n\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n} // path.resolve([from ...], to)\n// posix version\n\n\nexports.resolve = function () {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : process.cwd(); // Skip empty and invalid entries\n\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n } // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n // Normalize the path\n\n\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function (p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n return (resolvedAbsolute ? '/' : '') + resolvedPath || '.';\n}; // path.normalize(path)\n// posix version\n\n\nexports.normalize = function (path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/'; // Normalize the path\n\n path = normalizeArray(filter(path.split('/'), function (p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n}; // posix version\n\n\nexports.isAbsolute = function (path) {\n return path.charAt(0) === '/';\n}; // posix version\n\n\nexports.join = function () {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function (p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n\n return p;\n }).join('/'));\n}; // path.relative(from, to)\n// posix version\n\n\nexports.relative = function (from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47\n /*/*/\n ;\n var end = -1;\n var matchedSlash = true;\n\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n\n if (code === 47\n /*/*/\n ) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47\n /*/*/\n ) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n} // Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\n\n\nexports.basename = function (path, ext) {\n var f = basename(path);\n\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true; // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n\n var preDotState = 0;\n\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n\n if (code === 47\n /*/*/\n ) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n\n continue;\n }\n\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n\n if (code === 46\n /*.*/\n ) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot\n preDotState === 0 || // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n\n return path.slice(startDot, end);\n};\n\nfunction filter(xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n\n return res;\n} // String.prototype.substr - negative index don't work in IE8\n\n\nvar substr = 'ab'.substr(-1) === 'b' ? function (str, start, len) {\n return str.substr(start, len);\n} : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/path-browserify/index.js?"); | |
| 2283 | - | |
| 2284 | -/***/ }), | |
| 2285 | - | |
| 2286 | -/***/ "./node_modules/pbkdf2/browser.js": | |
| 2287 | -/*!****************************************!*\ | |
| 2288 | - !*** ./node_modules/pbkdf2/browser.js ***! | |
| 2289 | - \****************************************/ | |
| 2290 | -/*! no static exports found */ | |
| 2291 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2292 | - | |
| 2293 | -eval("exports.pbkdf2 = __webpack_require__(/*! ./lib/async */ \"./node_modules/pbkdf2/lib/async.js\");\nexports.pbkdf2Sync = __webpack_require__(/*! ./lib/sync */ \"./node_modules/pbkdf2/lib/sync-browser.js\");\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/pbkdf2/browser.js?"); | |
| 2294 | - | |
| 2295 | -/***/ }), | |
| 2296 | - | |
| 2297 | -/***/ "./node_modules/pbkdf2/lib/async.js": | |
| 2298 | -/*!******************************************!*\ | |
| 2299 | - !*** ./node_modules/pbkdf2/lib/async.js ***! | |
| 2300 | - \******************************************/ | |
| 2301 | -/*! no static exports found */ | |
| 2302 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2303 | - | |
| 2304 | -eval("/* WEBPACK VAR INJECTION */(function(global) {var Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar checkParameters = __webpack_require__(/*! ./precondition */ \"./node_modules/pbkdf2/lib/precondition.js\");\n\nvar defaultEncoding = __webpack_require__(/*! ./default-encoding */ \"./node_modules/pbkdf2/lib/default-encoding.js\");\n\nvar sync = __webpack_require__(/*! ./sync */ \"./node_modules/pbkdf2/lib/sync-browser.js\");\n\nvar toBuffer = __webpack_require__(/*! ./to-buffer */ \"./node_modules/pbkdf2/lib/to-buffer.js\");\n\nvar ZERO_BUF;\nvar subtle = global.crypto && global.crypto.subtle;\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n};\nvar checks = [];\n\nfunction checkNative(algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false);\n }\n\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false);\n }\n\n if (checks[algo] !== undefined) {\n return checks[algo];\n }\n\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8);\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo).then(function () {\n return true;\n }).catch(function () {\n return false;\n });\n checks[algo] = prom;\n return prom;\n}\n\nvar nextTick;\n\nfunction getNextTick() {\n if (nextTick) {\n return nextTick;\n }\n\n if (global.process && global.process.nextTick) {\n nextTick = global.process.nextTick;\n } else if (global.queueMicrotask) {\n nextTick = global.queueMicrotask;\n } else if (global.setImmediate) {\n nextTick = global.setImmediate;\n } else {\n nextTick = global.setTimeout;\n }\n\n return nextTick;\n}\n\nfunction browserPbkdf2(password, salt, iterations, length, algo) {\n return subtle.importKey('raw', password, {\n name: 'PBKDF2'\n }, false, ['deriveBits']).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3);\n }).then(function (res) {\n return Buffer.from(res);\n });\n}\n\nfunction resolvePromise(promise, callback) {\n promise.then(function (out) {\n getNextTick()(function () {\n callback(null, out);\n });\n }, function (e) {\n getNextTick()(function () {\n callback(e);\n });\n });\n}\n\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest;\n digest = undefined;\n }\n\n digest = digest || 'sha1';\n var algo = toBrowser[digest.toLowerCase()];\n\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out;\n\n try {\n out = sync(password, salt, iterations, keylen, digest);\n } catch (e) {\n return callback(e);\n }\n\n callback(null, out);\n });\n return;\n }\n\n checkParameters(iterations, keylen);\n password = toBuffer(password, defaultEncoding, 'Password');\n salt = toBuffer(salt, defaultEncoding, 'Salt');\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2');\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo);\n return sync(password, salt, iterations, keylen, digest);\n }), callback);\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/pbkdf2/lib/async.js?"); | |
| 2305 | - | |
| 2306 | -/***/ }), | |
| 2307 | - | |
| 2308 | -/***/ "./node_modules/pbkdf2/lib/default-encoding.js": | |
| 2309 | -/*!*****************************************************!*\ | |
| 2310 | - !*** ./node_modules/pbkdf2/lib/default-encoding.js ***! | |
| 2311 | - \*****************************************************/ | |
| 2312 | -/*! no static exports found */ | |
| 2313 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2314 | - | |
| 2315 | -eval("/* WEBPACK VAR INJECTION */(function(global, process) {var defaultEncoding;\n/* istanbul ignore next */\n\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8';\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10);\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary';\n} else {\n defaultEncoding = 'utf-8';\n}\n\nmodule.exports = defaultEncoding;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\"), __webpack_require__(/*! ./../../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/pbkdf2/lib/default-encoding.js?"); | |
| 2316 | - | |
| 2317 | -/***/ }), | |
| 2318 | - | |
| 2319 | -/***/ "./node_modules/pbkdf2/lib/precondition.js": | |
| 2320 | -/*!*************************************************!*\ | |
| 2321 | - !*** ./node_modules/pbkdf2/lib/precondition.js ***! | |
| 2322 | - \*************************************************/ | |
| 2323 | -/*! no static exports found */ | |
| 2324 | -/***/ (function(module, exports) { | |
| 2325 | - | |
| 2326 | -eval("var MAX_ALLOC = Math.pow(2, 30) - 1; // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number');\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations');\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number');\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) {\n /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length');\n }\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/pbkdf2/lib/precondition.js?"); | |
| 2327 | - | |
| 2328 | -/***/ }), | |
| 2329 | - | |
| 2330 | -/***/ "./node_modules/pbkdf2/lib/sync-browser.js": | |
| 2331 | -/*!*************************************************!*\ | |
| 2332 | - !*** ./node_modules/pbkdf2/lib/sync-browser.js ***! | |
| 2333 | - \*************************************************/ | |
| 2334 | -/*! no static exports found */ | |
| 2335 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2336 | - | |
| 2337 | -eval("var md5 = __webpack_require__(/*! create-hash/md5 */ \"./node_modules/create-hash/md5.js\");\n\nvar RIPEMD160 = __webpack_require__(/*! ripemd160 */ \"./node_modules/ripemd160/index.js\");\n\nvar sha = __webpack_require__(/*! sha.js */ \"./node_modules/sha.js/index.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar checkParameters = __webpack_require__(/*! ./precondition */ \"./node_modules/pbkdf2/lib/precondition.js\");\n\nvar defaultEncoding = __webpack_require__(/*! ./default-encoding */ \"./node_modules/pbkdf2/lib/default-encoding.js\");\n\nvar toBuffer = __webpack_require__(/*! ./to-buffer */ \"./node_modules/pbkdf2/lib/to-buffer.js\");\n\nvar ZEROS = Buffer.alloc(128);\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n};\n\nfunction Hmac(alg, key, saltLen) {\n var hash = getDigest(alg);\n var blocksize = alg === 'sha512' || alg === 'sha384' ? 128 : 64;\n\n if (key.length > blocksize) {\n key = hash(key);\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize);\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg]);\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg]);\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36;\n opad[i] = key[i] ^ 0x5C;\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4);\n ipad.copy(ipad1, 0, 0, blocksize);\n this.ipad1 = ipad1;\n this.ipad2 = ipad;\n this.opad = opad;\n this.alg = alg;\n this.blocksize = blocksize;\n this.hash = hash;\n this.size = sizes[alg];\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize);\n var h = this.hash(ipad);\n h.copy(this.opad, this.blocksize);\n return this.hash(this.opad);\n};\n\nfunction getDigest(alg) {\n function shaFunc(data) {\n return sha(alg).update(data).digest();\n }\n\n function rmd160Func(data) {\n return new RIPEMD160().update(data).digest();\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func;\n if (alg === 'md5') return md5;\n return shaFunc;\n}\n\nfunction pbkdf2(password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen);\n password = toBuffer(password, defaultEncoding, 'Password');\n salt = toBuffer(salt, defaultEncoding, 'Salt');\n digest = digest || 'sha1';\n var hmac = new Hmac(digest, password, salt.length);\n var DK = Buffer.allocUnsafe(keylen);\n var block1 = Buffer.allocUnsafe(salt.length + 4);\n salt.copy(block1, 0, 0, salt.length);\n var destPos = 0;\n var hLen = sizes[digest];\n var l = Math.ceil(keylen / hLen);\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length);\n var T = hmac.run(block1, hmac.ipad1);\n var U = T;\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2);\n\n for (var k = 0; k < hLen; k++) {\n T[k] ^= U[k];\n }\n }\n\n T.copy(DK, destPos);\n destPos += hLen;\n }\n\n return DK;\n}\n\nmodule.exports = pbkdf2;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/pbkdf2/lib/sync-browser.js?"); | |
| 2338 | - | |
| 2339 | -/***/ }), | |
| 2340 | - | |
| 2341 | -/***/ "./node_modules/pbkdf2/lib/to-buffer.js": | |
| 2342 | -/*!**********************************************!*\ | |
| 2343 | - !*** ./node_modules/pbkdf2/lib/to-buffer.js ***! | |
| 2344 | - \**********************************************/ | |
| 2345 | -/*! no static exports found */ | |
| 2346 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2347 | - | |
| 2348 | -eval("var Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing;\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding);\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer);\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView');\n }\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/pbkdf2/lib/to-buffer.js?"); | |
| 2349 | - | |
| 2350 | -/***/ }), | |
| 2351 | - | |
| 2352 | -/***/ "./node_modules/process-nextick-args/index.js": | |
| 2353 | -/*!****************************************************!*\ | |
| 2354 | - !*** ./node_modules/process-nextick-args/index.js ***! | |
| 2355 | - \****************************************************/ | |
| 2356 | -/*! no static exports found */ | |
| 2357 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2358 | - | |
| 2359 | -"use strict"; | |
| 2360 | -eval("/* WEBPACK VAR INJECTION */(function(process) {\n\nif (typeof process === 'undefined' || !process.version || process.version.indexOf('v0.') === 0 || process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = {\n nextTick: nextTick\n };\n} else {\n module.exports = process;\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n\n var len = arguments.length;\n var args, i;\n\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n\n default:\n args = new Array(len - 1);\n i = 0;\n\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/process-nextick-args/index.js?"); | |
| 2361 | - | |
| 2362 | -/***/ }), | |
| 2363 | - | |
| 2364 | -/***/ "./node_modules/process/browser.js": | |
| 2365 | -/*!*****************************************!*\ | |
| 2366 | - !*** ./node_modules/process/browser.js ***! | |
| 2367 | - \*****************************************/ | |
| 2368 | -/*! no static exports found */ | |
| 2369 | -/***/ (function(module, exports) { | |
| 2370 | - | |
| 2371 | -eval("// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\n\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\n\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n return 0;\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/process/browser.js?"); | |
| 2372 | - | |
| 2373 | -/***/ }), | |
| 2374 | - | |
| 2375 | -/***/ "./node_modules/public-encrypt/browser.js": | |
| 2376 | -/*!************************************************!*\ | |
| 2377 | - !*** ./node_modules/public-encrypt/browser.js ***! | |
| 2378 | - \************************************************/ | |
| 2379 | -/*! no static exports found */ | |
| 2380 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2381 | - | |
| 2382 | -eval("exports.publicEncrypt = __webpack_require__(/*! ./publicEncrypt */ \"./node_modules/public-encrypt/publicEncrypt.js\");\nexports.privateDecrypt = __webpack_require__(/*! ./privateDecrypt */ \"./node_modules/public-encrypt/privateDecrypt.js\");\n\nexports.privateEncrypt = function privateEncrypt(key, buf) {\n return exports.publicEncrypt(key, buf, true);\n};\n\nexports.publicDecrypt = function publicDecrypt(key, buf) {\n return exports.privateDecrypt(key, buf, true);\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/public-encrypt/browser.js?"); | |
| 2383 | - | |
| 2384 | -/***/ }), | |
| 2385 | - | |
| 2386 | -/***/ "./node_modules/public-encrypt/mgf.js": | |
| 2387 | -/*!********************************************!*\ | |
| 2388 | - !*** ./node_modules/public-encrypt/mgf.js ***! | |
| 2389 | - \********************************************/ | |
| 2390 | -/*! no static exports found */ | |
| 2391 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2392 | - | |
| 2393 | -eval("var createHash = __webpack_require__(/*! create-hash */ \"./node_modules/create-hash/browser.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0);\n var i = 0;\n var c;\n\n while (t.length < len) {\n c = i2ops(i++);\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()]);\n }\n\n return t.slice(0, len);\n};\n\nfunction i2ops(c) {\n var out = Buffer.allocUnsafe(4);\n out.writeUInt32BE(c, 0);\n return out;\n}\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/public-encrypt/mgf.js?"); | |
| 2394 | - | |
| 2395 | -/***/ }), | |
| 2396 | - | |
| 2397 | -/***/ "./node_modules/public-encrypt/node_modules/bn.js/lib/bn.js": | |
| 2398 | -/*!******************************************************************!*\ | |
| 2399 | - !*** ./node_modules/public-encrypt/node_modules/bn.js/lib/bn.js ***! | |
| 2400 | - \******************************************************************/ | |
| 2401 | -/*! no static exports found */ | |
| 2402 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2403 | - | |
| 2404 | -eval("/* WEBPACK VAR INJECTION */(function(module) {(function (module, exports) {\n 'use strict'; // Utils\n\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n } // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n\n\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n } // BN\n\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0; // Reduction context\n\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n var Buffer;\n\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = __webpack_require__(/*! buffer */ 13).Buffer;\n }\n } catch (e) {}\n\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n\n if (endian !== 'le') return; // Reverse the bytes\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray(number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n\n return this.strip();\n };\n\n function parseHex4Bits(string, index) {\n var c = string.charCodeAt(index); // 'A' - 'F'\n\n if (c >= 65 && c <= 70) {\n return c - 55; // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87; // '0' - '9'\n } else {\n return c - 48 & 0xf;\n }\n }\n\n function parseHexByte(string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex(number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n } // 24-bits chunks\n\n\n var off = 0;\n var j = 0;\n var w;\n\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase(str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul; // 'a'\n\n if (c >= 49) {\n r += c - 49 + 0xa; // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa; // '0' - '9'\n } else {\n r += c;\n }\n }\n\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase(number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1; // Find length of limb in base\n\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand(size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n\n return this;\n }; // Remove leading `0` from `this`\n\n\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign() {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n\n return this;\n };\n\n BN.prototype.inspect = function inspect() {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n */\n\n\n var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = ((w << off | carry) & 0xffffff).toString(16);\n carry = w >>> 24 - off & 0xffffff;\n\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n\n off += 2;\n\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base]; // var groupBase = Math.pow(base, groupSize);\n\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n\n if (this.isZero()) {\n out = '0' + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber() {\n var ret = this.words[0];\n\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + this.words[1] * 0x4000000;\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n\n return this.negative !== 0 ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\n var t = w;\n var r = 0;\n\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n\n if ((t & 0x1) === 0) {\n r++;\n }\n\n return r;\n }; // Return number of used bits in a BN\n\n\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n\n var hi = this._countBits(w);\n\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray(num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n\n return w;\n } // Number of trailing zero bits\n\n\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n\n r += b;\n if (b !== 26) break;\n }\n\n return r;\n };\n\n BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos(width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos(width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n }; // Return negative clone of `this`\n\n\n BN.prototype.neg = function neg() {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n }; // Or `num` with `this` in-place\n\n\n BN.prototype.iuor = function iuor(num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n }; // Or `num` with `this`\n\n\n BN.prototype.or = function or(num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor(num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n }; // And `num` with `this` in-place\n\n\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n return this.strip();\n };\n\n BN.prototype.iand = function iand(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n }; // And `num` with `this`\n\n\n BN.prototype.and = function and(num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand(num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n }; // Xor `num` with `this` in-place\n\n\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n }; // Xor `num` with `this`\n\n\n BN.prototype.xor = function xor(num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor(num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n }; // Not ``this`` with ``width`` bitwidth\n\n\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26; // Extend the buffer with leading zeroes\n\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n } // Handle complete words\n\n\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n } // Handle the residue\n\n\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n } // And remove leading zeroes\n\n\n return this.strip();\n };\n\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n }; // Set `bit` of `this`\n\n\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | 1 << wbit;\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n }; // Add `num` to `this` in-place\n\n\n BN.prototype.iadd = function iadd(num) {\n var r; // negative + positive\n\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign(); // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n } // a.length > b.length\n\n\n var a, b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++; // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n }; // Add `num` to `this`\n\n\n BN.prototype.add = function add(num) {\n var res;\n\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n return num.clone().iadd(this);\n }; // Subtract `num` from `this` in-place\n\n\n BN.prototype.isub = function isub(num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign(); // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n } // At this point both numbers are positive\n\n\n var cmp = this.cmp(num); // Optimization - zeroify\n\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n } // a > b\n\n\n var a, b;\n\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n } // Copy rest of the words\n\n\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n }; // Subtract `num` from `this`\n\n\n BN.prototype.sub = function sub(num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = self.length + num.length | 0;\n out.length = len;\n len = len - 1 | 0; // Peel one iteration (compiler can't do it, because of code complexity)\n\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += r / 0x4000000 | 0;\n rword = r & 0x3ffffff;\n }\n\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n } // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n\n\n var comb10MulTo = function comb10MulTo(self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = mid + Math.imul(ah0, bl0) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = mid + Math.imul(ah1, bl0) | 0;\n hi = Math.imul(ah1, bh0);\n lo = lo + Math.imul(al0, bl1) | 0;\n mid = mid + Math.imul(al0, bh1) | 0;\n mid = mid + Math.imul(ah0, bl1) | 0;\n hi = hi + Math.imul(ah0, bh1) | 0;\n var w1 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = mid + Math.imul(ah2, bl0) | 0;\n hi = Math.imul(ah2, bh0);\n lo = lo + Math.imul(al1, bl1) | 0;\n mid = mid + Math.imul(al1, bh1) | 0;\n mid = mid + Math.imul(ah1, bl1) | 0;\n hi = hi + Math.imul(ah1, bh1) | 0;\n lo = lo + Math.imul(al0, bl2) | 0;\n mid = mid + Math.imul(al0, bh2) | 0;\n mid = mid + Math.imul(ah0, bl2) | 0;\n hi = hi + Math.imul(ah0, bh2) | 0;\n var w2 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = mid + Math.imul(ah3, bl0) | 0;\n hi = Math.imul(ah3, bh0);\n lo = lo + Math.imul(al2, bl1) | 0;\n mid = mid + Math.imul(al2, bh1) | 0;\n mid = mid + Math.imul(ah2, bl1) | 0;\n hi = hi + Math.imul(ah2, bh1) | 0;\n lo = lo + Math.imul(al1, bl2) | 0;\n mid = mid + Math.imul(al1, bh2) | 0;\n mid = mid + Math.imul(ah1, bl2) | 0;\n hi = hi + Math.imul(ah1, bh2) | 0;\n lo = lo + Math.imul(al0, bl3) | 0;\n mid = mid + Math.imul(al0, bh3) | 0;\n mid = mid + Math.imul(ah0, bl3) | 0;\n hi = hi + Math.imul(ah0, bh3) | 0;\n var w3 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = mid + Math.imul(ah4, bl0) | 0;\n hi = Math.imul(ah4, bh0);\n lo = lo + Math.imul(al3, bl1) | 0;\n mid = mid + Math.imul(al3, bh1) | 0;\n mid = mid + Math.imul(ah3, bl1) | 0;\n hi = hi + Math.imul(ah3, bh1) | 0;\n lo = lo + Math.imul(al2, bl2) | 0;\n mid = mid + Math.imul(al2, bh2) | 0;\n mid = mid + Math.imul(ah2, bl2) | 0;\n hi = hi + Math.imul(ah2, bh2) | 0;\n lo = lo + Math.imul(al1, bl3) | 0;\n mid = mid + Math.imul(al1, bh3) | 0;\n mid = mid + Math.imul(ah1, bl3) | 0;\n hi = hi + Math.imul(ah1, bh3) | 0;\n lo = lo + Math.imul(al0, bl4) | 0;\n mid = mid + Math.imul(al0, bh4) | 0;\n mid = mid + Math.imul(ah0, bl4) | 0;\n hi = hi + Math.imul(ah0, bh4) | 0;\n var w4 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = mid + Math.imul(ah5, bl0) | 0;\n hi = Math.imul(ah5, bh0);\n lo = lo + Math.imul(al4, bl1) | 0;\n mid = mid + Math.imul(al4, bh1) | 0;\n mid = mid + Math.imul(ah4, bl1) | 0;\n hi = hi + Math.imul(ah4, bh1) | 0;\n lo = lo + Math.imul(al3, bl2) | 0;\n mid = mid + Math.imul(al3, bh2) | 0;\n mid = mid + Math.imul(ah3, bl2) | 0;\n hi = hi + Math.imul(ah3, bh2) | 0;\n lo = lo + Math.imul(al2, bl3) | 0;\n mid = mid + Math.imul(al2, bh3) | 0;\n mid = mid + Math.imul(ah2, bl3) | 0;\n hi = hi + Math.imul(ah2, bh3) | 0;\n lo = lo + Math.imul(al1, bl4) | 0;\n mid = mid + Math.imul(al1, bh4) | 0;\n mid = mid + Math.imul(ah1, bl4) | 0;\n hi = hi + Math.imul(ah1, bh4) | 0;\n lo = lo + Math.imul(al0, bl5) | 0;\n mid = mid + Math.imul(al0, bh5) | 0;\n mid = mid + Math.imul(ah0, bl5) | 0;\n hi = hi + Math.imul(ah0, bh5) | 0;\n var w5 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = mid + Math.imul(ah6, bl0) | 0;\n hi = Math.imul(ah6, bh0);\n lo = lo + Math.imul(al5, bl1) | 0;\n mid = mid + Math.imul(al5, bh1) | 0;\n mid = mid + Math.imul(ah5, bl1) | 0;\n hi = hi + Math.imul(ah5, bh1) | 0;\n lo = lo + Math.imul(al4, bl2) | 0;\n mid = mid + Math.imul(al4, bh2) | 0;\n mid = mid + Math.imul(ah4, bl2) | 0;\n hi = hi + Math.imul(ah4, bh2) | 0;\n lo = lo + Math.imul(al3, bl3) | 0;\n mid = mid + Math.imul(al3, bh3) | 0;\n mid = mid + Math.imul(ah3, bl3) | 0;\n hi = hi + Math.imul(ah3, bh3) | 0;\n lo = lo + Math.imul(al2, bl4) | 0;\n mid = mid + Math.imul(al2, bh4) | 0;\n mid = mid + Math.imul(ah2, bl4) | 0;\n hi = hi + Math.imul(ah2, bh4) | 0;\n lo = lo + Math.imul(al1, bl5) | 0;\n mid = mid + Math.imul(al1, bh5) | 0;\n mid = mid + Math.imul(ah1, bl5) | 0;\n hi = hi + Math.imul(ah1, bh5) | 0;\n lo = lo + Math.imul(al0, bl6) | 0;\n mid = mid + Math.imul(al0, bh6) | 0;\n mid = mid + Math.imul(ah0, bl6) | 0;\n hi = hi + Math.imul(ah0, bh6) | 0;\n var w6 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = mid + Math.imul(ah7, bl0) | 0;\n hi = Math.imul(ah7, bh0);\n lo = lo + Math.imul(al6, bl1) | 0;\n mid = mid + Math.imul(al6, bh1) | 0;\n mid = mid + Math.imul(ah6, bl1) | 0;\n hi = hi + Math.imul(ah6, bh1) | 0;\n lo = lo + Math.imul(al5, bl2) | 0;\n mid = mid + Math.imul(al5, bh2) | 0;\n mid = mid + Math.imul(ah5, bl2) | 0;\n hi = hi + Math.imul(ah5, bh2) | 0;\n lo = lo + Math.imul(al4, bl3) | 0;\n mid = mid + Math.imul(al4, bh3) | 0;\n mid = mid + Math.imul(ah4, bl3) | 0;\n hi = hi + Math.imul(ah4, bh3) | 0;\n lo = lo + Math.imul(al3, bl4) | 0;\n mid = mid + Math.imul(al3, bh4) | 0;\n mid = mid + Math.imul(ah3, bl4) | 0;\n hi = hi + Math.imul(ah3, bh4) | 0;\n lo = lo + Math.imul(al2, bl5) | 0;\n mid = mid + Math.imul(al2, bh5) | 0;\n mid = mid + Math.imul(ah2, bl5) | 0;\n hi = hi + Math.imul(ah2, bh5) | 0;\n lo = lo + Math.imul(al1, bl6) | 0;\n mid = mid + Math.imul(al1, bh6) | 0;\n mid = mid + Math.imul(ah1, bl6) | 0;\n hi = hi + Math.imul(ah1, bh6) | 0;\n lo = lo + Math.imul(al0, bl7) | 0;\n mid = mid + Math.imul(al0, bh7) | 0;\n mid = mid + Math.imul(ah0, bl7) | 0;\n hi = hi + Math.imul(ah0, bh7) | 0;\n var w7 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = mid + Math.imul(ah8, bl0) | 0;\n hi = Math.imul(ah8, bh0);\n lo = lo + Math.imul(al7, bl1) | 0;\n mid = mid + Math.imul(al7, bh1) | 0;\n mid = mid + Math.imul(ah7, bl1) | 0;\n hi = hi + Math.imul(ah7, bh1) | 0;\n lo = lo + Math.imul(al6, bl2) | 0;\n mid = mid + Math.imul(al6, bh2) | 0;\n mid = mid + Math.imul(ah6, bl2) | 0;\n hi = hi + Math.imul(ah6, bh2) | 0;\n lo = lo + Math.imul(al5, bl3) | 0;\n mid = mid + Math.imul(al5, bh3) | 0;\n mid = mid + Math.imul(ah5, bl3) | 0;\n hi = hi + Math.imul(ah5, bh3) | 0;\n lo = lo + Math.imul(al4, bl4) | 0;\n mid = mid + Math.imul(al4, bh4) | 0;\n mid = mid + Math.imul(ah4, bl4) | 0;\n hi = hi + Math.imul(ah4, bh4) | 0;\n lo = lo + Math.imul(al3, bl5) | 0;\n mid = mid + Math.imul(al3, bh5) | 0;\n mid = mid + Math.imul(ah3, bl5) | 0;\n hi = hi + Math.imul(ah3, bh5) | 0;\n lo = lo + Math.imul(al2, bl6) | 0;\n mid = mid + Math.imul(al2, bh6) | 0;\n mid = mid + Math.imul(ah2, bl6) | 0;\n hi = hi + Math.imul(ah2, bh6) | 0;\n lo = lo + Math.imul(al1, bl7) | 0;\n mid = mid + Math.imul(al1, bh7) | 0;\n mid = mid + Math.imul(ah1, bl7) | 0;\n hi = hi + Math.imul(ah1, bh7) | 0;\n lo = lo + Math.imul(al0, bl8) | 0;\n mid = mid + Math.imul(al0, bh8) | 0;\n mid = mid + Math.imul(ah0, bl8) | 0;\n hi = hi + Math.imul(ah0, bh8) | 0;\n var w8 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = mid + Math.imul(ah9, bl0) | 0;\n hi = Math.imul(ah9, bh0);\n lo = lo + Math.imul(al8, bl1) | 0;\n mid = mid + Math.imul(al8, bh1) | 0;\n mid = mid + Math.imul(ah8, bl1) | 0;\n hi = hi + Math.imul(ah8, bh1) | 0;\n lo = lo + Math.imul(al7, bl2) | 0;\n mid = mid + Math.imul(al7, bh2) | 0;\n mid = mid + Math.imul(ah7, bl2) | 0;\n hi = hi + Math.imul(ah7, bh2) | 0;\n lo = lo + Math.imul(al6, bl3) | 0;\n mid = mid + Math.imul(al6, bh3) | 0;\n mid = mid + Math.imul(ah6, bl3) | 0;\n hi = hi + Math.imul(ah6, bh3) | 0;\n lo = lo + Math.imul(al5, bl4) | 0;\n mid = mid + Math.imul(al5, bh4) | 0;\n mid = mid + Math.imul(ah5, bl4) | 0;\n hi = hi + Math.imul(ah5, bh4) | 0;\n lo = lo + Math.imul(al4, bl5) | 0;\n mid = mid + Math.imul(al4, bh5) | 0;\n mid = mid + Math.imul(ah4, bl5) | 0;\n hi = hi + Math.imul(ah4, bh5) | 0;\n lo = lo + Math.imul(al3, bl6) | 0;\n mid = mid + Math.imul(al3, bh6) | 0;\n mid = mid + Math.imul(ah3, bl6) | 0;\n hi = hi + Math.imul(ah3, bh6) | 0;\n lo = lo + Math.imul(al2, bl7) | 0;\n mid = mid + Math.imul(al2, bh7) | 0;\n mid = mid + Math.imul(ah2, bl7) | 0;\n hi = hi + Math.imul(ah2, bh7) | 0;\n lo = lo + Math.imul(al1, bl8) | 0;\n mid = mid + Math.imul(al1, bh8) | 0;\n mid = mid + Math.imul(ah1, bl8) | 0;\n hi = hi + Math.imul(ah1, bh8) | 0;\n lo = lo + Math.imul(al0, bl9) | 0;\n mid = mid + Math.imul(al0, bh9) | 0;\n mid = mid + Math.imul(ah0, bl9) | 0;\n hi = hi + Math.imul(ah0, bh9) | 0;\n var w9 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = mid + Math.imul(ah9, bl1) | 0;\n hi = Math.imul(ah9, bh1);\n lo = lo + Math.imul(al8, bl2) | 0;\n mid = mid + Math.imul(al8, bh2) | 0;\n mid = mid + Math.imul(ah8, bl2) | 0;\n hi = hi + Math.imul(ah8, bh2) | 0;\n lo = lo + Math.imul(al7, bl3) | 0;\n mid = mid + Math.imul(al7, bh3) | 0;\n mid = mid + Math.imul(ah7, bl3) | 0;\n hi = hi + Math.imul(ah7, bh3) | 0;\n lo = lo + Math.imul(al6, bl4) | 0;\n mid = mid + Math.imul(al6, bh4) | 0;\n mid = mid + Math.imul(ah6, bl4) | 0;\n hi = hi + Math.imul(ah6, bh4) | 0;\n lo = lo + Math.imul(al5, bl5) | 0;\n mid = mid + Math.imul(al5, bh5) | 0;\n mid = mid + Math.imul(ah5, bl5) | 0;\n hi = hi + Math.imul(ah5, bh5) | 0;\n lo = lo + Math.imul(al4, bl6) | 0;\n mid = mid + Math.imul(al4, bh6) | 0;\n mid = mid + Math.imul(ah4, bl6) | 0;\n hi = hi + Math.imul(ah4, bh6) | 0;\n lo = lo + Math.imul(al3, bl7) | 0;\n mid = mid + Math.imul(al3, bh7) | 0;\n mid = mid + Math.imul(ah3, bl7) | 0;\n hi = hi + Math.imul(ah3, bh7) | 0;\n lo = lo + Math.imul(al2, bl8) | 0;\n mid = mid + Math.imul(al2, bh8) | 0;\n mid = mid + Math.imul(ah2, bl8) | 0;\n hi = hi + Math.imul(ah2, bh8) | 0;\n lo = lo + Math.imul(al1, bl9) | 0;\n mid = mid + Math.imul(al1, bh9) | 0;\n mid = mid + Math.imul(ah1, bl9) | 0;\n hi = hi + Math.imul(ah1, bh9) | 0;\n var w10 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = mid + Math.imul(ah9, bl2) | 0;\n hi = Math.imul(ah9, bh2);\n lo = lo + Math.imul(al8, bl3) | 0;\n mid = mid + Math.imul(al8, bh3) | 0;\n mid = mid + Math.imul(ah8, bl3) | 0;\n hi = hi + Math.imul(ah8, bh3) | 0;\n lo = lo + Math.imul(al7, bl4) | 0;\n mid = mid + Math.imul(al7, bh4) | 0;\n mid = mid + Math.imul(ah7, bl4) | 0;\n hi = hi + Math.imul(ah7, bh4) | 0;\n lo = lo + Math.imul(al6, bl5) | 0;\n mid = mid + Math.imul(al6, bh5) | 0;\n mid = mid + Math.imul(ah6, bl5) | 0;\n hi = hi + Math.imul(ah6, bh5) | 0;\n lo = lo + Math.imul(al5, bl6) | 0;\n mid = mid + Math.imul(al5, bh6) | 0;\n mid = mid + Math.imul(ah5, bl6) | 0;\n hi = hi + Math.imul(ah5, bh6) | 0;\n lo = lo + Math.imul(al4, bl7) | 0;\n mid = mid + Math.imul(al4, bh7) | 0;\n mid = mid + Math.imul(ah4, bl7) | 0;\n hi = hi + Math.imul(ah4, bh7) | 0;\n lo = lo + Math.imul(al3, bl8) | 0;\n mid = mid + Math.imul(al3, bh8) | 0;\n mid = mid + Math.imul(ah3, bl8) | 0;\n hi = hi + Math.imul(ah3, bh8) | 0;\n lo = lo + Math.imul(al2, bl9) | 0;\n mid = mid + Math.imul(al2, bh9) | 0;\n mid = mid + Math.imul(ah2, bl9) | 0;\n hi = hi + Math.imul(ah2, bh9) | 0;\n var w11 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = mid + Math.imul(ah9, bl3) | 0;\n hi = Math.imul(ah9, bh3);\n lo = lo + Math.imul(al8, bl4) | 0;\n mid = mid + Math.imul(al8, bh4) | 0;\n mid = mid + Math.imul(ah8, bl4) | 0;\n hi = hi + Math.imul(ah8, bh4) | 0;\n lo = lo + Math.imul(al7, bl5) | 0;\n mid = mid + Math.imul(al7, bh5) | 0;\n mid = mid + Math.imul(ah7, bl5) | 0;\n hi = hi + Math.imul(ah7, bh5) | 0;\n lo = lo + Math.imul(al6, bl6) | 0;\n mid = mid + Math.imul(al6, bh6) | 0;\n mid = mid + Math.imul(ah6, bl6) | 0;\n hi = hi + Math.imul(ah6, bh6) | 0;\n lo = lo + Math.imul(al5, bl7) | 0;\n mid = mid + Math.imul(al5, bh7) | 0;\n mid = mid + Math.imul(ah5, bl7) | 0;\n hi = hi + Math.imul(ah5, bh7) | 0;\n lo = lo + Math.imul(al4, bl8) | 0;\n mid = mid + Math.imul(al4, bh8) | 0;\n mid = mid + Math.imul(ah4, bl8) | 0;\n hi = hi + Math.imul(ah4, bh8) | 0;\n lo = lo + Math.imul(al3, bl9) | 0;\n mid = mid + Math.imul(al3, bh9) | 0;\n mid = mid + Math.imul(ah3, bl9) | 0;\n hi = hi + Math.imul(ah3, bh9) | 0;\n var w12 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = mid + Math.imul(ah9, bl4) | 0;\n hi = Math.imul(ah9, bh4);\n lo = lo + Math.imul(al8, bl5) | 0;\n mid = mid + Math.imul(al8, bh5) | 0;\n mid = mid + Math.imul(ah8, bl5) | 0;\n hi = hi + Math.imul(ah8, bh5) | 0;\n lo = lo + Math.imul(al7, bl6) | 0;\n mid = mid + Math.imul(al7, bh6) | 0;\n mid = mid + Math.imul(ah7, bl6) | 0;\n hi = hi + Math.imul(ah7, bh6) | 0;\n lo = lo + Math.imul(al6, bl7) | 0;\n mid = mid + Math.imul(al6, bh7) | 0;\n mid = mid + Math.imul(ah6, bl7) | 0;\n hi = hi + Math.imul(ah6, bh7) | 0;\n lo = lo + Math.imul(al5, bl8) | 0;\n mid = mid + Math.imul(al5, bh8) | 0;\n mid = mid + Math.imul(ah5, bl8) | 0;\n hi = hi + Math.imul(ah5, bh8) | 0;\n lo = lo + Math.imul(al4, bl9) | 0;\n mid = mid + Math.imul(al4, bh9) | 0;\n mid = mid + Math.imul(ah4, bl9) | 0;\n hi = hi + Math.imul(ah4, bh9) | 0;\n var w13 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = mid + Math.imul(ah9, bl5) | 0;\n hi = Math.imul(ah9, bh5);\n lo = lo + Math.imul(al8, bl6) | 0;\n mid = mid + Math.imul(al8, bh6) | 0;\n mid = mid + Math.imul(ah8, bl6) | 0;\n hi = hi + Math.imul(ah8, bh6) | 0;\n lo = lo + Math.imul(al7, bl7) | 0;\n mid = mid + Math.imul(al7, bh7) | 0;\n mid = mid + Math.imul(ah7, bl7) | 0;\n hi = hi + Math.imul(ah7, bh7) | 0;\n lo = lo + Math.imul(al6, bl8) | 0;\n mid = mid + Math.imul(al6, bh8) | 0;\n mid = mid + Math.imul(ah6, bl8) | 0;\n hi = hi + Math.imul(ah6, bh8) | 0;\n lo = lo + Math.imul(al5, bl9) | 0;\n mid = mid + Math.imul(al5, bh9) | 0;\n mid = mid + Math.imul(ah5, bl9) | 0;\n hi = hi + Math.imul(ah5, bh9) | 0;\n var w14 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = mid + Math.imul(ah9, bl6) | 0;\n hi = Math.imul(ah9, bh6);\n lo = lo + Math.imul(al8, bl7) | 0;\n mid = mid + Math.imul(al8, bh7) | 0;\n mid = mid + Math.imul(ah8, bl7) | 0;\n hi = hi + Math.imul(ah8, bh7) | 0;\n lo = lo + Math.imul(al7, bl8) | 0;\n mid = mid + Math.imul(al7, bh8) | 0;\n mid = mid + Math.imul(ah7, bl8) | 0;\n hi = hi + Math.imul(ah7, bh8) | 0;\n lo = lo + Math.imul(al6, bl9) | 0;\n mid = mid + Math.imul(al6, bh9) | 0;\n mid = mid + Math.imul(ah6, bl9) | 0;\n hi = hi + Math.imul(ah6, bh9) | 0;\n var w15 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = mid + Math.imul(ah9, bl7) | 0;\n hi = Math.imul(ah9, bh7);\n lo = lo + Math.imul(al8, bl8) | 0;\n mid = mid + Math.imul(al8, bh8) | 0;\n mid = mid + Math.imul(ah8, bl8) | 0;\n hi = hi + Math.imul(ah8, bh8) | 0;\n lo = lo + Math.imul(al7, bl9) | 0;\n mid = mid + Math.imul(al7, bh9) | 0;\n mid = mid + Math.imul(ah7, bl9) | 0;\n hi = hi + Math.imul(ah7, bh9) | 0;\n var w16 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = mid + Math.imul(ah9, bl8) | 0;\n hi = Math.imul(ah9, bh8);\n lo = lo + Math.imul(al8, bl9) | 0;\n mid = mid + Math.imul(al8, bh9) | 0;\n mid = mid + Math.imul(ah8, bl9) | 0;\n hi = hi + Math.imul(ah8, bh9) | 0;\n var w17 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = mid + Math.imul(ah9, bl9) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n\n return out;\n }; // Polyfill comb\n\n\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n var carry = 0;\n var hncarry = 0;\n\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n ncarry = ncarry + (r / 0x4000000 | 0) | 0;\n lo = lo + rword | 0;\n rword = lo & 0x3ffffff;\n ncarry = ncarry + (lo >>> 26) | 0;\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo(num, out) {\n var res;\n var len = this.length + num.length;\n\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n }; // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n\n function FFTM(x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT(N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n }; // Returns binary-reversed representation of `x`\n\n\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n\n return rb;\n }; // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n\n\n FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n /* jshint maxdepth : false */\n\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b(n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b(ws, N) {\n var carry = 0;\n\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {\n var carry = 0;\n\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n } // Pad with zeroes\n\n\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub(N) {\n var ph = new Array(N);\n\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n }; // Multiply `this` by `num`\n\n\n BN.prototype.mul = function mul(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n }; // Multiply employing FFT\n\n\n BN.prototype.mulf = function mulf(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n }; // In-place Multiplication\n\n\n BN.prototype.imul = function imul(num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000); // Carry\n\n var carry = 0;\n\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += w / 0x4000000 | 0; // NOTE: lo is 27bit maximum\n\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln(num) {\n return this.clone().imuln(num);\n }; // `this` * `this`\n\n\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n }; // `this` * `this` in-place\n\n\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n }; // Math.pow(`this`, `num`)\n\n\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1); // Skip leading zeroes\n\n var res = this;\n\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\n }\n }\n\n return res;\n }; // Shift-left in-place\n\n\n BN.prototype.iushln = function iushln(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = 0x3ffffff >>> 26 - r << 26 - r;\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = (this.words[i] | 0) - newCarry << r;\n this.words[i] = c | carry;\n carry = newCarry >>> 26 - r;\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln(bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n }; // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n\n\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n\n if (hint) {\n h = (hint - hint % 26) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n var maskedWords = extended;\n h -= s;\n h = Math.max(0, h); // Extended mode, copy masked part\n\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n\n maskedWords.length = s;\n }\n\n if (s === 0) {// No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = carry << 26 - r | word >>> r;\n carry = word & mask;\n } // Push carried bits as a mask\n\n\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n }; // Shift-left\n\n\n BN.prototype.shln = function shln(bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln(bits) {\n return this.clone().iushln(bits);\n }; // Shift-right\n\n\n BN.prototype.shrn = function shrn(bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn(bits) {\n return this.clone().iushrn(bits);\n }; // Test if n bit is set\n\n\n BN.prototype.testn = function testn(bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) return false; // Check bit and return\n\n var w = this.words[s];\n return !!(w & q);\n }; // Return only lowers bits of number (in-place)\n\n\n BN.prototype.imaskn = function imaskn(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n }; // Return only lowers bits of number\n\n\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n }; // Add plain number `num` to `this`\n\n\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num); // Possible sign change\n\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n } // Add without checks\n\n\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num; // Carry\n\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n\n this.length = Math.max(this.length, i + 1);\n return this;\n }; // Subtract plain number `num` from `this`\n\n\n BN.prototype.isubn = function isubn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - (right / 0x4000000 | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip(); // Subtraction overflow\n\n assert(carry === -1);\n carry = 0;\n\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n\n this.negative = 1;\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num; // Normalize\n\n var bhi = b.words[b.length - 1] | 0;\n\n var bhiBits = this._countBits(bhi);\n\n shift = 26 - bhiBits;\n\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n } // Initialize quotient\n\n\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n\n if (diff.negative === 0) {\n a = diff;\n\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n\n a._ishlnsubmul(b, 1, j);\n\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n\n if (q) {\n q.words[j] = qj;\n }\n }\n\n if (q) {\n q.strip();\n }\n\n a.strip(); // Denormalize\n\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n }; // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n\n\n BN.prototype.divmod = function divmod(num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n } // Both numbers are positive at this point\n // Strip both numbers to approximate shift value\n\n\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n } // Very short reduction\n\n\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n }; // Find `this` / `num`\n\n\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n }; // Find `this` % `num`\n\n\n BN.prototype.mod = function mod(num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod(num) {\n return this.divmod(num, 'mod', true).mod;\n }; // Find Round(`this` / `num`)\n\n\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num); // Fast case - exact division\n\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half); // Round down\n\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up\n\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n }; // In-place division by number\n\n\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = w / num | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n } // A * x + B * y = x\n\n\n var A = new BN(1);\n var B = new BN(0); // C * x + D * y = y\n\n var C = new BN(0);\n var D = new BN(1);\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n x.iushrn(i);\n\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n y.iushrn(j);\n\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n }; // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n\n\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n a.iushrn(i);\n\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n b.iushrn(j);\n\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0; // Remove common factor of two\n\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n }; // Invert number in the field F(num)\n\n\n BN.prototype.invm = function invm(num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd() {\n return (this.words[0] & 1) === 1;\n }; // And first word and num\n\n\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n }; // Increment at the bit position in-line\n\n\n BN.prototype.bincn = function bincn(bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) {\n this._expand(s + 1);\n\n this.words[s] |= q;\n return this;\n } // Add bit and propagate, if needed\n\n\n var carry = q;\n\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n\n\n BN.prototype.cmp = function cmp(num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Unsigned comparison\n\n\n BN.prototype.ucmp = function ucmp(num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n var res = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n if (a === b) continue;\n\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n\n break;\n }\n\n return res;\n };\n\n BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq(num) {\n return this.cmp(num) === 0;\n }; //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n\n\n BN.red = function red(num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed() {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd(num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd(num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub(num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub(num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl(num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr() {\n assert(this.red, 'redSqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr() {\n assert(this.red, 'redISqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.isqr(this);\n }; // Square root over p\n\n\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm() {\n assert(this.red, 'redInvm works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.invm(this);\n }; // Return negative clone of `this` % `red modulo`\n\n\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n\n this.red._verify1(this);\n\n return this.red.pow(this, num);\n }; // Prime numbers with efficient reduction\n\n\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n }; // Pseudo-Mersenne prime\n\n function MPrime(name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp() {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce(num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n\n inherits(K256, MPrime);\n\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n } // Shift by 9 limbs\n\n\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = (next & mask) << 4 | prev >>> 22;\n prev = next;\n }\n\n prev >>>= 22;\n input.words[i - 10] = prev;\n\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK(num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n\n var lo = 0;\n\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + (lo / 0x4000000 | 0);\n } // Fast length reduction\n\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n\n return num;\n };\n\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n\n inherits(P224, MPrime);\n\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n\n inherits(P192, MPrime);\n\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n num.words[i] = lo;\n carry = hi;\n }\n\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n\n return num;\n }; // Exported mostly for testing purposes, use plain name instead\n\n\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n\n primes[name] = prime;\n return prime;\n }; //\n // Base reduction engine\n //\n\n\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1(a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2(a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red, 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res;\n };\n\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res;\n };\n\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1); // Fast case\n\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n } // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n\n\n var q = this.m.subn(1);\n var s = 0;\n\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg(); // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n\n while (t.cmp(one) !== 0) {\n var tmp = t;\n\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm(a) {\n var inv = a._invmp(this.m);\n\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow(a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom(num) {\n var res = num.clone();\n res.red = null;\n return res;\n }; //\n // Montgomery method engine\n //\n\n\n BN.mont = function mont(num) {\n return new Mont(num);\n };\n\n function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom(num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul(a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm(a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})( false || module, this);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/public-encrypt/node_modules/bn.js/lib/bn.js?"); | |
| 2405 | - | |
| 2406 | -/***/ }), | |
| 2407 | - | |
| 2408 | -/***/ "./node_modules/public-encrypt/privateDecrypt.js": | |
| 2409 | -/*!*******************************************************!*\ | |
| 2410 | - !*** ./node_modules/public-encrypt/privateDecrypt.js ***! | |
| 2411 | - \*******************************************************/ | |
| 2412 | -/*! no static exports found */ | |
| 2413 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2414 | - | |
| 2415 | -eval("var parseKeys = __webpack_require__(/*! parse-asn1 */ \"./node_modules/parse-asn1/index.js\");\n\nvar mgf = __webpack_require__(/*! ./mgf */ \"./node_modules/public-encrypt/mgf.js\");\n\nvar xor = __webpack_require__(/*! ./xor */ \"./node_modules/public-encrypt/xor.js\");\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/public-encrypt/node_modules/bn.js/lib/bn.js\");\n\nvar crt = __webpack_require__(/*! browserify-rsa */ \"./node_modules/browserify-rsa/index.js\");\n\nvar createHash = __webpack_require__(/*! create-hash */ \"./node_modules/create-hash/browser.js\");\n\nvar withPublic = __webpack_require__(/*! ./withPublic */ \"./node_modules/public-encrypt/withPublic.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nmodule.exports = function privateDecrypt(privateKey, enc, reverse) {\n var padding;\n\n if (privateKey.padding) {\n padding = privateKey.padding;\n } else if (reverse) {\n padding = 1;\n } else {\n padding = 4;\n }\n\n var key = parseKeys(privateKey);\n var k = key.modulus.byteLength();\n\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error');\n }\n\n var msg;\n\n if (reverse) {\n msg = withPublic(new BN(enc), key);\n } else {\n msg = crt(enc, key);\n }\n\n var zBuffer = Buffer.alloc(k - msg.length);\n msg = Buffer.concat([zBuffer, msg], k);\n\n if (padding === 4) {\n return oaep(key, msg);\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse);\n } else if (padding === 3) {\n return msg;\n } else {\n throw new Error('unknown padding');\n }\n};\n\nfunction oaep(key, msg) {\n var k = key.modulus.byteLength();\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest();\n var hLen = iHash.length;\n\n if (msg[0] !== 0) {\n throw new Error('decryption error');\n }\n\n var maskedSeed = msg.slice(1, hLen + 1);\n var maskedDb = msg.slice(hLen + 1);\n var seed = xor(maskedSeed, mgf(maskedDb, hLen));\n var db = xor(maskedDb, mgf(seed, k - hLen - 1));\n\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error');\n }\n\n var i = hLen;\n\n while (db[i] === 0) {\n i++;\n }\n\n if (db[i++] !== 1) {\n throw new Error('decryption error');\n }\n\n return db.slice(i);\n}\n\nfunction pkcs1(key, msg, reverse) {\n var p1 = msg.slice(0, 2);\n var i = 2;\n var status = 0;\n\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++;\n break;\n }\n }\n\n var ps = msg.slice(2, i - 1);\n\n if (p1.toString('hex') !== '0002' && !reverse || p1.toString('hex') !== '0001' && reverse) {\n status++;\n }\n\n if (ps.length < 8) {\n status++;\n }\n\n if (status) {\n throw new Error('decryption error');\n }\n\n return msg.slice(i);\n}\n\nfunction compare(a, b) {\n a = Buffer.from(a);\n b = Buffer.from(b);\n var dif = 0;\n var len = a.length;\n\n if (a.length !== b.length) {\n dif++;\n len = Math.min(a.length, b.length);\n }\n\n var i = -1;\n\n while (++i < len) {\n dif += a[i] ^ b[i];\n }\n\n return dif;\n}\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/public-encrypt/privateDecrypt.js?"); | |
| 2416 | - | |
| 2417 | -/***/ }), | |
| 2418 | - | |
| 2419 | -/***/ "./node_modules/public-encrypt/publicEncrypt.js": | |
| 2420 | -/*!******************************************************!*\ | |
| 2421 | - !*** ./node_modules/public-encrypt/publicEncrypt.js ***! | |
| 2422 | - \******************************************************/ | |
| 2423 | -/*! no static exports found */ | |
| 2424 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2425 | - | |
| 2426 | -eval("var parseKeys = __webpack_require__(/*! parse-asn1 */ \"./node_modules/parse-asn1/index.js\");\n\nvar randomBytes = __webpack_require__(/*! randombytes */ \"./node_modules/randombytes/browser.js\");\n\nvar createHash = __webpack_require__(/*! create-hash */ \"./node_modules/create-hash/browser.js\");\n\nvar mgf = __webpack_require__(/*! ./mgf */ \"./node_modules/public-encrypt/mgf.js\");\n\nvar xor = __webpack_require__(/*! ./xor */ \"./node_modules/public-encrypt/xor.js\");\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/public-encrypt/node_modules/bn.js/lib/bn.js\");\n\nvar withPublic = __webpack_require__(/*! ./withPublic */ \"./node_modules/public-encrypt/withPublic.js\");\n\nvar crt = __webpack_require__(/*! browserify-rsa */ \"./node_modules/browserify-rsa/index.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nmodule.exports = function publicEncrypt(publicKey, msg, reverse) {\n var padding;\n\n if (publicKey.padding) {\n padding = publicKey.padding;\n } else if (reverse) {\n padding = 1;\n } else {\n padding = 4;\n }\n\n var key = parseKeys(publicKey);\n var paddedMsg;\n\n if (padding === 4) {\n paddedMsg = oaep(key, msg);\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse);\n } else if (padding === 3) {\n paddedMsg = new BN(msg);\n\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus');\n }\n } else {\n throw new Error('unknown padding');\n }\n\n if (reverse) {\n return crt(paddedMsg, key);\n } else {\n return withPublic(paddedMsg, key);\n }\n};\n\nfunction oaep(key, msg) {\n var k = key.modulus.byteLength();\n var mLen = msg.length;\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest();\n var hLen = iHash.length;\n var hLen2 = 2 * hLen;\n\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long');\n }\n\n var ps = Buffer.alloc(k - mLen - hLen2 - 2);\n var dblen = k - hLen - 1;\n var seed = randomBytes(hLen);\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen));\n var maskedSeed = xor(seed, mgf(maskedDb, hLen));\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k));\n}\n\nfunction pkcs1(key, msg, reverse) {\n var mLen = msg.length;\n var k = key.modulus.byteLength();\n\n if (mLen > k - 11) {\n throw new Error('message too long');\n }\n\n var ps;\n\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff);\n } else {\n ps = nonZero(k - mLen - 3);\n }\n\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k));\n}\n\nfunction nonZero(len) {\n var out = Buffer.allocUnsafe(len);\n var i = 0;\n var cache = randomBytes(len * 2);\n var cur = 0;\n var num;\n\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2);\n cur = 0;\n }\n\n num = cache[cur++];\n\n if (num) {\n out[i++] = num;\n }\n }\n\n return out;\n}\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/public-encrypt/publicEncrypt.js?"); | |
| 2427 | - | |
| 2428 | -/***/ }), | |
| 2429 | - | |
| 2430 | -/***/ "./node_modules/public-encrypt/withPublic.js": | |
| 2431 | -/*!***************************************************!*\ | |
| 2432 | - !*** ./node_modules/public-encrypt/withPublic.js ***! | |
| 2433 | - \***************************************************/ | |
| 2434 | -/*! no static exports found */ | |
| 2435 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2436 | - | |
| 2437 | -eval("var BN = __webpack_require__(/*! bn.js */ \"./node_modules/public-encrypt/node_modules/bn.js/lib/bn.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nfunction withPublic(paddedMsg, key) {\n return Buffer.from(paddedMsg.toRed(BN.mont(key.modulus)).redPow(new BN(key.publicExponent)).fromRed().toArray());\n}\n\nmodule.exports = withPublic;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/public-encrypt/withPublic.js?"); | |
| 2438 | - | |
| 2439 | -/***/ }), | |
| 2440 | - | |
| 2441 | -/***/ "./node_modules/public-encrypt/xor.js": | |
| 2442 | -/*!********************************************!*\ | |
| 2443 | - !*** ./node_modules/public-encrypt/xor.js ***! | |
| 2444 | - \********************************************/ | |
| 2445 | -/*! no static exports found */ | |
| 2446 | -/***/ (function(module, exports) { | |
| 2447 | - | |
| 2448 | -eval("module.exports = function xor(a, b) {\n var len = a.length;\n var i = -1;\n\n while (++i < len) {\n a[i] ^= b[i];\n }\n\n return a;\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/public-encrypt/xor.js?"); | |
| 2449 | - | |
| 2450 | -/***/ }), | |
| 2451 | - | |
| 2452 | -/***/ "./node_modules/randombytes/browser.js": | |
| 2453 | -/*!*********************************************!*\ | |
| 2454 | - !*** ./node_modules/randombytes/browser.js ***! | |
| 2455 | - \*********************************************/ | |
| 2456 | -/*! no static exports found */ | |
| 2457 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2458 | - | |
| 2459 | -"use strict"; | |
| 2460 | -eval("/* WEBPACK VAR INJECTION */(function(global, process) { // limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\n\nvar MAX_BYTES = 65536; // Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\n\nvar MAX_UINT32 = 4294967295;\n\nfunction oldBrowser() {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11');\n}\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar crypto = global.crypto || global.msCrypto;\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes;\n} else {\n module.exports = oldBrowser;\n}\n\nfunction randomBytes(size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes');\n var bytes = Buffer.allocUnsafe(size);\n\n if (size > 0) {\n // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) {\n // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES));\n }\n } else {\n crypto.getRandomValues(bytes);\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes);\n });\n }\n\n return bytes;\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\"), __webpack_require__(/*! ./../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/randombytes/browser.js?"); | |
| 2461 | - | |
| 2462 | -/***/ }), | |
| 2463 | - | |
| 2464 | -/***/ "./node_modules/randomfill/browser.js": | |
| 2465 | -/*!********************************************!*\ | |
| 2466 | - !*** ./node_modules/randomfill/browser.js ***! | |
| 2467 | - \********************************************/ | |
| 2468 | -/*! no static exports found */ | |
| 2469 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2470 | - | |
| 2471 | -"use strict"; | |
| 2472 | -eval("/* WEBPACK VAR INJECTION */(function(global, process) {\n\nfunction oldBrowser() {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11');\n}\n\nvar safeBuffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\");\n\nvar randombytes = __webpack_require__(/*! randombytes */ \"./node_modules/randombytes/browser.js\");\n\nvar Buffer = safeBuffer.Buffer;\nvar kBufferMaxLength = safeBuffer.kMaxLength;\nvar crypto = global.crypto || global.msCrypto;\nvar kMaxUint32 = Math.pow(2, 32) - 1;\n\nfunction assertOffset(offset, length) {\n if (typeof offset !== 'number' || offset !== offset) {\n // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number');\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32');\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range');\n }\n}\n\nfunction assertSize(size, offset, length) {\n if (typeof size !== 'number' || size !== size) {\n // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number');\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32');\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small');\n }\n}\n\nif (crypto && crypto.getRandomValues || !process.browser) {\n exports.randomFill = randomFill;\n exports.randomFillSync = randomFillSync;\n} else {\n exports.randomFill = oldBrowser;\n exports.randomFillSync = oldBrowser;\n}\n\nfunction randomFill(buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array');\n }\n\n if (typeof offset === 'function') {\n cb = offset;\n offset = 0;\n size = buf.length;\n } else if (typeof size === 'function') {\n cb = size;\n size = buf.length - offset;\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function');\n }\n\n assertOffset(offset, buf.length);\n assertSize(size, offset, buf.length);\n return actualFill(buf, offset, size, cb);\n}\n\nfunction actualFill(buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer;\n var uint = new Uint8Array(ourBuf, offset, size);\n crypto.getRandomValues(uint);\n\n if (cb) {\n process.nextTick(function () {\n cb(null, buf);\n });\n return;\n }\n\n return buf;\n }\n\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err);\n }\n\n bytes.copy(buf, offset);\n cb(null, buf);\n });\n return;\n }\n\n var bytes = randombytes(size);\n bytes.copy(buf, offset);\n return buf;\n}\n\nfunction randomFillSync(buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0;\n }\n\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array');\n }\n\n assertOffset(offset, buf.length);\n if (size === undefined) size = buf.length - offset;\n assertSize(size, offset, buf.length);\n return actualFill(buf, offset, size);\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\"), __webpack_require__(/*! ./../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/randomfill/browser.js?"); | |
| 2473 | - | |
| 2474 | -/***/ }), | |
| 2475 | - | |
| 2476 | -/***/ "./node_modules/readable-stream/duplex-browser.js": | |
| 2477 | -/*!********************************************************!*\ | |
| 2478 | - !*** ./node_modules/readable-stream/duplex-browser.js ***! | |
| 2479 | - \********************************************************/ | |
| 2480 | -/*! no static exports found */ | |
| 2481 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2482 | - | |
| 2483 | -eval("module.exports = __webpack_require__(/*! ./lib/_stream_duplex.js */ \"./node_modules/readable-stream/lib/_stream_duplex.js\");\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/readable-stream/duplex-browser.js?"); | |
| 2484 | - | |
| 2485 | -/***/ }), | |
| 2486 | - | |
| 2487 | -/***/ "./node_modules/readable-stream/lib/_stream_duplex.js": | |
| 2488 | -/*!************************************************************!*\ | |
| 2489 | - !*** ./node_modules/readable-stream/lib/_stream_duplex.js ***! | |
| 2490 | - \************************************************************/ | |
| 2491 | -/*! no static exports found */ | |
| 2492 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2493 | - | |
| 2494 | -"use strict"; | |
| 2495 | -eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n/*<replacement>*/\n\nvar pna = __webpack_require__(/*! process-nextick-args */ \"./node_modules/process-nextick-args/index.js\");\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/*</replacement>*/\n\n\nmodule.exports = Duplex;\n/*<replacement>*/\n\nvar util = Object.create(__webpack_require__(/*! core-util-is */ \"./node_modules/core-util-is/lib/util.js\"));\nutil.inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n/*</replacement>*/\n\nvar Readable = __webpack_require__(/*! ./_stream_readable */ \"./node_modules/readable-stream/lib/_stream_readable.js\");\n\nvar Writable = __webpack_require__(/*! ./_stream_writable */ \"./node_modules/readable-stream/lib/_stream_writable.js\");\n\nutil.inherits(Duplex, Readable);\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n if (options && options.readable === false) this.readable = false;\n if (options && options.writable === false) this.writable = false;\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n pna.nextTick(cb, err);\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/readable-stream/lib/_stream_duplex.js?"); | |
| 2496 | - | |
| 2497 | -/***/ }), | |
| 2498 | - | |
| 2499 | -/***/ "./node_modules/readable-stream/lib/_stream_passthrough.js": | |
| 2500 | -/*!*****************************************************************!*\ | |
| 2501 | - !*** ./node_modules/readable-stream/lib/_stream_passthrough.js ***! | |
| 2502 | - \*****************************************************************/ | |
| 2503 | -/*! no static exports found */ | |
| 2504 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2505 | - | |
| 2506 | -"use strict"; | |
| 2507 | -eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n\nmodule.exports = PassThrough;\n\nvar Transform = __webpack_require__(/*! ./_stream_transform */ \"./node_modules/readable-stream/lib/_stream_transform.js\");\n/*<replacement>*/\n\n\nvar util = Object.create(__webpack_require__(/*! core-util-is */ \"./node_modules/core-util-is/lib/util.js\"));\nutil.inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/readable-stream/lib/_stream_passthrough.js?"); | |
| 2508 | - | |
| 2509 | -/***/ }), | |
| 2510 | - | |
| 2511 | -/***/ "./node_modules/readable-stream/lib/_stream_readable.js": | |
| 2512 | -/*!**************************************************************!*\ | |
| 2513 | - !*** ./node_modules/readable-stream/lib/_stream_readable.js ***! | |
| 2514 | - \**************************************************************/ | |
| 2515 | -/*! no static exports found */ | |
| 2516 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2517 | - | |
| 2518 | -"use strict"; | |
| 2519 | -eval("/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n/*<replacement>*/\n\nvar pna = __webpack_require__(/*! process-nextick-args */ \"./node_modules/process-nextick-args/index.js\");\n/*</replacement>*/\n\n\nmodule.exports = Readable;\n/*<replacement>*/\n\nvar isArray = __webpack_require__(/*! isarray */ \"./node_modules/isarray/index.js\");\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n/*<replacement>*/\n\nvar EE = __webpack_require__(/*! events */ \"./node_modules/node-libs-browser/node_modules/events/events.js\").EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Stream = __webpack_require__(/*! ./internal/streams/stream */ \"./node_modules/readable-stream/lib/internal/streams/stream-browser.js\");\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/readable-stream/node_modules/safe-buffer/index.js\").Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar util = Object.create(__webpack_require__(/*! core-util-is */ \"./node_modules/core-util-is/lib/util.js\"));\nutil.inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar debugUtil = __webpack_require__(/*! util */ 2);\n\nvar debug = void 0;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/*</replacement>*/\n\n\nvar BufferList = __webpack_require__(/*! ./internal/streams/BufferList */ \"./node_modules/readable-stream/lib/internal/streams/BufferList.js\");\n\nvar destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ \"./node_modules/readable-stream/lib/internal/streams/destroy.js\");\n\nvar StringDecoder;\nutil.inherits(Readable, Stream);\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/readable-stream/lib/_stream_duplex.js\");\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n var isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm; // cast to ints.\n\n this.highWaterMark = Math.floor(this.highWaterMark); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = __webpack_require__(/*! string_decoder/ */ \"./node_modules/string_decoder/lib/string_decoder.js\").StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/readable-stream/lib/_stream_duplex.js\");\n if (!(this instanceof Readable)) return new Readable(options);\n this._readableState = new ReadableState(options, this); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n\n return er;\n} // if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\n\n\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = __webpack_require__(/*! string_decoder/ */ \"./node_modules/string_decoder/lib/string_decoder.js\").StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n}; // Don't raise the hwm > 8MB\n\n\nvar MAX_HWM = 0x800000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true; // emit 'readable' now to make sure it gets picked up.\n\n emitReadable(stream);\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n } // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n\n\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {}\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList; // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n return ret;\n} // Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n\n return ret;\n} // Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n list.length -= c;\n return ret;\n} // Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState; // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\"), __webpack_require__(/*! ./../../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/readable-stream/lib/_stream_readable.js?"); | |
| 2520 | - | |
| 2521 | -/***/ }), | |
| 2522 | - | |
| 2523 | -/***/ "./node_modules/readable-stream/lib/_stream_transform.js": | |
| 2524 | -/*!***************************************************************!*\ | |
| 2525 | - !*** ./node_modules/readable-stream/lib/_stream_transform.js ***! | |
| 2526 | - \***************************************************************/ | |
| 2527 | -/*! no static exports found */ | |
| 2528 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2529 | - | |
| 2530 | -"use strict"; | |
| 2531 | -eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n\nmodule.exports = Transform;\n\nvar Duplex = __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/readable-stream/lib/_stream_duplex.js\");\n/*<replacement>*/\n\n\nvar util = Object.create(__webpack_require__(/*! core-util-is */ \"./node_modules/core-util-is/lib/util.js\"));\nutil.inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n return stream.push(null);\n}\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/readable-stream/lib/_stream_transform.js?"); | |
| 2532 | - | |
| 2533 | -/***/ }), | |
| 2534 | - | |
| 2535 | -/***/ "./node_modules/readable-stream/lib/_stream_writable.js": | |
| 2536 | -/*!**************************************************************!*\ | |
| 2537 | - !*** ./node_modules/readable-stream/lib/_stream_writable.js ***! | |
| 2538 | - \**************************************************************/ | |
| 2539 | -/*! no static exports found */ | |
| 2540 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2541 | - | |
| 2542 | -"use strict"; | |
| 2543 | -eval("/* WEBPACK VAR INJECTION */(function(process, setImmediate, global) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n/*<replacement>*/\n\nvar pna = __webpack_require__(/*! process-nextick-args */ \"./node_modules/process-nextick-args/index.js\");\n/*</replacement>*/\n\n\nmodule.exports = Writable;\n/* <replacement> */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\n\n\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n/*<replacement>*/\n\nvar util = Object.create(__webpack_require__(/*! core-util-is */ \"./node_modules/core-util-is/lib/util.js\"));\nutil.inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar internalUtil = {\n deprecate: __webpack_require__(/*! util-deprecate */ \"./node_modules/util-deprecate/browser.js\")\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Stream = __webpack_require__(/*! ./internal/streams/stream */ \"./node_modules/readable-stream/lib/internal/streams/stream-browser.js\");\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/readable-stream/node_modules/safe-buffer/index.js\").Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*</replacement>*/\n\n\nvar destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ \"./node_modules/readable-stream/lib/internal/streams/destroy.js\");\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/readable-stream/lib/_stream_duplex.js\");\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n var isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm; // cast to ints.\n\n this.highWaterMark = Math.floor(this.highWaterMark); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/readable-stream/lib/_stream_duplex.js\"); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end'); // TODO: defer error events consistently everywhere, not just the cb\n\n stream.emit('error', er);\n pna.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /*<replacement>*/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /*</replacement>*/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n stream.emit('error', err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../process/browser.js */ \"./node_modules/process/browser.js\"), __webpack_require__(/*! ./../../node-libs-browser/node_modules/timers-browserify/main.js */ \"./node_modules/node-libs-browser/node_modules/timers-browserify/main.js\").setImmediate, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/readable-stream/lib/_stream_writable.js?"); | |
| 2544 | - | |
| 2545 | -/***/ }), | |
| 2546 | - | |
| 2547 | -/***/ "./node_modules/readable-stream/lib/internal/streams/BufferList.js": | |
| 2548 | -/*!*************************************************************************!*\ | |
| 2549 | - !*** ./node_modules/readable-stream/lib/internal/streams/BufferList.js ***! | |
| 2550 | - \*************************************************************************/ | |
| 2551 | -/*! no static exports found */ | |
| 2552 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2553 | - | |
| 2554 | -"use strict"; | |
| 2555 | -eval("\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/readable-stream/node_modules/safe-buffer/index.js\").Buffer;\n\nvar util = __webpack_require__(/*! util */ 3);\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({\n length: this.length\n });\n return this.constructor.name + ' ' + obj;\n };\n}\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/readable-stream/lib/internal/streams/BufferList.js?"); | |
| 2556 | - | |
| 2557 | -/***/ }), | |
| 2558 | - | |
| 2559 | -/***/ "./node_modules/readable-stream/lib/internal/streams/destroy.js": | |
| 2560 | -/*!**********************************************************************!*\ | |
| 2561 | - !*** ./node_modules/readable-stream/lib/internal/streams/destroy.js ***! | |
| 2562 | - \**********************************************************************/ | |
| 2563 | -/*! no static exports found */ | |
| 2564 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2565 | - | |
| 2566 | -"use strict"; | |
| 2567 | -eval("\n/*<replacement>*/\n\nvar pna = __webpack_require__(/*! process-nextick-args */ \"./node_modules/process-nextick-args/index.js\");\n/*</replacement>*/\n// undocumented cb() API, needed for core, not for public API\n\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/readable-stream/lib/internal/streams/destroy.js?"); | |
| 2568 | - | |
| 2569 | -/***/ }), | |
| 2570 | - | |
| 2571 | -/***/ "./node_modules/readable-stream/lib/internal/streams/stream-browser.js": | |
| 2572 | -/*!*****************************************************************************!*\ | |
| 2573 | - !*** ./node_modules/readable-stream/lib/internal/streams/stream-browser.js ***! | |
| 2574 | - \*****************************************************************************/ | |
| 2575 | -/*! no static exports found */ | |
| 2576 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2577 | - | |
| 2578 | -eval("module.exports = __webpack_require__(/*! events */ \"./node_modules/node-libs-browser/node_modules/events/events.js\").EventEmitter;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/readable-stream/lib/internal/streams/stream-browser.js?"); | |
| 2579 | - | |
| 2580 | -/***/ }), | |
| 2581 | - | |
| 2582 | -/***/ "./node_modules/readable-stream/node_modules/safe-buffer/index.js": | |
| 2583 | -/*!************************************************************************!*\ | |
| 2584 | - !*** ./node_modules/readable-stream/node_modules/safe-buffer/index.js ***! | |
| 2585 | - \************************************************************************/ | |
| 2586 | -/*! no static exports found */ | |
| 2587 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2588 | - | |
| 2589 | -eval("/* eslint-disable node/no-deprecated-api */\nvar buffer = __webpack_require__(/*! buffer */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\");\n\nvar Buffer = buffer.Buffer; // alternative to using Object.keys for old browsers\n\nfunction copyProps(src, dst) {\n for (var key in src) {\n dst[key] = src[key];\n }\n}\n\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer;\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports);\n exports.Buffer = SafeBuffer;\n}\n\nfunction SafeBuffer(arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length);\n} // Copy static methods from Buffer\n\n\ncopyProps(Buffer, SafeBuffer);\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number');\n }\n\n return Buffer(arg, encodingOrOffset, length);\n};\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n var buf = Buffer(size);\n\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding);\n } else {\n buf.fill(fill);\n }\n } else {\n buf.fill(0);\n }\n\n return buf;\n};\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n return Buffer(size);\n};\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n return buffer.SlowBuffer(size);\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/readable-stream/node_modules/safe-buffer/index.js?"); | |
| 2590 | - | |
| 2591 | -/***/ }), | |
| 2592 | - | |
| 2593 | -/***/ "./node_modules/readable-stream/passthrough.js": | |
| 2594 | -/*!*****************************************************!*\ | |
| 2595 | - !*** ./node_modules/readable-stream/passthrough.js ***! | |
| 2596 | - \*****************************************************/ | |
| 2597 | -/*! no static exports found */ | |
| 2598 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2599 | - | |
| 2600 | -eval("module.exports = __webpack_require__(/*! ./readable */ \"./node_modules/readable-stream/readable-browser.js\").PassThrough;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/readable-stream/passthrough.js?"); | |
| 2601 | - | |
| 2602 | -/***/ }), | |
| 2603 | - | |
| 2604 | -/***/ "./node_modules/readable-stream/readable-browser.js": | |
| 2605 | -/*!**********************************************************!*\ | |
| 2606 | - !*** ./node_modules/readable-stream/readable-browser.js ***! | |
| 2607 | - \**********************************************************/ | |
| 2608 | -/*! no static exports found */ | |
| 2609 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2610 | - | |
| 2611 | -eval("exports = module.exports = __webpack_require__(/*! ./lib/_stream_readable.js */ \"./node_modules/readable-stream/lib/_stream_readable.js\");\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = __webpack_require__(/*! ./lib/_stream_writable.js */ \"./node_modules/readable-stream/lib/_stream_writable.js\");\nexports.Duplex = __webpack_require__(/*! ./lib/_stream_duplex.js */ \"./node_modules/readable-stream/lib/_stream_duplex.js\");\nexports.Transform = __webpack_require__(/*! ./lib/_stream_transform.js */ \"./node_modules/readable-stream/lib/_stream_transform.js\");\nexports.PassThrough = __webpack_require__(/*! ./lib/_stream_passthrough.js */ \"./node_modules/readable-stream/lib/_stream_passthrough.js\");\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/readable-stream/readable-browser.js?"); | |
| 2612 | - | |
| 2613 | -/***/ }), | |
| 2614 | - | |
| 2615 | -/***/ "./node_modules/readable-stream/transform.js": | |
| 2616 | -/*!***************************************************!*\ | |
| 2617 | - !*** ./node_modules/readable-stream/transform.js ***! | |
| 2618 | - \***************************************************/ | |
| 2619 | -/*! no static exports found */ | |
| 2620 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2621 | - | |
| 2622 | -eval("module.exports = __webpack_require__(/*! ./readable */ \"./node_modules/readable-stream/readable-browser.js\").Transform;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/readable-stream/transform.js?"); | |
| 2623 | - | |
| 2624 | -/***/ }), | |
| 2625 | - | |
| 2626 | -/***/ "./node_modules/readable-stream/writable-browser.js": | |
| 2627 | -/*!**********************************************************!*\ | |
| 2628 | - !*** ./node_modules/readable-stream/writable-browser.js ***! | |
| 2629 | - \**********************************************************/ | |
| 2630 | -/*! no static exports found */ | |
| 2631 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2632 | - | |
| 2633 | -eval("module.exports = __webpack_require__(/*! ./lib/_stream_writable.js */ \"./node_modules/readable-stream/lib/_stream_writable.js\");\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/readable-stream/writable-browser.js?"); | |
| 2634 | - | |
| 2635 | -/***/ }), | |
| 2636 | - | |
| 2637 | -/***/ "./node_modules/ripemd160/index.js": | |
| 2638 | -/*!*****************************************!*\ | |
| 2639 | - !*** ./node_modules/ripemd160/index.js ***! | |
| 2640 | - \*****************************************/ | |
| 2641 | -/*! no static exports found */ | |
| 2642 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2643 | - | |
| 2644 | -"use strict"; | |
| 2645 | -eval("\n\nvar Buffer = __webpack_require__(/*! buffer */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer;\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar HashBase = __webpack_require__(/*! hash-base */ \"./node_modules/hash-base/index.js\");\n\nvar ARRAY16 = new Array(16);\nvar zl = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13];\nvar zr = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11];\nvar sl = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6];\nvar sr = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11];\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e];\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000];\n\nfunction RIPEMD160() {\n HashBase.call(this, 64); // state\n\n this._a = 0x67452301;\n this._b = 0xefcdab89;\n this._c = 0x98badcfe;\n this._d = 0x10325476;\n this._e = 0xc3d2e1f0;\n}\n\ninherits(RIPEMD160, HashBase);\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16;\n\n for (var j = 0; j < 16; ++j) {\n words[j] = this._block.readInt32LE(j * 4);\n }\n\n var al = this._a | 0;\n var bl = this._b | 0;\n var cl = this._c | 0;\n var dl = this._d | 0;\n var el = this._e | 0;\n var ar = this._a | 0;\n var br = this._b | 0;\n var cr = this._c | 0;\n var dr = this._d | 0;\n var er = this._e | 0; // computation\n\n for (var i = 0; i < 80; i += 1) {\n var tl;\n var tr;\n\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i]);\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i]);\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i]);\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i]);\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i]);\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i]);\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i]);\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i]);\n } else {\n // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i]);\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i]);\n }\n\n al = el;\n el = dl;\n dl = rotl(cl, 10);\n cl = bl;\n bl = tl;\n ar = er;\n er = dr;\n dr = rotl(cr, 10);\n cr = br;\n br = tr;\n } // update state\n\n\n var t = this._b + cl + dr | 0;\n this._b = this._c + dl + er | 0;\n this._c = this._d + el + ar | 0;\n this._d = this._e + al + br | 0;\n this._e = this._a + bl + cr | 0;\n this._a = t;\n};\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80;\n\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64);\n\n this._update();\n\n this._blockOffset = 0;\n }\n\n this._block.fill(0, this._blockOffset, 56);\n\n this._block.writeUInt32LE(this._length[0], 56);\n\n this._block.writeUInt32LE(this._length[1], 60);\n\n this._update(); // produce result\n\n\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20);\n buffer.writeInt32LE(this._a, 0);\n buffer.writeInt32LE(this._b, 4);\n buffer.writeInt32LE(this._c, 8);\n buffer.writeInt32LE(this._d, 12);\n buffer.writeInt32LE(this._e, 16);\n return buffer;\n};\n\nfunction rotl(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction fn1(a, b, c, d, e, m, k, s) {\n return rotl(a + (b ^ c ^ d) + m + k | 0, s) + e | 0;\n}\n\nfunction fn2(a, b, c, d, e, m, k, s) {\n return rotl(a + (b & c | ~b & d) + m + k | 0, s) + e | 0;\n}\n\nfunction fn3(a, b, c, d, e, m, k, s) {\n return rotl(a + ((b | ~c) ^ d) + m + k | 0, s) + e | 0;\n}\n\nfunction fn4(a, b, c, d, e, m, k, s) {\n return rotl(a + (b & d | c & ~d) + m + k | 0, s) + e | 0;\n}\n\nfunction fn5(a, b, c, d, e, m, k, s) {\n return rotl(a + (b ^ (c | ~d)) + m + k | 0, s) + e | 0;\n}\n\nmodule.exports = RIPEMD160;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/ripemd160/index.js?"); | |
| 2646 | - | |
| 2647 | -/***/ }), | |
| 2648 | - | |
| 2649 | -/***/ "./node_modules/safe-buffer/index.js": | |
| 2650 | -/*!*******************************************!*\ | |
| 2651 | - !*** ./node_modules/safe-buffer/index.js ***! | |
| 2652 | - \*******************************************/ | |
| 2653 | -/*! no static exports found */ | |
| 2654 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2655 | - | |
| 2656 | -eval("/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n\n/* eslint-disable node/no-deprecated-api */\nvar buffer = __webpack_require__(/*! buffer */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\");\n\nvar Buffer = buffer.Buffer; // alternative to using Object.keys for old browsers\n\nfunction copyProps(src, dst) {\n for (var key in src) {\n dst[key] = src[key];\n }\n}\n\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer;\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports);\n exports.Buffer = SafeBuffer;\n}\n\nfunction SafeBuffer(arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length);\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype); // Copy static methods from Buffer\n\ncopyProps(Buffer, SafeBuffer);\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number');\n }\n\n return Buffer(arg, encodingOrOffset, length);\n};\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n var buf = Buffer(size);\n\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding);\n } else {\n buf.fill(fill);\n }\n } else {\n buf.fill(0);\n }\n\n return buf;\n};\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n return Buffer(size);\n};\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n return buffer.SlowBuffer(size);\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/safe-buffer/index.js?"); | |
| 2657 | - | |
| 2658 | -/***/ }), | |
| 2659 | - | |
| 2660 | -/***/ "./node_modules/safer-buffer/safer.js": | |
| 2661 | -/*!********************************************!*\ | |
| 2662 | - !*** ./node_modules/safer-buffer/safer.js ***! | |
| 2663 | - \********************************************/ | |
| 2664 | -/*! no static exports found */ | |
| 2665 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2666 | - | |
| 2667 | -"use strict"; | |
| 2668 | -eval("/* WEBPACK VAR INJECTION */(function(process) {/* eslint-disable node/no-deprecated-api */\n\n\nvar buffer = __webpack_require__(/*! buffer */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\");\n\nvar Buffer = buffer.Buffer;\nvar safer = {};\nvar key;\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue;\n if (key === 'SlowBuffer' || key === 'Buffer') continue;\n safer[key] = buffer[key];\n}\n\nvar Safer = safer.Buffer = {};\n\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue;\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue;\n Safer[key] = Buffer[key];\n}\n\nsafer.Buffer.prototype = Buffer.prototype;\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value);\n }\n\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value);\n }\n\n return Buffer(value, encodingOrOffset, length);\n };\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size);\n }\n\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"');\n }\n\n var buf = Buffer(size);\n\n if (!fill || fill.length === 0) {\n buf.fill(0);\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding);\n } else {\n buf.fill(fill);\n }\n\n return buf;\n };\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength;\n } catch (e) {// we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n };\n\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength;\n }\n}\n\nmodule.exports = safer;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/safer-buffer/safer.js?"); | |
| 2669 | - | |
| 2670 | -/***/ }), | |
| 2671 | - | |
| 2672 | -/***/ "./node_modules/screenfull/index.js": | |
| 2673 | -/*!******************************************!*\ | |
| 2674 | - !*** ./node_modules/screenfull/index.js ***! | |
| 2675 | - \******************************************/ | |
| 2676 | -/*! exports provided: default */ | |
| 2677 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 2678 | - | |
| 2679 | -"use strict"; | |
| 2680 | -eval("__webpack_require__.r(__webpack_exports__);\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/* eslint-disable promise/prefer-await-to-then */\nvar methodMap = [['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror'], // New WebKit\n['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror'], // Old WebKit\n['webkitRequestFullScreen', 'webkitCancelFullScreen', 'webkitCurrentFullScreenElement', 'webkitCancelFullScreen', 'webkitfullscreenchange', 'webkitfullscreenerror'], ['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror'], ['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError']];\n\nvar nativeAPI = function () {\n var unprefixedMethods = methodMap[0];\n var returnValue = {};\n\n for (var _iterator = _createForOfIteratorHelperLoose(methodMap), _step; !(_step = _iterator()).done;) {\n var methodList = _step.value;\n var exitFullscreenMethod = methodList == null ? void 0 : methodList[1];\n\n if (exitFullscreenMethod in document) {\n for (var _iterator2 = _createForOfIteratorHelperLoose(methodList.entries()), _step2; !(_step2 = _iterator2()).done;) {\n var _step2$value = _step2.value,\n index = _step2$value[0],\n method = _step2$value[1];\n returnValue[unprefixedMethods[index]] = method;\n }\n\n return returnValue;\n }\n }\n\n return false;\n}();\n\nvar eventNameMap = {\n change: nativeAPI.fullscreenchange,\n error: nativeAPI.fullscreenerror\n}; // eslint-disable-next-line import/no-mutable-exports\n\nvar screenfull = {\n // eslint-disable-next-line default-param-last\n request: function request(element, options) {\n if (element === void 0) {\n element = document.documentElement;\n }\n\n return new Promise(function (resolve, reject) {\n var onFullScreenEntered = function onFullScreenEntered() {\n screenfull.off('change', onFullScreenEntered);\n resolve();\n };\n\n screenfull.on('change', onFullScreenEntered);\n var returnPromise = element[nativeAPI.requestFullscreen](options);\n\n if (returnPromise instanceof Promise) {\n returnPromise.then(onFullScreenEntered).catch(reject);\n }\n });\n },\n exit: function exit() {\n return new Promise(function (resolve, reject) {\n if (!screenfull.isFullscreen) {\n resolve();\n return;\n }\n\n var onFullScreenExit = function onFullScreenExit() {\n screenfull.off('change', onFullScreenExit);\n resolve();\n };\n\n screenfull.on('change', onFullScreenExit);\n var returnPromise = document[nativeAPI.exitFullscreen]();\n\n if (returnPromise instanceof Promise) {\n returnPromise.then(onFullScreenExit).catch(reject);\n }\n });\n },\n toggle: function toggle(element, options) {\n return screenfull.isFullscreen ? screenfull.exit() : screenfull.request(element, options);\n },\n onchange: function onchange(callback) {\n screenfull.on('change', callback);\n },\n onerror: function onerror(callback) {\n screenfull.on('error', callback);\n },\n on: function on(event, callback) {\n var eventName = eventNameMap[event];\n\n if (eventName) {\n document.addEventListener(eventName, callback, false);\n }\n },\n off: function off(event, callback) {\n var eventName = eventNameMap[event];\n\n if (eventName) {\n document.removeEventListener(eventName, callback, false);\n }\n },\n raw: nativeAPI\n};\nObject.defineProperties(screenfull, {\n isFullscreen: {\n get: function get() {\n return Boolean(document[nativeAPI.fullscreenElement]);\n }\n },\n element: {\n enumerable: true,\n get: function get() {\n var _document$nativeAPI$f;\n\n return (_document$nativeAPI$f = document[nativeAPI.fullscreenElement]) != null ? _document$nativeAPI$f : undefined;\n }\n },\n isEnabled: {\n enumerable: true,\n // Coerce to boolean in case of old WebKit.\n get: function get() {\n return Boolean(document[nativeAPI.fullscreenEnabled]);\n }\n }\n});\n\nif (!nativeAPI) {\n screenfull = {\n isEnabled: false\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (screenfull);\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/screenfull/index.js?"); | |
| 2681 | - | |
| 2682 | -/***/ }), | |
| 2683 | - | |
| 2684 | -/***/ "./node_modules/setimmediate/setImmediate.js": | |
| 2685 | -/*!***************************************************!*\ | |
| 2686 | - !*** ./node_modules/setimmediate/setImmediate.js ***! | |
| 2687 | - \***************************************************/ | |
| 2688 | -/*! no static exports found */ | |
| 2689 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2690 | - | |
| 2691 | -eval("/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n } // Copy function arguments\n\n\n var args = new Array(arguments.length - 1);\n\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n } // Store and register the task\n\n\n var task = {\n callback: callback,\n args: args\n };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n\n switch (args.length) {\n case 0:\n callback();\n break;\n\n case 1:\n callback(args[0]);\n break;\n\n case 2:\n callback(args[0], args[1]);\n break;\n\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n\n if (task) {\n currentlyRunningATask = true;\n\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function registerImmediate(handle) {\n process.nextTick(function () {\n runIfPresent(handle);\n });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n\n global.onmessage = function () {\n postMessageIsAsynchronous = false;\n };\n\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n\n var onGlobalMessage = function onGlobalMessage(event) {\n if (event.source === global && typeof event.data === \"string\" && event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function registerImmediate(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n\n channel.port1.onmessage = function (event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function registerImmediate(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n\n registerImmediate = function registerImmediate(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function registerImmediate(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n } // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n\n\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global; // Don't get fooled by e.g. browserify environments.\n\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n})(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\"), __webpack_require__(/*! ./../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/setimmediate/setImmediate.js?"); | |
| 2692 | - | |
| 2693 | -/***/ }), | |
| 2694 | - | |
| 2695 | -/***/ "./node_modules/sha.js/hash.js": | |
| 2696 | -/*!*************************************!*\ | |
| 2697 | - !*** ./node_modules/sha.js/hash.js ***! | |
| 2698 | - \*************************************/ | |
| 2699 | -/*! no static exports found */ | |
| 2700 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2701 | - | |
| 2702 | -eval("var Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer; // prototype class for hash functions\n\n\nfunction Hash(blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize);\n this._finalSize = finalSize;\n this._blockSize = blockSize;\n this._len = 0;\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8';\n data = Buffer.from(data, enc);\n }\n\n var block = this._block;\n var blockSize = this._blockSize;\n var length = data.length;\n var accum = this._len;\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize;\n var remainder = Math.min(length - offset, blockSize - assigned);\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i];\n }\n\n accum += remainder;\n offset += remainder;\n\n if (accum % blockSize === 0) {\n this._update(block);\n }\n }\n\n this._len += length;\n return this;\n};\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize;\n this._block[rem] = 0x80; // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n\n this._block.fill(0, rem + 1);\n\n if (rem >= this._finalSize) {\n this._update(this._block);\n\n this._block.fill(0);\n }\n\n var bits = this._len * 8; // uint32\n\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4); // uint64\n\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0;\n var highBits = (bits - lowBits) / 0x100000000;\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8);\n\n this._block.writeUInt32BE(lowBits, this._blockSize - 4);\n }\n\n this._update(this._block);\n\n var hash = this._hash();\n\n return enc ? hash.toString(enc) : hash;\n};\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass');\n};\n\nmodule.exports = Hash;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/sha.js/hash.js?"); | |
| 2703 | - | |
| 2704 | -/***/ }), | |
| 2705 | - | |
| 2706 | -/***/ "./node_modules/sha.js/index.js": | |
| 2707 | -/*!**************************************!*\ | |
| 2708 | - !*** ./node_modules/sha.js/index.js ***! | |
| 2709 | - \**************************************/ | |
| 2710 | -/*! no static exports found */ | |
| 2711 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2712 | - | |
| 2713 | -eval("var exports = module.exports = function SHA(algorithm) {\n algorithm = algorithm.toLowerCase();\n var Algorithm = exports[algorithm];\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)');\n return new Algorithm();\n};\n\nexports.sha = __webpack_require__(/*! ./sha */ \"./node_modules/sha.js/sha.js\");\nexports.sha1 = __webpack_require__(/*! ./sha1 */ \"./node_modules/sha.js/sha1.js\");\nexports.sha224 = __webpack_require__(/*! ./sha224 */ \"./node_modules/sha.js/sha224.js\");\nexports.sha256 = __webpack_require__(/*! ./sha256 */ \"./node_modules/sha.js/sha256.js\");\nexports.sha384 = __webpack_require__(/*! ./sha384 */ \"./node_modules/sha.js/sha384.js\");\nexports.sha512 = __webpack_require__(/*! ./sha512 */ \"./node_modules/sha.js/sha512.js\");\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/sha.js/index.js?"); | |
| 2714 | - | |
| 2715 | -/***/ }), | |
| 2716 | - | |
| 2717 | -/***/ "./node_modules/sha.js/sha.js": | |
| 2718 | -/*!************************************!*\ | |
| 2719 | - !*** ./node_modules/sha.js/sha.js ***! | |
| 2720 | - \************************************/ | |
| 2721 | -/*! no static exports found */ | |
| 2722 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2723 | - | |
| 2724 | -eval("/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar Hash = __webpack_require__(/*! ./hash */ \"./node_modules/sha.js/hash.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0];\nvar W = new Array(80);\n\nfunction Sha() {\n this.init();\n this._w = W;\n Hash.call(this, 64, 56);\n}\n\ninherits(Sha, Hash);\n\nSha.prototype.init = function () {\n this._a = 0x67452301;\n this._b = 0xefcdab89;\n this._c = 0x98badcfe;\n this._d = 0x10325476;\n this._e = 0xc3d2e1f0;\n return this;\n};\n\nfunction rotl5(num) {\n return num << 5 | num >>> 27;\n}\n\nfunction rotl30(num) {\n return num << 30 | num >>> 2;\n}\n\nfunction ft(s, b, c, d) {\n if (s === 0) return b & c | ~b & d;\n if (s === 2) return b & c | b & d | c & d;\n return b ^ c ^ d;\n}\n\nSha.prototype._update = function (M) {\n var W = this._w;\n var a = this._a | 0;\n var b = this._b | 0;\n var c = this._c | 0;\n var d = this._d | 0;\n var e = this._e | 0;\n\n for (var i = 0; i < 16; ++i) {\n W[i] = M.readInt32BE(i * 4);\n }\n\n for (; i < 80; ++i) {\n W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n }\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20);\n var t = rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s] | 0;\n e = d;\n d = c;\n c = rotl30(b);\n b = a;\n a = t;\n }\n\n this._a = a + this._a | 0;\n this._b = b + this._b | 0;\n this._c = c + this._c | 0;\n this._d = d + this._d | 0;\n this._e = e + this._e | 0;\n};\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20);\n H.writeInt32BE(this._a | 0, 0);\n H.writeInt32BE(this._b | 0, 4);\n H.writeInt32BE(this._c | 0, 8);\n H.writeInt32BE(this._d | 0, 12);\n H.writeInt32BE(this._e | 0, 16);\n return H;\n};\n\nmodule.exports = Sha;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/sha.js/sha.js?"); | |
| 2725 | - | |
| 2726 | -/***/ }), | |
| 2727 | - | |
| 2728 | -/***/ "./node_modules/sha.js/sha1.js": | |
| 2729 | -/*!*************************************!*\ | |
| 2730 | - !*** ./node_modules/sha.js/sha1.js ***! | |
| 2731 | - \*************************************/ | |
| 2732 | -/*! no static exports found */ | |
| 2733 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2734 | - | |
| 2735 | -eval("/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar Hash = __webpack_require__(/*! ./hash */ \"./node_modules/sha.js/hash.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0];\nvar W = new Array(80);\n\nfunction Sha1() {\n this.init();\n this._w = W;\n Hash.call(this, 64, 56);\n}\n\ninherits(Sha1, Hash);\n\nSha1.prototype.init = function () {\n this._a = 0x67452301;\n this._b = 0xefcdab89;\n this._c = 0x98badcfe;\n this._d = 0x10325476;\n this._e = 0xc3d2e1f0;\n return this;\n};\n\nfunction rotl1(num) {\n return num << 1 | num >>> 31;\n}\n\nfunction rotl5(num) {\n return num << 5 | num >>> 27;\n}\n\nfunction rotl30(num) {\n return num << 30 | num >>> 2;\n}\n\nfunction ft(s, b, c, d) {\n if (s === 0) return b & c | ~b & d;\n if (s === 2) return b & c | b & d | c & d;\n return b ^ c ^ d;\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w;\n var a = this._a | 0;\n var b = this._b | 0;\n var c = this._c | 0;\n var d = this._d | 0;\n var e = this._e | 0;\n\n for (var i = 0; i < 16; ++i) {\n W[i] = M.readInt32BE(i * 4);\n }\n\n for (; i < 80; ++i) {\n W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]);\n }\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20);\n var t = rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s] | 0;\n e = d;\n d = c;\n c = rotl30(b);\n b = a;\n a = t;\n }\n\n this._a = a + this._a | 0;\n this._b = b + this._b | 0;\n this._c = c + this._c | 0;\n this._d = d + this._d | 0;\n this._e = e + this._e | 0;\n};\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20);\n H.writeInt32BE(this._a | 0, 0);\n H.writeInt32BE(this._b | 0, 4);\n H.writeInt32BE(this._c | 0, 8);\n H.writeInt32BE(this._d | 0, 12);\n H.writeInt32BE(this._e | 0, 16);\n return H;\n};\n\nmodule.exports = Sha1;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/sha.js/sha1.js?"); | |
| 2736 | - | |
| 2737 | -/***/ }), | |
| 2738 | - | |
| 2739 | -/***/ "./node_modules/sha.js/sha224.js": | |
| 2740 | -/*!***************************************!*\ | |
| 2741 | - !*** ./node_modules/sha.js/sha224.js ***! | |
| 2742 | - \***************************************/ | |
| 2743 | -/*! no static exports found */ | |
| 2744 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2745 | - | |
| 2746 | -eval("/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar Sha256 = __webpack_require__(/*! ./sha256 */ \"./node_modules/sha.js/sha256.js\");\n\nvar Hash = __webpack_require__(/*! ./hash */ \"./node_modules/sha.js/hash.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar W = new Array(64);\n\nfunction Sha224() {\n this.init();\n this._w = W; // new Array(64)\n\n Hash.call(this, 64, 56);\n}\n\ninherits(Sha224, Sha256);\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8;\n this._b = 0x367cd507;\n this._c = 0x3070dd17;\n this._d = 0xf70e5939;\n this._e = 0xffc00b31;\n this._f = 0x68581511;\n this._g = 0x64f98fa7;\n this._h = 0xbefa4fa4;\n return this;\n};\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28);\n H.writeInt32BE(this._a, 0);\n H.writeInt32BE(this._b, 4);\n H.writeInt32BE(this._c, 8);\n H.writeInt32BE(this._d, 12);\n H.writeInt32BE(this._e, 16);\n H.writeInt32BE(this._f, 20);\n H.writeInt32BE(this._g, 24);\n return H;\n};\n\nmodule.exports = Sha224;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/sha.js/sha224.js?"); | |
| 2747 | - | |
| 2748 | -/***/ }), | |
| 2749 | - | |
| 2750 | -/***/ "./node_modules/sha.js/sha256.js": | |
| 2751 | -/*!***************************************!*\ | |
| 2752 | - !*** ./node_modules/sha.js/sha256.js ***! | |
| 2753 | - \***************************************/ | |
| 2754 | -/*! no static exports found */ | |
| 2755 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2756 | - | |
| 2757 | -eval("/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar Hash = __webpack_require__(/*! ./hash */ \"./node_modules/sha.js/hash.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar K = [0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2];\nvar W = new Array(64);\n\nfunction Sha256() {\n this.init();\n this._w = W; // new Array(64)\n\n Hash.call(this, 64, 56);\n}\n\ninherits(Sha256, Hash);\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667;\n this._b = 0xbb67ae85;\n this._c = 0x3c6ef372;\n this._d = 0xa54ff53a;\n this._e = 0x510e527f;\n this._f = 0x9b05688c;\n this._g = 0x1f83d9ab;\n this._h = 0x5be0cd19;\n return this;\n};\n\nfunction ch(x, y, z) {\n return z ^ x & (y ^ z);\n}\n\nfunction maj(x, y, z) {\n return x & y | z & (x | y);\n}\n\nfunction sigma0(x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10);\n}\n\nfunction sigma1(x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7);\n}\n\nfunction gamma0(x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ x >>> 3;\n}\n\nfunction gamma1(x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ x >>> 10;\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w;\n var a = this._a | 0;\n var b = this._b | 0;\n var c = this._c | 0;\n var d = this._d | 0;\n var e = this._e | 0;\n var f = this._f | 0;\n var g = this._g | 0;\n var h = this._h | 0;\n\n for (var i = 0; i < 16; ++i) {\n W[i] = M.readInt32BE(i * 4);\n }\n\n for (; i < 64; ++i) {\n W[i] = gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16] | 0;\n }\n\n for (var j = 0; j < 64; ++j) {\n var T1 = h + sigma1(e) + ch(e, f, g) + K[j] + W[j] | 0;\n var T2 = sigma0(a) + maj(a, b, c) | 0;\n h = g;\n g = f;\n f = e;\n e = d + T1 | 0;\n d = c;\n c = b;\n b = a;\n a = T1 + T2 | 0;\n }\n\n this._a = a + this._a | 0;\n this._b = b + this._b | 0;\n this._c = c + this._c | 0;\n this._d = d + this._d | 0;\n this._e = e + this._e | 0;\n this._f = f + this._f | 0;\n this._g = g + this._g | 0;\n this._h = h + this._h | 0;\n};\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32);\n H.writeInt32BE(this._a, 0);\n H.writeInt32BE(this._b, 4);\n H.writeInt32BE(this._c, 8);\n H.writeInt32BE(this._d, 12);\n H.writeInt32BE(this._e, 16);\n H.writeInt32BE(this._f, 20);\n H.writeInt32BE(this._g, 24);\n H.writeInt32BE(this._h, 28);\n return H;\n};\n\nmodule.exports = Sha256;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/sha.js/sha256.js?"); | |
| 2758 | - | |
| 2759 | -/***/ }), | |
| 2760 | - | |
| 2761 | -/***/ "./node_modules/sha.js/sha384.js": | |
| 2762 | -/*!***************************************!*\ | |
| 2763 | - !*** ./node_modules/sha.js/sha384.js ***! | |
| 2764 | - \***************************************/ | |
| 2765 | -/*! no static exports found */ | |
| 2766 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2767 | - | |
| 2768 | -eval("var inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar SHA512 = __webpack_require__(/*! ./sha512 */ \"./node_modules/sha.js/sha512.js\");\n\nvar Hash = __webpack_require__(/*! ./hash */ \"./node_modules/sha.js/hash.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar W = new Array(160);\n\nfunction Sha384() {\n this.init();\n this._w = W;\n Hash.call(this, 128, 112);\n}\n\ninherits(Sha384, SHA512);\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d;\n this._bh = 0x629a292a;\n this._ch = 0x9159015a;\n this._dh = 0x152fecd8;\n this._eh = 0x67332667;\n this._fh = 0x8eb44a87;\n this._gh = 0xdb0c2e0d;\n this._hh = 0x47b5481d;\n this._al = 0xc1059ed8;\n this._bl = 0x367cd507;\n this._cl = 0x3070dd17;\n this._dl = 0xf70e5939;\n this._el = 0xffc00b31;\n this._fl = 0x68581511;\n this._gl = 0x64f98fa7;\n this._hl = 0xbefa4fa4;\n return this;\n};\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48);\n\n function writeInt64BE(h, l, offset) {\n H.writeInt32BE(h, offset);\n H.writeInt32BE(l, offset + 4);\n }\n\n writeInt64BE(this._ah, this._al, 0);\n writeInt64BE(this._bh, this._bl, 8);\n writeInt64BE(this._ch, this._cl, 16);\n writeInt64BE(this._dh, this._dl, 24);\n writeInt64BE(this._eh, this._el, 32);\n writeInt64BE(this._fh, this._fl, 40);\n return H;\n};\n\nmodule.exports = Sha384;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/sha.js/sha384.js?"); | |
| 2769 | - | |
| 2770 | -/***/ }), | |
| 2771 | - | |
| 2772 | -/***/ "./node_modules/sha.js/sha512.js": | |
| 2773 | -/*!***************************************!*\ | |
| 2774 | - !*** ./node_modules/sha.js/sha512.js ***! | |
| 2775 | - \***************************************/ | |
| 2776 | -/*! no static exports found */ | |
| 2777 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2778 | - | |
| 2779 | -eval("var inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar Hash = __webpack_require__(/*! ./hash */ \"./node_modules/sha.js/hash.js\");\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n\nvar K = [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817];\nvar W = new Array(160);\n\nfunction Sha512() {\n this.init();\n this._w = W;\n Hash.call(this, 128, 112);\n}\n\ninherits(Sha512, Hash);\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667;\n this._bh = 0xbb67ae85;\n this._ch = 0x3c6ef372;\n this._dh = 0xa54ff53a;\n this._eh = 0x510e527f;\n this._fh = 0x9b05688c;\n this._gh = 0x1f83d9ab;\n this._hh = 0x5be0cd19;\n this._al = 0xf3bcc908;\n this._bl = 0x84caa73b;\n this._cl = 0xfe94f82b;\n this._dl = 0x5f1d36f1;\n this._el = 0xade682d1;\n this._fl = 0x2b3e6c1f;\n this._gl = 0xfb41bd6b;\n this._hl = 0x137e2179;\n return this;\n};\n\nfunction Ch(x, y, z) {\n return z ^ x & (y ^ z);\n}\n\nfunction maj(x, y, z) {\n return x & y | z & (x | y);\n}\n\nfunction sigma0(x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25);\n}\n\nfunction sigma1(x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23);\n}\n\nfunction Gamma0(x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ x >>> 7;\n}\n\nfunction Gamma0l(x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25);\n}\n\nfunction Gamma1(x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ x >>> 6;\n}\n\nfunction Gamma1l(x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26);\n}\n\nfunction getCarry(a, b) {\n return a >>> 0 < b >>> 0 ? 1 : 0;\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w;\n var ah = this._ah | 0;\n var bh = this._bh | 0;\n var ch = this._ch | 0;\n var dh = this._dh | 0;\n var eh = this._eh | 0;\n var fh = this._fh | 0;\n var gh = this._gh | 0;\n var hh = this._hh | 0;\n var al = this._al | 0;\n var bl = this._bl | 0;\n var cl = this._cl | 0;\n var dl = this._dl | 0;\n var el = this._el | 0;\n var fl = this._fl | 0;\n var gl = this._gl | 0;\n var hl = this._hl | 0;\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4);\n W[i + 1] = M.readInt32BE(i * 4 + 4);\n }\n\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2];\n var xl = W[i - 15 * 2 + 1];\n var gamma0 = Gamma0(xh, xl);\n var gamma0l = Gamma0l(xl, xh);\n xh = W[i - 2 * 2];\n xl = W[i - 2 * 2 + 1];\n var gamma1 = Gamma1(xh, xl);\n var gamma1l = Gamma1l(xl, xh); // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\n var Wi7h = W[i - 7 * 2];\n var Wi7l = W[i - 7 * 2 + 1];\n var Wi16h = W[i - 16 * 2];\n var Wi16l = W[i - 16 * 2 + 1];\n var Wil = gamma0l + Wi7l | 0;\n var Wih = gamma0 + Wi7h + getCarry(Wil, gamma0l) | 0;\n Wil = Wil + gamma1l | 0;\n Wih = Wih + gamma1 + getCarry(Wil, gamma1l) | 0;\n Wil = Wil + Wi16l | 0;\n Wih = Wih + Wi16h + getCarry(Wil, Wi16l) | 0;\n W[i] = Wih;\n W[i + 1] = Wil;\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j];\n Wil = W[j + 1];\n var majh = maj(ah, bh, ch);\n var majl = maj(al, bl, cl);\n var sigma0h = sigma0(ah, al);\n var sigma0l = sigma0(al, ah);\n var sigma1h = sigma1(eh, el);\n var sigma1l = sigma1(el, eh); // t1 = h + sigma1 + ch + K[j] + W[j]\n\n var Kih = K[j];\n var Kil = K[j + 1];\n var chh = Ch(eh, fh, gh);\n var chl = Ch(el, fl, gl);\n var t1l = hl + sigma1l | 0;\n var t1h = hh + sigma1h + getCarry(t1l, hl) | 0;\n t1l = t1l + chl | 0;\n t1h = t1h + chh + getCarry(t1l, chl) | 0;\n t1l = t1l + Kil | 0;\n t1h = t1h + Kih + getCarry(t1l, Kil) | 0;\n t1l = t1l + Wil | 0;\n t1h = t1h + Wih + getCarry(t1l, Wil) | 0; // t2 = sigma0 + maj\n\n var t2l = sigma0l + majl | 0;\n var t2h = sigma0h + majh + getCarry(t2l, sigma0l) | 0;\n hh = gh;\n hl = gl;\n gh = fh;\n gl = fl;\n fh = eh;\n fl = el;\n el = dl + t1l | 0;\n eh = dh + t1h + getCarry(el, dl) | 0;\n dh = ch;\n dl = cl;\n ch = bh;\n cl = bl;\n bh = ah;\n bl = al;\n al = t1l + t2l | 0;\n ah = t1h + t2h + getCarry(al, t1l) | 0;\n }\n\n this._al = this._al + al | 0;\n this._bl = this._bl + bl | 0;\n this._cl = this._cl + cl | 0;\n this._dl = this._dl + dl | 0;\n this._el = this._el + el | 0;\n this._fl = this._fl + fl | 0;\n this._gl = this._gl + gl | 0;\n this._hl = this._hl + hl | 0;\n this._ah = this._ah + ah + getCarry(this._al, al) | 0;\n this._bh = this._bh + bh + getCarry(this._bl, bl) | 0;\n this._ch = this._ch + ch + getCarry(this._cl, cl) | 0;\n this._dh = this._dh + dh + getCarry(this._dl, dl) | 0;\n this._eh = this._eh + eh + getCarry(this._el, el) | 0;\n this._fh = this._fh + fh + getCarry(this._fl, fl) | 0;\n this._gh = this._gh + gh + getCarry(this._gl, gl) | 0;\n this._hh = this._hh + hh + getCarry(this._hl, hl) | 0;\n};\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64);\n\n function writeInt64BE(h, l, offset) {\n H.writeInt32BE(h, offset);\n H.writeInt32BE(l, offset + 4);\n }\n\n writeInt64BE(this._ah, this._al, 0);\n writeInt64BE(this._bh, this._bl, 8);\n writeInt64BE(this._ch, this._cl, 16);\n writeInt64BE(this._dh, this._dl, 24);\n writeInt64BE(this._eh, this._el, 32);\n writeInt64BE(this._fh, this._fl, 40);\n writeInt64BE(this._gh, this._gl, 48);\n writeInt64BE(this._hh, this._hl, 56);\n return H;\n};\n\nmodule.exports = Sha512;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/sha.js/sha512.js?"); | |
| 2780 | - | |
| 2781 | -/***/ }), | |
| 2782 | - | |
| 2783 | -/***/ "./node_modules/stream-browserify/index.js": | |
| 2784 | -/*!*************************************************!*\ | |
| 2785 | - !*** ./node_modules/stream-browserify/index.js ***! | |
| 2786 | - \*************************************************/ | |
| 2787 | -/*! no static exports found */ | |
| 2788 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2789 | - | |
| 2790 | -eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\nmodule.exports = Stream;\n\nvar EE = __webpack_require__(/*! events */ \"./node_modules/node-libs-browser/node_modules/events/events.js\").EventEmitter;\n\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\ninherits(Stream, EE);\nStream.Readable = __webpack_require__(/*! readable-stream/readable.js */ \"./node_modules/readable-stream/readable-browser.js\");\nStream.Writable = __webpack_require__(/*! readable-stream/writable.js */ \"./node_modules/readable-stream/writable-browser.js\");\nStream.Duplex = __webpack_require__(/*! readable-stream/duplex.js */ \"./node_modules/readable-stream/duplex-browser.js\");\nStream.Transform = __webpack_require__(/*! readable-stream/transform.js */ \"./node_modules/readable-stream/transform.js\");\nStream.PassThrough = __webpack_require__(/*! readable-stream/passthrough.js */ \"./node_modules/readable-stream/passthrough.js\"); // Backwards-compat with node 0.4.x\n\nStream.Stream = Stream; // old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function (dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain); // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n dest.end();\n }\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n if (typeof dest.destroy === 'function') dest.destroy();\n } // don't leave dangling pipes when there are errors.\n\n\n function onerror(er) {\n cleanup();\n\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror); // remove all the event listeners that were added.\n\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n dest.on('close', cleanup);\n dest.emit('pipe', source); // Allow for unix-like usage: A.pipe(B).pipe(C)\n\n return dest;\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/stream-browserify/index.js?"); | |
| 2791 | - | |
| 2792 | -/***/ }), | |
| 2793 | - | |
| 2794 | -/***/ "./node_modules/string_decoder/lib/string_decoder.js": | |
| 2795 | -/*!***********************************************************!*\ | |
| 2796 | - !*** ./node_modules/string_decoder/lib/string_decoder.js ***! | |
| 2797 | - \***********************************************************/ | |
| 2798 | -/*! no static exports found */ | |
| 2799 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2800 | - | |
| 2801 | -"use strict"; | |
| 2802 | -eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n/*<replacement>*/\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer;\n/*</replacement>*/\n\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n case 'raw':\n return true;\n\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n\n case 'latin1':\n case 'binary':\n return 'latin1';\n\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n\n default:\n if (retried) return; // undefined\n\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n}\n\n; // Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\n\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n} // StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\n\n\nexports.StringDecoder = StringDecoder;\n\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End; // Returns only complete characters in a Buffer\n\nStringDecoder.prototype.text = utf8Text; // Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\n\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n}; // Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\n\n\nfunction utf8CheckByte(_byte) {\n if (_byte <= 0x7F) return 0;else if (_byte >> 5 === 0x06) return 2;else if (_byte >> 4 === 0x0E) return 3;else if (_byte >> 3 === 0x1E) return 4;\n return _byte >> 6 === 0x02 ? -1 : -2;\n} // Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\n\n\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n\n return nb;\n }\n\n return 0;\n} // Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\n\n\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return \"\\uFFFD\";\n }\n\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return \"\\uFFFD\";\n }\n\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return \"\\uFFFD\";\n }\n }\n }\n} // Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\n\n\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n} // Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\n\n\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n} // For UTF-8, a replacement character is added when ending on a partial\n// character.\n\n\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + \"\\uFFFD\";\n return r;\n} // UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\n\n\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n\n return r;\n }\n\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n} // For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\n\n\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n} // Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\n\n\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/string_decoder/lib/string_decoder.js?"); | |
| 2803 | - | |
| 2804 | -/***/ }), | |
| 2805 | - | |
| 2806 | -/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js": | |
| 2807 | -/*!****************************************************************************!*\ | |
| 2808 | - !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***! | |
| 2809 | - \****************************************************************************/ | |
| 2810 | -/*! no static exports found */ | |
| 2811 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2812 | - | |
| 2813 | -"use strict"; | |
| 2814 | -eval("\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = true ? __webpack_require__.nc : undefined;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js?"); | |
| 2815 | - | |
| 2816 | -/***/ }), | |
| 2817 | - | |
| 2818 | -/***/ "./node_modules/util-deprecate/browser.js": | |
| 2819 | -/*!************************************************!*\ | |
| 2820 | - !*** ./node_modules/util-deprecate/browser.js ***! | |
| 2821 | - \************************************************/ | |
| 2822 | -/*! no static exports found */ | |
| 2823 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2824 | - | |
| 2825 | -eval("/* WEBPACK VAR INJECTION */(function(global) {/**\n * Module exports.\n */\nmodule.exports = deprecate;\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate(fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n\n warned = true;\n }\n\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\n\nfunction config(name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/util-deprecate/browser.js?"); | |
| 2826 | - | |
| 2827 | -/***/ }), | |
| 2828 | - | |
| 2829 | -/***/ "./node_modules/webpack/buildin/global.js": | |
| 2830 | -/*!***********************************!*\ | |
| 2831 | - !*** (webpack)/buildin/global.js ***! | |
| 2832 | - \***********************************/ | |
| 2833 | -/*! no static exports found */ | |
| 2834 | -/***/ (function(module, exports) { | |
| 2835 | - | |
| 2836 | -eval("var g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if (typeof window === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;\n\n//# sourceURL=webpack://WebMediaPlayer/(webpack)/buildin/global.js?"); | |
| 2837 | - | |
| 2838 | -/***/ }), | |
| 2839 | - | |
| 2840 | -/***/ "./node_modules/webpack/buildin/harmony-module.js": | |
| 2841 | -/*!*******************************************!*\ | |
| 2842 | - !*** (webpack)/buildin/harmony-module.js ***! | |
| 2843 | - \*******************************************/ | |
| 2844 | -/*! no static exports found */ | |
| 2845 | -/***/ (function(module, exports) { | |
| 2846 | - | |
| 2847 | -eval("module.exports = function (originalModule) {\n if (!originalModule.webpackPolyfill) {\n var module = Object.create(originalModule); // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n Object.defineProperty(module, \"exports\", {\n enumerable: true\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};\n\n//# sourceURL=webpack://WebMediaPlayer/(webpack)/buildin/harmony-module.js?"); | |
| 2848 | - | |
| 2849 | -/***/ }), | |
| 2850 | - | |
| 2851 | -/***/ "./node_modules/webpack/buildin/module.js": | |
| 2852 | -/*!***********************************!*\ | |
| 2853 | - !*** (webpack)/buildin/module.js ***! | |
| 2854 | - \***********************************/ | |
| 2855 | -/*! no static exports found */ | |
| 2856 | -/***/ (function(module, exports) { | |
| 2857 | - | |
| 2858 | -eval("module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};\n\n//# sourceURL=webpack://WebMediaPlayer/(webpack)/buildin/module.js?"); | |
| 2859 | - | |
| 2860 | -/***/ }), | |
| 2861 | - | |
| 2862 | -/***/ "./node_modules/webworkify-webpack/index.js": | |
| 2863 | -/*!**************************************************!*\ | |
| 2864 | - !*** ./node_modules/webworkify-webpack/index.js ***! | |
| 2865 | - \**************************************************/ | |
| 2866 | -/*! no static exports found */ | |
| 2867 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2868 | - | |
| 2869 | -eval("function webpackBootstrapFunc(modules) {\n /******/\n // The module cache\n\n /******/\n var installedModules = {};\n /******/\n // The require function\n\n /******/\n\n function __webpack_require__(moduleId) {\n /******/\n // Check if module is in cache\n\n /******/\n if (installedModules[moduleId])\n /******/\n return installedModules[moduleId].exports;\n /******/\n // Create a new module (and put it into the cache)\n\n /******/\n\n var module = installedModules[moduleId] = {\n /******/\n i: moduleId,\n\n /******/\n l: false,\n\n /******/\n exports: {}\n /******/\n\n };\n /******/\n // Execute the module function\n\n /******/\n\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n // Flag the module as loaded\n\n /******/\n\n module.l = true;\n /******/\n // Return the exports of the module\n\n /******/\n\n return module.exports;\n /******/\n }\n /******/\n // expose the modules object (__webpack_modules__)\n\n /******/\n\n\n __webpack_require__.m = modules;\n /******/\n // expose the module cache\n\n /******/\n\n __webpack_require__.c = installedModules;\n /******/\n // identity function for calling harmony imports with the correct context\n\n /******/\n\n __webpack_require__.i = function (value) {\n return value;\n };\n /******/\n // define getter function for harmony exports\n\n /******/\n\n\n __webpack_require__.d = function (exports, name, getter) {\n /******/\n if (!__webpack_require__.o(exports, name)) {\n /******/\n Object.defineProperty(exports, name, {\n /******/\n configurable: false,\n\n /******/\n enumerable: true,\n\n /******/\n get: getter\n /******/\n\n });\n /******/\n }\n /******/\n\n };\n /******/\n // define __esModule on exports\n\n /******/\n\n\n __webpack_require__.r = function (exports) {\n /******/\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n /******/\n };\n /******/\n // getDefaultExport function for compatibility with non-harmony modules\n\n /******/\n\n\n __webpack_require__.n = function (module) {\n /******/\n var getter = module && module.__esModule ?\n /******/\n function getDefault() {\n return module['default'];\n } :\n /******/\n function getModuleExports() {\n return module;\n };\n /******/\n\n __webpack_require__.d(getter, 'a', getter);\n /******/\n\n\n return getter;\n /******/\n };\n /******/\n // Object.prototype.hasOwnProperty.call\n\n /******/\n\n\n __webpack_require__.o = function (object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n /******/\n // __webpack_public_path__\n\n /******/\n\n\n __webpack_require__.p = \"/\";\n /******/\n // on error function for async loading\n\n /******/\n\n __webpack_require__.oe = function (err) {\n console.error(err);\n throw err;\n };\n\n var f = __webpack_require__(__webpack_require__.s = ENTRY_MODULE);\n\n return f.default || f; // try to call default if defined to also support babel esmodule exports\n}\n\nvar moduleNameReqExp = '[\\\\.|\\\\-|\\\\+|\\\\w|\\/|@]+';\nvar dependencyRegExp = '\\\\(\\\\s*(\\/\\\\*.*?\\\\*\\/)?\\\\s*.*?(' + moduleNameReqExp + ').*?\\\\)'; // additional chars when output.pathinfo is true\n// http://stackoverflow.com/a/2593661/130442\n\nfunction quoteRegExp(str) {\n return (str + '').replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&');\n}\n\nfunction isNumeric(n) {\n return !isNaN(1 * n); // 1 * n converts integers, integers as string (\"123\"), 1e3 and \"1e3\" to integers and strings to NaN\n}\n\nfunction getModuleDependencies(sources, module, queueName) {\n var retval = {};\n retval[queueName] = [];\n var fnString = module.toString();\n var wrapperSignature = fnString.match(/^function\\s?\\w*\\(\\w+,\\s*\\w+,\\s*(\\w+)\\)/);\n if (!wrapperSignature) return retval;\n var webpackRequireName = wrapperSignature[1]; // main bundle deps\n\n var re = new RegExp('(\\\\\\\\n|\\\\W)' + quoteRegExp(webpackRequireName) + dependencyRegExp, 'g');\n var match;\n\n while (match = re.exec(fnString)) {\n if (match[3] === 'dll-reference') continue;\n retval[queueName].push(match[3]);\n } // dll deps\n\n\n re = new RegExp('\\\\(' + quoteRegExp(webpackRequireName) + '\\\\(\"(dll-reference\\\\s(' + moduleNameReqExp + '))\"\\\\)\\\\)' + dependencyRegExp, 'g');\n\n while (match = re.exec(fnString)) {\n if (!sources[match[2]]) {\n retval[queueName].push(match[1]);\n sources[match[2]] = __webpack_require__(match[1]).m;\n }\n\n retval[match[2]] = retval[match[2]] || [];\n retval[match[2]].push(match[4]);\n } // convert 1e3 back to 1000 - this can be important after uglify-js converted 1000 to 1e3\n\n\n var keys = Object.keys(retval);\n\n for (var i = 0; i < keys.length; i++) {\n for (var j = 0; j < retval[keys[i]].length; j++) {\n if (isNumeric(retval[keys[i]][j])) {\n retval[keys[i]][j] = 1 * retval[keys[i]][j];\n }\n }\n }\n\n return retval;\n}\n\nfunction hasValuesInQueues(queues) {\n var keys = Object.keys(queues);\n return keys.reduce(function (hasValues, key) {\n return hasValues || queues[key].length > 0;\n }, false);\n}\n\nfunction getRequiredModules(sources, moduleId) {\n var modulesQueue = {\n main: [moduleId]\n };\n var requiredModules = {\n main: []\n };\n var seenModules = {\n main: {}\n };\n\n while (hasValuesInQueues(modulesQueue)) {\n var queues = Object.keys(modulesQueue);\n\n for (var i = 0; i < queues.length; i++) {\n var queueName = queues[i];\n var queue = modulesQueue[queueName];\n var moduleToCheck = queue.pop();\n seenModules[queueName] = seenModules[queueName] || {};\n if (seenModules[queueName][moduleToCheck] || !sources[queueName][moduleToCheck]) continue;\n seenModules[queueName][moduleToCheck] = true;\n requiredModules[queueName] = requiredModules[queueName] || [];\n requiredModules[queueName].push(moduleToCheck);\n var newModules = getModuleDependencies(sources, sources[queueName][moduleToCheck], queueName);\n var newModulesKeys = Object.keys(newModules);\n\n for (var j = 0; j < newModulesKeys.length; j++) {\n modulesQueue[newModulesKeys[j]] = modulesQueue[newModulesKeys[j]] || [];\n modulesQueue[newModulesKeys[j]] = modulesQueue[newModulesKeys[j]].concat(newModules[newModulesKeys[j]]);\n }\n }\n }\n\n return requiredModules;\n}\n\nmodule.exports = function (moduleId, options) {\n options = options || {};\n var sources = {\n main: __webpack_require__.m\n };\n var requiredModules = options.all ? {\n main: Object.keys(sources.main)\n } : getRequiredModules(sources, moduleId);\n var src = '';\n Object.keys(requiredModules).filter(function (m) {\n return m !== 'main';\n }).forEach(function (module) {\n var entryModule = 0;\n\n while (requiredModules[module][entryModule]) {\n entryModule++;\n }\n\n requiredModules[module].push(entryModule);\n sources[module][entryModule] = '(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })';\n src = src + 'var ' + module + ' = (' + webpackBootstrapFunc.toString().replace('ENTRY_MODULE', JSON.stringify(entryModule)) + ')({' + requiredModules[module].map(function (id) {\n return '' + JSON.stringify(id) + ': ' + sources[module][id].toString();\n }).join(',') + '});\\n';\n });\n src = src + 'new ((' + webpackBootstrapFunc.toString().replace('ENTRY_MODULE', JSON.stringify(moduleId)) + ')({' + requiredModules.main.map(function (id) {\n return '' + JSON.stringify(id) + ': ' + sources.main[id].toString();\n }).join(',') + '}))(self);';\n var blob = new window.Blob([src], {\n type: 'text/javascript'\n });\n\n if (options.bare) {\n return blob;\n }\n\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n var workerUrl = URL.createObjectURL(blob);\n var worker = new window.Worker(workerUrl);\n worker.objectURL = workerUrl;\n return worker;\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/webworkify-webpack/index.js?"); | |
| 2870 | - | |
| 2871 | -/***/ }), | |
| 2872 | - | |
| 2873 | -/***/ "./node_modules/webworkify/index.js": | |
| 2874 | -/*!******************************************!*\ | |
| 2875 | - !*** ./node_modules/webworkify/index.js ***! | |
| 2876 | - \******************************************/ | |
| 2877 | -/*! no static exports found */ | |
| 2878 | -/***/ (function(module, exports) { | |
| 2879 | - | |
| 2880 | -eval("var bundleFn = arguments[3];\nvar sources = arguments[4];\nvar cache = arguments[5];\nvar stringify = JSON.stringify;\n\nmodule.exports = function (fn, options) {\n var wkey;\n var cacheKeys = Object.keys(cache);\n\n for (var i = 0, l = cacheKeys.length; i < l; i++) {\n var key = cacheKeys[i];\n var exp = cache[key].exports; // Using babel as a transpiler to use esmodule, the export will always\n // be an object with the default export as a property of it. To ensure\n // the existing api and babel esmodule exports are both supported we\n // check for both\n\n if (exp === fn || exp && exp.default === fn) {\n wkey = key;\n break;\n }\n }\n\n if (!wkey) {\n wkey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);\n var wcache = {};\n\n for (var i = 0, l = cacheKeys.length; i < l; i++) {\n var key = cacheKeys[i];\n wcache[key] = key;\n }\n\n sources[wkey] = ['function(require,module,exports){' + fn + '(self); }', wcache];\n }\n\n var skey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);\n var scache = {};\n scache[wkey] = wkey;\n sources[skey] = ['function(require,module,exports){' + // try to call default if defined to also support babel esmodule exports\n 'var f = require(' + stringify(wkey) + ');' + '(f.default ? f.default : f)(self);' + '}', scache];\n var workerSources = {};\n resolveSources(skey);\n\n function resolveSources(key) {\n workerSources[key] = true;\n\n for (var depPath in sources[key][1]) {\n var depKey = sources[key][1][depPath];\n\n if (!workerSources[depKey]) {\n resolveSources(depKey);\n }\n }\n }\n\n var src = '(' + bundleFn + ')({' + Object.keys(workerSources).map(function (key) {\n return stringify(key) + ':[' + sources[key][0] + ',' + stringify(sources[key][1]) + ']';\n }).join(',') + '},{},[' + stringify(skey) + '])';\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n var blob = new Blob([src], {\n type: 'text/javascript'\n });\n\n if (options && options.bare) {\n return blob;\n }\n\n var workerUrl = URL.createObjectURL(blob);\n var worker = new Worker(workerUrl);\n worker.objectURL = workerUrl;\n return worker;\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/webworkify/index.js?"); | |
| 2881 | - | |
| 2882 | -/***/ }), | |
| 2883 | - | |
| 2884 | -/***/ "./node_modules/yuv-buffer/yuv-buffer.js": | |
| 2885 | -/*!***********************************************!*\ | |
| 2886 | - !*** ./node_modules/yuv-buffer/yuv-buffer.js ***! | |
| 2887 | - \***********************************************/ | |
| 2888 | -/*! no static exports found */ | |
| 2889 | -/***/ (function(module, exports) { | |
| 2890 | - | |
| 2891 | -eval("var _YUVBuffer;\n\n/*\nCopyright (c) 2014-2016 Brion Vibber <brion@pobox.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\n/**\n * Represents metadata about a YUV frame format.\n * @typedef {Object} YUVFormat\n * @property {number} width - width of encoded frame in luma pixels\n * @property {number} height - height of encoded frame in luma pixels\n * @property {number} chromaWidth - width of encoded frame in chroma pixels\n * @property {number} chromaHeight - height of encoded frame in chroma pixels\n * @property {number} cropLeft - upper-left X coordinate of visible crop region, in luma pixels\n * @property {number} cropTop - upper-left Y coordinate of visible crop region, in luma pixels\n * @property {number} cropWidth - width of visible crop region, in luma pixels\n * @property {number} cropHeight - height of visible crop region, in luma pixels\n * @property {number} displayWidth - final display width of visible region, in luma pixels\n * @property {number} displayHeight - final display height of visible region, in luma pixels\n */\n\n/**\n * Represents underlying image data for a single luma or chroma plane.\n * Cannot be interpreted without the format data from a frame buffer.\n * @typedef {Object} YUVPlane\n * @property {Uint8Array} bytes - typed array containing image data bytes\n * @property {number} stride - byte distance between rows in data\n */\n\n/**\n * Represents a YUV image frame buffer, with enough format information\n * to interpret the data usefully. Buffer objects use generic objects\n * under the hood and can be transferred between worker threads using\n * the structured clone algorithm.\n *\n * @typedef {Object} YUVFrame\n * @property {YUVFormat} format\n * @property {YUVPlane} y\n * @property {YUVPlane} u\n * @property {YUVPlane} v\n */\n\n/**\n * Holder namespace for utility functions and constants related to\n * YUV frame and plane buffers.\n *\n * @namespace\n */\nvar YUVBuffer = (_YUVBuffer = {\n /**\n * Validate a plane dimension\n * @param {number} dim - vertical or horizontal dimension\n * @throws exception on zero, negative, or non-integer value\n */\n validateDimension: function validateDimension(dim) {\n if (dim <= 0 || dim !== (dim | 0)) {\n throw 'YUV plane dimensions must be a positive integer';\n }\n },\n\n /**\n * Validate a plane offset\n * @param {number} dim - vertical or horizontal dimension\n * @throws exception on negative or non-integer value\n */\n validateOffset: function validateOffset(dim) {\n if (dim < 0 || dim !== (dim | 0)) {\n throw 'YUV plane offsets must be a non-negative integer';\n }\n },\n\n /**\n * Validate and fill out a YUVFormat object structure.\n *\n * At least width and height fields are required; other fields will be\n * derived if left missing or empty:\n * - chromaWidth and chromaHeight will be copied from width and height as for a 4:4:4 layout\n * - cropLeft and cropTop will be 0\n * - cropWidth and cropHeight will be set to whatever of the frame is visible after cropTop and cropLeft are applied\n * - displayWidth and displayHeight will be set to cropWidth and cropHeight.\n *\n * @param {YUVFormat} fields - input fields, must include width and height.\n * @returns {YUVFormat} - validated structure, with all derivable fields filled out.\n * @throws exception on invalid fields or missing width/height\n */\n format: function format(fields) {\n var width = fields.width,\n height = fields.height,\n chromaWidth = fields.chromaWidth || width,\n chromaHeight = fields.chromaHeight || height,\n cropLeft = fields.cropLeft || 0,\n cropTop = fields.cropTop || 0,\n cropWidth = fields.cropWidth || width - cropLeft,\n cropHeight = fields.cropHeight || height - cropTop,\n displayWidth = fields.displayWidth || cropWidth,\n displayHeight = fields.displayHeight || cropHeight;\n this.validateDimension(width);\n this.validateDimension(height);\n this.validateDimension(chromaWidth);\n this.validateDimension(chromaHeight);\n this.validateOffset(cropLeft);\n this.validateOffset(cropTop);\n this.validateDimension(cropWidth);\n this.validateDimension(cropHeight);\n this.validateDimension(displayWidth);\n this.validateDimension(displayHeight);\n return {\n width: width,\n height: height,\n chromaWidth: chromaWidth,\n chromaHeight: chromaHeight,\n cropLeft: cropLeft,\n cropTop: cropTop,\n cropWidth: cropWidth,\n cropHeight: cropHeight,\n displayWidth: displayWidth,\n displayHeight: displayHeight\n };\n },\n\n /**\n * Allocate a new YUVPlane object of the given size.\n * @param {number} stride - byte distance between rows\n * @param {number} rows - number of rows to allocate\n * @returns {YUVPlane} - freshly allocated planar buffer\n */\n allocPlane: function allocPlane(stride, rows) {\n YUVBuffer.validateDimension(stride);\n YUVBuffer.validateDimension(rows);\n return {\n bytes: new Uint8Array(stride * rows),\n stride: stride\n };\n },\n\n /**\n * Pick a suitable stride for a custom-allocated thingy\n * @param {number} width - width in bytes\n * @returns {number} - new width in bytes at least as large\n * @throws exception on invalid input width\n */\n suitableStride: function suitableStride(width) {\n YUVBuffer.validateDimension(width);\n var alignment = 4,\n remainder = width % alignment;\n\n if (remainder == 0) {\n return width;\n } else {\n return width + (alignment - remainder);\n }\n }\n}, _YUVBuffer[\"allocPlane\"] = function allocPlane(width, height, source, stride, offset) {\n var size, bytes;\n this.validateDimension(width);\n this.validateDimension(height);\n offset = offset || 0;\n stride = stride || this.suitableStride(width);\n this.validateDimension(stride);\n\n if (stride < width) {\n throw \"Invalid input stride for YUV plane; must be larger than width\";\n }\n\n size = stride * height;\n\n if (source) {\n if (source.length - offset < size) {\n throw \"Invalid input buffer for YUV plane; must be large enough for stride times height\";\n }\n\n bytes = source.slice(offset, offset + size);\n } else {\n bytes = new Uint8Array(size);\n stride = stride || this.suitableStride(width);\n }\n\n return {\n bytes: bytes,\n stride: stride\n };\n}, _YUVBuffer.lumaPlane = function lumaPlane(format, source, stride, offset) {\n return this.allocPlane(format.width, format.height, source, stride, offset);\n}, _YUVBuffer.chromaPlane = function chromaPlane(format, source, stride, offset) {\n return this.allocPlane(format.chromaWidth, format.chromaHeight, source, stride, offset);\n}, _YUVBuffer.frame = function frame(format, y, u, v) {\n y = y || this.lumaPlane(format);\n u = u || this.chromaPlane(format);\n v = v || this.chromaPlane(format);\n return {\n format: format,\n y: y,\n u: u,\n v: v\n };\n}, _YUVBuffer.copyPlane = function copyPlane(plane) {\n return {\n bytes: plane.bytes.slice(),\n stride: plane.stride\n };\n}, _YUVBuffer.copyFrame = function copyFrame(frame) {\n return {\n format: frame.format,\n y: this.copyPlane(frame.y),\n u: this.copyPlane(frame.u),\n v: this.copyPlane(frame.v)\n };\n}, _YUVBuffer.transferables = function transferables(frame) {\n return [frame.y.bytes.buffer, frame.u.bytes.buffer, frame.v.bytes.buffer];\n}, _YUVBuffer);\nmodule.exports = YUVBuffer;\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/yuv-buffer/yuv-buffer.js?"); | |
| 2892 | - | |
| 2893 | -/***/ }), | |
| 2894 | - | |
| 2895 | -/***/ "./node_modules/yuv-canvas/build/shaders.js": | |
| 2896 | -/*!**************************************************!*\ | |
| 2897 | - !*** ./node_modules/yuv-canvas/build/shaders.js ***! | |
| 2898 | - \**************************************************/ | |
| 2899 | -/*! no static exports found */ | |
| 2900 | -/***/ (function(module, exports) { | |
| 2901 | - | |
| 2902 | -eval("module.exports = {\n vertex: \"precision mediump float;\\n\\nattribute vec2 aPosition;\\nattribute vec2 aLumaPosition;\\nattribute vec2 aChromaPosition;\\nvarying vec2 vLumaPosition;\\nvarying vec2 vChromaPosition;\\nvoid main() {\\n gl_Position = vec4(aPosition, 0, 1);\\n vLumaPosition = aLumaPosition;\\n vChromaPosition = aChromaPosition;\\n}\\n\",\n fragment: \"// inspired by https://github.com/mbebenita/Broadway/blob/master/Player/canvas.js\\n\\nprecision mediump float;\\n\\nuniform sampler2D uTextureY;\\nuniform sampler2D uTextureCb;\\nuniform sampler2D uTextureCr;\\nvarying vec2 vLumaPosition;\\nvarying vec2 vChromaPosition;\\nvoid main() {\\n // Y, Cb, and Cr planes are uploaded as ALPHA textures.\\n float fY = texture2D(uTextureY, vLumaPosition).w;\\n float fCb = texture2D(uTextureCb, vChromaPosition).w;\\n float fCr = texture2D(uTextureCr, vChromaPosition).w;\\n\\n // Premultipy the Y...\\n float fYmul = fY * 1.1643828125;\\n\\n // And convert that to RGB!\\n gl_FragColor = vec4(\\n fYmul + 1.59602734375 * fCr - 0.87078515625,\\n fYmul - 0.39176171875 * fCb - 0.81296875 * fCr + 0.52959375,\\n fYmul + 2.017234375 * fCb - 1.081390625,\\n 1\\n );\\n}\\n\",\n vertexStripe: \"precision mediump float;\\n\\nattribute vec2 aPosition;\\nattribute vec2 aTexturePosition;\\nvarying vec2 vTexturePosition;\\n\\nvoid main() {\\n gl_Position = vec4(aPosition, 0, 1);\\n vTexturePosition = aTexturePosition;\\n}\\n\",\n fragmentStripe: \"// extra 'stripe' texture fiddling to work around IE 11's poor performance on gl.LUMINANCE and gl.ALPHA textures\\n\\nprecision mediump float;\\n\\nuniform sampler2D uStripe;\\nuniform sampler2D uTexture;\\nvarying vec2 vTexturePosition;\\nvoid main() {\\n // Y, Cb, and Cr planes are mapped into a pseudo-RGBA texture\\n // so we can upload them without expanding the bytes on IE 11\\n // which doesn't allow LUMINANCE or ALPHA textures\\n // The stripe textures mark which channel to keep for each pixel.\\n // Each texture extraction will contain the relevant value in one\\n // channel only.\\n\\n float fLuminance = dot(\\n texture2D(uStripe, vTexturePosition),\\n texture2D(uTexture, vTexturePosition)\\n );\\n\\n gl_FragColor = vec4(0, 0, 0, fLuminance);\\n}\\n\"\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/yuv-canvas/build/shaders.js?"); | |
| 2903 | - | |
| 2904 | -/***/ }), | |
| 2905 | - | |
| 2906 | -/***/ "./node_modules/yuv-canvas/src/FrameSink.js": | |
| 2907 | -/*!**************************************************!*\ | |
| 2908 | - !*** ./node_modules/yuv-canvas/src/FrameSink.js ***! | |
| 2909 | - \**************************************************/ | |
| 2910 | -/*! no static exports found */ | |
| 2911 | -/***/ (function(module, exports) { | |
| 2912 | - | |
| 2913 | -eval("(function () {\n \"use strict\";\n /**\n * Create a YUVCanvas and attach it to an HTML5 canvas element.\n *\n * This will take over the drawing context of the canvas and may turn\n * it into a WebGL 3d canvas if possible. Do not attempt to use the\n * drawing context directly after this.\n *\n * @param {HTMLCanvasElement} canvas - HTML canvas element to attach to\n * @param {YUVCanvasOptions} options - map of options\n * @throws exception if WebGL requested but unavailable\n * @constructor\n * @abstract\n */\n\n function FrameSink(canvas, options) {\n throw new Error('abstract');\n }\n /**\n * Draw a single YUV frame on the underlying canvas, converting to RGB.\n * If necessary the canvas will be resized to the optimal pixel size\n * for the given buffer's format.\n *\n * @param {YUVBuffer} buffer - the YUV buffer to draw\n * @see {@link https://www.npmjs.com/package/yuv-buffer|yuv-buffer} for format\n */\n\n\n FrameSink.prototype.drawFrame = function (buffer) {\n throw new Error('abstract');\n };\n /**\n * Clear the canvas using appropriate underlying 2d or 3d context.\n */\n\n\n FrameSink.prototype.clear = function () {\n throw new Error('abstract');\n };\n\n module.exports = FrameSink;\n})();\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/yuv-canvas/src/FrameSink.js?"); | |
| 2914 | - | |
| 2915 | -/***/ }), | |
| 2916 | - | |
| 2917 | -/***/ "./node_modules/yuv-canvas/src/SoftwareFrameSink.js": | |
| 2918 | -/*!**********************************************************!*\ | |
| 2919 | - !*** ./node_modules/yuv-canvas/src/SoftwareFrameSink.js ***! | |
| 2920 | - \**********************************************************/ | |
| 2921 | -/*! no static exports found */ | |
| 2922 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2923 | - | |
| 2924 | -eval("/*\nCopyright (c) 2014-2016 Brion Vibber <brion@pobox.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n(function () {\n \"use strict\";\n\n var FrameSink = __webpack_require__(/*! ./FrameSink.js */ \"./node_modules/yuv-canvas/src/FrameSink.js\"),\n YCbCr = __webpack_require__(/*! ./YCbCr.js */ \"./node_modules/yuv-canvas/src/YCbCr.js\");\n /**\n * @param {HTMLCanvasElement} canvas - HTML canvas eledment to attach to\n * @constructor\n */\n\n\n function SoftwareFrameSink(canvas) {\n var self = this,\n ctx = canvas.getContext('2d'),\n imageData = null,\n resampleCanvas = null,\n resampleContext = null;\n\n function initImageData(width, height) {\n imageData = ctx.createImageData(width, height); // Prefill the alpha to opaque\n\n var data = imageData.data,\n pixelCount = width * height * 4;\n\n for (var i = 0; i < pixelCount; i += 4) {\n data[i + 3] = 255;\n }\n }\n\n function initResampleCanvas(cropWidth, cropHeight) {\n resampleCanvas = document.createElement('canvas');\n resampleCanvas.width = cropWidth;\n resampleCanvas.height = cropHeight;\n resampleContext = resampleCanvas.getContext('2d');\n }\n /**\n * Actually draw a frame into the canvas.\n * @param {YUVFrame} buffer - YUV frame buffer object to draw\n */\n\n\n self.drawFrame = function drawFrame(buffer) {\n var format = buffer.format;\n\n if (canvas.width !== format.displayWidth || canvas.height !== format.displayHeight) {\n // Keep the canvas at the right size...\n canvas.width = format.displayWidth;\n canvas.height = format.displayHeight;\n }\n\n if (imageData === null || imageData.width != format.width || imageData.height != format.height) {\n initImageData(format.width, format.height);\n } // YUV -> RGB over the entire encoded frame\n\n\n YCbCr.convertYCbCr(buffer, imageData.data);\n var resample = format.cropWidth != format.displayWidth || format.cropHeight != format.displayHeight;\n var drawContext;\n\n if (resample) {\n // hack for non-square aspect-ratio\n // putImageData doesn't resample, so we have to draw in two steps.\n if (!resampleCanvas) {\n initResampleCanvas(format.cropWidth, format.cropHeight);\n }\n\n drawContext = resampleContext;\n } else {\n drawContext = ctx;\n } // Draw cropped frame to either the final or temporary canvas\n\n\n drawContext.putImageData(imageData, -format.cropLeft, -format.cropTop, // must offset the offset\n format.cropLeft, format.cropTop, format.cropWidth, format.cropHeight);\n\n if (resample) {\n ctx.drawImage(resampleCanvas, 0, 0, format.displayWidth, format.displayHeight);\n }\n };\n\n self.clear = function () {\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n };\n\n return self;\n }\n\n SoftwareFrameSink.prototype = Object.create(FrameSink.prototype);\n module.exports = SoftwareFrameSink;\n})();\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/yuv-canvas/src/SoftwareFrameSink.js?"); | |
| 2925 | - | |
| 2926 | -/***/ }), | |
| 2927 | - | |
| 2928 | -/***/ "./node_modules/yuv-canvas/src/WebGLFrameSink.js": | |
| 2929 | -/*!*******************************************************!*\ | |
| 2930 | - !*** ./node_modules/yuv-canvas/src/WebGLFrameSink.js ***! | |
| 2931 | - \*******************************************************/ | |
| 2932 | -/*! no static exports found */ | |
| 2933 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2934 | - | |
| 2935 | -eval("/*\nCopyright (c) 2014-2016 Brion Vibber <brion@pobox.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n(function () {\n \"use strict\";\n\n var FrameSink = __webpack_require__(/*! ./FrameSink.js */ \"./node_modules/yuv-canvas/src/FrameSink.js\"),\n shaders = __webpack_require__(/*! ../build/shaders.js */ \"./node_modules/yuv-canvas/build/shaders.js\");\n /**\n * Warning: canvas must not have been used for 2d drawing prior!\n *\n * @param {HTMLCanvasElement} canvas - HTML canvas element to attach to\n * @constructor\n */\n\n\n function WebGLFrameSink(canvas) {\n var self = this,\n gl = WebGLFrameSink.contextForCanvas(canvas),\n debug = false; // swap this to enable more error checks, which can slow down rendering\n\n if (gl === null) {\n throw new Error('WebGL unavailable');\n } // GL!\n\n\n function checkError() {\n if (debug) {\n err = gl.getError();\n\n if (err !== 0) {\n throw new Error(\"GL error \" + err);\n }\n }\n }\n\n function compileShader(type, source) {\n var shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n var err = gl.getShaderInfoLog(shader);\n gl.deleteShader(shader);\n throw new Error('GL shader compilation for ' + type + ' failed: ' + err);\n }\n\n return shader;\n }\n\n var program, unpackProgram, err; // In the world of GL there are no rectangles.\n // There are only triangles.\n // THERE IS NO SPOON.\n\n var rectangle = new Float32Array([// First triangle (top left, clockwise)\n -1.0, -1.0, +1.0, -1.0, -1.0, +1.0, // Second triangle (bottom right, clockwise)\n -1.0, +1.0, +1.0, -1.0, +1.0, +1.0]);\n var textures = {};\n var framebuffers = {};\n var stripes = {};\n var buf, positionLocation, unpackPositionLocation;\n var unpackTexturePositionBuffer, unpackTexturePositionLocation;\n var stripeLocation, unpackTextureLocation;\n var lumaPositionBuffer, lumaPositionLocation;\n var chromaPositionBuffer, chromaPositionLocation;\n\n function createOrReuseTexture(name, formatUpdate) {\n if (!textures[name] || formatUpdate) {\n textures[name] = gl.createTexture();\n }\n\n return textures[name];\n }\n\n function uploadTexture(name, formatUpdate, width, height, data) {\n var create = !textures[name] || formatUpdate;\n var texture = createOrReuseTexture(name, formatUpdate);\n gl.activeTexture(gl.TEXTURE0);\n\n if (WebGLFrameSink.stripe) {\n var uploadTemp = !textures[name + '_temp'] || formatUpdate;\n var tempTexture = createOrReuseTexture(name + '_temp', formatUpdate);\n gl.bindTexture(gl.TEXTURE_2D, tempTexture);\n\n if (uploadTemp) {\n // new texture\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, // mip level\n gl.RGBA, // internal format\n width / 4, height, 0, // border\n gl.RGBA, // format\n gl.UNSIGNED_BYTE, // type\n data // data!\n );\n } else {\n // update texture\n gl.texSubImage2D(gl.TEXTURE_2D, 0, // mip level\n 0, // x offset\n 0, // y offset\n width / 4, height, gl.RGBA, // format\n gl.UNSIGNED_BYTE, // type\n data // data!\n );\n }\n\n var stripeTexture = textures[name + '_stripe'];\n var uploadStripe = !stripeTexture || formatUpdate;\n\n if (uploadStripe) {\n stripeTexture = createOrReuseTexture(name + '_stripe', formatUpdate);\n }\n\n gl.bindTexture(gl.TEXTURE_2D, stripeTexture);\n\n if (uploadStripe) {\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, // mip level\n gl.RGBA, // internal format\n width, 1, 0, // border\n gl.RGBA, // format\n gl.UNSIGNED_BYTE, //type\n buildStripe(width, 1) // data!\n );\n }\n } else {\n gl.bindTexture(gl.TEXTURE_2D, texture);\n\n if (create) {\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texImage2D(gl.TEXTURE_2D, 0, // mip level\n gl.ALPHA, // internal format\n width, height, 0, // border\n gl.ALPHA, // format\n gl.UNSIGNED_BYTE, //type\n data // data!\n );\n } else {\n gl.texSubImage2D(gl.TEXTURE_2D, 0, // mip level\n 0, // x\n 0, // y\n width, height, gl.ALPHA, // internal format\n gl.UNSIGNED_BYTE, //type\n data // data!\n );\n }\n }\n }\n\n function unpackTexture(name, formatUpdate, width, height) {\n var texture = textures[name]; // Upload to a temporary RGBA texture, then unpack it.\n // This is faster than CPU-side swizzling in ANGLE on Windows.\n\n gl.useProgram(unpackProgram);\n var fb = framebuffers[name];\n\n if (!fb || formatUpdate) {\n // Create a framebuffer and an empty target size\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texImage2D(gl.TEXTURE_2D, 0, // mip level\n gl.RGBA, // internal format\n width, height, 0, // border\n gl.RGBA, // format\n gl.UNSIGNED_BYTE, //type\n null // data!\n );\n fb = framebuffers[name] = gl.createFramebuffer();\n }\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, fb);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n var tempTexture = textures[name + '_temp'];\n gl.activeTexture(gl.TEXTURE1);\n gl.bindTexture(gl.TEXTURE_2D, tempTexture);\n gl.uniform1i(unpackTextureLocation, 1);\n var stripeTexture = textures[name + '_stripe'];\n gl.activeTexture(gl.TEXTURE2);\n gl.bindTexture(gl.TEXTURE_2D, stripeTexture);\n gl.uniform1i(stripeLocation, 2); // Rectangle geometry\n\n gl.bindBuffer(gl.ARRAY_BUFFER, buf);\n gl.enableVertexAttribArray(positionLocation);\n gl.vertexAttribPointer(positionLocation, 2, gl.FLOAT, false, 0, 0); // Set up the texture geometry...\n\n gl.bindBuffer(gl.ARRAY_BUFFER, unpackTexturePositionBuffer);\n gl.enableVertexAttribArray(unpackTexturePositionLocation);\n gl.vertexAttribPointer(unpackTexturePositionLocation, 2, gl.FLOAT, false, 0, 0); // Draw into the target texture...\n\n gl.viewport(0, 0, width, height);\n gl.drawArrays(gl.TRIANGLES, 0, rectangle.length / 2);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n }\n\n function attachTexture(name, register, index) {\n gl.activeTexture(register);\n gl.bindTexture(gl.TEXTURE_2D, textures[name]);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.uniform1i(gl.getUniformLocation(program, name), index);\n }\n\n function buildStripe(width) {\n if (stripes[width]) {\n return stripes[width];\n }\n\n var len = width,\n out = new Uint32Array(len);\n\n for (var i = 0; i < len; i += 4) {\n out[i] = 0x000000ff;\n out[i + 1] = 0x0000ff00;\n out[i + 2] = 0x00ff0000;\n out[i + 3] = 0xff000000;\n }\n\n return stripes[width] = new Uint8Array(out.buffer);\n }\n\n function initProgram(vertexShaderSource, fragmentShaderSource) {\n var vertexShader = compileShader(gl.VERTEX_SHADER, vertexShaderSource);\n var fragmentShader = compileShader(gl.FRAGMENT_SHADER, fragmentShaderSource);\n var program = gl.createProgram();\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader);\n gl.linkProgram(program);\n\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n var err = gl.getProgramInfoLog(program);\n gl.deleteProgram(program);\n throw new Error('GL program linking failed: ' + err);\n }\n\n return program;\n }\n\n function init() {\n if (WebGLFrameSink.stripe) {\n unpackProgram = initProgram(shaders.vertexStripe, shaders.fragmentStripe);\n unpackPositionLocation = gl.getAttribLocation(unpackProgram, 'aPosition');\n unpackTexturePositionBuffer = gl.createBuffer();\n var textureRectangle = new Float32Array([0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1]);\n gl.bindBuffer(gl.ARRAY_BUFFER, unpackTexturePositionBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, textureRectangle, gl.STATIC_DRAW);\n unpackTexturePositionLocation = gl.getAttribLocation(unpackProgram, 'aTexturePosition');\n stripeLocation = gl.getUniformLocation(unpackProgram, 'uStripe');\n unpackTextureLocation = gl.getUniformLocation(unpackProgram, 'uTexture');\n }\n\n program = initProgram(shaders.vertex, shaders.fragment);\n buf = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, buf);\n gl.bufferData(gl.ARRAY_BUFFER, rectangle, gl.STATIC_DRAW);\n positionLocation = gl.getAttribLocation(program, 'aPosition');\n lumaPositionBuffer = gl.createBuffer();\n lumaPositionLocation = gl.getAttribLocation(program, 'aLumaPosition');\n chromaPositionBuffer = gl.createBuffer();\n chromaPositionLocation = gl.getAttribLocation(program, 'aChromaPosition');\n }\n /**\n * Actually draw a frame.\n * @param {YUVFrame} buffer - YUV frame buffer object\n */\n\n\n self.drawFrame = function (buffer) {\n var format = buffer.format;\n var formatUpdate = !program || canvas.width !== format.displayWidth || canvas.height !== format.displayHeight;\n\n if (formatUpdate) {\n // Keep the canvas at the right size...\n canvas.width = format.displayWidth;\n canvas.height = format.displayHeight;\n self.clear();\n }\n\n if (!program) {\n init();\n }\n\n if (formatUpdate) {\n var setupTexturePosition = function setupTexturePosition(buffer, location, texWidth) {\n // Warning: assumes that the stride for Cb and Cr is the same size in output pixels\n var textureX0 = format.cropLeft / texWidth;\n var textureX1 = (format.cropLeft + format.cropWidth) / texWidth;\n var textureY0 = (format.cropTop + format.cropHeight) / format.height;\n var textureY1 = format.cropTop / format.height;\n var textureRectangle = new Float32Array([textureX0, textureY0, textureX1, textureY0, textureX0, textureY1, textureX0, textureY1, textureX1, textureY0, textureX1, textureY1]);\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.bufferData(gl.ARRAY_BUFFER, textureRectangle, gl.STATIC_DRAW);\n };\n\n setupTexturePosition(lumaPositionBuffer, lumaPositionLocation, buffer.y.stride);\n setupTexturePosition(chromaPositionBuffer, chromaPositionLocation, buffer.u.stride * format.width / format.chromaWidth);\n } // Create or update the textures...\n\n\n uploadTexture('uTextureY', formatUpdate, buffer.y.stride, format.height, buffer.y.bytes);\n uploadTexture('uTextureCb', formatUpdate, buffer.u.stride, format.chromaHeight, buffer.u.bytes);\n uploadTexture('uTextureCr', formatUpdate, buffer.v.stride, format.chromaHeight, buffer.v.bytes);\n\n if (WebGLFrameSink.stripe) {\n // Unpack the textures after upload to avoid blocking on GPU\n unpackTexture('uTextureY', formatUpdate, buffer.y.stride, format.height);\n unpackTexture('uTextureCb', formatUpdate, buffer.u.stride, format.chromaHeight);\n unpackTexture('uTextureCr', formatUpdate, buffer.v.stride, format.chromaHeight);\n } // Set up the rectangle and draw it\n\n\n gl.useProgram(program);\n gl.viewport(0, 0, canvas.width, canvas.height);\n attachTexture('uTextureY', gl.TEXTURE0, 0);\n attachTexture('uTextureCb', gl.TEXTURE1, 1);\n attachTexture('uTextureCr', gl.TEXTURE2, 2); // Set up geometry\n\n gl.bindBuffer(gl.ARRAY_BUFFER, buf);\n gl.enableVertexAttribArray(positionLocation);\n gl.vertexAttribPointer(positionLocation, 2, gl.FLOAT, false, 0, 0); // Set up the texture geometry...\n\n gl.bindBuffer(gl.ARRAY_BUFFER, lumaPositionBuffer);\n gl.enableVertexAttribArray(lumaPositionLocation);\n gl.vertexAttribPointer(lumaPositionLocation, 2, gl.FLOAT, false, 0, 0);\n gl.bindBuffer(gl.ARRAY_BUFFER, chromaPositionBuffer);\n gl.enableVertexAttribArray(chromaPositionLocation);\n gl.vertexAttribPointer(chromaPositionLocation, 2, gl.FLOAT, false, 0, 0); // Aaaaand draw stuff.\n\n gl.drawArrays(gl.TRIANGLES, 0, rectangle.length / 2);\n };\n\n self.clear = function () {\n gl.viewport(0, 0, canvas.width, canvas.height);\n gl.clearColor(0.0, 0.0, 0.0, 0.0);\n gl.clear(gl.COLOR_BUFFER_BIT);\n };\n\n self.clear();\n return self;\n } // Optional performance hack for Windows; luminance and alpha textures are\n // ssllooww to upload on some machines, so we pack into RGBA and unpack in\n // the shaders.\n //\n // Some browsers / GPUs seem to have no problem with this, others have\n // a huge impact in CPU doing the texture uploads.\n //\n // For instance on macOS 12.2 on a MacBook Pro 2018 with AMD GPU it\n // can real down at high res. This is partially compensated for by\n // improving the upload-vs-update behavior for the alpha textures.\n //\n // Currently keeping it off as of April 2022, but leaving it in so it\n // can be enabled if desired.\n\n\n WebGLFrameSink.stripe = false;\n\n WebGLFrameSink.contextForCanvas = function (canvas) {\n var options = {\n // Don't trigger discrete GPU in multi-GPU systems\n preferLowPowerToHighPerformance: true,\n powerPreference: 'low-power',\n // Don't try to use software GL rendering!\n failIfMajorPerformanceCaveat: true,\n // In case we need to capture the resulting output.\n preserveDrawingBuffer: true\n };\n return canvas.getContext('webgl', options) || canvas.getContext('experimental-webgl', options);\n };\n /**\n * Static function to check if WebGL will be available with appropriate features.\n *\n * @returns {boolean} - true if available\n */\n\n\n WebGLFrameSink.isAvailable = function () {\n var canvas = document.createElement('canvas'),\n gl;\n canvas.width = 1;\n canvas.height = 1;\n\n try {\n gl = WebGLFrameSink.contextForCanvas(canvas);\n } catch (e) {\n return false;\n }\n\n if (gl) {\n var register = gl.TEXTURE0,\n width = 4,\n height = 4,\n texture = gl.createTexture(),\n data = new Uint8Array(width * height),\n texWidth = WebGLFrameSink.stripe ? width / 4 : width,\n format = WebGLFrameSink.stripe ? gl.RGBA : gl.ALPHA,\n filter = WebGLFrameSink.stripe ? gl.NEAREST : gl.LINEAR;\n gl.activeTexture(register);\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, filter);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, filter);\n gl.texImage2D(gl.TEXTURE_2D, 0, // mip level\n format, // internal format\n texWidth, height, 0, // border\n format, // format\n gl.UNSIGNED_BYTE, //type\n data // data!\n );\n var err = gl.getError();\n\n if (err) {\n // Doesn't support alpha textures?\n return false;\n } else {\n return true;\n }\n } else {\n return false;\n }\n };\n\n WebGLFrameSink.prototype = Object.create(FrameSink.prototype);\n module.exports = WebGLFrameSink;\n})();\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/yuv-canvas/src/WebGLFrameSink.js?"); | |
| 2936 | - | |
| 2937 | -/***/ }), | |
| 2938 | - | |
| 2939 | -/***/ "./node_modules/yuv-canvas/src/YCbCr.js": | |
| 2940 | -/*!**********************************************!*\ | |
| 2941 | - !*** ./node_modules/yuv-canvas/src/YCbCr.js ***! | |
| 2942 | - \**********************************************/ | |
| 2943 | -/*! no static exports found */ | |
| 2944 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2945 | - | |
| 2946 | -eval("/*\nCopyright (c) 2014-2019 Brion Vibber <brion@pobox.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n(function () {\n \"use strict\";\n\n var depower = __webpack_require__(/*! ./depower.js */ \"./node_modules/yuv-canvas/src/depower.js\");\n /**\n * Basic YCbCr->RGB conversion\n *\n * @author Brion Vibber <brion@pobox.com>\n * @copyright 2014-2019\n * @license MIT-style\n *\n * @param {YUVFrame} buffer - input frame buffer\n * @param {Uint8ClampedArray} output - array to draw RGBA into\n * Assumes that the output array already has alpha channel set to opaque.\n */\n\n\n function convertYCbCr(buffer, output) {\n var width = buffer.format.width | 0,\n height = buffer.format.height | 0,\n hdec = depower(buffer.format.width / buffer.format.chromaWidth) | 0,\n vdec = depower(buffer.format.height / buffer.format.chromaHeight) | 0,\n bytesY = buffer.y.bytes,\n bytesCb = buffer.u.bytes,\n bytesCr = buffer.v.bytes,\n strideY = buffer.y.stride | 0,\n strideCb = buffer.u.stride | 0,\n strideCr = buffer.v.stride | 0,\n outStride = width << 2,\n YPtr = 0,\n Y0Ptr = 0,\n Y1Ptr = 0,\n CbPtr = 0,\n CrPtr = 0,\n outPtr = 0,\n outPtr0 = 0,\n outPtr1 = 0,\n colorCb = 0,\n colorCr = 0,\n multY = 0,\n multCrR = 0,\n multCbCrG = 0,\n multCbB = 0,\n x = 0,\n y = 0,\n xdec = 0,\n ydec = 0;\n\n if (hdec == 1 && vdec == 1) {\n // Optimize for 4:2:0, which is most common\n outPtr0 = 0;\n outPtr1 = outStride;\n ydec = 0;\n\n for (y = 0; y < height; y += 2) {\n Y0Ptr = y * strideY | 0;\n Y1Ptr = Y0Ptr + strideY | 0;\n CbPtr = ydec * strideCb | 0;\n CrPtr = ydec * strideCr | 0;\n\n for (x = 0; x < width; x += 2) {\n colorCb = bytesCb[CbPtr++] | 0;\n colorCr = bytesCr[CrPtr++] | 0; // Quickie YUV conversion\n // https://en.wikipedia.org/wiki/YCbCr#ITU-R_BT.2020_conversion\n // multiplied by 256 for integer-friendliness\n\n multCrR = (409 * colorCr | 0) - 57088 | 0;\n multCbCrG = (100 * colorCb | 0) + (208 * colorCr | 0) - 34816 | 0;\n multCbB = (516 * colorCb | 0) - 70912 | 0;\n multY = 298 * bytesY[Y0Ptr++] | 0;\n output[outPtr0] = multY + multCrR >> 8;\n output[outPtr0 + 1] = multY - multCbCrG >> 8;\n output[outPtr0 + 2] = multY + multCbB >> 8;\n outPtr0 += 4;\n multY = 298 * bytesY[Y0Ptr++] | 0;\n output[outPtr0] = multY + multCrR >> 8;\n output[outPtr0 + 1] = multY - multCbCrG >> 8;\n output[outPtr0 + 2] = multY + multCbB >> 8;\n outPtr0 += 4;\n multY = 298 * bytesY[Y1Ptr++] | 0;\n output[outPtr1] = multY + multCrR >> 8;\n output[outPtr1 + 1] = multY - multCbCrG >> 8;\n output[outPtr1 + 2] = multY + multCbB >> 8;\n outPtr1 += 4;\n multY = 298 * bytesY[Y1Ptr++] | 0;\n output[outPtr1] = multY + multCrR >> 8;\n output[outPtr1 + 1] = multY - multCbCrG >> 8;\n output[outPtr1 + 2] = multY + multCbB >> 8;\n outPtr1 += 4;\n }\n\n outPtr0 += outStride;\n outPtr1 += outStride;\n ydec++;\n }\n } else {\n outPtr = 0;\n\n for (y = 0; y < height; y++) {\n xdec = 0;\n ydec = y >> vdec;\n YPtr = y * strideY | 0;\n CbPtr = ydec * strideCb | 0;\n CrPtr = ydec * strideCr | 0;\n\n for (x = 0; x < width; x++) {\n xdec = x >> hdec;\n colorCb = bytesCb[CbPtr + xdec] | 0;\n colorCr = bytesCr[CrPtr + xdec] | 0; // Quickie YUV conversion\n // https://en.wikipedia.org/wiki/YCbCr#ITU-R_BT.2020_conversion\n // multiplied by 256 for integer-friendliness\n\n multCrR = (409 * colorCr | 0) - 57088 | 0;\n multCbCrG = (100 * colorCb | 0) + (208 * colorCr | 0) - 34816 | 0;\n multCbB = (516 * colorCb | 0) - 70912 | 0;\n multY = 298 * bytesY[YPtr++] | 0;\n output[outPtr] = multY + multCrR >> 8;\n output[outPtr + 1] = multY - multCbCrG >> 8;\n output[outPtr + 2] = multY + multCbB >> 8;\n outPtr += 4;\n }\n }\n }\n }\n\n module.exports = {\n convertYCbCr: convertYCbCr\n };\n})();\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/yuv-canvas/src/YCbCr.js?"); | |
| 2947 | - | |
| 2948 | -/***/ }), | |
| 2949 | - | |
| 2950 | -/***/ "./node_modules/yuv-canvas/src/depower.js": | |
| 2951 | -/*!************************************************!*\ | |
| 2952 | - !*** ./node_modules/yuv-canvas/src/depower.js ***! | |
| 2953 | - \************************************************/ | |
| 2954 | -/*! no static exports found */ | |
| 2955 | -/***/ (function(module, exports) { | |
| 2956 | - | |
| 2957 | -eval("/*\nCopyright (c) 2014-2016 Brion Vibber <brion@pobox.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n(function () {\n \"use strict\";\n /**\n * Convert a ratio into a bit-shift count; for instance a ratio of 2\n * becomes a bit-shift of 1, while a ratio of 1 is a bit-shift of 0.\n *\n * @author Brion Vibber <brion@pobox.com>\n * @copyright 2016\n * @license MIT-style\n *\n * @param {number} ratio - the integer ratio to convert.\n * @returns {number} - number of bits to shift to multiply/divide by the ratio.\n * @throws exception if given a non-power-of-two\n */\n\n function depower(ratio) {\n var shiftCount = 0,\n n = ratio >> 1;\n\n while (n != 0) {\n n = n >> 1;\n shiftCount++;\n }\n\n if (ratio !== 1 << shiftCount) {\n throw 'chroma plane dimensions must be power of 2 ratio to luma plane dimensions; got ' + ratio;\n }\n\n return shiftCount;\n }\n\n module.exports = depower;\n})();\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/yuv-canvas/src/depower.js?"); | |
| 2958 | - | |
| 2959 | -/***/ }), | |
| 2960 | - | |
| 2961 | -/***/ "./node_modules/yuv-canvas/src/yuv-canvas.js": | |
| 2962 | -/*!***************************************************!*\ | |
| 2963 | - !*** ./node_modules/yuv-canvas/src/yuv-canvas.js ***! | |
| 2964 | - \***************************************************/ | |
| 2965 | -/*! no static exports found */ | |
| 2966 | -/***/ (function(module, exports, __webpack_require__) { | |
| 2967 | - | |
| 2968 | -eval("/*\nCopyright (c) 2014-2016 Brion Vibber <brion@pobox.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n(function () {\n \"use strict\";\n\n var FrameSink = __webpack_require__(/*! ./FrameSink.js */ \"./node_modules/yuv-canvas/src/FrameSink.js\"),\n SoftwareFrameSink = __webpack_require__(/*! ./SoftwareFrameSink.js */ \"./node_modules/yuv-canvas/src/SoftwareFrameSink.js\"),\n WebGLFrameSink = __webpack_require__(/*! ./WebGLFrameSink.js */ \"./node_modules/yuv-canvas/src/WebGLFrameSink.js\");\n /**\n * @typedef {Object} YUVCanvasOptions\n * @property {boolean} webGL - Whether to use WebGL to draw to the canvas and accelerate color space conversion. If left out, defaults to auto-detect.\n */\n\n\n var YUVCanvas = {\n FrameSink: FrameSink,\n SoftwareFrameSink: SoftwareFrameSink,\n WebGLFrameSink: WebGLFrameSink,\n\n /**\n * Attach a suitable FrameSink instance to an HTML5 canvas element.\n *\n * This will take over the drawing context of the canvas and may turn\n * it into a WebGL 3d canvas if possible. Do not attempt to use the\n * drawing context directly after this.\n *\n * @param {HTMLCanvasElement} canvas - HTML canvas element to attach to\n * @param {YUVCanvasOptions} options - map of options\n * @returns {FrameSink} - instance of suitable subclass.\n */\n attach: function attach(canvas, options) {\n options = options || {};\n var webGL = 'webGL' in options ? options.webGL : WebGLFrameSink.isAvailable();\n\n if (webGL) {\n return new WebGLFrameSink(canvas, options);\n } else {\n return new SoftwareFrameSink(canvas, options);\n }\n }\n };\n module.exports = YUVCanvas;\n})();\n\n//# sourceURL=webpack://WebMediaPlayer/./node_modules/yuv-canvas/src/yuv-canvas.js?"); | |
| 2969 | - | |
| 2970 | -/***/ }), | |
| 2971 | - | |
| 2972 | -/***/ "./src/FlvPlayer/AudioWorker.js": | |
| 2973 | -/*!**************************************!*\ | |
| 2974 | - !*** ./src/FlvPlayer/AudioWorker.js ***! | |
| 2975 | - \**************************************/ | |
| 2976 | -/*! exports provided: default */ | |
| 2977 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 2978 | - | |
| 2979 | -"use strict"; | |
| 2980 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/common */ \"./src/common/common.js\");\n/* harmony import */ var _common_soundPlayer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/soundPlayer */ \"./src/common/soundPlayer.js\");\n\n\n\nvar AudioWorker = function AudioWorker(self) {\n console.log('new AudioWorker.js');\n self._requestAbort = false;\n self.soundPlayer = null;\n self.audioSampleQueue = [];\n\n var clearAudioQueue = function clearAudioQueue() {\n self.audioSampleQueue.length = 0;\n self.audioSampleQueue = []; //console.log(\"clean audio queue.\");\n };\n\n var OpenAudioPlayer = function OpenAudioPlayer(sampleFmt, channels, sampleRate) {\n if (self.soundPlayer == null) {\n var encoding = '16bitInt';\n\n switch (sampleFmt) {\n case 0:\n encoding = '8bitInt';\n break;\n\n case 1:\n encoding = '16bitInt';\n break;\n\n case 2:\n encoding = '32bitInt';\n break;\n\n case 3:\n encoding = '32bitFloat';\n break;\n\n default:\n this.logger.logError('Unsupported audio sampleFmt ' + sampleFmt + '!');\n }\n\n self.soundPlayer = new _common_soundPlayer__WEBPACK_IMPORTED_MODULE_1__[\"default\"]();\n self.soundPlayer.init({\n encoding: encoding,\n channels: channels,\n sampleRate: sampleRate,\n flushingTime: 5000\n });\n }\n };\n\n self.addEventListener('message', function (ev) {\n var data = ev.data;\n console.log('AudioWorker: recv data.');\n\n switch (data.cmd) {\n case _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tOpenStream\"]:\n console.log('init audio player.');\n OpenAudioPlayer(1, 2, 8000); //OpenAudioPlayer(1, 2, 32000);\n\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tFrameData\"]:\n console.log('recv audio data...');\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tCloseStream\"]:\n self._requestAbort = true;\n break;\n\n default:\n break;\n }\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AudioWorker);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/AudioWorker.js?"); | |
| 2981 | - | |
| 2982 | -/***/ }), | |
| 2983 | - | |
| 2984 | -/***/ "./src/FlvPlayer/TSDemuxer.js": | |
| 2985 | -/*!************************************!*\ | |
| 2986 | - !*** ./src/FlvPlayer/TSDemuxer.js ***! | |
| 2987 | - \************************************/ | |
| 2988 | -/*! exports provided: default */ | |
| 2989 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 2990 | - | |
| 2991 | -"use strict"; | |
| 2992 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/common */ \"./src/common/common.js\");\n/* harmony import */ var _adts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./adts */ \"./src/FlvPlayer/adts.js\");\n/* harmony import */ var _exp_golomb__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./exp-golomb */ \"./src/FlvPlayer/exp-golomb.js\");\n/* harmony import */ var _flv_js_demux_sps_parser_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./flv.js/demux/sps-parser.js */ \"./src/FlvPlayer/flv.js/demux/sps-parser.js\");\n/* harmony import */ var _flv_js_core_media_info_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./flv.js/core/media-info.js */ \"./src/FlvPlayer/flv.js/core/media-info.js\");\n/* harmony import */ var _flv_js_demux_flv_demuxer_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./flv.js/demux/flv-demuxer.js */ \"./src/FlvPlayer/flv.js/demux/flv-demuxer.js\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n\n\n\n\n\n\n\nvar TSDemuxer = /*#__PURE__*/function () {\n function TSDemuxer(config, callbackMediaDataFunc, callbackMediaDataUserPtr) {\n this.TAG = 'TSDemuxer';\n this._config = config;\n this._onError = null;\n this._onMediaInfo = null;\n this._onMetaDataArrived = null;\n this._onScriptDataArrived = null;\n this._onTrackMetadata = null;\n this._onDataAvailable = null;\n this._hasAudio = false;\n this._hasVideo = false;\n this._hasAudioFlagOverrided = false;\n this._hasVideoFlagOverrided = false;\n this._initVideoMetadata = false;\n this._initAudioMetadata = false;\n this._mediaInfo = new _flv_js_core_media_info_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]();\n this._mediaInfo.hasAudio = false;\n this._mediaInfo.hasVideo = false;\n this._metadata = null;\n this._audioMetadata = null;\n this._videoMetadata = null;\n this.tagPosition = 0;\n this.filePosition = 0;\n this.isHEVC = 0;\n this.isAAC = 0;\n this.avcTrackPid = -1;\n this.audioTrackPid = -1;\n this.id3TrackPid = -1;\n this.audioSampleRate = 0;\n this.audioChannel = 2;\n this.audioBitPerSample = 16;\n this.avcTrackPesData = null;\n this.audioTrackPesData = null;\n this.id3TrackPesData = null;\n this.findKeyframe = true;\n this.syncVideoPts = 0;\n this.syncAudioPts = 0;\n this.startVideoPts = 0;\n this.startAudioPts = 0; //this.currVideoPts = 0;\n\n this.accurateTimeOffset = 0;\n this.lastVideoPts = 0;\n this.currentVideoPts = 0;\n this.seekVideoHistoryPts = 0;\n this.currentAudioPts = 0;\n this.audioFrameNum = 0;\n this.reset = 0; //===============================================\n\n this._videoTrack = {\n type: 'video',\n id: 1,\n sequenceNumber: 0,\n samples: [],\n length: 0\n };\n this._audioTrack = {\n type: 'audio',\n id: 2,\n sequenceNumber: 0,\n samples: [],\n length: 0\n };\n this._timestampBase = 0; // int32, in milliseconds\n\n this._timescale = 1000;\n this._duration = 0; // int32, in milliseconds\n\n this._durationOverrided = false;\n this._AVC_SPS = null;\n this._AVC_PPS = null;\n this._HEVC_VPS = null;\n this._HEVC_SPS = null;\n this._HEVC_PPS = null;\n this._StartCode = [0, 0, 0, 1];\n this._AVC_Config = null;\n this._callbackInitFlag = false;\n this._callbackMediaDataFunc = callbackMediaDataFunc;\n this._callbackMediaDataUserPtr = callbackMediaDataUserPtr;\n } //=================================================================\n\n\n var _proto = TSDemuxer.prototype;\n\n _proto.bindDataSource = function bindDataSource(loader) {\n loader.onDataArrival = this.append.bind(this);\n return this;\n } // prototype: function(type: string, metadata: any): void\n ;\n\n _proto.resetMediaInfo = function resetMediaInfo() {\n this._mediaInfo = new _flv_js_core_media_info_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]();\n };\n\n _proto.resetMediaPts = function resetMediaPts(flag) {\n this.reset = flag;\n this.syncVideoPts = 0;\n this.syncAudioPts = 0;\n this.findKeyframe = true;\n this._videoTrack.samples = [];\n this._audioTrack.samples = [];\n return;\n this.startVideoPts = 0;\n this.startAudioPts = 0;\n this.accurateTimeOffset = 0; //this.lastVideoPts = 0;\n\n this.currentAudioPts = 0;\n this.audioFrameNum = 0;\n };\n\n _proto._onDataAvailableToSoftwareDecodeVideo = function _onDataAvailableToSoftwareDecodeVideo(codecId, videoTrack) {\n var track = videoTrack;\n var samples = track.samples;\n\n if (codecId < 1 && samples.length > 0) {\n console.log('EXCEPTION:: No used...');\n return;\n }\n\n var idx = -1;\n\n if (samples.length > 1) {\n //console.log(\"frame num: \" + samples.length);\n idx = 0;\n }\n\n while (samples.length) {\n var sample = samples.shift();\n var frameLength = 0;\n\n for (var j = 0; j < sample.units.length; j++) {\n frameLength += sample.units[j].data.length;\n }\n\n var offset = 0;\n var bufdata = new Uint8Array(frameLength); //for (let j = 0; j < sample.units.length; j++) {\n\n while (sample.units.length) {\n var unit = sample.units.shift();\n\n if (codecId == 27) {\n unit.data[0] = 0;\n unit.data[1] = 0;\n unit.data[2] = 0;\n unit.data[3] = 1;\n }\n\n bufdata.set(unit.data, offset);\n offset += unit.data.length;\n }\n\n if (this._callbackMediaDataFunc) {\n //console.log(\"Decode: \" + bufdata);\n //console.log(\"Decode: \" + frameLength);\n if (idx >= 0) {\n //console.log(\"frame idx \" + idx + \" length: \" + frameLength);// + \":\" + bufdata);\n idx++;\n } //console.log(\"TSDemuxer.js::callback pts: \" + sample.pts);\n //mediaType, codecId, framedata, framesize, samplerate, channels, bitPerSample) {\n\n\n this._callbackMediaDataFunc(this._callbackMediaDataUserPtr, true, 1, codecId, sample.isKeyframe, bufdata, frameLength, sample.pts, 0, 0);\n }\n }\n };\n\n _proto._onDataAvailableToSoftwareDecodeAudio = function _onDataAvailableToSoftwareDecodeAudio(codecId, audioTrack) {\n //console.log(\"proc audio frame....\" + codecId + \" samples: \" + audioTrack.samples.length);\n var track = audioTrack;\n var samples = track.samples;\n var idx = -1;\n\n if (samples.length > 1) {\n //console.log(\"frame num: \" + samples.length);\n idx = 0;\n }\n\n while (samples.length) {\n var sample = samples.shift();\n\n if (this._callbackMediaDataFunc) {\n //console.log(\"Decode audio: \" + sample.unit);\n //console.log(\"Decode: \" + frameLength);\n if (idx >= 0) {\n //console.log(\"frame idx \" + idx + \" length: \" + frameLength);// + \":\" + bufdata);\n idx++;\n } //mediaType, codecId, framedata, framesize, samplerate, channels, bitPerSample) {\n\n\n this._callbackMediaDataFunc(this._callbackMediaDataUserPtr, true, 2, codecId, 0, sample.unit, sample.length, this._SampleRate, this._ChannelNum, this._SampleRate >= 44100 ? 32 : 16);\n }\n }\n } //=================================================================\n\n /**\n * Creates a track model internal to demuxer used to drive remuxing input\n *\n * @param {string} type 'audio' | 'video' | 'id3' | 'text'\n * @param {number} duration\n * @return {object} TSDemuxer's internal track model\n */\n ;\n\n TSDemuxer.createTrack = function createTrack(type, duration) {\n return {\n container: type === 'video' || type === 'audio' ? 'video/mp2t' : undefined,\n type: type,\n id: RemuxerTrackIdConfig[type],\n pid: -1,\n inputTimeScale: 90000,\n sequenceNumber: 0,\n samples: [],\n dropped: type === 'video' ? 0 : undefined,\n isAAC: type === 'audio' ? true : undefined,\n duration: type === 'audio' ? duration : undefined,\n isHEVC: 0\n };\n };\n\n TSDemuxer._syncOffset = function _syncOffset(data) {\n // scan 1000 first bytes\n var scanwindow = Math.min(1000, data.length - 3 * 188);\n var i = 0;\n\n while (i < scanwindow) {\n // a TS fragment should contain at least 3 TS packets, a PAT, a PMT, and one PID, each starting with 0x47\n if (data[i] === 0x47 && data[i + 188] === 0x47 && data[i + 2 * 188] === 0x47) {\n return i;\n } else {\n i++;\n }\n }\n\n return -1;\n };\n\n _proto.destroy = function destroy() {\n this._initPTS = this._initDTS = undefined;\n this._duration = 0;\n };\n\n _proto.parsePAT = function parsePAT(data, offset) {\n // skip the PSI header and parse the first PMT entry\n return (data[offset + 10] & 0x1F) << 8 | data[offset + 11]; // logger.log('PMT PID:' + this._pmtId);\n };\n\n _proto.parsePMT = function parsePMT(data, offset, mpegSupported, isSampleAes) {\n var sectionLength,\n tableEnd,\n programInfoLength,\n pid,\n result = {\n audio: -1,\n avc: -1,\n hevc: -1,\n id3: -1,\n isAAC: true\n };\n sectionLength = (data[offset + 1] & 0x0f) << 8 | data[offset + 2];\n tableEnd = offset + 3 + sectionLength - 4; // to determine where the table is, we have to figure out how\n // long the program info descriptors are\n\n programInfoLength = (data[offset + 10] & 0x0f) << 8 | data[offset + 11]; // advance the offset to the first entry in the mapping table\n\n offset += 12 + programInfoLength;\n\n while (offset < tableEnd) {\n pid = (data[offset + 1] & 0x1F) << 8 | data[offset + 2];\n\n switch (data[offset]) {\n case 0xcf:\n // SAMPLE-AES AAC\n if (!isSampleAes) {\n //logger.log('unknown stream type:' + data[offset]);\n break;\n }\n\n /* falls through */\n // ISO/IEC 13818-7 ADTS AAC (MPEG-2 lower bit-rate audio)\n\n case 0x0f:\n // logger.log('AAC PID:' + pid);\n if (result.audio === -1) {\n result.audio = pid;\n }\n\n break;\n // Packetized metadata (ID3)\n\n case 0x15:\n // logger.log('ID3 PID:' + pid);\n if (result.id3 === -1) {\n result.id3 = pid;\n }\n\n break;\n\n case 0xdb:\n // SAMPLE-AES AVC\n if (!isSampleAes) {\n logger.log('unknown stream type:' + data[offset]);\n break;\n }\n\n /* falls through */\n // ITU-T Rec. H.264 and ISO/IEC 14496-10 (lower bit-rate video)\n\n case 0x1b:\n // logger.log('AVC PID:' + pid);\n if (result.avc === -1) {\n result.avc = pid;\n }\n\n _common_common__WEBPACK_IMPORTED_MODULE_0__[\"setCodecTypeStr\"]('H264');\n break;\n //gavin\n\n case 0x24:\n if (result.avc === -1) {\n result.avc = pid;\n result.hevc = pid;\n }\n\n _common_common__WEBPACK_IMPORTED_MODULE_0__[\"setCodecTypeStr\"]('H265');\n break;\n // ISO/IEC 11172-3 (MPEG-1 audio)\n // or ISO/IEC 13818-3 (MPEG-2 halved sample rate audio)\n\n case 0x03:\n case 0x04:\n // logger.log('MPEG PID:' + pid);\n if (!mpegSupported) {\n logger.log('MPEG audio found, not supported in this browser for now');\n } else if (result.audio === -1) {\n result.audio = pid;\n result.isAAC = false;\n }\n\n break;\n\n case 0x24:\n console.warn('HEVC stream type found, not supported for now');\n break;\n\n default:\n //logger.log('unknown stream type:' + data[offset]);\n break;\n } // move to the next table entry\n // skip past the elementary stream descriptors, if present\n\n\n offset += ((data[offset + 3] & 0x0F) << 8 | data[offset + 4]) + 5;\n }\n\n return result;\n };\n\n _proto.parsePES = function parsePES(stream) {\n if (this.reset === 1) {\n return;\n }\n\n var i = 0,\n frag,\n pesFlags,\n pesPrefix,\n pesLen,\n pesHdrLen,\n pesData,\n pesPts,\n pesDts,\n payloadStartOffset,\n data = stream.data; // safety check\n\n if (!stream || stream.size === 0) {\n return null;\n } // we might need up to 19 bytes to read PES header\n // if first chunk of data is less than 19 bytes, let's merge it with following ones until we get 19 bytes\n // usually only one merge is needed (and this is rare ...)\n\n\n while (data[0].length < 19 && data.length > 1) {\n var newData = new Uint8Array(data[0].length + data[1].length);\n newData.set(data[0]);\n newData.set(data[1], data[0].length);\n data[0] = newData;\n data.splice(1, 1);\n } // retrieve PTS/DTS from first fragment\n\n\n frag = data[0];\n pesPrefix = (frag[0] << 16) + (frag[1] << 8) + frag[2];\n\n if (pesPrefix === 1) {\n pesLen = (frag[4] << 8) + frag[5]; // if PES parsed length is not zero and greater than total received length, stop parsing. PES might be truncated\n // minus 6 : PES header size\n\n if (pesLen && pesLen > stream.size - 6) {\n return null;\n }\n\n pesFlags = frag[7];\n\n if (pesFlags & 0xC0) {\n /* PES header described here : http://dvd.sourceforge.net/dvdinfo/pes-hdr.html\n as PTS / DTS is 33 bit we cannot use bitwise operator in JS,\n as Bitwise operators treat their operands as a sequence of 32 bits */\n pesPts = (frag[9] & 0x0E) * 536870912 + // 1 << 29\n (frag[10] & 0xFF) * 4194304 + // 1 << 22\n (frag[11] & 0xFE) * 16384 + // 1 << 14\n (frag[12] & 0xFF) * 128 + // 1 << 7\n (frag[13] & 0xFE) / 2; //console.log(\"AUDIO Raw PTS: \" + pesPts);\n // check if greater than 2^32 -1\n\n if (pesPts > 4294967295) {\n // decrement 2^33\n //pesPts -= 8589934592;\n pesPts -= 4294967295; //gavin\n }\n\n if (pesFlags & 0x40) {\n pesDts = (frag[14] & 0x0E) * 536870912 + // 1 << 29\n (frag[15] & 0xFF) * 4194304 + // 1 << 22\n (frag[16] & 0xFE) * 16384 + // 1 << 14\n (frag[17] & 0xFF) * 128 + // 1 << 7\n (frag[18] & 0xFE) / 2; // check if greater than 2^32 -1\n\n if (pesDts > 4294967295) {\n // decrement 2^33\n //pesDts -= 8589934592;\n pesDts -= 4294967295;\n }\n\n if (pesPts - pesDts > 60 * 90000) {\n console.warn(Math.round((pesPts - pesDts) / 90000) + \"s delta between PTS and DTS, align them\");\n pesPts = pesDts;\n }\n } else {\n pesDts = pesPts;\n }\n }\n\n pesHdrLen = frag[8]; // 9 bytes : 6 bytes for PES header + 3 bytes for PES extension\n\n payloadStartOffset = pesHdrLen + 9;\n\n if (stream.size <= payloadStartOffset) {\n return null;\n }\n\n stream.size -= payloadStartOffset; // reassemble PES packet\n\n pesData = new Uint8Array(stream.size);\n\n for (var j = 0, dataLen = data.length; j < dataLen; j++) {\n frag = data[j];\n var len = frag.byteLength;\n\n if (payloadStartOffset) {\n if (payloadStartOffset > len) {\n // trim full frag if PES header bigger than frag\n payloadStartOffset -= len;\n continue;\n } else {\n // trim partial frag if PES header smaller than frag\n frag = frag.subarray(payloadStartOffset);\n len -= payloadStartOffset;\n payloadStartOffset = 0;\n }\n }\n\n pesData.set(frag, i);\n i += len;\n }\n\n if (pesLen) {\n // payload size : remove PES header + PES extension\n pesLen -= pesHdrLen + 3;\n }\n\n return {\n data: pesData,\n pts: pesPts,\n dts: pesDts,\n len: pesLen\n };\n } else {\n return null;\n }\n };\n\n _proto.pushAccesUnit = function pushAccesUnit(avcSample, avcTrack) {\n if (avcSample.units.length && avcSample.frame) {\n var samples = avcTrack.samples;\n var nbSamples = samples.length; // if sample does not have PTS/DTS, patch with last sample PTS/DTS\n\n if (isNaN(avcSample.pts)) {\n if (nbSamples) {\n var lastSample = samples[nbSamples - 1];\n avcSample.pts = lastSample.pts;\n avcSample.dts = lastSample.dts;\n } else {\n // dropping samples, no timestamp found\n avcTrack.dropped++;\n return;\n }\n } // only push AVC sample if starting with a keyframe is not mandatory OR\n // if keyframe already found in this fragment OR\n // keyframe found in last fragment (track.sps) AND\n // samples already appended (we already found a keyframe in this fragment) OR fragment is contiguous\n\n\n if (!this.config.forceKeyFrameOnDiscontinuity || avcSample.key === true || avcTrack.sps && (nbSamples || this.contiguous)) {\n avcSample.id = nbSamples;\n samples.push(avcSample);\n } else {\n // dropped samples, track it\n avcTrack.dropped++;\n }\n }\n\n if (avcSample.debug.length) {\n logger.log(avcSample.pts + '/' + avcSample.dts + ':' + avcSample.debug);\n }\n };\n\n _proto.parseAVCPES = function parseAVCPES(pes, last, startTimeSecs) {\n var _this = this;\n\n // logger.log('parse new PES');\n\n /*\n var dur = 0;\n if (this.startVideoPts > 0) {\n dur = (pes.pts - this.startVideoPts) / 90000;\n dur += startTimeSecs;\n //console.log(\"dur: \" + dur);\n }\n else {\n this.startVideoPts = pes.pts;\n dur = startTimeSecs;\n //console.log(\"dur... pes: \" + pes.pts);\n }\n */\n var bSetInitPts = 0;\n\n if (this.startVideoPts === 0) {\n this.startVideoPts = pes.pts;\n bSetInitPts = 1;\n } else if (pes.pts < this.startVideoPts) {\n this.startVideoPts = pes.pts;\n bSetInitPts = 1;\n }\n /*\n else if (pes.pts > this.lastVideoPts + 1000*90) {\n this.startVideoPts = pes.pts;\n bSetInitPts = 1;\n }\n if (bSetInitPts === 1) {\n this.lastVideoPts = pes.pts;\n }\n */\n //var videoPts = pes.pts;\n //var oneFramePts = (pes.pts - this.startVideoPts) / 90;\n //pes.pts = oneFramePts + this.currentVideoPts;\n //this.currentVideoPts += oneFramePts;\n //this.startVideoPts = videoPts;\n\n\n this.audioFrameNum = 0; //console.log(\"AVC... pes: \" + pes.pts);\n //var objData = {\n // cmd: common.tFrameData,\n // workerId: common.DOWNLOAD_WORKER_ID,\n // mediaType: 1,\n // codecId: 27,\n // flag: last,\n // pts: pes.pts,\n // playTimeSec: dur,\n // dat: pes.data\n //};\n //self.postMessage(objData, [objData.dat.buffer]);\n\n var units = this._parseAVCNALu(pes.data);\n\n var tmpUnits = [];\n var tmpLength = 0; //return;\n //====================================================================\n\n /*\n let track = this._avcTrack,\n units = this._parseAVCNALu(pes.data),\n debug = false,\n expGolombDecoder,\n avcSample = this.avcSample,\n push,\n spsfound = false,\n i,\n pushAccesUnit = this.pushAccesUnit.bind(this),\n createAVCSample = function (key, pts, dts, debug) {\n return { key: key, pts: pts, dts: dts, units: [], debug: debug };\n };\n // free pes.data to save up some memory\n */\n\n pes.data = null; // if new NAL units found and last sample still there, let's push ...\n // this helps parsing streams with missing AUD (only do this if AUD never found)\n\n /*\n if (avcSample && units.length && !track.audFound) {\n pushAccesUnit(avcSample, track);\n avcSample = this.avcSample = createAVCSample(false, pes.pts, pes.dts, '');\n }\n */\n\n var keyframe = false;\n var push = false;\n var spsfound = false;\n units.forEach(function (unit) {\n var tmpLen = unit.data.length;\n var tmpDat = new Uint8Array(4 + tmpLen);\n tmpDat[0] = tmpLen >> 24 & 0xFF;\n tmpDat[1] = tmpLen >> 16 & 0xFF;\n tmpDat[2] = tmpLen >> 8 & 0xFF;\n tmpDat[3] = tmpLen & 0xFF;\n tmpDat.set(unit.data, 4); //console.log(\"unit.type: \" + unit.type);\n //let tmpUnit = { data: tmpDat, type: unit.type, state: 0 };\n\n var tmpUnit = {\n type: unit.type,\n data: tmpDat\n };\n tmpLength += tmpDat.length;\n tmpUnits.push(tmpUnit);\n\n switch (unit.type) {\n // NDR\n case 1:\n push = true;\n /*\n if (!avcSample) {\n avcSample = this.avcSample = createAVCSample(true, pes.pts, pes.dts, '');\n }\n if (debug) {\n avcSample.debug += 'NDR ';\n }\n avcSample.frame = true;\n */\n\n var data = unit.data; // only check slice type to detect KF in case SPS found in same packet (any keyframe is preceded by SPS ...)\n\n if (spsfound && data.length > 4) {\n // retrieve slice type by parsing beginning of NAL unit (follow H264 spec, slice_header definition) to detect keyframe embedded in NDR\n var sliceType = new _exp_golomb__WEBPACK_IMPORTED_MODULE_2__[\"default\"](data).readSliceType(); // 2 : I slice, 4 : SI slice, 7 : I slice, 9: SI slice\n // SI slice : A slice that is coded using intra prediction only and using quantisation of the prediction samples.\n // An SI slice can be coded such that its decoded samples can be constructed identically to an SP slice.\n // I slice: A slice that is not an SI slice that is decoded using intra prediction only.\n // if (sliceType === 2 || sliceType === 7) {\n\n if (sliceType === 2 || sliceType === 4 || sliceType === 7 || sliceType === 9) {\n //avcSample.key = true;\n console.log('key = true');\n }\n }\n\n break;\n // IDR\n\n case 5:\n push = true;\n _this.findKeyframe = false; //���ҵ��ؼ�֡\n //console.log(\"found IDR\");\n\n keyframe = true; // handle PES not starting with AUD\n\n /*\n if (!avcSample) {\n avcSample = this.avcSample = createAVCSample(true, pes.pts, pes.dts, '');\n }\n if (debug) {\n avcSample.debug += 'IDR ';\n }\n avcSample.key = true;\n avcSample.frame = true;\n */\n\n break;\n // SEI\n\n case 6:\n push = true; //console.log(\"found SEI\");\n\n /*\n if (debug && avcSample) {\n avcSample.debug += 'SEI ';\n }\n */\n\n var expGolombDecoder = new _exp_golomb__WEBPACK_IMPORTED_MODULE_2__[\"default\"](_this.discardEPB(unit.data)); // skip frameType\n\n expGolombDecoder.readUByte();\n var payloadType = 0;\n var payloadSize = 0;\n var endOfCaptions = false;\n var b = 0;\n\n while (!endOfCaptions && expGolombDecoder.bytesAvailable > 1) {\n payloadType = 0;\n\n do {\n b = expGolombDecoder.readUByte();\n payloadType += b;\n } while (b === 0xFF); // Parse payload size.\n\n\n payloadSize = 0;\n\n do {\n b = expGolombDecoder.readUByte();\n payloadSize += b;\n } while (b === 0xFF); // TODO: there can be more than one payload in an SEI packet...\n // TODO: need to read type and size in a while loop to get them all\n\n\n if (payloadType === 4 && expGolombDecoder.bytesAvailable !== 0) {\n endOfCaptions = true;\n var countryCode = expGolombDecoder.readUByte();\n\n if (countryCode === 181) {\n var providerCode = expGolombDecoder.readUShort();\n\n if (providerCode === 49) {\n var userStructure = expGolombDecoder.readUInt();\n\n if (userStructure === 0x47413934) {\n var userDataType = expGolombDecoder.readUByte(); // Raw CEA-608 bytes wrapped in CEA-708 packet\n\n if (userDataType === 3) {\n var firstByte = expGolombDecoder.readUByte();\n var secondByte = expGolombDecoder.readUByte();\n var totalCCs = 31 & firstByte;\n var byteArray = [firstByte, secondByte];\n\n for (i = 0; i < totalCCs; i++) {\n // 3 bytes per CC\n byteArray.push(expGolombDecoder.readUByte());\n byteArray.push(expGolombDecoder.readUByte());\n byteArray.push(expGolombDecoder.readUByte());\n }\n\n _this._insertSampleInOrder(_this._txtTrack.samples, {\n type: 3,\n pts: pes.pts,\n bytes: byteArray\n });\n }\n }\n }\n }\n } else if (payloadType === 5 && expGolombDecoder.bytesAvailable !== 0) {\n endOfCaptions = true;\n\n if (payloadSize > 16) {\n var uuidStrArray = [];\n\n for (i = 0; i < 16; i++) {\n uuidStrArray.push(expGolombDecoder.readUByte().toString(16));\n\n if (i === 3 || i === 5 || i === 7 || i === 9) {\n uuidStrArray.push('-');\n }\n }\n\n var length = payloadSize - 16;\n var userDataPayloadBytes = new Uint8Array(length);\n\n for (i = 0; i < length; i++) {\n userDataPayloadBytes[i] = expGolombDecoder.readUByte();\n }\n /*\n this._insertSampleInOrder(this._txtTrack.samples, {\n pts: pes.pts,\n payloadType: payloadType,\n uuid: uuidStrArray.join(''),\n userDataBytes: userDataPayloadBytes,\n userData: utf8ArrayToStr(userDataPayloadBytes.buffer)\n });\n */\n\n }\n } else if (payloadSize < expGolombDecoder.bytesAvailable) {\n for (i = 0; i < payloadSize; i++) {\n expGolombDecoder.readUByte();\n }\n }\n }\n\n break;\n // SPS\n\n case 7:\n push = true;\n spsfound = true;\n _this.findKeyframe = false; //���ҵ��ؼ�֡\n\n _this.tagPosition = _this.filePosition; //console.log(\"found SPS\");\n\n _this._AVC_Config = _flv_js_demux_sps_parser_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].parseSPS(unit.data);\n var config = _this._AVC_Config;\n var codecString = 'avc1.';\n\n if (config) {\n //console.log(\"config2: \" + config);\n var codecArray = unit.data.subarray(1, 4);\n\n for (var j = 0; j < 3; j++) {\n var h = codecArray[j].toString(16);\n\n if (h.length < 2) {\n h = '0' + h;\n }\n\n codecString += h;\n } //console.log(\"codecString: \" + codecString);\n\n }\n /*\n expGolombDecoder = new ExpGolomb(unit.data);\n let config = expGolombDecoder.readSPS();\n let width = config.width;\n let height = config.height;\n let pixelRatio = config.pixelRatio;\n let sps = [unit.data];\n let duration = this._duration;\n let codecarray = unit.data.subarray(1, 4);\n let codecstring = 'avc1.';\n let i = 0;\n for (i = 0; i < 3; i++) {\n let h = codecarray[i].toString(16);\n if (h.length < 2) {\n h = '0' + h;\n }\n codecstring += h;\n }\n let codec = codecstring;\n console.log(\"parse sps... \" + codec);\n */\n //==========================================================\n\n\n if (!_this._initVideoMetadata) {\n if (_this._AVC_SPS == null) {\n _this._AVC_SPS = new Uint8Array(unit.data.length + 4);\n\n _this._AVC_SPS.set(_this._StartCode, 0);\n\n _this._AVC_SPS.set(unit.data, 4);\n }\n\n var meta = _this._videoMetadata;\n var _track = _this._videoTrack; //let le = this._littleEndian;\n //let v = new DataView(arrayBuffer, dataOffset, dataSize);\n\n if (!meta) {\n if (_this._hasVideo === false && _this._hasVideoFlagOverrided === false) {\n _this._hasVideo = true;\n _this._mediaInfo.hasVideo = true;\n }\n\n meta = _this._videoMetadata = {};\n meta.type = 'video';\n meta.id = _track.id;\n meta.timescale = _this._timescale;\n meta.duration = _this._duration;\n } else {\n if (typeof meta.avcc !== 'undefined') {\n Log.w(_this.TAG, 'Found another AVCDecoderConfigurationRecord!');\n }\n }\n\n meta.codecWidth = config.codec_size.width;\n meta.codecHeight = config.codec_size.height;\n meta.presentWidth = config.present_size.width;\n meta.presentHeight = config.present_size.height;\n meta.profile = config.profile_string;\n meta.level = config.level_string;\n meta.bitDepth = config.bit_depth;\n meta.chromaFormat = config.chroma_format;\n meta.sarRatio = config.sar_ratio;\n meta.frameRate = config.frame_rate;\n\n if (config.frame_rate.fixed === false || config.frame_rate.fps_num === 0 || config.frame_rate.fps_den === 0) {\n meta.frameRate = _this._referenceFrameRate;\n }\n\n if (meta.frameRate !== undefined) {\n var fps_den = meta.frameRate.fps_den;\n var fps_num = meta.frameRate.fps_num;\n meta.refSampleDuration = meta.timescale * (fps_den / fps_num);\n }\n /*\n let codecArray = sps.subarray(1, 4);\n let codecString = 'avc1.';\n for (let j = 0; j < 3; j++) {\n let h = codecArray[j].toString(16);\n if (h.length < 2) {\n h = '0' + h;\n }\n codecString += h;\n }\n */\n\n\n meta.codec = codecString;\n var mi = _this._mediaInfo;\n mi.width = meta.codecWidth;\n mi.height = meta.codecHeight;\n\n if (meta.frameRate !== undefined) {\n mi.fps = meta.frameRate.fps;\n }\n\n mi.profile = meta.profile;\n mi.level = meta.level;\n mi.refFrames = config.ref_frames;\n mi.chromaFormat = config.chroma_format_string;\n mi.sarNum = meta.sarRatio.width;\n mi.sarDen = meta.sarRatio.height;\n mi.videoCodec = codecString;\n\n if (mi.hasAudio) {\n if (mi.audioCodec != null) {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.videoCodec + ',' + mi.audioCodec + '\"';\n }\n } else {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.videoCodec + '\"';\n }\n\n if (mi.isComplete()) {\n _this._onMediaInfo(mi);\n }\n } //==========================================================\n\n /*\n if (debug && avcSample) {\n avcSample.debug += 'SPS ';\n }\n if (!track.sps) {\n expGolombDecoder = new ExpGolomb(unit.data);\n let config = expGolombDecoder.readSPS();\n track.width = config.width;\n track.height = config.height;\n track.pixelRatio = config.pixelRatio;\n track.sps = [unit.data];\n track.duration = this._duration;\n let codecarray = unit.data.subarray(1, 4);\n let codecstring = 'avc1.';\n for (i = 0; i < 3; i++) {\n let h = codecarray[i].toString(16);\n if (h.length < 2) {\n h = '0' + h;\n }\n codecstring += h;\n }\n track.codec = codecstring;\n }\n */\n\n\n break;\n // PPS\n\n case 8:\n push = true;\n _this.findKeyframe = false; //���ҵ��ؼ�֡\n //console.log(\"found PPS\");\n\n if (_this._AVC_PPS == null) {\n _this._AVC_PPS = new Uint8Array(unit.data.length + 4);\n\n _this._AVC_PPS.set(_this._StartCode, 0);\n\n _this._AVC_PPS.set(unit.data, 4);\n }\n\n if (!_this._initVideoMetadata) {\n _this._initVideoMetadata = true;\n var _meta = _this._videoMetadata;\n\n if (_meta.avcc == null) {\n /*\n var version = v.getUint8(0); // configurationVersion\n var avcProfile = v.getUint8(1); // avcProfileIndication\n var profileCompatibility = v.getUint8(2); // profile_compatibility\n var avcLevel = v.getUint8(3); // AVCLevelIndication\n */\n var datOffset = 0;\n var dataSize = 5 + 1 + 2 + (_this._AVC_SPS.length - 4) + 1 + 2 + (_this._AVC_PPS.length - 4);\n _meta.avcc = new Uint8Array(dataSize + 1);\n _meta.avcc[0] = 1;\n _meta.avcc[1] = _this._AVC_SPS[4 + 1];\n _meta.avcc[2] = _this._AVC_SPS[4 + 2];\n _meta.avcc[3] = _this._AVC_SPS[4 + 3];\n _meta.avcc[4] = 255; //this._AVC_SPS[4 + 4];\n\n _meta.avcc[5] = 225;\n datOffset = 6;\n var sps = new Uint8Array();\n _meta.avcc[datOffset++] = _this._AVC_SPS.length - 4 >> 8;\n _meta.avcc[datOffset++] = _this._AVC_SPS.length - 4 & 0xFF;\n\n var datSps = _this._AVC_SPS.subarray(4, _this._AVC_SPS.length);\n\n _meta.avcc.set(datSps, datOffset);\n\n datOffset += datSps.length;\n _meta.avcc[datOffset++] = 1; //pps����\n\n _meta.avcc[datOffset++] = _this._AVC_PPS.length - 4 >> 8;\n _meta.avcc[datOffset++] = _this._AVC_PPS.length - 4 & 0xFF;\n\n var datPps = _this._AVC_PPS.subarray(4, _this._AVC_PPS.length);\n\n _meta.avcc.set(datPps, datOffset);\n\n datOffset += datPps.length;\n _meta.avcc[dataSize] = 1;\n } //console.log(\"meta.avcc: \" + meta.avcc);\n\n\n _this._onTrackMetadata('video', _meta); //meta.avcc = new Uint8Array(dataSize);\n //meta.avcc.set(new Uint8Array(arrayBuffer, dataOffset, dataSize), 0);\n //Log.v(this.TAG, 'Parsed AVCDecoderConfigurationRecord');\n\n /*\n if (this._isInitialMetadataDispatched()) {\n // flush parsed frames\n if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {\n //this._onDataAvailable(this._audioTrack, this._videoTrack);\n }\n } else {\n this._videoInitialMetadataDispatched = true;\n }\n */\n // notify new metadata\n //this._dispatch = false;\n //this._onTrackMetadata('video', meta);\n\n }\n /*\n if (debug && avcSample) {\n avcSample.debug += 'PPS ';\n }\n if (!track.pps) {\n track.pps = [unit.data];\n }\n */\n\n\n break;\n // AUD\n\n case 9:\n push = false;\n /*\n track.audFound = true;\n if (avcSample) {\n pushAccesUnit(avcSample, track);\n }\n avcSample = this.avcSample = createAVCSample(false, pes.pts, pes.dts, debug ? 'AUD ' : '');\n */\n\n break;\n // Filler Data\n\n case 12:\n push = false;\n break;\n\n default:\n push = false;\n /*\n if (avcSample) {\n avcSample.debug += 'unknown NAL ' + unit.type + ' ';\n }\n */\n\n break;\n }\n\n if (push) {//this._videoTrack.samples.push(unit);\n //console.log(\"frame size[\" + unit.data.length + \"] :\");// + unit.data);\n //\n\n /*\n if (unit.data.length > 0) {\n var objData = {\n cmd: common.tFrameData,\n workerId: common.DOWNLOAD_WORKER_ID,\n mediaType: 1,\n codecId: 27,\n flag: last,\n pts: pes.pts,\n playTimeSec: dur,\n dat: unit.data\n };\n //self.postMessage(objData, [objData.dat.buffer]);\n }\n */\n }\n /*\n if (avcSample && push) {\n let units = avcSample.units;\n units.push(unit);\n }\n */\n\n }); // if last PES packet, push samples\n\n /*\n if (last && avcSample) {\n pushAccesUnit(avcSample, track);\n this.avcSample = null;\n }\n */\n\n var pts = (pes.pts - this.startVideoPts) / 90;\n\n if (keyframe && this.syncVideoPts < 1) {\n this.syncVideoPts = this.startVideoPts;\n }\n /*\n let pts = (pes.pts - this.lastVideoPts) / 90;\n this.currentVideoPts += pts;\n pts = this.currentVideoPts;\n //if (this.lastVideoPts == 0) this.lastVideoPts = pes.pts;\n */\n\n\n var track = this._videoTrack;\n var avcSample = {\n units: tmpUnits,\n length: tmpLength,\n //pes.len,//length,\n isKeyframe: keyframe,\n dts: pts,\n // / 90,// - this.lastVideoPts + this.accurateTimeOffset,\n cts: 0,\n //pes.pts,\n pts: pts // / 90)// - this.lastVideoPts + this.accurateTimeOffset)\n\n };\n\n if (keyframe) {\n avcSample.fileposition = this.tagPosition;\n } //console.log(\"tmpLength: \" + tmpLength + \" tagPosition: \" + this.tagPosition + \" pts[\" + avcSample.pts + \"] dts[\" + avcSample.dts + \"]\");\n //console.log(\"video pts: \" + pts);\n\n\n if (this.reset === 0 && !this.findKeyframe) {\n track.samples.push(avcSample);\n track.length += tmpLength; //pes.len;//length;\n }\n\n this.filePosition += tmpLength;\n this.accurateTimeOffset = avcSample.pts;\n this.lastVideoPts = pes.pts;\n\n if (bSetInitPts === 1) {\n this.seekVideoHistoryPts = pts;\n } //this._videoTrack.length = track.length;\n\n\n if (push) {//console.log(\"frame size: \" + );\n }\n\n if (last && this.reset === 0) {\n if (this._config.decodeType === 'auto' || this._config.decodeType === 'hard') {\n //����codecIdΪ0, ��ʾ��ʱ������, ���ص����ϲ���������ʾ\n //this._onDataAvailableToSoftwareDecodeVideo(0, this._videoTrack);\n //��mp4-remuxer.js����\n this._onDataAvailable(this._audioTrack, this._videoTrack);\n } else {\n //console.log(\"H264: Software Decode...\");\n if (this._videoTrack.samples.length > 0) {\n this._onDataAvailableToSoftwareDecodeVideo(27, this._videoTrack);\n }\n\n if (this._audioTrack.samples.length > 0) {\n this._onDataAvailableToSoftwareDecodeAudio(86018, this._audioTrack);\n }\n } //console.log(\"pushAccessUnit....\");\n\n }\n };\n\n _proto.parseHEVCPES = function parseHEVCPES(pes, last, startTimeSecs) {\n // logger.log('parse new PES');\n //console.log(\"_parseHEVCPES flag[\" + last + \"] datasize: \" + pes.data.length);\n //decodeVideoFrame(pes.data.length, pes.data);\n //this.SoftDecodeRender.decodeTest();\n //this.wasmPlayer.wasmTest();\n //var dur = 0;\n //if (this.startVideoPts > 0) {\n // dur = (pes.pts - this.startVideoPts) / 90000;\n // dur += startTimeSecs;\n // //console.log(\"dur: \" + dur);\n //}\n //else {\n // this.startVideoPts = pes.pts;\n // dur = startTimeSecs;\n // //console.log(\"dur... pes: \" + pes.pts);\n //}\n if (this.startVideoPts === 0) {\n this.startVideoPts = pes.pts; //console.log(\"startVideoPts==0: \" + this.startVideoPts);\n } else if (pes.pts < this.startVideoPts) {\n //console.log(\"pes.pts < startVideoPts: \" + this.startVideoPts + \" --> \" + pes.pts);\n this.startVideoPts = pes.pts;\n } //console.log(\"HEVC data: \" + pes.data);\n //var objData = {\n // cmd: common.tFrameData,\n // workerId: common.DOWNLOAD_WORKER_ID,\n // mediaType: 1,\n // codecId: 173,\n // flag: last,\n // pts: pes.pts,\n // playTimeSec: dur,\n // dat: pes.data\n //};\n //self.postMessage(objData, [objData.dat.buffer]);\n //console.log(\"_parseHEVCPES: startTimeSecs[\" + startTimeSecs + \"] dur[\" + dur + \"]\");\n\n\n var tmpUnits = [];\n var tmpLength = 0;\n var tmpUnit = {\n type: 1,\n data: pes.data\n };\n tmpLength += pes.data.length;\n var keyframe = 0;\n\n if (tmpLength > 32) {\n //&& this.findKeyframe) {\n var i = 0;\n\n for (i = 0; i < 32; i++) {\n if (pes.data[i] === 0 && pes.data[i + 1] === 0 && pes.data[i + 2] === 0 && pes.data[i + 3] === 1 && pes.data[i + 4] === 0x40) {\n //console.log(\"HEVC keyframe data: \" + pes.data);\n keyframe = 1;\n this.findKeyframe = false;\n /*\n let KeyframeDat = pes.data.subarray(i, pes.data.length);\n tmpUnit.data = KeyframeDat;\n tmpLength -= i;\n console.log(\"HEVC data: \" + KeyframeDat);\n */\n\n break;\n }\n } //(pes.data[11] == 0x40))\n\n }\n\n tmpUnits.push(tmpUnit);\n var pts = (pes.pts - this.startVideoPts) / 90; //console.log(\"pts: \" + pts);\n\n if (keyframe && this.syncVideoPts < 1) {\n this.syncVideoPts = this.startVideoPts; //console.log(\"startVideoPts: \" + this.startVideoPts);\n }\n\n var track = this._videoTrack;\n var avcSample = {\n units: tmpUnits,\n length: tmpLength,\n //pes.len,//length,\n isKeyframe: keyframe,\n dts: pts,\n // - this.lastVideoPts + this.accurateTimeOffset,\n cts: 0,\n //pes.pts,\n pts: pts // - this.lastVideoPts + this.accurateTimeOffset)\n\n };\n\n if (keyframe) {\n avcSample.fileposition = this.tagPosition;\n } //console.log(\"tmpLength: \" + tmpLength + \" tagPosition: \" + this.tagPosition + \" pts[\" + avcSample.pts + \"] dts[\" + avcSample.dts + \"]\");\n\n\n track.samples.push(avcSample);\n track.length += tmpLength; //pes.len;//length;\n //console.log(\"add sample to videoTrack....\");\n\n if (this._videoTrack.samples.length > 0) {\n this._onDataAvailableToSoftwareDecodeVideo(173, this._videoTrack);\n }\n\n if (this._audioTrack.samples.length > 0) {\n this._onDataAvailableToSoftwareDecodeAudio(86018, this._audioTrack);\n }\n };\n\n _proto._insertSampleInOrder = function _insertSampleInOrder(arr, data) {\n var len = arr.length;\n\n if (len > 0) {\n if (data.pts >= arr[len - 1].pts) {\n arr.push(data);\n } else {\n for (var pos = len - 1; pos >= 0; pos--) {\n if (data.pts < arr[pos].pts) {\n arr.splice(pos, 0, data);\n break;\n }\n }\n }\n } else {\n arr.push(data);\n }\n };\n\n _proto._getLastNalUnit = function _getLastNalUnit() {\n var avcSample = this.avcSample,\n lastUnit; // try to fallback to previous sample if current one is empty\n\n if (!avcSample || avcSample.units.length === 0) {\n var track = this._avcTrack,\n samples = track.samples;\n avcSample = samples[samples.length - 1];\n }\n\n if (avcSample) {\n var units = avcSample.units;\n lastUnit = units[units.length - 1];\n }\n\n return lastUnit;\n };\n\n _proto._parseAVCNALu = function _parseAVCNALu(array) {\n //let i = 0, len = array.byteLength, value, overflow, track = this._avcTrack, state = track.naluState || 0, lastState = state;\n var i = 0,\n len = array.byteLength,\n value,\n overflow,\n state = 0,\n lastState = state;\n var units = [],\n unit,\n unitType,\n lastUnitStart = -1,\n lastUnitType; // logger.log('PES:' + Hex.hexDump(array));\n\n if (state === -1) {\n // special use case where we found 3 or 4-byte start codes exactly at the end of previous PES packet\n lastUnitStart = 0; // NALu type is value read from offset 0\n\n lastUnitType = array[0] & 0x1f;\n state = 0;\n i = 1;\n }\n\n while (i < len) {\n value = array[i++]; // optimization. state 0 and 1 are the predominant case. let's handle them outside of the switch/case\n\n if (!state) {\n state = value ? 0 : 1;\n continue;\n }\n\n if (state === 1) {\n state = value ? 0 : 2;\n continue;\n } // here we have state either equal to 2 or 3\n\n\n if (!value) {\n state = 3;\n } else if (value === 1) {\n if (lastUnitStart >= 0) {\n unit = {\n data: array.subarray(lastUnitStart, i - state - 1),\n type: lastUnitType\n }; // logger.log('pushing NALU, type/size:' + unit.type + '/' + unit.data.byteLength);\n\n if (unit.type != 9) //gavin 20200602\n units.push(unit);\n } else {\n // lastUnitStart is undefined => this is the first start code found in this PES packet\n // first check if start code delimiter is overlapping between 2 PES packets,\n // ie it started in last packet (lastState not zero)\n // and ended at the beginning of this PES packet (i <= 4 - lastState)\n var lastUnit = null; //this._getLastNalUnit();\n\n if (lastUnit) {\n if (lastState && i <= 4 - lastState) {\n // start delimiter overlapping between PES packets\n // strip start delimiter bytes from the end of last NAL unit\n // check if lastUnit had a state different from zero\n if (lastUnit.state) {\n // strip last bytes\n lastUnit.data = lastUnit.data.subarray(0, lastUnit.data.byteLength - lastState);\n }\n } // If NAL units are not starting right at the beginning of the PES packet, push preceding data into previous NAL unit.\n\n\n overflow = i - state - 1;\n\n if (overflow > 0) {\n // logger.log('first NALU found with overflow:' + overflow);\n var tmp = new Uint8Array(lastUnit.data.byteLength + overflow);\n tmp.set(lastUnit.data, 0);\n tmp.set(array.subarray(0, overflow), lastUnit.data.byteLength);\n lastUnit.data = tmp;\n }\n }\n } // check if we can read unit type\n\n\n if (i < len) {\n unitType = array[i] & 0x1f; // logger.log('find NALU @ offset:' + i + ',type:' + unitType);\n\n lastUnitStart = i;\n lastUnitType = unitType;\n state = 0;\n } else {\n // not enough byte to read unit type. let's read it on next PES parsing\n state = -1;\n }\n } else {\n state = 0;\n }\n }\n\n if (lastUnitStart >= 0 && state >= 0) {\n unit = {\n data: array.subarray(lastUnitStart, len),\n type: lastUnitType,\n state: state\n };\n units.push(unit); // logger.log('pushing NALU, type/size/state:' + unit.type + '/' + unit.data.byteLength + '/' + state);\n } // no NALu found\n\n\n if (units.length === 0) {\n // append pes.data to previous NAL unit\n var _lastUnit = this._getLastNalUnit();\n\n if (_lastUnit) {\n var _tmp = new Uint8Array(_lastUnit.data.byteLength + array.byteLength);\n\n _tmp.set(_lastUnit.data, 0);\n\n _tmp.set(array, _lastUnit.data.byteLength);\n\n _lastUnit.data = _tmp;\n }\n } //track.naluState = state;\n\n\n return units;\n }\n /**\n * remove Emulation Prevention bytes from a RBSP\n */\n ;\n\n _proto.discardEPB = function discardEPB(data) {\n var length = data.byteLength,\n EPBPositions = [],\n i = 1,\n newLength,\n newData; // Find all `Emulation Prevention Bytes`\n\n while (i < length - 2) {\n if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0x03) {\n EPBPositions.push(i + 2);\n i += 2;\n } else {\n i++;\n }\n } // If no Emulation Prevention Bytes were found just return the original\n // array\n\n\n if (EPBPositions.length === 0) {\n return data;\n } // Create a new array to hold the NAL unit data\n\n\n newLength = length - EPBPositions.length;\n newData = new Uint8Array(newLength);\n var sourceIndex = 0;\n\n for (i = 0; i < newLength; sourceIndex++, i++) {\n if (sourceIndex === EPBPositions[0]) {\n // Skip this byte\n sourceIndex++; // Remove this position index\n\n EPBPositions.shift();\n }\n\n newData[i] = data[sourceIndex];\n }\n\n return newData;\n };\n\n _proto.parseAACPES = function parseAACPES(pes, last) {\n //console.log(\"parseAACPES...\" + pes.pts);\n //if (this.isHEVC === 1) return; //�����265�ط�,��������\n //var dur = 0;\n //if (self.startAudioPts > 0) {\n // dur = (pes.pts - self.startAudioPts) / 90000;\n // //console.log(\"dur: \" + dur);\n //}\n //else {\n // self.startAudioPts = pes.pts;\n //}\n //if (this.audioSampleRate > 0) {\n // var objData = {\n // cmd: common.tFrameData,\n // workerId: common.DOWNLOAD_WORKER_ID,\n // mediaType: 2,\n // codecId: 86018, //AAC\n // flag: last,\n // pts: pes.pts,\n // samplerate: this.audioSampleRate,\n // channelNum: this.audioChannel,\n // bitPerSample: this.audioBitPerSample,\n // playTimeSec: dur,\n // dat: pes.data\n // };\n // //self.postMessage(objData, [objData.data.buffer]);\n // //return;\n //}\n //return;\n if (this.startAudioPts === 0) {\n this.startAudioPts = pes.pts; // / 90;\n } //var audioPts = pes.pts;\n //pes.pts = pes.pts - this.startAudioPts;\n //this.startAudioPts = audioPts;\n //this.audioFrameNum++;\n //((++pPushArray -> audioFrameNo)) * ((float)(1024.0f / 44100.0f * 1000.0f));\n //this.currentAudioPts = this.audioFrameNum * (1024.0 / 44100.0 * 1000.0) + this.currentVideoPts;\n //pes.pts = this.currentAudioPts;\n\n\n var track = this._audioTrack,\n data = pes.data,\n pts = pes.pts,\n startOffset = 0,\n aacOverFlow = this.aacOverFlow,\n aacLastPTS = this.aacLastPTS,\n frameDuration,\n frameIndex,\n offset,\n stamp,\n len;\n\n if (aacOverFlow) {\n var tmp = new Uint8Array(aacOverFlow.byteLength + data.byteLength);\n tmp.set(aacOverFlow, 0);\n tmp.set(data, aacOverFlow.byteLength); // logger.log(`AAC: append overflowing ${aacOverFlow.byteLength} bytes to beginning of new PES`);\n\n data = tmp;\n } // look for ADTS header (0xFFFx)\n\n\n for (offset = startOffset, len = data.length; offset < len - 1; offset++) {\n if (_adts__WEBPACK_IMPORTED_MODULE_1__[\"isHeader\"](data, offset)) {\n break;\n }\n } // if ADTS header does not start straight from the beginning of the PES payload, raise an error\n\n\n if (offset) {\n var reason, fatal;\n\n if (offset < len - 1) {\n reason = \"AAC PES did not start with ADTS header,offset:\" + offset;\n fatal = false;\n } else {\n reason = 'no ADTS header found in AAC PES';\n fatal = true;\n }\n\n logger.warn(\"parsing error:\" + reason);\n this.observer.trigger(Event.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.FRAG_PARSING_ERROR,\n fatal: fatal,\n reason: reason\n });\n\n if (fatal) {\n return;\n }\n }\n\n if (this.audioSampleRate < 1) {\n var config = _adts__WEBPACK_IMPORTED_MODULE_1__[\"initTrackConfig\"](data, offset, this.audioCodec);\n\n if (config) {\n this.audioSampleRate = config.samplerate;\n this.audioChannel = config.channelCount;\n this.audioBitPerSample = 16; //==============================================\n\n if (!this._initAudioMetadata) {\n this._initAudioMetadata = true;\n var meta = this._audioMetadata;\n var _track2 = this._audioTrack;\n\n if (!meta) {\n // initial metadata\n meta = this._audioMetadata = {};\n meta.type = 'audio';\n meta.id = _track2.id;\n meta.timescale = 1000; //this._timescale;\n\n meta.duration = 0; //this._duration;\n\n meta.audioSampleRate = this.audioSampleRate;\n meta.channelCount = this.audioChannel;\n } //let aacData = FlvDemuxer._parseAACAudioData(arrayBuffer, dataOffset + 1, dataSize - 1);\n //if (aacData == undefined) {\n // return 0;\n //}\n //if (aacData.packetType === 0) { // AAC sequence header (AudioSpecificConfig)\n\n\n if (meta.config) {\n Log.w(this.TAG, 'Found another AudioSpecificConfig!');\n }\n\n var misc = config.config;\n meta.audioSampleRate = config.samplerate;\n meta.channelCount = config.channelCount;\n meta.codec = config.codec;\n meta.originalCodec = config.originalCodec;\n meta.config = config.config; // The decode result of an aac sample is 1024 PCM samples\n\n meta.refSampleDuration = 1024 / meta.audioSampleRate * meta.timescale; //Log.v(this.TAG, 'Parsed AudioSpecificConfig');\n //console.log(\"AAC: \" + meta.audioSampleRate + \" \" + meta.channelCount + \" \" + meta.codec + \" \" + meta.config);\n\n this._SampleRate = config.samplerate;\n this._ChannelNum = config.channelCount;\n\n this._onDataAvailable(this._audioTrack, this._videoTrack);\n /*\n if (this._isInitialMetadataDispatched()) {\n // Non-initial metadata, force dispatch (or flush) parsed frames to remuxer\n if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {\n this._onDataAvailable(this._audioTrack, this._videoTrack);\n }\n } else {\n this._audioInitialMetadataDispatched = true;\n }\n // then notify new metadata\n this._dispatch = false;\n */\n\n\n this._onTrackMetadata('audio', meta);\n\n var mi = this._mediaInfo;\n mi.audioCodec = meta.originalCodec;\n mi.audioSampleRate = meta.audioSampleRate;\n mi.audioChannelCount = meta.channelCount;\n\n if (mi.hasVideo) {\n if (mi.videoCodec != null) {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.videoCodec + ',' + mi.audioCodec + '\"';\n }\n } else {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.audioCodec + '\"';\n }\n\n if (mi.isComplete()) {\n this._onMediaInfo(mi);\n } //}\n\n } //==============================================\n\n }\n } //return;\n\n\n frameIndex = 0;\n frameDuration = _adts__WEBPACK_IMPORTED_MODULE_1__[\"getFrameDuration\"](this.audioSampleRate); // if last AAC frame is overflowing, we should ensure timestamps are contiguous:\n // first sample PTS should be equal to last sample PTS + frameDuration\n\n if (aacOverFlow && aacLastPTS) {\n var newPTS = aacLastPTS + frameDuration;\n\n if (Math.abs(newPTS - pts) > 1) {\n console.log(\"AAC: align PTS for overlapping frames by \" + Math.round((newPTS - pts) / 90));\n pts = newPTS;\n }\n } // scan for aac samples\n\n\n while (offset < len) {\n if (_adts__WEBPACK_IMPORTED_MODULE_1__[\"isHeader\"](data, offset) && offset + 5 < len) {\n var frame = _adts__WEBPACK_IMPORTED_MODULE_1__[\"appendFrame\"](this.audioSampleRate, data, offset, pts, frameIndex);\n\n if (frame) {\n // logger.log(`${Math.round(frame.sample.pts)} : AAC`);\n //var objData = {\n // cmd: common.tFrameData,\n // workerId: common.DOWNLOAD_WORKER_ID,\n // mediaType: 2,\n // codecId: 86018, //AAC\n // flag: last,\n // pts: pes.pts,\n // samplerate: this.audioSampleRate,\n // channelNum: this.audioChannel,\n // bitPerSample: this.audioBitPerSample,\n // playTimeSec: dur,\n // dat: frame.sample.unit\n //};\n //self.postMessage(objData, [objData.dat.buffer]);\n //this.audioFrameNum++;\n //this.currentAudioPts = Math.floor(this.audioFrameNum * (1024.0 / 44100.0 * 1000.0) + this.currentVideoPts);\n //pes.pts = this.currentAudioPts;\n //pts = pes.pts;\n //gavin\n //let dts = pes.pts;//frame.sample.pts;//this._timestampBase + tagTimestamp;\n var dts = Math.round((frame.sample.pts - this.startAudioPts) / 90); //console.log(\" audio pts: \" + dts + \" frame.sample.pts:\" + Math.round(frame.sample.pts) + \" \");\n\n var aacSample = {\n unit: frame.sample.unit,\n length: frame.length,\n dts: dts,\n pts: dts\n };\n var bProcAudio = true;\n /*\n if (this._config.decodeType === 'auto' ||\n this._config.decodeType === 'hard') {\n bProcAudio = true;\n }\n */\n\n if (bProcAudio && this.reset === 0 && !this.findKeyframe) {\n if (this.syncAudioPts < 1 && this.syncVideoPts > 0) {\n this.syncAudioPts = this.syncVideoPts;\n }\n\n if (this.syncAudioPts > 0) {\n track.samples.push(aacSample);\n track.length += frame.length;\n }\n }\n\n offset += frame.length;\n stamp = frame.sample.pts;\n frameIndex++;\n } else {\n // logger.log('Unable to parse AAC frame');\n break;\n }\n } else {\n // nothing found, keep looking\n offset++;\n }\n }\n\n if (offset < len) {\n aacOverFlow = data.subarray(offset, len); // logger.log(`AAC: overflow detected:${len-offset}`);\n } else {\n aacOverFlow = null;\n }\n\n this.aacOverFlow = aacOverFlow;\n this.aacLastPTS = stamp;\n };\n\n _proto.parseMPEGPES = function parseMPEGPES(pes) {\n var data = pes.data;\n var length = data.length;\n var frameIndex = 0;\n var offset = 0;\n var pts = pes.pts;\n\n while (offset < length) {\n if (MpegAudio.isHeader(data, offset)) {\n var frame = MpegAudio.appendFrame(this._audioTrack, data, offset, pts, frameIndex);\n\n if (frame) {\n offset += frame.length;\n frameIndex++;\n } else {\n // logger.log('Unable to parse Mpeg audio frame');\n break;\n }\n } else {\n // nothing found, keep looking\n offset++;\n }\n }\n } // feed incoming data to the front of the parsing pipeline\n ;\n\n _proto.append = function append(data, datasize, startTimeSecs) {\n //console.log(\"append data to demuxer.js: \" + datasize);\n if (data == null) {\n return;\n }\n\n datasize = data.length;\n\n if (this.reset === 1) {\n return;\n }\n\n var start,\n len = datasize,\n stt,\n pid,\n atf,\n offset,\n pes,\n pmtId,\n unknownPIDs = false;\n var avcId = -1,\n audioId = -1,\n id3Id = -1,\n avcData = this.avcTrackPesData,\n audioData = this.audioTrackPesData,\n id3Data = this.id3TrackPesData,\n pmtParsed = false;\n var currentPlayTimeMsec = 0;\n\n var syncOffset = TSDemuxer._syncOffset(data); // don't parse last TS packet if incomplete\n\n\n len -= (len + syncOffset) % 188; // loop through TS packets\n\n for (start = syncOffset; start < len; start += 188) {\n if (data[start] === 0x47) {\n stt = !!(data[start + 1] & 0x40); // pid is a 13-bit field starting at the last bit of TS[1]\n\n pid = ((data[start + 1] & 0x1f) << 8) + data[start + 2];\n atf = (data[start + 3] & 0x30) >> 4; // if an adaption field is present, its length is specified by the fifth byte of the TS packet header.\n\n if (atf > 1) {\n offset = start + 5 + data[start + 4]; // continue if there is only adaptation field\n\n if (offset === start + 188) {\n continue;\n }\n } else {\n offset = start + 4;\n }\n\n switch (pid) {\n case avcId:\n if (stt) {\n if (avcData && (pes = this.parsePES(avcData))) {\n //parseAVCPES(pes, false);\n if (this.isHEVC == 1) {\n currentPlayTimeMsec = this.parseHEVCPES(pes, false, startTimeSecs);\n } else {\n currentPlayTimeMsec = this.parseAVCPES(pes, false, startTimeSecs); //parseAVCPES(pes, false);\n }\n }\n\n avcData = {\n data: [],\n size: 0\n };\n }\n\n if (avcData) {\n avcData.data.push(data.subarray(offset, start + 188));\n avcData.size += start + 188 - offset;\n }\n\n break;\n\n case audioId:\n if (stt) {\n if (audioData && (pes = this.parsePES(audioData))) {\n if (this.isAAC) {\n this.parseAACPES(pes, false);\n } else {\n this.parseMPEGPES(pes);\n }\n }\n\n audioData = {\n data: [],\n size: 0\n };\n }\n\n if (audioData) {\n audioData.data.push(data.subarray(offset, start + 188));\n audioData.size += start + 188 - offset;\n }\n\n break;\n\n case id3Id:\n if (stt) {\n if (id3Data && (pes = this.parsePES(id3Data))) {\n parseID3PES(pes);\n }\n\n id3Data = {\n data: [],\n size: 0\n };\n }\n\n if (id3Data) {\n id3Data.data.push(data.subarray(offset, start + 188));\n id3Data.size += start + 188 - offset;\n }\n\n break;\n\n case 0:\n if (stt) {\n offset += data[offset] + 1;\n }\n\n pmtId = this.parsePAT(data, offset);\n break;\n\n case pmtId:\n if (stt) {\n offset += data[offset] + 1;\n }\n\n var parsedPIDs = this.parsePMT(data, offset, false, false); // only update track id if track PID found while parsing PMT\n // this is to avoid resetting the PID to -1 in case\n // track PID transiently disappears from the stream\n // this could happen in case of transient missing audio samples for example\n // NOTE this is only the PID of the track as found in TS,\n // but we are not using this for MP4 track IDs.\n\n avcId = parsedPIDs.avc; //gavin\n\n if (parsedPIDs.hevc > 0) {\n avcId = parsedPIDs.hevc;\n this.isHEVC = 1; //console.log(\"parsePMT hevcId: \" + avcId);\n }\n\n if (avcId > 0) {\n this.avcTrackPid = avcId;\n } //�ص����ϲ�, �л�����\n\n\n if (!this._callbackInitFlag && this._callbackMediaDataFunc) {\n this._callbackInitFlag = true;\n\n if (this.isHEVC === 1) {//this._callbackMediaDataFunc(this._callbackMediaDataUserPtr, true, 1, 0, 0, null, 0, 0, 0, 0);\n } else {\n if (this._config.decodeType === 'auto' || this._config.decodeType === 'hard') {\n this._callbackMediaDataFunc(this._callbackMediaDataUserPtr, false, 1, 0, 0, null, 0, 0, 0, 0);\n } else {//this._callbackMediaDataFunc(this._callbackMediaDataUserPtr, true, 1, 0, 0, null, 0, 0, 0, 0);\n }\n }\n }\n\n audioId = parsedPIDs.audio;\n\n if (audioId > 0) {\n this.audioTrackPid = audioId;\n this.isAAC = parsedPIDs.isAAC; //console.log(\"audioId:\" + audioId + \" aac:\" + this.isAAC);\n }\n\n id3Id = parsedPIDs.id3;\n\n if (id3Id > 0) {\n this.id3TrackPid = id3Id;\n }\n\n if (unknownPIDs && !pmtParsed) {\n console.log('reparse from beginning');\n unknownPIDs = false; // we set it to -188, the += 188 in the for loop will reset start to 0\n\n start = syncOffset - 188;\n } //pmtParsed = this.pmtParsed = true;\n\n\n pmtParsed = true;\n break;\n\n case 17:\n case 0x1fff:\n break;\n\n default:\n unknownPIDs = true;\n break;\n }\n } else {\n console.log('parse error... reason: \\'TS packet did not start with 0x47\\''); //this.observer.trigger(Event.ERROR, { type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.FRAG_PARSING_ERROR, fatal: false, reason: 'TS packet did not start with 0x47' });\n }\n } // try to parse last PES packets\n\n\n if (avcData && (pes = this.parsePES(avcData))) {\n //gavin\n //parseAVCPES(pes, true);\n if (this.isHEVC == 1) {\n currentPlayTimeMsec = this.parseHEVCPES(pes, true, startTimeSecs);\n } else {\n currentPlayTimeMsec = this.parseAVCPES(pes, true, startTimeSecs); //parseAVCPES(pes, true);\n }\n\n this.avcTrackPesData = null;\n } else {\n // either avcData null or PES truncated, keep it for next frag parsing\n this.avcTrackPesData = avcData;\n }\n\n if (audioData && (pes = this.parsePES(audioData))) {\n if (this.isAAC) {\n this.parseAACPES(pes, true);\n } else {\n this.parseMPEGPES(pes);\n }\n\n this.audioTrackPesData = null;\n } else {\n if (audioData && audioData.size) {\n logger.log('last AAC PES packet truncated,might overlap between fragments');\n } // either audioData null or PES truncated, keep it for next frag parsing\n\n\n this.audioTrackPesData = audioData;\n }\n\n if (id3Data && (pes = this.parsePES(id3Data))) {\n parseID3PES(pes);\n this.id3TrackPesData = null;\n } else {\n // either id3Data null or PES truncated, keep it for next frag parsing\n this.id3TrackPesData = id3Data;\n } //console.log(\"h265VideoSamples.length: \" + h265VideoSamples.length);\n\n };\n\n _createClass(TSDemuxer, [{\n key: \"onTrackMetadata\",\n get: function get() {\n return this._onTrackMetadata;\n },\n set: function set(callback) {\n this._onTrackMetadata = callback;\n } // prototype: function(mediaInfo: MediaInfo): void\n\n }, {\n key: \"onMediaInfo\",\n get: function get() {\n return this._onMediaInfo;\n },\n set: function set(callback) {\n this._onMediaInfo = callback;\n }\n }, {\n key: \"onMetaDataArrived\",\n get: function get() {\n return this._onMetaDataArrived;\n },\n set: function set(callback) {\n this._onMetaDataArrived = callback;\n }\n }, {\n key: \"onScriptDataArrived\",\n get: function get() {\n return this._onScriptDataArrived;\n },\n set: function set(callback) {\n this._onScriptDataArrived = callback;\n } // prototype: function(type: number, info: string): void\n\n }, {\n key: \"onError\",\n get: function get() {\n return this._onError;\n },\n set: function set(callback) {\n this._onError = callback;\n } // prototype: function(videoTrack: any, audioTrack: any): void\n\n }, {\n key: \"onDataAvailable\",\n get: function get() {\n return this._onDataAvailable;\n },\n set: function set(callback) {\n this._onDataAvailable = callback;\n } // timestamp base for output samples, must be in milliseconds\n\n }, {\n key: \"timestampBase\",\n get: function get() {\n return this._timestampBase;\n },\n set: function set(base) {\n this._timestampBase = base;\n }\n }, {\n key: \"overridedDuration\",\n get: function get() {\n return this._duration;\n } // Force-override media duration. Must be in milliseconds, int32\n ,\n set: function set(duration) {\n this._durationOverrided = true;\n this._duration = duration;\n this._mediaInfo.duration = duration;\n } // Force-override audio track present flag, boolean\n\n }, {\n key: \"overridedHasAudio\",\n set: function set(hasAudio) {\n this._hasAudioFlagOverrided = true;\n this._hasAudio = hasAudio;\n this._mediaInfo.hasAudio = hasAudio;\n } // Force-override video track present flag, boolean\n\n }, {\n key: \"overridedHasVideo\",\n set: function set(hasVideo) {\n this._hasVideoFlagOverrided = true;\n this._hasVideo = hasVideo;\n this._mediaInfo.hasVideo = hasVideo;\n }\n }]);\n\n return TSDemuxer;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (TSDemuxer);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/TSDemuxer.js?"); | |
| 2993 | - | |
| 2994 | -/***/ }), | |
| 2995 | - | |
| 2996 | -/***/ "./src/FlvPlayer/WebMediaFlvPlayer.js": | |
| 2997 | -/*!********************************************!*\ | |
| 2998 | - !*** ./src/FlvPlayer/WebMediaFlvPlayer.js ***! | |
| 2999 | - \********************************************/ | |
| 3000 | -/*! exports provided: default */ | |
| 3001 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3002 | - | |
| 3003 | -"use strict"; | |
| 3004 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebMediaFlvPlayer; });\n/* harmony import */ var _common_webgl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/webgl */ \"./src/common/webgl.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/common */ \"./src/common/common.js\");\n/* harmony import */ var webworkify_webpack__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! webworkify-webpack */ \"./node_modules/webworkify-webpack/index.js\");\n/* harmony import */ var webworkify_webpack__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(webworkify_webpack__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _common_soundPlayer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../common/soundPlayer */ \"./src/common/soundPlayer.js\");\n/* harmony import */ var _flv_js_player_flv_player_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./flv.js/player/flv-player.js */ \"./src/FlvPlayer/flv.js/player/flv-player.js\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! events */ \"./node_modules/node-libs-browser/node_modules/events/events.js\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _flv_js_player_player_events__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./flv.js/player/player-events */ \"./src/FlvPlayer/flv.js/player/player-events.js\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n\n\n\n\n\n\n\n\nvar WebMediaFlvPlayer = /*#__PURE__*/function () {\n function WebMediaFlvPlayer(streamType, h5Video, h5Canvas, decodeType, callbackFunc, callbackPlayTimeFunc, callbackConnectStatusFunc, callbackUserPtr, getVideoInfoCbFunc) {\n var _this = this;\n\n this.url = '';\n this.downloadWorker = null;\n this.decodeWorker = null;\n this.renderWorker = null;\n this.audioWorker = null;\n this.printStatInfo = false;\n this.pauseDisplay = false;\n this.enableLog = false; //是否启用日志\n\n this.streamType = streamType;\n this.h5Video = h5Video;\n this.canvas = h5Canvas;\n this.flvPlayer = null;\n this.decodeType = decodeType;\n this.callbackFunc = callbackFunc;\n this.callbackPlayTimeFunc = callbackPlayTimeFunc;\n this.callbackConnectStatusFunc = callbackConnectStatusFunc;\n this.callbackUserPtr = callbackUserPtr;\n this.getVideoInfoCallbackFunc = getVideoInfoCbFunc;\n this.avQueue = [];\n this.webGLPlayer = null;\n this.soundPlayer = null;\n this.fullScreenFlag = false;\n this._statisticsInfo = null;\n this._mediaInfo = null;\n this._emitter = new events__WEBPACK_IMPORTED_MODULE_5___default.a();\n this.skipTimer = null; // 播放\n\n this.h5Video.addEventListener('play', function (e) {\n _this.manualFrameSkipping();\n }); // 暂停\n\n this.h5Video.addEventListener('pause', function (e) {\n if (_this.skipTimer) {\n clearInterval(_this.skipTimer);\n _this.skipTimer = null;\n }\n });\n } // 通过对buffered(缓冲区末尾)和currentTime(当前播放位置)的比较,发现差值大概在n秒左右,这时候就需要我们定时检测currentTime和buffered的差值\n\n\n var _proto = WebMediaFlvPlayer.prototype;\n\n _proto.manualFrameSkipping = function manualFrameSkipping() {\n var _this2 = this;\n\n if (this.streamType === 'm3u8') {\n console.log(this);\n this.getVideoInfoCallbackFunc(this.callbackUserPtr, '', '', '');\n return false;\n }\n\n if (this.skipTimer) {\n clearInterval(this.skipTimer);\n this.skipTimer = null;\n }\n\n this.skipTimer = setInterval(function () {\n if (_this2.flvPlayer && _this2.flvPlayer.buffered.length) {\n var end = _this2.flvPlayer.buffered.end(0); //获取当前buffered值\n\n\n var diff = end - _this2.flvPlayer.currentTime; //获取buffered与currentTime的差值\n\n if (diff >= 0.7) {\n //如果差值大于等于0.7 手动跳帧 这里可根据自身需求来定\n _this2.flvPlayer.currentTime = _this2.flvPlayer.buffered.end(0) - 0.3; //手动跳帧\n } else {\n _this2.flvPlayer.playbackRate = 1;\n }\n }\n }, 2000); //2000毫秒执行一次\n };\n\n _proto.destroy = function destroy() {\n if (this.webGLPlayer) {\n this.webGLPlayer.renderVideoFrame(null, 0, 0);\n }\n\n if (this.renderWorker) {\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_1__[\"tCloseStream\"]\n };\n this.renderWorker.postMessage(objData);\n }\n\n if (this.soundPlayer) {\n this.soundPlayer.destroy();\n delete this.soundPlayer;\n this.soundPlayer = null;\n }\n\n if (this.webGLPlayer) {\n this.webGLPlayer.destroy();\n }\n\n if (this.flvPlayer) {\n this.flvPlayer.destroy();\n this.flvPlayer = null;\n }\n\n if (this._emitter) {\n this._emitter.removeAllListeners();\n\n this._emitter = null;\n }\n\n if (this.skipTimer) {\n clearInterval(this.skipTimer);\n this.skipTimer = null;\n }\n };\n\n _proto.on = function on(event, listener) {\n var _this3 = this;\n\n if (event === _flv_js_player_player_events__WEBPACK_IMPORTED_MODULE_6__[\"default\"].MEDIA_INFO) {\n if (this._mediaInfo != null) {\n Promise.resolve().then(function () {\n _this3._emitter.emit(_flv_js_player_player_events__WEBPACK_IMPORTED_MODULE_6__[\"default\"].MEDIA_INFO, _this3.mediaInfo);\n });\n }\n } else if (event === _flv_js_player_player_events__WEBPACK_IMPORTED_MODULE_6__[\"default\"].STATISTICS_INFO) {\n if (this._statisticsInfo != null) {\n Promise.resolve().then(function () {\n _this3._emitter.emit(_flv_js_player_player_events__WEBPACK_IMPORTED_MODULE_6__[\"default\"].STATISTICS_INFO, _this3.statisticsInfo);\n });\n }\n }\n\n this._emitter.addListener(event, listener);\n };\n\n _proto.off = function off(event, listener) {\n this._emitter.removeListener(event, listener);\n };\n\n _proto.logD = function logD(strLog) {\n if (this.enableLog) {\n console.log('FlvPlayer: ' + strLog);\n }\n };\n\n _proto.createDecodeWorker = function createDecodeWorker() {\n this.logD('create decode worker...');\n this.decodeWorker = undefined;\n\n if (typeof Worker !== 'undefined') {\n var w;\n\n try {\n w = this.decodeWorker = webworkify_webpack__WEBPACK_IMPORTED_MODULE_2__(/*require.resolve*/(/*! ../common/DecodeWorker.js */ \"./src/common/DecodeWorker.js\"));\n this.onwmsg = this.onWorkerMessage.bind(this);\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_1__[\"tOpenStream\"],\n url: _common_common__WEBPACK_IMPORTED_MODULE_1__[\"getFullURL\"](),\n isFlv: true\n };\n w.postMessage(objData);\n w.addEventListener('message', this.onwmsg);\n\n w.onerror = function (event) {};\n } catch (err) {\n //logger.warn('Error in worker:', err);\n //logger.error('Error while initializing DemuxerWorker, fallback on DemuxerInline');\n console.log('Create Decode Worker fail: ' + err);\n\n if (w) {// revoke the Object URL that was used to create demuxer worker, so as not to leak it\n //global.URL.revokeObjectURL(w.objectURL);\n }\n\n this.w = undefined;\n }\n } else {}\n } //创建音频播放线程\n ;\n\n _proto.createAudioWorker = function createAudioWorker() {\n this.logD('create audio play worker...');\n this.audioWorker = undefined;\n\n if (typeof Worker !== 'undefined') {\n var w;\n\n try {\n w = this.audioWorker = webworkify_webpack__WEBPACK_IMPORTED_MODULE_2__(/*require.resolve*/(/*! ./AudioWorker.js */ \"./src/FlvPlayer/AudioWorker.js\"));\n this.onwmsg = this.onWorkerMessage.bind(this);\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_1__[\"tOpenStream\"]\n };\n w.postMessage(objData);\n w.addEventListener('message', this.onwmsg);\n\n w.onerror = function (event) {};\n } catch (err) {\n console.log('Create audio Worker fail: ' + err);\n this.audioWorker = undefined;\n }\n } else {\n console.log('Unsupport worker...');\n } //如果音频播放线程创建失败, 则在主线程中播放\n\n\n if (this.audioWorker === undefined) {}\n };\n\n _proto.decodeAndDisplayLoop = function decodeAndDisplayLoop() {\n if (this.avQueue.length < 1) return;\n\n while (this.avQueue.length > 0) {\n var frame = this.avQueue[0];\n this.avQueue.shift();\n }\n };\n\n _proto.play = function play(url, startPlayTimeSecs) {\n var _this4 = this;\n\n // 非暂停状态时, 为开始播放\n if (!this.pauseDisplay) {\n this.url = url;\n\n if (this.flvPlayer == null) {\n this.flvPlayer = new _flv_js_player_flv_player_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]({\n type: this.streamType,\n isLive: true,\n url: url,\n startPlaySecs: startPlayTimeSecs,\n hasAudio: true,\n withCredentials: false\n }, {\n streamType: this.streamType,\n enableWorker: false,\n //lazyLoad: true,\n //isLive: true,\n //lazyLoad: false,\n lazyLoadMaxDuration: this.streamType === 'flv' || this.streamType === 'rtsp' ? 2 : 3 * 60,\n //3 * 60,\n lazyLoadRecoverDuration: this.streamType === 'flv' || this.streamType === 'rtsp' ? 1 : 30,\n //30,\n deferLoadAfterSourceOpen: true,\n //true,\n // autoCleanupSourceBuffer: default as false, leave unspecified\n //autoCleanupSourceBuffer: false,\n autoCleanupMaxBackwardDuration: this.streamType === 'flv' || this.streamType === 'rtsp' ? 12 : 3 * 60,\n //3 * 60,\n autoCleanupMinBackwardDuration: this.streamType === 'flv' || this.streamType === 'rtsp' ? 8 : 2 * 60,\n //2 * 60,\n //statisticsInfoReportInterval: 5,\t//600,\n //fixAudioTimestampGap: true,\t//false,\t//true,\n seekType: 'range',\n enableStashBuffer: false,\n //this.decodeType === 'soft' ? false : (this.streamType === 'flv' ? true : false),\t\t\t//启用缓存 当下面的decodeType为soft, 或流为HLS时, 此处需设置为false\n decodeType: this.decodeType //'auto',\t\t\t\t\t//解码方式: auto, soft\n\n }); //this.h5Video.url = url;\n\n if (this.streamType === 'flv' || this.streamType === 'rtsp') {\n _common_common__WEBPACK_IMPORTED_MODULE_1__[\"setLiveStreamType\"](true);\n }\n }\n\n this.flvPlayer.setCallback(this.callbackFunc, this.callbackPlayTimeFunc, this.callbackConnectStatusFunc, this.callbackUserPtr, this.getVideoInfoCallbackFunc);\n this.flvPlayer.attachMediaElement(this.h5Video, this.canvas);\n this.flvPlayer.load();\n this.flvPlayer.play(); //this.createRenderWorker();\t\t//创建显示线程\n //this.createDownloadWorker();\t//创建拉流线程\n //this.createDecodeWorker();\n //this.createAudioWorker();\t\t//创建音频播放线程\n\n this.flvPlayer.on('statistics_info', function (res) {\n _this4._statisticsInfo = res;\n\n _this4._emitter.emit(_flv_js_player_player_events__WEBPACK_IMPORTED_MODULE_6__[\"default\"].STATISTICS_INFO, res);\n });\n } else {\n this.resume();\n }\n\n return true;\n };\n\n _proto.stop = function stop() {\n this.pauseDisplay = false;\n this.destroy();\n return true;\n };\n\n _proto.isPause = function isPause() {\n return this.pauseDisplay;\n };\n\n _proto.pause = function pause() {\n this.pauseDisplay = true;\n\n if (this.flvPlayer) {\n this.flvPlayer.pause();\n }\n };\n\n _proto.resume = function resume() {\n this.pauseDisplay = false;\n\n if (this.flvPlayer) {\n this.flvPlayer.resume();\n }\n };\n\n _proto.rtspScale = function rtspScale(scaleValue, ptsInterval) {\n if (this.flvPlayer) {\n this.flvPlayer.rtspScale(scaleValue, ptsInterval);\n }\n };\n\n _proto.seek = function seek(seekValue, seekType) {\n this.pauseDisplay = false;\n\n if (this.flvPlayer) {\n this.flvPlayer.seek(seekValue, seekType);\n }\n };\n\n _proto.setTrack = function setTrack(timeTrack, timeLabel) {};\n\n _proto.openAudio = function openAudio() {\n if (this.flvPlayer) {\n return this.flvPlayer.openAudio();\n }\n\n return false;\n };\n\n _proto.closeAudio = function closeAudio() {\n if (this.flvPlayer) {\n return this.flvPlayer.closeAudio();\n }\n\n return false;\n };\n\n _proto.openStatinfo = function openStatinfo() {\n this.printStatInfo = true;\n return true;\n };\n\n _proto.closeStatinfo = function closeStatinfo() {\n this.printStatInfo = false;\n return true;\n };\n\n _proto.snapshot = function snapshot() {\n if (this.flvPlayer && this.flvPlayer != undefined) {\n this.flvPlayer.snapshot();\n }\n };\n\n _proto.isFullScreen = function isFullScreen() {\n return this.fullScreenFlag;\n };\n\n _proto.canvasFullscreen = function canvasFullscreen() {\n var canvas = this.canvas;\n\n if (canvas.RequestFullScreen) {\n canvas.RequestFullScreen();\n } else if (canvas.webkitRequestFullScreen) {\n canvas.webkitRequestFullScreen();\n } else if (canvas.mozRequestFullScreen) {\n canvas.mozRequestFullScreen();\n } else if (canvas.msRequestFullscreen) {\n canvas.msRequestFullscreen();\n } else {\n _common_common__WEBPACK_IMPORTED_MODULE_1__[\"MediaWorkerLog\"]('This browser doesn\\'t supporter fullscreen');\n }\n };\n\n _proto.canvasExitFullscreen = function canvasExitFullscreen() {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n } else {\n _common_common__WEBPACK_IMPORTED_MODULE_1__[\"MediaWorkerLog\"]('Exit fullscreen doesn\\'t work');\n }\n };\n\n _proto.fullscreen = function fullscreen(enable) {\n if (enable == 1) {\n if (!this.fullScreenFlag) {\n this.canvasFullscreen();\n this.fullScreenFlag = true;\n return true;\n }\n } else {\n if (this.fullScreenFlag) {\n this.canvasExitFullscreen();\n this.fullScreenFlag = false;\n return true;\n }\n }\n\n return false;\n };\n\n _createClass(WebMediaFlvPlayer, [{\n key: \"mediaInfo\",\n get: function get() {\n return Object.assign({}, this._mediaInfo);\n }\n }, {\n key: \"statisticsInfo\",\n get: function get() {\n return Object.assign({}, this._statisticsInfo);\n }\n }]);\n\n return WebMediaFlvPlayer;\n}();\n\n\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/WebMediaFlvPlayer.js?"); | |
| 3005 | - | |
| 3006 | -/***/ }), | |
| 3007 | - | |
| 3008 | -/***/ "./src/FlvPlayer/adts.js": | |
| 3009 | -/*!*******************************!*\ | |
| 3010 | - !*** ./src/FlvPlayer/adts.js ***! | |
| 3011 | - \*******************************/ | |
| 3012 | -/*! exports provided: getAudioConfig, isHeaderPattern, getHeaderLength, getFullFrameLength, isHeader, probe, initTrackConfig, getFrameDuration, parseFrameHeader, appendFrame */ | |
| 3013 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3014 | - | |
| 3015 | -"use strict"; | |
| 3016 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAudioConfig\", function() { return getAudioConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isHeaderPattern\", function() { return isHeaderPattern; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getHeaderLength\", function() { return getHeaderLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFullFrameLength\", function() { return getFullFrameLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isHeader\", function() { return isHeader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"probe\", function() { return probe; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initTrackConfig\", function() { return initTrackConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFrameDuration\", function() { return getFrameDuration; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseFrameHeader\", function() { return parseFrameHeader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"appendFrame\", function() { return appendFrame; });\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/common */ \"./src/common/common.js\");\n/**\n * ADTS parser helper\n * @link https://wiki.multimedia.cx/index.php?title=ADTS\n */\n//import { logger } from '../utils/logger';\n//import { ErrorTypes, ErrorDetails } from '../errors';\n//import Event from '../events';\n//import { getSelfScope } from './get-self-scope';\n\nfunction getAudioConfig(data, offset, audioCodec) {\n var adtsObjectType,\n // :int\n adtsSampleingIndex,\n // :int\n adtsExtensionSampleingIndex,\n // :int\n adtsChanelConfig,\n // :int\n config,\n userAgent = navigator.userAgent.toLowerCase(),\n manifestCodec = audioCodec,\n adtsSampleingRates = [96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350]; // byte 2\n\n adtsObjectType = ((data[offset + 2] & 0xC0) >>> 6) + 1;\n adtsSampleingIndex = (data[offset + 2] & 0x3C) >>> 2;\n\n if (adtsSampleingIndex > adtsSampleingRates.length - 1) {\n //observer.trigger(Event.ERROR, { type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.FRAG_PARSING_ERROR, fatal: true, reason: `invalid ADTS sampling index:${adtsSampleingIndex}` });\n console.log('ADTS parse fail. reason: \\'invalid ADTS sampling index:${adtsSampleingIndex}\\'');\n return;\n }\n\n adtsChanelConfig = (data[offset + 2] & 0x01) << 2; // byte 3\n\n adtsChanelConfig |= (data[offset + 3] & 0xC0) >>> 6; //logger.log(`manifest codec:${audioCodec},ADTS data:type:${adtsObjectType},sampleingIndex:${adtsSampleingIndex}[${adtsSampleingRates[adtsSampleingIndex]}Hz],channelConfig:${adtsChanelConfig}`);\n // firefox: freq less than 24kHz = AAC SBR (HE-AAC)\n\n if (/firefox/i.test(userAgent)) {\n if (adtsSampleingIndex >= 6) {\n adtsObjectType = 5;\n config = new Array(4); // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies\n // there is a factor 2 between frame sample rate and output sample rate\n // multiply frequency by 2 (see table below, equivalent to substract 3)\n\n adtsExtensionSampleingIndex = adtsSampleingIndex - 3;\n } else {\n adtsObjectType = 2;\n config = new Array(2);\n adtsExtensionSampleingIndex = adtsSampleingIndex;\n } // Android : always use AAC\n\n } else if (userAgent.indexOf('android') !== -1) {\n adtsObjectType = 2;\n config = new Array(2);\n adtsExtensionSampleingIndex = adtsSampleingIndex;\n } else {\n /* for other browsers (Chrome/Vivaldi/Opera ...)\n always force audio type to be HE-AAC SBR, as some browsers do not support audio codec switch properly (like Chrome ...)\n */\n adtsObjectType = 5;\n config = new Array(4); // if (manifest codec is HE-AAC or HE-AACv2) OR (manifest codec not specified AND frequency less than 24kHz)\n\n if (audioCodec && (audioCodec.indexOf('mp4a.40.29') !== -1 || audioCodec.indexOf('mp4a.40.5') !== -1) || !audioCodec && adtsSampleingIndex >= 6) {\n // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies\n // there is a factor 2 between frame sample rate and output sample rate\n // multiply frequency by 2 (see table below, equivalent to substract 3)\n adtsExtensionSampleingIndex = adtsSampleingIndex - 3;\n } else {\n // if (manifest codec is AAC) AND (frequency less than 24kHz AND nb channel is 1) OR (manifest codec not specified and mono audio)\n // Chrome fails to play back with low frequency AAC LC mono when initialized with HE-AAC. This is not a problem with stereo.\n if (audioCodec && audioCodec.indexOf('mp4a.40.2') !== -1 && (adtsSampleingIndex >= 6 && adtsChanelConfig === 1 || /vivaldi/i.test(userAgent)) || !audioCodec && adtsChanelConfig === 1) {\n adtsObjectType = 2;\n config = new Array(2);\n }\n\n adtsExtensionSampleingIndex = adtsSampleingIndex;\n }\n }\n /* refer to http://wiki.multimedia.cx/index.php?title=MPEG-4_Audio#Audio_Specific_Config\n ISO 14496-3 (AAC).pdf - Table 1.13 — Syntax of AudioSpecificConfig()\n Audio Profile / Audio Object Type\n 0: Null\n 1: AAC Main\n 2: AAC LC (Low Complexity)\n 3: AAC SSR (Scalable Sample Rate)\n 4: AAC LTP (Long Term Prediction)\n 5: SBR (Spectral Band Replication)\n 6: AAC Scalable\n sampling freq\n 0: 96000 Hz\n 1: 88200 Hz\n 2: 64000 Hz\n 3: 48000 Hz\n 4: 44100 Hz\n 5: 32000 Hz\n 6: 24000 Hz\n 7: 22050 Hz\n 8: 16000 Hz\n 9: 12000 Hz\n 10: 11025 Hz\n 11: 8000 Hz\n 12: 7350 Hz\n 13: Reserved\n 14: Reserved\n 15: frequency is written explictly\n Channel Configurations\n These are the channel configurations:\n 0: Defined in AOT Specifc Config\n 1: 1 channel: front-center\n 2: 2 channels: front-left, front-right\n */\n // audioObjectType = profile => profile, the MPEG-4 Audio Object Type minus 1\n\n\n config[0] = adtsObjectType << 3; // samplingFrequencyIndex\n\n config[0] |= (adtsSampleingIndex & 0x0E) >> 1;\n config[1] |= (adtsSampleingIndex & 0x01) << 7; // channelConfiguration\n\n config[1] |= adtsChanelConfig << 3;\n\n if (adtsObjectType === 5) {\n // adtsExtensionSampleingIndex\n config[1] |= (adtsExtensionSampleingIndex & 0x0E) >> 1;\n config[2] = (adtsExtensionSampleingIndex & 0x01) << 7; // adtsObjectType (force to 2, chrome is checking that object type is less than 5 ???\n // https://chromium.googlesource.com/chromium/src.git/+/master/media/formats/mp4/aac.cc\n\n config[2] |= 2 << 2;\n config[3] = 0;\n }\n\n return {\n config: config,\n samplerate: adtsSampleingRates[adtsSampleingIndex],\n channelCount: adtsChanelConfig,\n codec: 'mp4a.40.' + adtsObjectType,\n manifestCodec: manifestCodec\n };\n}\nfunction isHeaderPattern(data, offset) {\n return data[offset] === 0xff && (data[offset + 1] & 0xf6) === 0xf0;\n}\nfunction getHeaderLength(data, offset) {\n return data[offset + 1] & 0x01 ? 7 : 9;\n}\nfunction getFullFrameLength(data, offset) {\n return (data[offset + 3] & 0x03) << 11 | data[offset + 4] << 3 | (data[offset + 5] & 0xE0) >>> 5;\n}\nfunction isHeader(data, offset) {\n // Look for ADTS header | 1111 1111 | 1111 X00X | where X can be either 0 or 1\n // Layer bits (position 14 and 15) in header should be always 0 for ADTS\n // More info https://wiki.multimedia.cx/index.php?title=ADTS\n if (offset + 1 < data.length && isHeaderPattern(data, offset)) {\n return true;\n }\n\n return false;\n}\nfunction probe(data, offset) {\n // same as isHeader but we also check that ADTS frame follows last ADTS frame\n // or end of data is reached\n if (isHeader(data, offset)) {\n // ADTS header Length\n var headerLength = getHeaderLength(data, offset); // ADTS frame Length\n\n var frameLength = headerLength;\n\n if (offset + 5 < data.length) {\n frameLength = getFullFrameLength(data, offset);\n }\n\n var newOffset = offset + frameLength;\n\n if (newOffset === data.length || newOffset + 1 < data.length && isHeaderPattern(data, newOffset)) {\n return true;\n }\n }\n\n return false;\n}\nfunction initTrackConfig(data, offset, audioCodec) {\n var config = getAudioConfig(data, offset, audioCodec);\n return config;\n\n if (!track.samplerate) {\n var _config = getAudioConfig(observer, data, offset, audioCodec);\n\n track.config = _config.config;\n track.samplerate = _config.samplerate;\n track.channelCount = _config.channelCount;\n track.codec = _config.codec;\n track.manifestCodec = _config.manifestCodec;\n console.log(\"parsed codec:\" + track.codec + \",rate:\" + _config.samplerate + \",nb channel:\" + _config.channelCount);\n }\n}\nfunction getFrameDuration(samplerate) {\n return 1024 * 90000 / samplerate;\n}\nfunction parseFrameHeader(data, offset, pts, frameIndex, frameDuration) {\n var headerLength, frameLength, stamp;\n var length = data.length; // The protection skip bit tells us if we have 2 bytes of CRC data at the end of the ADTS header\n\n headerLength = getHeaderLength(data, offset); // retrieve frame size\n\n frameLength = getFullFrameLength(data, offset);\n frameLength -= headerLength;\n\n if (frameLength > 0 && offset + headerLength + frameLength <= length) {\n stamp = pts + frameIndex * frameDuration; // logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}/${(stamp/90).toFixed(0)}`);\n\n return {\n headerLength: headerLength,\n frameLength: frameLength,\n stamp: stamp\n };\n }\n\n return undefined;\n}\nfunction appendFrame(samplerate, data, offset, pts, frameIndex) {\n var frameDuration = getFrameDuration(samplerate);\n var header = parseFrameHeader(data, offset, pts, frameIndex, frameDuration);\n\n if (header) {\n var stamp = header.stamp;\n var headerLength = header.headerLength;\n var frameLength = header.frameLength; // logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}/${(stamp/90).toFixed(0)}`);\n\n var aacSample = {\n unit: data.subarray(offset + headerLength, offset + headerLength + frameLength),\n pts: stamp,\n dts: stamp\n };\n /*\n var objData = {\n cmd: common.tFrameData,\n mediaType: 2,\n codecId: 86018, //AAC\n flag: 0,\n pts: stamp,\n samplerate: samplerate,\n channelNum: channel,\n bitPerSample: bitPerSample,\n playDur: frameDuration,\n data: data.subarray(offset + headerLength, offset + headerLength + frameLength)\n };\n tsDemuxerPtr.postMessage(objData, [objData.data.buffer]);\n */\n //console.log(\"audio frame size: \" + frameLength);\n //track.samples.push(aacSample);\n\n return {\n sample: aacSample,\n length: frameLength + headerLength\n };\n }\n\n return undefined;\n}\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/adts.js?"); | |
| 3017 | - | |
| 3018 | -/***/ }), | |
| 3019 | - | |
| 3020 | -/***/ "./src/FlvPlayer/downloadTsWorker.js": | |
| 3021 | -/*!*******************************************!*\ | |
| 3022 | - !*** ./src/FlvPlayer/downloadTsWorker.js ***! | |
| 3023 | - \*******************************************/ | |
| 3024 | -/*! exports provided: default */ | |
| 3025 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3026 | - | |
| 3027 | -"use strict"; | |
| 3028 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/common */ \"./src/common/common.js\");\n/* harmony import */ var _TSDemuxer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TSDemuxer */ \"./src/FlvPlayer/TSDemuxer.js\");\n/* harmony import */ var _m3u8parser_parse_stream__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./m3u8parser/parse-stream */ \"./src/FlvPlayer/m3u8parser/parse-stream.js\");\n/* harmony import */ var _m3u8parser_line_stream__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./m3u8parser/line-stream */ \"./src/FlvPlayer/m3u8parser/line-stream.js\");\n/* harmony import */ var _m3u8parser_parser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./m3u8parser/parser */ \"./src/FlvPlayer/m3u8parser/parser.js\");\n //import WebGLPlayer from './webgl';\n//import * as ffmpeg from './libffmpeg';\n\n\n\n\n\nvar memory = new WebAssembly.Memory({\n initial: 256,\n maximum: 256\n});\nvar env = {\n abortStackOverflow: function abortStackOverflow() {\n throw new Error('overflow');\n },\n table: new WebAssembly.Table({\n initial: 0,\n maximum: 0,\n element: 'anyfunc'\n }),\n tableBase: 0,\n memory: memory,\n memoryBase: 1024,\n STACKTOP: 0,\n STACK_MAX: memory.buffer.byteLength,\n abort: function abort() {}\n};\n\nvar HlsDownloaderWorker = function HlsDownloaderWorker(self) {\n self.url = '';\n self.canvas = null;\n self.webGLPlayer = null;\n self.videoSampleQueue = [];\n self.audioSampleQueue = [];\n self.videoInterval = 40;\n self.lastRenderTime = 0;\n self.intervalVal = 0;\n self.renderFrameCount = 0;\n self.requestAbort = false; //ֹͣ����\n\n self.pause = false;\n self.cbStreamData = true;\n self.reConnect = true;\n self.isLiveStream = true;\n self.seekTime = 0;\n self.totalDuration = 0;\n self.playDuration = 0;\n self.startVideoPts = 0;\n self.startAudioPts = 0;\n self.tsFileList = [];\n self.getFileIndex = 0;\n self.lastTsFile = '';\n self.isFirstFile = true;\n self.lastTsFileSequence = 0;\n self.sequenceExceptNum = 0;\n self.hlsTsPlaybackFileNo = -1; //HLS�ط��ļ����\n\n self.tsDemuxer = null;\n self.getFileCount = 100;\n self.intervalHandle = -1;\n self.intervalValue = 40;\n self.startDownloadTimeSecs = 0;\n\n var GetTSFile = function GetTSFile() {\n if (self.getFileCount++ < 1) return;\n\n if (self.pause) {\n return;\n }\n\n var tsURL = self.tsFileList[self.getFileIndex].filename;\n var xhr = new XMLHttpRequest();\n xhr.open('get', tsURL, true);\n xhr.responseType = 'arraybuffer';\n\n xhr.onreadystatechange = function () {\n if (xhr.status == 404) {\n _common_common__WEBPACK_IMPORTED_MODULE_0__[\"MediaWorkerLog\"]('current file not found. refresh list...');\n return;\n }\n\n if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {\n var data = new Uint8Array(xhr.response);\n var startTimeSecs = 0;\n var i = 0;\n\n for (i = 0; i < self.getFileIndex; i++) {\n startTimeSecs += self.tsFileList[i].duration;\n }\n\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tFrameData\"],\n workerId: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"DOWNLOAD_WORKER_ID\"],\n mediaType: 1,\n codecId: 27,\n flag: 0,\n pts: 0,\n //pes.pts,\n playTimeSec: 0,\n //dur,\n dat: data\n };\n self.postMessage(objData, [objData.dat.buffer]);\n } else {}\n };\n\n xhr.send();\n self.hlsTsPlaybackFileNo = self.getFileIndex;\n };\n\n self.addEventListener('message', function (ev) {\n var data = ev.data; // console.log('DownloaderWorker:', data);\n\n var mod = ev.data;\n\n switch (data.cmd) {\n case _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tGetTsStream\"]:\n if (data.t == 0) {\n self.tsFileList.push({\n filename: data.url,\n duration: 0\n });\n GetTSFile();\n }\n\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tPauseStream\"]:\n // self.pause = true;\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tResumeStream\"]:\n // self.pause = false;\n // GetTSFile();\n break;\n\n default:\n break;\n }\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (HlsDownloaderWorker);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/downloadTsWorker.js?"); | |
| 3029 | - | |
| 3030 | -/***/ }), | |
| 3031 | - | |
| 3032 | -/***/ "./src/FlvPlayer/downloadWorker.js": | |
| 3033 | -/*!*****************************************!*\ | |
| 3034 | - !*** ./src/FlvPlayer/downloadWorker.js ***! | |
| 3035 | - \*****************************************/ | |
| 3036 | -/*! exports provided: default */ | |
| 3037 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3038 | - | |
| 3039 | -"use strict"; | |
| 3040 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/common */ \"./src/common/common.js\");\n/* harmony import */ var _TSDemuxer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TSDemuxer */ \"./src/FlvPlayer/TSDemuxer.js\");\n/* harmony import */ var _m3u8parser_parse_stream__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./m3u8parser/parse-stream */ \"./src/FlvPlayer/m3u8parser/parse-stream.js\");\n/* harmony import */ var _m3u8parser_line_stream__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./m3u8parser/line-stream */ \"./src/FlvPlayer/m3u8parser/line-stream.js\");\n/* harmony import */ var _m3u8parser_parser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./m3u8parser/parser */ \"./src/FlvPlayer/m3u8parser/parser.js\");\n //import WebGLPlayer from './webgl';\n//import * as ffmpeg from './libffmpeg';\n\n\n\n\n\nvar memory = new WebAssembly.Memory({\n initial: 256,\n maximum: 256\n});\nvar env = {\n abortStackOverflow: function abortStackOverflow() {\n throw new Error('overflow');\n },\n table: new WebAssembly.Table({\n initial: 0,\n maximum: 0,\n element: 'anyfunc'\n }),\n tableBase: 0,\n memory: memory,\n memoryBase: 1024,\n STACKTOP: 0,\n STACK_MAX: memory.buffer.byteLength,\n abort: function abort() {}\n};\n\nvar HlsDownloaderWorker = function HlsDownloaderWorker(self) {\n self.url = '';\n self.canvas = null;\n self.webGLPlayer = null;\n self.videoSampleQueue = [];\n self.audioSampleQueue = [];\n self.videoInterval = 40;\n self.lastRenderTime = 0;\n self.intervalVal = 0;\n self.renderFrameCount = 0;\n self.requestAbort = false; //ֹͣ����\n\n self.pause = false;\n self.cbStreamData = true;\n self.reConnect = true;\n self.isLiveStream = true;\n self.seekTime = 0;\n self.totalDuration = 0;\n self.playDuration = 0;\n self.startVideoPts = 0;\n self.startAudioPts = 0;\n self.tsFileList = [];\n self.getFileIndex = 0;\n self.lastTsFile = '';\n self.isFirstFile = true;\n self.lastTsFileSequence = 0;\n self.sequenceExceptNum = 0;\n self.hlsTsPlaybackFileNo = -1; //HLS�ط��ļ����\n\n self.tsDemuxer = null;\n self.getFileCount = 100;\n self.intervalHandle = -1;\n self.intervalValue = 40;\n self.startDownloadTimeSecs = 0;\n\n var resolve = function resolve(uri, baseurl) {\n if (uri.indexOf('http') >= 0) {\n return uri;\n }\n\n var tmp = baseurl;\n var offset = 0;\n var n = 0;\n\n while (n >= 0) {\n n = tmp.indexOf('/');\n\n if (n >= 0) {\n tmp = tmp.substring(n + 1);\n offset += n + 1;\n } else {\n tmp = baseurl.substring(0, offset);\n }\n }\n\n if (uri !== '') {\n return tmp + uri;\n }\n\n return tmp;\n };\n\n var GetProcessFlag = function GetProcessFlag() {\n return self.requestAbort;\n };\n\n var GetFileSequence = function GetFileSequence(TsFileName) {\n var arr = TsFileName.split('-');\n var num = arr.length;\n\n if (num > 0) {\n var tsFilename = arr[num - 1]; //console.log(\"number: \" + tsFilename);\n\n var s = tsFilename.split('.');\n\n if (s.length > 0) {\n var sequence = s[0]; //console.log(\"sequence: \" + sequence);\n\n return sequence;\n }\n }\n\n return '';\n };\n\n var stopDownload = function stopDownload() {\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tCloseStream\"],\n workerId: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"DOWNLOAD_WORKER_ID\"]\n };\n self.postMessage(objData);\n self.getFileIndex = 0;\n self.hlsTsPlaybackFileNo = -1; //common.MediaWorkerLog(\"StopPlay[\" + self.url + \"].\");\n };\n\n var startDownload = function startDownload(url, openStreamFlag) {\n var size = 0;\n var status = 0;\n var reported = false;\n self.url = url;\n\n if (self._requestAbort == true) {\n stopDownload();\n return;\n }\n\n if (self.pause) {\n return;\n }\n\n if (self.totalDuration > 0 && !self.isLiveStream) {\n return;\n }\n\n var xhr = new XMLHttpRequest();\n xhr.open('get', url, true);\n xhr.responseType = 'text';\n\n xhr.onreadystatechange = function () {\n //var len = xhr.getResponseHeader(\"Content-Length\");\n //if (len) {\n // size = len;\n //}\n if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {\n //common.MediaWorkerLog(\"get file data: \" + xhr.responseText);\n var parser = new _m3u8parser_parser__WEBPACK_IMPORTED_MODULE_4__[\"default\"]();\n parser.push(xhr.responseText);\n parser.end();\n var parsedManifest = parser.manifest;\n console.log(parsedManifest);\n\n if (parser.manifest.endList !== 'undefined' && parser.manifest.endList == true) {\n self.isLiveStream = false;\n } else {\n self.isLiveStream = true;\n } //û��ts�ļ�\n\n\n if (parsedManifest.segments.length < 1) {\n console.log('Not found ts file... waiting for reconnect...');\n var self2 = self;\n _common_common__WEBPACK_IMPORTED_MODULE_0__[\"sleep\"](3000).then(function () {\n //console.log(\"fetch-stream-loader.js::Reopen...\");\n //console.log(\"Reconnecting...\");\n startDownload(self2.url, 1);\n }); //startDownload(self.url, 1);\n\n return;\n }\n\n var i = 0,\n j = 0; //�ط�\n\n if (!self.isLiveStream) {\n //console.log(\"total: \" + parsedManifest.segments.length);\n if (self.seekTime > 0) {\n self.getFileIndex = -1;\n }\n\n for (i = 0; i < parsedManifest.segments.length; i++) {\n //console.log(\"Idx[\" + i + \"] filename:\" + parsedManifest.segments[i].uri);\n var strFilename = resolve(parsedManifest.segments[i].uri, self.url);\n var exist = 0;\n\n for (j = 0; j < self.tsFileList.length; j++) {\n if (self.tsFileList[j].filename === strFilename) {\n exist = 1;\n break;\n }\n }\n\n if (exist == 0) {\n if (self.seekTime > 0 && self.totalDuration >= self.seekTime && self.getFileIndex < 0) {\n self.getFileIndex = i;\n }\n\n var fileinfo = {\n filename: strFilename,\n duration: parsedManifest.segments[i].duration\n };\n self.totalDuration += parsedManifest.segments[i].duration;\n self.tsFileList.push(fileinfo); //console.log(\"FullURL: \" + fileinfo.filename);\n }\n }\n\n if (self.getFileIndex < 0) self.getFileIndex = 0;\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tMediaInfo\"],\n duration: self.totalDuration,\n live: self.isLiveStream,\n workerId: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"DOWNLOAD_WORKER_ID\"]\n };\n self.postMessage(objData); //console.log(\"Total duration: \", self.totalDuration);\n } else {\n //ʵʱ\n if (self.lastTsFile == '') {\n //��һ���ļ�\n for (i = 0; i < parsedManifest.segments.length; i++) {\n //console.log(\"Idx[\" + i + \"] filename:\" + parsedManifest.segments[i].uri);\n var strFilename = resolve(parsedManifest.segments[i].uri, self.url);\n var fileinfo = {\n filename: strFilename,\n duration: parsedManifest.segments[i].duration\n };\n self.tsFileList.push(fileinfo);\n }\n\n var index = 0;\n\n if (parsedManifest.segments.length > 2) {\n index = parsedManifest.segments.length - 1 - 1;\n } //var strFilename = resolve(parsedManifest.segments[index].uri, self.url);\n //var fileinfo = {\n // filename: strFilename,\n // duration: parsedManifest.segments[index].duration\n //};\n //self.tsFileList.push(fileinfo);\n //self.getFileIndex = 0;\n //for (i = 0; i < parsedManifest.segments.length; i++) {\n //console.log(\"Idx[\" + i + \"] filename:\" + parsedManifest.segments[i].uri);\n //}\n\n\n self.getFileIndex = index; //��¼���һ���ļ���\n\n self.lastTsFile = parsedManifest.segments[index].uri; //console.log(\"First FullURL: \" + fileinfo.filename);\n } else {\n var index = -1;\n var procFileRet = false;\n var getLastFileRet = false;\n\n for (i = 0; i < parsedManifest.segments.length; i++) {\n //console.log(\"Idx[\" + i + \"] filename:\" + parsedManifest.segments[i].uri);\n var strFilename = resolve(parsedManifest.segments[i].uri, self.url);\n\n if (parsedManifest.segments[i].uri === self.lastTsFile) {\n index = i; //console.log(\"find last file... clear filelist...\");\n\n self.tsFileList.length = 0;\n self.tsFileList = [];\n self.getFileIndex = 0;\n continue;\n }\n\n if (index >= 0) {\n var fileinfo = {\n filename: strFilename,\n duration: parsedManifest.segments[i].duration\n };\n self.totalDuration += parsedManifest.segments[i].duration; //console.log(\"Add file to list:\" + strFilename);\n\n self.tsFileList.push(fileinfo); //��¼���һ���ļ���\n\n if (!getLastFileRet) {\n self.lastTsFile = parsedManifest.segments[i].uri;\n getLastFileRet = true;\n }\n\n continue;\n }\n\n continue;\n /*\n if (index == -1) {\n for (j = 0; j < self.tsFileList.length; j++) {\n if (self.tsFileList[j].filename === strFilename) {\n index = j;\n break;\n }\n }\n }\n if (index == -1) {\n console.log(\"WARNING: new file:\" + strFilename);\n //˵������̫��, ��ǰm3u8����û��js�л�������һ���ļ���\n var fileinfo = {\n filename: strFilename,\n duration: parsedManifest.segments[i].duration\n };\n self.totalDuration += parsedManifest.segments[i].duration;\n self.tsFileList.length = 0;\n self.tsFileList = [];\n self.tsFileList.push(fileinfo);\n self.getFileIndex = 0;\n index = i;\n //��¼���һ���ļ���\n self.lastTsFile = parsedManifest.segments[i].uri;\n procFileRet = true;\n }\n else {\n var exist = 0;\n for (j = 0; j < self.tsFileList.length; j++) {\n if (self.tsFileList[j].filename === strFilename) {\n exist = 1;\n break;\n }\n }\n if (exist == 0) {\n var fileinfo = {\n filename: strFilename,\n duration: parsedManifest.segments[i].duration\n };\n self.totalDuration += parsedManifest.segments[i].duration;\n self.tsFileList.push(fileinfo);\n //console.log(\"Last FullURL: \" + fileinfo.filename);\n //��¼���һ���ļ���\n self.lastTsFile = parsedManifest.segments[i].uri;\n procFileRet = true;\n }\n }\n */\n }\n\n if (index < 0) {\n self.tsFileList.length = 0;\n self.tsFileList = [];\n self.getFileIndex = 0;\n\n for (i = 0; i < parsedManifest.segments.length; i++) {\n var strFilename = resolve(parsedManifest.segments[i].uri, self.url);\n var fileinfo = {\n filename: strFilename,\n duration: parsedManifest.segments[i].duration\n };\n self.totalDuration += parsedManifest.segments[i].duration;\n self.tsFileList.push(fileinfo); //��¼���һ���ļ���\n\n self.lastTsFile = parsedManifest.segments[i].uri;\n } //console.log(\"not found last file... change to next file...\" + self.tsFileList[self.getFileIndex].filename);\n\n }\n\n if (!procFileRet && openStreamFlag === 1) {\n //console.log(\"play complete...\");\n //common.sleep(3000).then(() => {\n // var objData = {\n // cmd: common.tOpenStream,\n // workerId: common.DOWNLOAD_WORKER_ID\n // };\n // self.postMessage(objData);\n //})\n return;\n }\n }\n }\n\n if (self.tsFileList.length > 0 && openStreamFlag == 1) {\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tOpenStream\"],\n workerId: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"DOWNLOAD_WORKER_ID\"]\n };\n self.postMessage(objData);\n }\n }\n };\n\n xhr.send();\n };\n\n var GetTSFile = function GetTSFile() {\n //console.log(\"downloadWorker.js::GetTSFile...\")\n if (self.getFileCount++ < 1) return;\n var needUpdateList = false;\n\n if (self.pause) {\n return;\n }\n\n if (self._requestAbort == true) {\n stopDownload();\n return;\n } //�ط�\n\n\n if (!self.isLiveStream) {\n if (self.getFileIndex >= self.tsFileList.length) {\n //console.log(\"Get TS File Complete... \" + self.getFileIndex + \" / \" + self.tsFileList.length);\n self.getFileIndex++;\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tGetTsComplete\"],\n workerId: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"DOWNLOAD_WORKER_ID\"]\n };\n self.postMessage(objData);\n return;\n }\n } else {\n self.getFileCount = 0;\n\n if (self.getFileIndex >= self.tsFileList.length || self.getFileCount == 3) {\n //common.MediaWorkerLog(\"GetTsFile::StartDownload...1: \" + self.getFileIndex + \" / \" + self.tsFileList.length + \" getFileCount:\" + self.getFileCount);\n startDownload(self.url, 1);\n return;\n } else {\n //startDownload(self.url, 0);\n needUpdateList = true;\n }\n } //if (self.getFileIndex >= 1) {\n //console.log(\"Debug::Get TS File Complete...\");\n // return;\n //}\n\n\n var tsURL = self.tsFileList[self.getFileIndex].filename;\n\n if (self.isLiveStream) {\n var fileSequence = GetFileSequence(tsURL);\n var nSeq = parseInt(fileSequence);\n\n if (nSeq > 0 && nSeq > self.lastTsFileSequence + 1) {\n //�м䶪ʧ�ļ�, ������MSE����\n self.sequenceExceptNum++; //console.log(\"downloadWorker::sequence: \" + self.lastTsFileSequence + \" --> \" + nSeq);\n\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tResetMSE\"],\n workerId: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"DOWNLOAD_WORKER_ID\"],\n fileSequence: self.sequenceExceptNum\n };\n self.postMessage(objData);\n }\n\n self.lastTsFileSequence = nSeq;\n } else {\n if (self.hlsTsPlaybackFileNo == self.getFileIndex) return;\n } //common.MediaWorkerLog(\"Get TS File... \" + self.getFileIndex + \" / \" + self.tsFileList.length + \" :\" + tsURL);\n //console.log(\"Get TS Stream...\" + self.getFileIndex + \" \" + tsURL);\n //====================================================\n\n\n var xhr = new XMLHttpRequest();\n xhr.open('get', tsURL, true);\n xhr.responseType = 'arraybuffer';\n\n xhr.onreadystatechange = function () {\n //var len = xhr.getResponseHeader(\"Content-Length\");\n //if (len) {\n // size = len;\n //}\n if (xhr.status == 404) {\n _common_common__WEBPACK_IMPORTED_MODULE_0__[\"MediaWorkerLog\"]('current file not found. refresh list...');\n startDownload(self.url, 1);\n return;\n }\n\n if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {\n //common.MediaWorkerLog(\"get file data: \" + xhr.response.byteLength);\n var data = new Uint8Array(xhr.response);\n var startTimeSecs = 0; //if (self.seekTime > 0) {\n\n var i = 0;\n\n for (i = 0; i < self.getFileIndex; i++) {\n startTimeSecs += self.tsFileList[i].duration;\n } //self.seekTime = 0;\n //startTimeSecs = self.seekTime;\n //}\n\n\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tFrameData\"],\n workerId: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"DOWNLOAD_WORKER_ID\"],\n mediaType: 1,\n codecId: 27,\n flag: 0,\n pts: 0,\n //pes.pts,\n playTimeSec: 0,\n //dur,\n dat: data\n };\n self.postMessage(objData, [objData.dat.buffer]); //==============================================================\n //������ȡ��һ��ts�ļ���ʱ\n\n if (self.intervalHandle >= 0) {\n clearInterval(self.intervalHandle);\n self.intervalHandle = -1;\n }\n\n if (!self.pause) {\n var idx = self.getFileIndex;\n\n if (idx >= 0 && idx < self.tsFileList.length) {\n self.intervalValue = self.tsFileList[idx].duration * 1000 - 600; //console.log(\"get next file time:\" + self.intervalValue);\n } else {\n self.intervalValue = 2000; //console.log(\"set default time:\" + self.intervalValue);\n } //��һ���ļ�, ����ȡ��һ��ts�ļ���ʱ����С\n\n\n if (self.isFirstFile) {\n self.isFirstFile = false;\n\n if (self.intervalValue > 900) {\n self.intervalValue -= 900;\n }\n }\n\n self.intervalHandle = setInterval(GetTSFile, self.intervalValue);\n } //==============================================================\n\n\n self.getFileCount = 100;\n self.getFileIndex++;\n\n if (self.getFileIndex >= 0 && self.getFileIndex < self.tsFileList.length) {//console.log(\"Get Next fileno: \" + self.getFileIndex + \" name:\" + self.tsFileList[self.getFileIndex].filename);\n }\n\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tGetTsStreamRsp\"],\n workerId: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"DOWNLOAD_WORKER_ID\"]\n };\n self.postMessage(objData);\n\n if (needUpdateList) {\n //self.tsFileList = [];\n //self.getFileIndex = 0;\n startDownload(self.url, 0);\n return;\n }\n } else {//console.log(\"Get TS Fail: readyState:\" + xhr.readyState + \" status:\" + xhr.status);\n }\n };\n\n xhr.send();\n self.hlsTsPlaybackFileNo = self.getFileIndex; //====================================================\n };\n\n self.addEventListener('message', function (ev) {\n var data = ev.data; //console.log(\"DownloaderWorker: recv data.\");\n\n var mod = ev.data; //console.log('downloadWorker.js::event:' + data);\n\n switch (data.cmd) {\n case _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tOpenStream\"]:\n //console.log(\"download-worker.js. init... \");\n self.url = data.url;\n self.seekTime = data.time; //self.canvas = data.canvas;\n\n /*\n if (self.webGLPlayer == null)\n {\n //console.log(\"new webglplayer\");\n self.webGLPlayer = new WebGLPlayer(data.canvas);\n self.webGLPlayer.initGL({\n preserveDrawingBuffer: false\n });\n }\n console.log(\"init webgl ok.\");\n */\n\n startDownload(data.url, 1);\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tGetTsStream\"]:\n {\n if (data.t == 0) {\n //console.log(\"downloadWorker.js:: eventlistener:message:GetTsFile...\");\n GetTSFile();\n }\n /*\n else {\n let currentTime = new Date();\n var t = data.t + self.intervalValue;\n if (self.startDownloadTimeSecs > 0) {\n t -= (currentTime - self.startDownloadTimeSecs);\n }\n if (self.intervalHandle >= 0) {\n clearInterval(self.intervalHandle);\n self.intervalHandle = -1;\n }\n if (t > 1000) t -= 1000;\n //console.log(\"downloadWorker.js: GetNextTsFileTime: \" + t);\n self.intervalValue = t;\n self.intervalHandle = setInterval(GetTSFile, self.intervalValue);\n self.startDownloadTimeSecs = new Date();\n }\n */\n\n }\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tReOpenStream\"]:\n //console.log(\"downloadWorker::ReopenStream...\");\n startDownload(self.url, 1);\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tSeekStream\"]:\n var seekTimeSecs = data.time; //Ĭ��Ϊ�ⲿ��ֵ(��)\n\n if (data.type == 1) {\n //�϶�������, Ϊ�ٷֱ�, ������ת��Ϊ��\n seekTimeSecs = data.time / 100 * self.totalDuration;\n }\n\n var seekRet = false;\n var secs = 0,\n i = 0;\n\n for (i = 0; i < self.tsFileList.length; i++) {\n secs += self.tsFileList[i].duration;\n\n if (secs > seekTimeSecs) {\n //console.log(\"SeekTime:\" + seekTimeSecs + \" idx:\" + i + \" file:\" + self.tsFileList[i].filename);\n self.getFileIndex = i;\n GetTSFile();\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tSeekStream\"],\n type: data.type,\n time: seekTimeSecs\n };\n self.postMessage(objData);\n seekRet = true;\n break;\n }\n }\n\n if (!seekRet) {\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tSeekStream\"],\n type: data.type,\n time: seekTimeSecs\n };\n self.postMessage(objData);\n } //console.log(\"SeekTime: \" + seekTimeSecs);\n\n\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tPauseStream\"]:\n self.pause = true;\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tResumeStream\"]:\n //console.log(\"ResumtStream: startDownload(,1);\");\n self.pause = false;\n startDownload(self.url, 1);\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_0__[\"tCloseStream\"]:\n //console.log(\"downloadWorker:CloseStream..\");\n self._requestAbort = true;\n self.seekTime = 0;\n stopDownload();\n break;\n\n default:\n break;\n }\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (HlsDownloaderWorker);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/downloadWorker.js?"); | |
| 3041 | - | |
| 3042 | -/***/ }), | |
| 3043 | - | |
| 3044 | -/***/ "./src/FlvPlayer/exp-golomb.js": | |
| 3045 | -/*!*************************************!*\ | |
| 3046 | - !*** ./src/FlvPlayer/exp-golomb.js ***! | |
| 3047 | - \*************************************/ | |
| 3048 | -/*! exports provided: default */ | |
| 3049 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3050 | - | |
| 3051 | -"use strict"; | |
| 3052 | -eval("__webpack_require__.r(__webpack_exports__);\n/**\n * Parser for exponential Golomb codes, a variable-bitwidth number encoding scheme used by h264.\n */\n//import { logger } from '../utils/logger';\nvar ExpGolomb = /*#__PURE__*/function () {\n function ExpGolomb(data) {\n this.data = data; // the number of bytes left to examine in this.data\n\n this.bytesAvailable = data.byteLength; // the current word being examined\n\n this.word = 0; // :uint\n // the number of bits left to examine in the current word\n\n this.bitsAvailable = 0; // :uint\n } // ():void\n\n\n var _proto = ExpGolomb.prototype;\n\n _proto.loadWord = function loadWord() {\n var data = this.data,\n bytesAvailable = this.bytesAvailable,\n position = data.byteLength - bytesAvailable,\n workingBytes = new Uint8Array(4),\n availableBytes = Math.min(4, bytesAvailable);\n\n if (availableBytes === 0) {\n throw new Error('no bytes available');\n }\n\n workingBytes.set(data.subarray(position, position + availableBytes));\n this.word = new DataView(workingBytes.buffer).getUint32(0); // track the amount of this.data that has been processed\n\n this.bitsAvailable = availableBytes * 8;\n this.bytesAvailable -= availableBytes;\n } // (count:int):void\n ;\n\n _proto.skipBits = function skipBits(count) {\n var skipBytes; // :int\n\n if (this.bitsAvailable > count) {\n this.word <<= count;\n this.bitsAvailable -= count;\n } else {\n count -= this.bitsAvailable;\n skipBytes = count >> 3;\n count -= skipBytes >> 3;\n this.bytesAvailable -= skipBytes;\n this.loadWord();\n this.word <<= count;\n this.bitsAvailable -= count;\n }\n } // (size:int):uint\n ;\n\n _proto.readBits = function readBits(size) {\n var bits = Math.min(this.bitsAvailable, size),\n // :uint\n valu = this.word >>> 32 - bits; // :uint\n\n if (size > 32) {\n logger.error('Cannot read more than 32 bits at a time');\n }\n\n this.bitsAvailable -= bits;\n\n if (this.bitsAvailable > 0) {\n this.word <<= bits;\n } else if (this.bytesAvailable > 0) {\n this.loadWord();\n }\n\n bits = size - bits;\n\n if (bits > 0 && this.bitsAvailable) {\n return valu << bits | this.readBits(bits);\n } else {\n return valu;\n }\n } // ():uint\n ;\n\n _proto.skipLZ = function skipLZ() {\n var leadingZeroCount; // :uint\n\n for (leadingZeroCount = 0; leadingZeroCount < this.bitsAvailable; ++leadingZeroCount) {\n if ((this.word & 0x80000000 >>> leadingZeroCount) !== 0) {\n // the first bit of working word is 1\n this.word <<= leadingZeroCount;\n this.bitsAvailable -= leadingZeroCount;\n return leadingZeroCount;\n }\n } // we exhausted word and still have not found a 1\n\n\n this.loadWord();\n return leadingZeroCount + this.skipLZ();\n } // ():void\n ;\n\n _proto.skipUEG = function skipUEG() {\n this.skipBits(1 + this.skipLZ());\n } // ():void\n ;\n\n _proto.skipEG = function skipEG() {\n this.skipBits(1 + this.skipLZ());\n } // ():uint\n ;\n\n _proto.readUEG = function readUEG() {\n var clz = this.skipLZ(); // :uint\n\n return this.readBits(clz + 1) - 1;\n } // ():int\n ;\n\n _proto.readEG = function readEG() {\n var valu = this.readUEG(); // :int\n\n if (0x01 & valu) {\n // the number is odd if the low order bit is set\n return 1 + valu >>> 1; // add 1 to make it even, and divide by 2\n } else {\n return -1 * (valu >>> 1); // divide by two then make it negative\n }\n } // Some convenience functions\n // :Boolean\n ;\n\n _proto.readBoolean = function readBoolean() {\n return this.readBits(1) === 1;\n } // ():int\n ;\n\n _proto.readUByte = function readUByte() {\n return this.readBits(8);\n } // ():int\n ;\n\n _proto.readUShort = function readUShort() {\n return this.readBits(16);\n } // ():int\n ;\n\n _proto.readUInt = function readUInt() {\n return this.readBits(32);\n }\n /**\n * Advance the ExpGolomb decoder past a scaling list. The scaling\n * list is optionally transmitted as part of a sequence parameter\n * set and is not relevant to transmuxing.\n * @param count {number} the number of entries in this scaling list\n * @see Recommendation ITU-T H.264, Section 7.3.2.1.1.1\n */\n ;\n\n _proto.skipScalingList = function skipScalingList(count) {\n var lastScale = 8,\n nextScale = 8,\n j,\n deltaScale;\n\n for (j = 0; j < count; j++) {\n if (nextScale !== 0) {\n deltaScale = this.readEG();\n nextScale = (lastScale + deltaScale + 256) % 256;\n }\n\n lastScale = nextScale === 0 ? lastScale : nextScale;\n }\n }\n /**\n * Read a sequence parameter set and return some interesting video\n * properties. A sequence parameter set is the H264 metadata that\n * describes the properties of upcoming video frames.\n * @param data {Uint8Array} the bytes of a sequence parameter set\n * @return {object} an object with configuration parsed from the\n * sequence parameter set, including the dimensions of the\n * associated video frames.\n */\n ;\n\n _proto.readSPS = function readSPS() {\n var frameCropLeftOffset = 0,\n frameCropRightOffset = 0,\n frameCropTopOffset = 0,\n frameCropBottomOffset = 0,\n profileIdc,\n profileCompat,\n levelIdc,\n numRefFramesInPicOrderCntCycle,\n picWidthInMbsMinus1,\n picHeightInMapUnitsMinus1,\n frameMbsOnlyFlag,\n scalingListCount,\n i,\n readUByte = this.readUByte.bind(this),\n readBits = this.readBits.bind(this),\n readUEG = this.readUEG.bind(this),\n readBoolean = this.readBoolean.bind(this),\n skipBits = this.skipBits.bind(this),\n skipEG = this.skipEG.bind(this),\n skipUEG = this.skipUEG.bind(this),\n skipScalingList = this.skipScalingList.bind(this);\n readUByte();\n profileIdc = readUByte(); // profile_idc\n\n profileCompat = readBits(5); // constraint_set[0-4]_flag, u(5)\n\n skipBits(3); // reserved_zero_3bits u(3),\n\n levelIdc = readUByte(); // level_idc u(8)\n\n skipUEG(); // seq_parameter_set_id\n // some profiles have more optional data we don't need\n\n if (profileIdc === 100 || profileIdc === 110 || profileIdc === 122 || profileIdc === 244 || profileIdc === 44 || profileIdc === 83 || profileIdc === 86 || profileIdc === 118 || profileIdc === 128) {\n var chromaFormatIdc = readUEG();\n\n if (chromaFormatIdc === 3) {\n skipBits(1);\n } // separate_colour_plane_flag\n\n\n skipUEG(); // bit_depth_luma_minus8\n\n skipUEG(); // bit_depth_chroma_minus8\n\n skipBits(1); // qpprime_y_zero_transform_bypass_flag\n\n if (readBoolean()) {\n // seq_scaling_matrix_present_flag\n scalingListCount = chromaFormatIdc !== 3 ? 8 : 12;\n\n for (i = 0; i < scalingListCount; i++) {\n if (readBoolean()) {\n // seq_scaling_list_present_flag[ i ]\n if (i < 6) {\n skipScalingList(16);\n } else {\n skipScalingList(64);\n }\n }\n }\n }\n }\n\n skipUEG(); // log2_max_frame_num_minus4\n\n var picOrderCntType = readUEG();\n\n if (picOrderCntType === 0) {\n readUEG(); // log2_max_pic_order_cnt_lsb_minus4\n } else if (picOrderCntType === 1) {\n skipBits(1); // delta_pic_order_always_zero_flag\n\n skipEG(); // offset_for_non_ref_pic\n\n skipEG(); // offset_for_top_to_bottom_field\n\n numRefFramesInPicOrderCntCycle = readUEG();\n\n for (i = 0; i < numRefFramesInPicOrderCntCycle; i++) {\n skipEG();\n } // offset_for_ref_frame[ i ]\n\n }\n\n skipUEG(); // max_num_ref_frames\n\n skipBits(1); // gaps_in_frame_num_value_allowed_flag\n\n picWidthInMbsMinus1 = readUEG();\n picHeightInMapUnitsMinus1 = readUEG();\n frameMbsOnlyFlag = readBits(1);\n\n if (frameMbsOnlyFlag === 0) {\n skipBits(1);\n } // mb_adaptive_frame_field_flag\n\n\n skipBits(1); // direct_8x8_inference_flag\n\n if (readBoolean()) {\n // frame_cropping_flag\n frameCropLeftOffset = readUEG();\n frameCropRightOffset = readUEG();\n frameCropTopOffset = readUEG();\n frameCropBottomOffset = readUEG();\n }\n\n var pixelRatio = [1, 1];\n\n if (readBoolean()) {\n // vui_parameters_present_flag\n if (readBoolean()) {\n // aspect_ratio_info_present_flag\n var aspectRatioIdc = readUByte();\n\n switch (aspectRatioIdc) {\n case 1:\n pixelRatio = [1, 1];\n break;\n\n case 2:\n pixelRatio = [12, 11];\n break;\n\n case 3:\n pixelRatio = [10, 11];\n break;\n\n case 4:\n pixelRatio = [16, 11];\n break;\n\n case 5:\n pixelRatio = [40, 33];\n break;\n\n case 6:\n pixelRatio = [24, 11];\n break;\n\n case 7:\n pixelRatio = [20, 11];\n break;\n\n case 8:\n pixelRatio = [32, 11];\n break;\n\n case 9:\n pixelRatio = [80, 33];\n break;\n\n case 10:\n pixelRatio = [18, 11];\n break;\n\n case 11:\n pixelRatio = [15, 11];\n break;\n\n case 12:\n pixelRatio = [64, 33];\n break;\n\n case 13:\n pixelRatio = [160, 99];\n break;\n\n case 14:\n pixelRatio = [4, 3];\n break;\n\n case 15:\n pixelRatio = [3, 2];\n break;\n\n case 16:\n pixelRatio = [2, 1];\n break;\n\n case 255:\n {\n pixelRatio = [readUByte() << 8 | readUByte(), readUByte() << 8 | readUByte()];\n break;\n }\n }\n }\n }\n\n return {\n width: Math.ceil((picWidthInMbsMinus1 + 1) * 16 - frameCropLeftOffset * 2 - frameCropRightOffset * 2),\n height: (2 - frameMbsOnlyFlag) * (picHeightInMapUnitsMinus1 + 1) * 16 - (frameMbsOnlyFlag ? 2 : 4) * (frameCropTopOffset + frameCropBottomOffset),\n pixelRatio: pixelRatio\n };\n };\n\n _proto.readSliceType = function readSliceType() {\n // skip NALu type\n this.readUByte(); // discard first_mb_in_slice\n\n this.readUEG(); // return slice_type\n\n return this.readUEG();\n };\n\n return ExpGolomb;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ExpGolomb);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/exp-golomb.js?"); | |
| 3053 | - | |
| 3054 | -/***/ }), | |
| 3055 | - | |
| 3056 | -/***/ "./src/FlvPlayer/flv.js/config.js": | |
| 3057 | -/*!****************************************!*\ | |
| 3058 | - !*** ./src/FlvPlayer/flv.js/config.js ***! | |
| 3059 | - \****************************************/ | |
| 3060 | -/*! exports provided: defaultConfig, createDefaultConfig */ | |
| 3061 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3062 | - | |
| 3063 | -"use strict"; | |
| 3064 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultConfig\", function() { return defaultConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createDefaultConfig\", function() { return createDefaultConfig; });\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar defaultConfig = {\n enableWorker: false,\n enableStashBuffer: true,\n stashInitialSize: undefined,\n isLive: false,\n lazyLoad: true,\n lazyLoadMaxDuration: 3 * 60,\n lazyLoadRecoverDuration: 30,\n deferLoadAfterSourceOpen: true,\n // autoCleanupSourceBuffer: default as false, leave unspecified\n autoCleanupMaxBackwardDuration: 3 * 60,\n autoCleanupMinBackwardDuration: 2 * 60,\n statisticsInfoReportInterval: 600,\n fixAudioTimestampGap: true,\n accurateSeek: false,\n seekType: 'range',\n // [range, param, custom]\n seekParamStart: 'bstart',\n seekParamEnd: 'bend',\n rangeLoadZeroStart: false,\n customSeekHandler: undefined,\n reuseRedirectedURL: false,\n // referrerPolicy: leave as unspecified\n headers: undefined,\n customLoader: undefined\n};\nfunction createDefaultConfig() {\n return Object.assign({}, defaultConfig);\n}\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/config.js?"); | |
| 3065 | - | |
| 3066 | -/***/ }), | |
| 3067 | - | |
| 3068 | -/***/ "./src/FlvPlayer/flv.js/core/features.js": | |
| 3069 | -/*!***********************************************!*\ | |
| 3070 | - !*** ./src/FlvPlayer/flv.js/core/features.js ***! | |
| 3071 | - \***********************************************/ | |
| 3072 | -/*! exports provided: default */ | |
| 3073 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3074 | - | |
| 3075 | -"use strict"; | |
| 3076 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _io_io_controller_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../io/io-controller.js */ \"./src/FlvPlayer/flv.js/io/io-controller.js\");\n/* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../config.js */ \"./src/FlvPlayer/flv.js/config.js\");\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\nvar Features = /*#__PURE__*/function () {\n function Features() {}\n\n Features.supportMSEH264Playback = function supportMSEH264Playback() {\n return window.MediaSource && window.MediaSource.isTypeSupported('video/mp4; codecs=\"avc1.42E01E,mp4a.40.2\"');\n };\n\n Features.supportNetworkStreamIO = function supportNetworkStreamIO() {\n var ioctl = new _io_io_controller_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]({}, Object(_config_js__WEBPACK_IMPORTED_MODULE_1__[\"createDefaultConfig\"])());\n var loaderType = ioctl.loaderType;\n ioctl.destroy();\n return loaderType == 'fetch-stream-loader' || loaderType == 'xhr-moz-chunked-loader';\n };\n\n Features.getNetworkLoaderTypeName = function getNetworkLoaderTypeName() {\n var ioctl = new _io_io_controller_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]({}, Object(_config_js__WEBPACK_IMPORTED_MODULE_1__[\"createDefaultConfig\"])());\n var loaderType = ioctl.loaderType;\n ioctl.destroy();\n return loaderType;\n };\n\n Features.supportNativeMediaPlayback = function supportNativeMediaPlayback(mimeType) {\n if (Features.videoElement == undefined) {\n Features.videoElement = window.document.createElement('video');\n }\n\n var canPlay = Features.videoElement.canPlayType(mimeType);\n return canPlay === 'probably' || canPlay == 'maybe';\n };\n\n Features.getFeatureList = function getFeatureList() {\n var features = {\n mseFlvPlayback: false,\n mseLiveFlvPlayback: false,\n networkStreamIO: false,\n networkLoaderName: '',\n nativeMP4H264Playback: false,\n nativeWebmVP8Playback: false,\n nativeWebmVP9Playback: false\n };\n features.mseFlvPlayback = Features.supportMSEH264Playback();\n features.networkStreamIO = Features.supportNetworkStreamIO();\n features.networkLoaderName = Features.getNetworkLoaderTypeName();\n features.mseLiveFlvPlayback = features.mseFlvPlayback && features.networkStreamIO;\n features.nativeMP4H264Playback = Features.supportNativeMediaPlayback('video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"');\n features.nativeWebmVP8Playback = Features.supportNativeMediaPlayback('video/webm; codecs=\"vp8.0, vorbis\"');\n features.nativeWebmVP9Playback = Features.supportNativeMediaPlayback('video/webm; codecs=\"vp9\"');\n return features;\n };\n\n return Features;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Features);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/core/features.js?"); | |
| 3077 | - | |
| 3078 | -/***/ }), | |
| 3079 | - | |
| 3080 | -/***/ "./src/FlvPlayer/flv.js/core/media-info.js": | |
| 3081 | -/*!*************************************************!*\ | |
| 3082 | - !*** ./src/FlvPlayer/flv.js/core/media-info.js ***! | |
| 3083 | - \*************************************************/ | |
| 3084 | -/*! exports provided: default */ | |
| 3085 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3086 | - | |
| 3087 | -"use strict"; | |
| 3088 | -eval("__webpack_require__.r(__webpack_exports__);\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar MediaInfo = /*#__PURE__*/function () {\n function MediaInfo() {\n this.mimeType = null;\n this.duration = null;\n this.hasAudio = null;\n this.hasVideo = null;\n this.audioCodec = null;\n this.videoCodec = null;\n this.audioDataRate = null;\n this.videoDataRate = null;\n this.audioSampleRate = null;\n this.audioChannelCount = null;\n this.width = null;\n this.height = null;\n this.fps = null;\n this.profile = null;\n this.level = null;\n this.refFrames = null;\n this.chromaFormat = null;\n this.sarNum = null;\n this.sarDen = null;\n this.metadata = null;\n this.segments = null; // MediaInfo[]\n\n this.segmentCount = null;\n this.hasKeyframesIndex = null;\n this.keyframesIndex = null;\n }\n\n var _proto = MediaInfo.prototype;\n\n _proto.isComplete = function isComplete() {\n var audioInfoComplete = this.hasAudio === false || this.hasAudio === true && this.audioCodec != null && this.audioSampleRate != null && this.audioChannelCount != null;\n var videoInfoComplete = this.hasVideo === false || this.hasVideo === true && this.videoCodec != null && this.width != null && this.height != null && this.fps != null && this.profile != null && this.level != null && this.refFrames != null && this.chromaFormat != null && this.sarNum != null && this.sarDen != null; // keyframesIndex may not be present\n\n return this.mimeType != null && this.duration != null && this.metadata != null && this.hasKeyframesIndex != null && audioInfoComplete && videoInfoComplete;\n };\n\n _proto.isSeekable = function isSeekable() {\n return this.hasKeyframesIndex === true;\n };\n\n _proto.getNearestKeyframe = function getNearestKeyframe(milliseconds) {\n if (this.keyframesIndex == null) {\n return null;\n }\n\n var table = this.keyframesIndex;\n\n var keyframeIdx = this._search(table.times, milliseconds);\n\n return {\n index: keyframeIdx,\n milliseconds: table.times[keyframeIdx],\n fileposition: table.filepositions[keyframeIdx]\n };\n };\n\n _proto._search = function _search(list, value) {\n var idx = 0;\n var last = list.length - 1;\n var mid = 0;\n var lbound = 0;\n var ubound = last;\n\n if (value < list[0]) {\n idx = 0;\n lbound = ubound + 1; // skip search\n }\n\n while (lbound <= ubound) {\n mid = lbound + Math.floor((ubound - lbound) / 2);\n\n if (mid === last || value >= list[mid] && value < list[mid + 1]) {\n idx = mid;\n break;\n } else if (list[mid] < value) {\n lbound = mid + 1;\n } else {\n ubound = mid - 1;\n }\n }\n\n return idx;\n };\n\n return MediaInfo;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (MediaInfo);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/core/media-info.js?"); | |
| 3089 | - | |
| 3090 | -/***/ }), | |
| 3091 | - | |
| 3092 | -/***/ "./src/FlvPlayer/flv.js/core/media-segment-info.js": | |
| 3093 | -/*!*********************************************************!*\ | |
| 3094 | - !*** ./src/FlvPlayer/flv.js/core/media-segment-info.js ***! | |
| 3095 | - \*********************************************************/ | |
| 3096 | -/*! exports provided: SampleInfo, MediaSegmentInfo, IDRSampleList, MediaSegmentInfoList */ | |
| 3097 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3098 | - | |
| 3099 | -"use strict"; | |
| 3100 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SampleInfo\", function() { return SampleInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MediaSegmentInfo\", function() { return MediaSegmentInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IDRSampleList\", function() { return IDRSampleList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MediaSegmentInfoList\", function() { return MediaSegmentInfoList; });\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Represents an media sample (audio / video)\nvar SampleInfo = function SampleInfo(dts, pts, duration, originalDts, isSync) {\n this.dts = dts;\n this.pts = pts;\n this.duration = duration;\n this.originalDts = originalDts;\n this.isSyncPoint = isSync;\n this.fileposition = null;\n}; // Media Segment concept is defined in Media Source Extensions spec.\n// Particularly in ISO BMFF format, an Media Segment contains a moof box followed by a mdat box.\n\nvar MediaSegmentInfo = /*#__PURE__*/function () {\n function MediaSegmentInfo() {\n this.beginDts = 0;\n this.endDts = 0;\n this.beginPts = 0;\n this.endPts = 0;\n this.originalBeginDts = 0;\n this.originalEndDts = 0;\n this.syncPoints = []; // SampleInfo[n], for video IDR frames only\n\n this.firstSample = null; // SampleInfo\n\n this.lastSample = null; // SampleInfo\n }\n\n var _proto = MediaSegmentInfo.prototype;\n\n _proto.appendSyncPoint = function appendSyncPoint(sampleInfo) {\n // also called Random Access Point\n sampleInfo.isSyncPoint = true;\n this.syncPoints.push(sampleInfo);\n };\n\n return MediaSegmentInfo;\n}(); // Ordered list for recording video IDR frames, sorted by originalDts\n\nvar IDRSampleList = /*#__PURE__*/function () {\n function IDRSampleList() {\n this._list = [];\n }\n\n var _proto2 = IDRSampleList.prototype;\n\n _proto2.clear = function clear() {\n this._list = [];\n };\n\n _proto2.appendArray = function appendArray(syncPoints) {\n var list = this._list;\n\n if (syncPoints.length === 0) {\n return;\n }\n\n if (list.length > 0 && syncPoints[0].originalDts < list[list.length - 1].originalDts) {\n this.clear();\n }\n\n Array.prototype.push.apply(list, syncPoints);\n };\n\n _proto2.getLastSyncPointBeforeDts = function getLastSyncPointBeforeDts(dts) {\n if (this._list.length == 0) {\n return null;\n }\n\n var list = this._list;\n var idx = 0;\n var last = list.length - 1;\n var mid = 0;\n var lbound = 0;\n var ubound = last;\n\n if (dts < list[0].dts) {\n idx = 0;\n lbound = ubound + 1;\n }\n\n while (lbound <= ubound) {\n mid = lbound + Math.floor((ubound - lbound) / 2);\n\n if (mid === last || dts >= list[mid].dts && dts < list[mid + 1].dts) {\n idx = mid;\n break;\n } else if (list[mid].dts < dts) {\n lbound = mid + 1;\n } else {\n ubound = mid - 1;\n }\n }\n\n return this._list[idx];\n };\n\n return IDRSampleList;\n}(); // Data structure for recording information of media segments in single track.\n\nvar MediaSegmentInfoList = /*#__PURE__*/function () {\n function MediaSegmentInfoList(type) {\n this._type = type;\n this._list = [];\n this._lastAppendLocation = -1; // cached last insert location\n }\n\n var _proto3 = MediaSegmentInfoList.prototype;\n\n _proto3.isEmpty = function isEmpty() {\n return this._list.length === 0;\n };\n\n _proto3.clear = function clear() {\n this._list = [];\n this._lastAppendLocation = -1;\n };\n\n _proto3._searchNearestSegmentBefore = function _searchNearestSegmentBefore(originalBeginDts) {\n var list = this._list;\n\n if (list.length === 0) {\n return -2;\n }\n\n var last = list.length - 1;\n var mid = 0;\n var lbound = 0;\n var ubound = last;\n var idx = 0;\n\n if (originalBeginDts < list[0].originalBeginDts) {\n idx = -1;\n return idx;\n }\n\n while (lbound <= ubound) {\n mid = lbound + Math.floor((ubound - lbound) / 2);\n\n if (mid === last || originalBeginDts > list[mid].lastSample.originalDts && originalBeginDts < list[mid + 1].originalBeginDts) {\n idx = mid;\n break;\n } else if (list[mid].originalBeginDts < originalBeginDts) {\n lbound = mid + 1;\n } else {\n ubound = mid - 1;\n }\n }\n\n return idx;\n };\n\n _proto3._searchNearestSegmentAfter = function _searchNearestSegmentAfter(originalBeginDts) {\n return this._searchNearestSegmentBefore(originalBeginDts) + 1;\n };\n\n _proto3.append = function append(mediaSegmentInfo) {\n var list = this._list;\n var msi = mediaSegmentInfo;\n var lastAppendIdx = this._lastAppendLocation;\n var insertIdx = 0;\n\n if (lastAppendIdx !== -1 && lastAppendIdx < list.length && msi.originalBeginDts >= list[lastAppendIdx].lastSample.originalDts && (lastAppendIdx === list.length - 1 || lastAppendIdx < list.length - 1 && msi.originalBeginDts < list[lastAppendIdx + 1].originalBeginDts)) {\n insertIdx = lastAppendIdx + 1; // use cached location idx\n } else {\n if (list.length > 0) {\n insertIdx = this._searchNearestSegmentBefore(msi.originalBeginDts) + 1;\n }\n }\n\n this._lastAppendLocation = insertIdx;\n\n this._list.splice(insertIdx, 0, msi);\n };\n\n _proto3.getLastSegmentBefore = function getLastSegmentBefore(originalBeginDts) {\n var idx = this._searchNearestSegmentBefore(originalBeginDts);\n\n if (idx >= 0) {\n return this._list[idx];\n } else {\n // -1\n return null;\n }\n };\n\n _proto3.getLastSampleBefore = function getLastSampleBefore(originalBeginDts) {\n var segment = this.getLastSegmentBefore(originalBeginDts);\n\n if (segment != null) {\n return segment.lastSample;\n } else {\n return null;\n }\n };\n\n _proto3.getLastSyncPointBefore = function getLastSyncPointBefore(originalBeginDts) {\n var segmentIdx = this._searchNearestSegmentBefore(originalBeginDts);\n\n var syncPoints = this._list[segmentIdx].syncPoints;\n\n while (syncPoints.length === 0 && segmentIdx > 0) {\n segmentIdx--;\n syncPoints = this._list[segmentIdx].syncPoints;\n }\n\n if (syncPoints.length > 0) {\n return syncPoints[syncPoints.length - 1];\n } else {\n return null;\n }\n };\n\n _createClass(MediaSegmentInfoList, [{\n key: \"type\",\n get: function get() {\n return this._type;\n }\n }, {\n key: \"length\",\n get: function get() {\n return this._list.length;\n }\n }]);\n\n return MediaSegmentInfoList;\n}();\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/core/media-segment-info.js?"); | |
| 3101 | - | |
| 3102 | -/***/ }), | |
| 3103 | - | |
| 3104 | -/***/ "./src/FlvPlayer/flv.js/core/mse-controller.js": | |
| 3105 | -/*!*****************************************************!*\ | |
| 3106 | - !*** ./src/FlvPlayer/flv.js/core/mse-controller.js ***! | |
| 3107 | - \*****************************************************/ | |
| 3108 | -/*! exports provided: default */ | |
| 3109 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3110 | - | |
| 3111 | -"use strict"; | |
| 3112 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ \"./node_modules/node-libs-browser/node_modules/events/events.js\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/browser.js */ \"./src/FlvPlayer/flv.js/utils/browser.js\");\n/* harmony import */ var _mse_events_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mse-events.js */ \"./src/FlvPlayer/flv.js/core/mse-events.js\");\n/* harmony import */ var _media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./media-segment-info.js */ \"./src/FlvPlayer/flv.js/core/media-segment-info.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../common/common */ \"./src/common/common.js\");\n/* harmony import */ var _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./transmuxing-events.js */ \"./src/FlvPlayer/flv.js/core/transmuxing-events.js\");\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n\n\n // Media Source Extensions controller\n\nvar MSEController = /*#__PURE__*/function () {\n function MSEController(config) {\n this.TAG = 'MSEController';\n this._config = config;\n this._emitter = new events__WEBPACK_IMPORTED_MODULE_0___default.a();\n this._currentPlayTime = 0;\n this._hlsSeekTime = 0;\n this._lastPlayTime = 0;\n this._waitingData = false;\n this._pause = false;\n this._lastSpeed = 0;\n\n if (this._config.isLive && this._config.autoCleanupSourceBuffer == undefined) {\n // For live stream, do auto cleanup by default\n this._config.autoCleanupSourceBuffer = true;\n }\n\n this.e = {\n onSourceOpen: this._onSourceOpen.bind(this),\n onSourceEnded: this._onSourceEnded.bind(this),\n onSourceClose: this._onSourceClose.bind(this),\n onSourceBufferError: this._onSourceBufferError.bind(this),\n onSourceBufferUpdateEnd: this._onSourceBufferUpdateEnd.bind(this)\n };\n this._mediaSource = null;\n this._mediaSourceObjectURL = null;\n this._mediaElement = null;\n this._isBufferFull = false;\n this._hasPendingEos = false;\n this._seek = false;\n this._requireSetMediaDuration = false;\n this._pendingMediaDuration = 0;\n this._pendingSourceBufferInit = [];\n this._mimeTypes = {\n video: null,\n audio: null\n };\n this._sourceBuffers = {\n video: null,\n audio: null\n };\n this._lastInitSegments = {\n video: null,\n audio: null\n };\n this._pendingSegments = {\n video: [],\n audio: []\n };\n this._pendingRemoveRanges = {\n video: [],\n audio: []\n };\n this._idrList = new _media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__[\"IDRSampleList\"]();\n }\n\n var _proto = MSEController.prototype;\n\n _proto.destroy = function destroy() {\n if (this._mediaElement || this._mediaSource) {\n this.detachMediaElement();\n }\n\n this.e = null;\n\n this._emitter.removeAllListeners();\n\n this._emitter = null;\n };\n\n _proto.on = function on(event, listener) {\n this._emitter.addListener(event, listener);\n };\n\n _proto.off = function off(event, listener) {\n this._emitter.removeListener(event, listener);\n };\n\n _proto.setSeekPlayTime = function setSeekPlayTime(seekTimeSecs) {\n if (this._mediaElement) {\n this._lastPlayTime = Math.floor(this._mediaElement.currentTime);\n }\n\n this._hlsSeekTime = seekTimeSecs;\n };\n\n _proto.pause = function pause() {\n this._pause = true;\n };\n\n _proto.resume = function resume() {\n this._pause = false;\n };\n\n _proto.attachMediaElement = function attachMediaElement(mediaElement) {\n if (this._mediaSource) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__[\"IllegalStateException\"]('MediaSource has been attached to an HTMLMediaElement!');\n }\n\n var ms = this._mediaSource = new window.MediaSource();\n ms.addEventListener('sourceopen', this.e.onSourceOpen);\n ms.addEventListener('sourceended', this.e.onSourceEnded);\n ms.addEventListener('sourceclose', this.e.onSourceClose);\n this._mediaElement = mediaElement;\n this._mediaSourceObjectURL = window.URL.createObjectURL(this._mediaSource);\n mediaElement.src = this._mediaSourceObjectURL;\n var self = this;\n mediaElement.addEventListener('timeupdate', function () {\n var timeDisplay = Math.floor(mediaElement.currentTime);\n\n if (self._hlsSeekTime > 0) {\n timeDisplay = timeDisplay - self._lastPlayTime + self._hlsSeekTime;\n }\n\n if (self._currentPlayTime != timeDisplay) {\n //self._currentPlayTime = Math.floor(mediaElement.currentTime);\n self._currentPlayTime = timeDisplay; //console.log(\"PlayTime: \" + Math.floor(mediaElement.currentTime) + \" duration:\" + mediaElement.duration);\n\n if (self._emitter) {\n self._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].CB_PLAY_INFO);\n }\n }\n }, false);\n };\n\n _proto.getCurrentPlayTime = function getCurrentPlayTime() {\n return this._currentPlayTime;\n };\n\n _proto.getTotalDuration = function getTotalDuration() {\n return this._mediaElement.duration;\n };\n\n _proto.detachMediaElement = function detachMediaElement() {\n if (this._mediaSource) {\n var ms = this._mediaSource;\n\n for (var type in this._sourceBuffers) {\n // pending segments should be discard\n var ps = this._pendingSegments[type];\n ps.splice(0, ps.length);\n this._pendingSegments[type] = null;\n this._pendingRemoveRanges[type] = null;\n this._lastInitSegments[type] = null; // remove all sourcebuffers\n\n var sb = this._sourceBuffers[type];\n\n if (sb) {\n if (ms.readyState !== 'closed') {\n // ms edge can throw an error: Unexpected call to method or property access\n try {\n ms.removeSourceBuffer(sb);\n } catch (error) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].e(this.TAG, error.message);\n }\n\n sb.removeEventListener('error', this.e.onSourceBufferError);\n sb.removeEventListener('updateend', this.e.onSourceBufferUpdateEnd);\n }\n\n this._mimeTypes[type] = null;\n this._sourceBuffers[type] = null;\n }\n }\n\n if (ms.readyState === 'open') {\n try {\n ms.endOfStream();\n } catch (error) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].e(this.TAG, error.message);\n }\n }\n\n ms.removeEventListener('sourceopen', this.e.onSourceOpen);\n ms.removeEventListener('sourceended', this.e.onSourceEnded);\n ms.removeEventListener('sourceclose', this.e.onSourceClose);\n this._pendingSourceBufferInit = [];\n this._isBufferFull = false;\n\n this._idrList.clear();\n\n this._mediaSource = null;\n }\n\n if (this._mediaElement) {\n this._mediaElement.src = '';\n\n this._mediaElement.removeAttribute('src');\n\n this._mediaElement = null;\n }\n\n if (this._mediaSourceObjectURL) {\n window.URL.revokeObjectURL(this._mediaSourceObjectURL);\n this._mediaSourceObjectURL = null;\n }\n };\n\n _proto.appendInitSegment = function appendInitSegment(initSegment, deferred) {\n if (!this._mediaSource || this._mediaSource.readyState !== 'open') {\n // sourcebuffer creation requires mediaSource.readyState === 'open'\n // so we defer the sourcebuffer creation, until sourceopen event triggered\n this._pendingSourceBufferInit.push(initSegment); // make sure that this InitSegment is in the front of pending segments queue\n\n\n this._pendingSegments[initSegment.type].push(initSegment);\n\n return;\n }\n\n var is = initSegment;\n var mimeType = \"\" + is.container;\n\n if (is.codec && is.codec.length > 0) {\n mimeType += \";codecs=\" + is.codec;\n }\n\n var firstInitSegment = false;\n this._lastInitSegments[is.type] = is;\n\n if (mimeType !== this._mimeTypes[is.type]) {\n if (!this._mimeTypes[is.type]) {\n // empty, first chance create sourcebuffer\n firstInitSegment = true;\n\n try {\n var sb = this._sourceBuffers[is.type] = this._mediaSource.addSourceBuffer(mimeType);\n\n sb.addEventListener('error', this.e.onSourceBufferError);\n sb.addEventListener('updateend', this.e.onSourceBufferUpdateEnd);\n } catch (error) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].e(this.TAG, error.message);\n\n this._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ERROR, {\n code: error.code,\n msg: error.message\n });\n\n return;\n }\n } else {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].v(this.TAG, \"Notice: \" + is.type + \" mimeType changed, origin: \" + this._mimeTypes[is.type] + \", target: \" + mimeType);\n }\n\n this._mimeTypes[is.type] = mimeType;\n }\n\n if (!deferred) {\n // deferred means this InitSegment has been pushed to pendingSegments queue\n this._pendingSegments[is.type].push(is);\n }\n\n if (!firstInitSegment) {\n // append immediately only if init segment in subsequence\n if (this._sourceBuffers[is.type] && !this._sourceBuffers[is.type].updating) {\n this._doAppendSegments();\n }\n }\n\n if (_utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].safari && is.container === 'audio/mpeg' && is.mediaDuration > 0) {\n // 'audio/mpeg' track under Safari may cause MediaElement's duration to be NaN\n // Manually correct MediaSource.duration to make progress bar seekable, and report right duration\n this._requireSetMediaDuration = true;\n this._pendingMediaDuration = is.mediaDuration / 1000; // in seconds\n //console.log(\"mse-controller.js::this._pendingMediaDuration: \" + this._pendingMediaDuration);\n\n this._updateMediaSourceDuration();\n }\n };\n\n _proto.appendMediaSegment = function appendMediaSegment(mediaSegment) {\n var ms = mediaSegment;\n\n this._pendingSegments[ms.type].push(ms);\n\n if (this._config.autoCleanupSourceBuffer && this._needCleanupSourceBuffer() || this._seek) {\n this._doCleanupSourceBuffer();\n\n this._seek = false;\n }\n\n var sb = this._sourceBuffers[ms.type];\n\n if (sb && !sb.updating && !this._hasPendingRemoveRanges()) {\n this._doAppendSegments();\n }\n };\n\n _proto.reset = function reset(callPlay) {\n for (var type in this._sourceBuffers) {\n var sb = this._sourceBuffers[type];\n\n if (sb) {\n var buffered = sb.buffered;\n var doRemove = false;\n\n for (var i = 0; i < buffered.length; i++) {\n var start = buffered.start(i);\n var end = buffered.end(i);\n /*\n if (start <= currentTime && currentTime < end + 3) { // padding 3 seconds\n if (currentTime - start >= this._config.autoCleanupMaxBackwardDuration) {\n doRemove = true;\n let removeEnd = currentTime - this._config.autoCleanupMinBackwardDuration;\n this._pendingRemoveRanges[type].push({ start: start, end: removeEnd });\n }\n } else if (end < currentTime) {\n */\n\n doRemove = true;\n\n this._pendingRemoveRanges[type].push({\n start: start,\n end: end\n }); //}\n\n }\n\n if (doRemove && !sb.updating) {\n this._doRemoveRanges();\n }\n }\n }\n\n this._mediaElement.currentTime = 1;\n\n if (callPlay) {\n this._mediaElement.play();\n }\n };\n\n _proto.seek = function seek(seconds) {\n // remove all appended buffers\n for (var type in this._sourceBuffers) {\n if (!this._sourceBuffers[type]) {\n continue;\n } // abort current buffer append algorithm\n\n\n var sb = this._sourceBuffers[type];\n\n if (this._mediaSource.readyState === 'open') {\n try {\n // If range removal algorithm is running, InvalidStateError will be throwed\n // Ignore it.\n sb.abort();\n } catch (error) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].e(this.TAG, error.message);\n }\n } // IDRList should be clear\n\n\n this._idrList.clear(); // pending segments should be discard\n\n\n var ps = this._pendingSegments[type];\n ps.splice(0, ps.length);\n\n if (this._mediaSource.readyState === 'closed') {\n // Parent MediaSource object has been detached from HTMLMediaElement\n continue;\n } // record ranges to be remove from SourceBuffer\n\n\n for (var i = 0; i < sb.buffered.length; i++) {\n var start = sb.buffered.start(i);\n var end = sb.buffered.end(i);\n\n this._pendingRemoveRanges[type].push({\n start: start,\n end: end\n });\n } // if sb is not updating, let's remove ranges now!\n\n\n if (!sb.updating) {\n this._doRemoveRanges();\n } // Safari 10 may get InvalidStateError in the later appendBuffer() after SourceBuffer.remove() call\n // Internal parser's state may be invalid at this time. Re-append last InitSegment to workaround.\n // Related issue: https://bugs.webkit.org/show_bug.cgi?id=159230\n\n\n if (_utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].safari) {\n var lastInitSegment = this._lastInitSegments[type];\n\n if (lastInitSegment) {\n this._pendingSegments[type].push(lastInitSegment);\n\n if (!sb.updating) {\n this._doAppendSegments();\n }\n }\n }\n }\n };\n\n _proto.endOfStream = function endOfStream() {\n //console.log(\"MSEController::endOfStream...\");\n var ms = this._mediaSource;\n var sb = this._sourceBuffers;\n\n if (!ms || ms.readyState !== 'open') {\n if (ms && ms.readyState === 'closed' && this._hasPendingSegments()) {\n // If MediaSource hasn't turned into open state, and there're pending segments\n // Mark pending endOfStream, defer call until all pending segments appended complete\n this._hasPendingEos = true;\n }\n\n return;\n }\n\n if (sb.video && sb.video.updating || sb.audio && sb.audio.updating) {\n // If any sourcebuffer is updating, defer endOfStream operation\n // See _onSourceBufferUpdateEnd()\n this._hasPendingEos = true;\n } else {\n this._hasPendingEos = false; // Notify media data loading complete\n // This is helpful for correcting total duration to match last media segment\n // Otherwise MediaElement's ended event may not be triggered\n\n ms.endOfStream();\n }\n };\n\n _proto.getNearestKeyframe = function getNearestKeyframe(dts) {\n return this._idrList.getLastSyncPointBeforeDts(dts);\n };\n\n _proto._needCleanupSourceBuffer = function _needCleanupSourceBuffer() {\n if (!this._config.autoCleanupSourceBuffer) {\n return false;\n }\n\n var currentTime = this._mediaElement.currentTime;\n\n for (var type in this._sourceBuffers) {\n var sb = this._sourceBuffers[type];\n\n if (sb) {\n var buffered = sb.buffered;\n\n if (buffered.length >= 1) {\n if (currentTime - buffered.start(0) >= this._config.autoCleanupMaxBackwardDuration) {\n return true;\n }\n }\n }\n }\n\n return false;\n };\n\n _proto.GetSourceBufferStartTime = function GetSourceBufferStartTime() {\n for (var type in this._sourceBuffers) {\n var sb = this._sourceBuffers[type];\n\n if (sb) {\n var buffered = sb.buffered;\n\n for (var i = 0; i < buffered.length; i++) {\n var start = buffered.start(i);\n var end = buffered.end(i);\n return start + (end - start) / 2;\n }\n }\n }\n };\n\n _proto._doCleanupSourceBuffer = function _doCleanupSourceBuffer() {\n var currentTime = this._mediaElement.currentTime;\n\n for (var type in this._sourceBuffers) {\n var sb = this._sourceBuffers[type];\n\n if (sb) {\n var buffered = sb.buffered;\n var doRemove = false;\n\n for (var i = 0; i < buffered.length; i++) {\n var start = buffered.start(i);\n var end = buffered.end(i);\n\n if (start <= currentTime && currentTime < end + 3) {\n // padding 3 seconds\n if (currentTime - start >= this._config.autoCleanupMaxBackwardDuration) {\n doRemove = true;\n var removeEnd = currentTime - this._config.autoCleanupMinBackwardDuration;\n\n this._pendingRemoveRanges[type].push({\n start: start,\n end: removeEnd\n });\n }\n } else if (end < currentTime) {\n doRemove = true;\n\n this._pendingRemoveRanges[type].push({\n start: start,\n end: end\n });\n }\n }\n\n if (doRemove && !sb.updating) {\n this._doRemoveRanges();\n }\n }\n }\n } //add by gavin\n ;\n\n _proto.__ClearAllSourceBuffer = function __ClearAllSourceBuffer() {\n for (var type in this._sourceBuffers) {\n var sb = this._sourceBuffers[type];\n\n if (sb) {\n var buffered = sb.buffered;\n var doRemove = false;\n\n for (var i = 0; i < buffered.length; i++) {\n var start = buffered.start(i);\n var end = buffered.end(i);\n doRemove = true;\n\n this._pendingRemoveRanges[type].push({\n start: start,\n end: end\n });\n }\n\n if (doRemove && !sb.updating) {\n this._doRemoveRanges();\n }\n }\n }\n };\n\n _proto._updateMediaSourceDuration = function _updateMediaSourceDuration() {\n var sb = this._sourceBuffers;\n\n if (this._mediaElement.readyState === 0 || this._mediaSource.readyState !== 'open') {\n return;\n }\n\n if (sb.video && sb.video.updating || sb.audio && sb.audio.updating) {\n return;\n }\n\n var current = this._mediaSource.duration;\n var target = this._pendingMediaDuration;\n\n if (target > 0 && (isNaN(current) || target > current)) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].v(this.TAG, \"Update MediaSource duration from \" + current + \" to \" + target);\n this._mediaSource.duration = target;\n }\n\n this._requireSetMediaDuration = false;\n this._pendingMediaDuration = 0;\n };\n\n _proto._doRemoveRanges = function _doRemoveRanges() {\n for (var type in this._pendingRemoveRanges) {\n if (!this._sourceBuffers[type] || this._sourceBuffers[type].updating) {\n continue;\n }\n\n var sb = this._sourceBuffers[type];\n var ranges = this._pendingRemoveRanges[type];\n\n while (ranges.length && !sb.updating) {\n var range = ranges.shift();\n sb.remove(range.start, range.end);\n }\n }\n };\n\n _proto._doAppendSegments = function _doAppendSegments() {\n var pendingSegments = this._pendingSegments;\n\n for (var type in pendingSegments) {\n if (!this._sourceBuffers[type] || this._sourceBuffers[type].updating) {\n continue;\n }\n\n if (pendingSegments[type].length > 0) {\n var segment = pendingSegments[type].shift();\n\n if (segment.timestampOffset) {\n var currentOffset = this._sourceBuffers[type].timestampOffset;\n var targetOffset = segment.timestampOffset / 1000; // in seconds\n\n var delta = Math.abs(currentOffset - targetOffset);\n\n if (delta > 0.1) {\n // If time delta > 100ms\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].v(this.TAG, \"Update MPEG audio timestampOffset from \" + currentOffset + \" to \" + targetOffset);\n this._sourceBuffers[type].timestampOffset = targetOffset;\n }\n\n delete segment.timestampOffset;\n }\n\n if (!segment.data || segment.data.byteLength === 0) {\n continue;\n }\n\n try {\n this._sourceBuffers[type].appendBuffer(segment.data);\n\n this._isBufferFull = false;\n\n if (type === 'video' && segment.hasOwnProperty('info')) {\n this._idrList.appendArray(segment.info.syncPoints);\n }\n\n _common_common__WEBPACK_IMPORTED_MODULE_6__[\"ClearAppendBufferError\"]();\n } catch (error) {\n console.log('MSEController::_doAppendSegments err:' + error);\n\n this._pendingSegments[type].unshift(segment);\n\n _common_common__WEBPACK_IMPORTED_MODULE_6__[\"SetAppendBufferError\"](type);\n\n this.__ClearAllSourceBuffer();\n\n if (error.code === 22) {\n // QuotaExceededError\n\n /* Notice that FireFox may not throw QuotaExceededError if SourceBuffer is full\n * Currently we can only do lazy-load to avoid SourceBuffer become scattered.\n * SourceBuffer eviction policy may be changed in future version of FireFox.\n *\n * Related issues:\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1279885\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1280023\n */\n // report buffer full, abort network IO\n if (!this._isBufferFull) {\n //console.log(\"BUFFER_FULL\");\n this._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].BUFFER_FULL);\n }\n\n this._isBufferFull = true;\n } else {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].e(this.TAG, error.message);\n\n this._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ERROR, {\n code: error.code,\n msg: error.message\n });\n }\n }\n }\n }\n };\n\n _proto._onSourceOpen = function _onSourceOpen() {\n this._mediaSource.removeEventListener('sourceopen', this.e.onSourceOpen); // deferred sourcebuffer creation / initialization\n\n\n if (this._pendingSourceBufferInit.length > 0) {\n var pendings = this._pendingSourceBufferInit;\n\n while (pendings.length) {\n var segment = pendings.shift();\n this.appendInitSegment(segment, true);\n }\n } // there may be some pending media segments, append them\n\n\n if (this._hasPendingSegments()) {\n this._doAppendSegments();\n }\n\n this._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].SOURCE_OPEN);\n };\n\n _proto._onSourceEnded = function _onSourceEnded() {\n // fired on endOfStream\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].v(this.TAG, 'MediaSource onSourceEnded');\n };\n\n _proto._onSourceClose = function _onSourceClose() {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].v(this.TAG, 'MediaSource onSourceClose');\n\n if (this._mediaSource && this.e != null) {\n this._mediaSource.removeEventListener('sourceopen', this.e.onSourceOpen);\n\n this._mediaSource.removeEventListener('sourceended', this.e.onSourceEnded);\n\n this._mediaSource.removeEventListener('sourceclose', this.e.onSourceClose);\n }\n };\n\n _proto._hasPendingSegments = function _hasPendingSegments() {\n var ps = this._pendingSegments;\n return ps.video.length > 0 || ps.audio.length > 0;\n };\n\n _proto._hasPendingRemoveRanges = function _hasPendingRemoveRanges() {\n var prr = this._pendingRemoveRanges;\n return prr.video.length > 0 || prr.audio.length > 0;\n };\n\n _proto._onSourceBufferUpdateEnd = function _onSourceBufferUpdateEnd() {\n if (this._requireSetMediaDuration) {\n this._updateMediaSourceDuration();\n } else if (this._hasPendingRemoveRanges()) {\n this._doRemoveRanges();\n } else if (this._hasPendingSegments()) {\n this._doAppendSegments();\n } else if (this._hasPendingEos) {\n this.endOfStream();\n }\n\n this._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].UPDATE_END);\n };\n\n _proto._onSourceBufferError = function _onSourceBufferError(e) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].e(this.TAG, \"SourceBuffer Error: \" + e);\n };\n\n return MSEController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (MSEController);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/core/mse-controller.js?"); | |
| 3113 | - | |
| 3114 | -/***/ }), | |
| 3115 | - | |
| 3116 | -/***/ "./src/FlvPlayer/flv.js/core/mse-events.js": | |
| 3117 | -/*!*************************************************!*\ | |
| 3118 | - !*** ./src/FlvPlayer/flv.js/core/mse-events.js ***! | |
| 3119 | - \*************************************************/ | |
| 3120 | -/*! exports provided: default */ | |
| 3121 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3122 | - | |
| 3123 | -"use strict"; | |
| 3124 | -eval("__webpack_require__.r(__webpack_exports__);\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar MSEEvents = {\n ERROR: 'error',\n SOURCE_OPEN: 'source_open',\n UPDATE_END: 'update_end',\n BUFFER_FULL: 'buffer_full',\n CB_PLAY_INFO: 'play_info',\n CHANGE_SPEED: 'change_speed'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (MSEEvents);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/core/mse-events.js?"); | |
| 3125 | - | |
| 3126 | -/***/ }), | |
| 3127 | - | |
| 3128 | -/***/ "./src/FlvPlayer/flv.js/core/transmuxer.js": | |
| 3129 | -/*!*************************************************!*\ | |
| 3130 | - !*** ./src/FlvPlayer/flv.js/core/transmuxer.js ***! | |
| 3131 | - \*************************************************/ | |
| 3132 | -/*! exports provided: default */ | |
| 3133 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3134 | - | |
| 3135 | -"use strict"; | |
| 3136 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ \"./node_modules/node-libs-browser/node_modules/events/events.js\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/logging-control.js */ \"./src/FlvPlayer/flv.js/utils/logging-control.js\");\n/* harmony import */ var _transmuxing_controller_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./transmuxing-controller.js */ \"./src/FlvPlayer/flv.js/core/transmuxing-controller.js\");\n/* harmony import */ var _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./transmuxing-events.js */ \"./src/FlvPlayer/flv.js/core/transmuxing-events.js\");\n/* harmony import */ var _transmuxing_worker_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./transmuxing-worker.js */ \"./src/FlvPlayer/flv.js/core/transmuxing-worker.js\");\n/* harmony import */ var _media_info_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./media-info.js */ \"./src/FlvPlayer/flv.js/core/media-info.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../common/common */ \"./src/common/common.js\");\n/* harmony import */ var webworkify_webpack__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! webworkify-webpack */ \"./node_modules/webworkify-webpack/index.js\");\n/* harmony import */ var webworkify_webpack__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(webworkify_webpack__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _common_webgl__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../common/webgl */ \"./src/common/webgl.js\");\n/* harmony import */ var _common_soundPlayer__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../common/soundPlayer */ \"./src/common/soundPlayer.js\");\n/* harmony import */ var _mse_events_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./mse-events.js */ \"./src/FlvPlayer/flv.js/core/mse-events.js\");\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Transmuxer = /*#__PURE__*/function () {\n function Transmuxer(mediaDataSource, config, mediaCanvas, callbackUserPtr, callbackWasmTypePtr, callbackPlaybackTimePtr, callbackPlaybackTimeUserPtr, getVideoInfoCbFunc) {\n this.TAG = 'Transmuxer';\n this._emitter = new events__WEBPACK_IMPORTED_MODULE_0___default.a();\n this._config = config;\n this.soundPlayer = null;\n this._webGLPlayer = null;\n this._mediaCanvas = mediaCanvas;\n this.pauseDisplay = false;\n this.enableAudio = false;\n this.audioFmt = 0;\n this.audioSamplerate = 0;\n this.audioChannelNum = 2;\n this.initAudioPlayer = false;\n this.totalDuration = 0;\n this.initDuration = 0;\n this.currentPlayTime = 0;\n\n if (mediaDataSource.type === 'm3u8') {\n this.currentPlayTime = mediaDataSource.startPlaySecs;\n }\n\n this._callbackPlaybackTimePtr = callbackPlaybackTimePtr;\n this._callbackPlaybackTimeUserPtr = callbackPlaybackTimeUserPtr;\n this.getVideoInfoCallbackFunc = getVideoInfoCbFunc;\n this.getVideoInfoCB = true;\n var u = navigator.userAgent;\n this.isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android�ն�\n\n this.isiOS = !!u.match(/\\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios�ն�\n\n this.isiPad = false;\n var ua = navigator.userAgent; //.toLowerCase();\n //alert(ua);\n\n var s;\n s = ua.match(/iPad/i);\n\n if (s == 'iPad') {\n this.isiPad = true;\n } else if (ua.indexOf('Macintosh;') > -1 && ua.indexOf('AppleWebKit/')) {\n this.isiPad = true;\n } //alert(\"iPad: \" + this.isiPad + \" iOS:\" + this.isiOS);\n //alert(this.isiOS);\n\n\n this._callbackUserPtr = callbackUserPtr;\n this._callbackWasmTypePtr = callbackWasmTypePtr;\n\n if (config.enableWorker && typeof Worker !== 'undefined') {\n try {\n var _work = __webpack_require__(/*! webworkify */ \"./node_modules/webworkify/index.js\");\n\n this._worker = _work(_transmuxing_worker_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n this._workerDestroying = false;\n\n this._worker.addEventListener('message', this._onWorkerMessage.bind(this));\n\n this._worker.postMessage({\n cmd: 'init',\n param: [mediaDataSource, config]\n });\n\n this.e = {\n onLoggingConfigChanged: this._onLoggingConfigChanged.bind(this)\n };\n _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerListener(this.e.onLoggingConfigChanged);\n\n this._worker.postMessage({\n cmd: 'logging_config',\n param: _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getConfig()\n });\n } catch (error) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].e(this.TAG, 'Error while initialize transmuxing worker, fallback to inline transmuxing');\n this._worker = null;\n this._controller = new _transmuxing_controller_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"](mediaDataSource, config);\n }\n } else {\n this._controller = new _transmuxing_controller_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"](mediaDataSource, config);\n }\n\n if (this._controller) {\n var ctl = this._controller;\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].IO_ERROR, this._onIOError.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].DEMUX_ERROR, this._onDemuxError.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].INIT_SEGMENT, this._onInitSegment.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].MEDIA_SEGMENT, this._onMediaSegment.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].LOADING_COMPLETE, this._onLoadingComplete.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECOVERED_EARLY_EOF, this._onRecoveredEarlyEof.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].MEDIA_INFO, this._onMediaInfo.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].METADATA_ARRIVED, this._onMetaDataArrived.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].SCRIPTDATA_ARRIVED, this._onScriptDataArrived.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].STATISTICS_INFO, this._onStatisticsInfo.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECOMMEND_SEEKPOINT, this._onRecommendSeekpoint.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECONNECT_ING, this._onReconnecting.bind(this));\n ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECONNECT_SUCCESS, this._onReconnectSuccess.bind(this));\n }\n }\n\n var _proto = Transmuxer.prototype;\n\n _proto.destroy = function destroy() {\n if (this._worker) {\n if (!this._workerDestroying) {\n this._workerDestroying = true;\n\n this._worker.postMessage({\n cmd: 'destroy'\n });\n\n _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].removeListener(this.e.onLoggingConfigChanged);\n this.e = null;\n }\n } else {\n this._controller.destroy();\n\n this._controller = null;\n }\n\n this._emitter.removeAllListeners();\n\n this._emitter = null;\n\n if (this.soundPlayer) {\n this.soundPlayer.destroy();\n delete this.soundPlayer;\n this.soundPlayer = null;\n }\n };\n\n _proto.on = function on(event, listener) {\n this._emitter.addListener(event, listener);\n };\n\n _proto.off = function off(event, listener) {\n this._emitter.removeListener(event, listener);\n };\n\n _proto.hasWorker = function hasWorker() {\n return this._worker != null;\n } //=============================================================================\n ;\n\n _proto.OpenAudioPlayer = function OpenAudioPlayer(sampleFmt, channels, sampleRate) {\n if (this.soundPlayer == null) {\n sampleFmt = 1;\n var encoding = '16bitInt';\n\n switch (sampleFmt) {\n case 0:\n encoding = '8bitInt';\n break;\n\n case 1:\n encoding = '16bitInt';\n break;\n\n case 2:\n encoding = '32bitInt';\n break;\n\n case 3:\n encoding = '32bitFloat';\n break;\n\n default:\n console.log('Unsupported audio sampleFmt ' + sampleFmt + '!');\n } //alert(\"encoding: \" + encoding);\n\n\n this.soundPlayer = new _common_soundPlayer__WEBPACK_IMPORTED_MODULE_10__[\"default\"]();\n this.soundPlayer.init({\n encoding: encoding,\n channels: channels,\n sampleRate: sampleRate,\n flushingTime: 1000\n });\n this.initAudioPlayer = true;\n }\n };\n\n _proto.createDecodeWorker = function createDecodeWorker() {\n //console.log(\"create decode worker...\");\n this.decodeWorker = null; //if (config.enableWorker && (typeof (Worker) !== 'undefined')) {\n\n if (typeof Worker !== 'undefined') {\n var w;\n\n try {\n w = this.decodeWorker = webworkify_webpack__WEBPACK_IMPORTED_MODULE_8__(/*require.resolve*/(/*! ../../../common/DecodeWorker.js */ \"./src/common/DecodeWorker.js\"));\n this.onwmsg = this.onWorkerMessage.bind(this);\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tOpenStream\"],\n url: _common_common__WEBPACK_IMPORTED_MODULE_7__[\"getFullURL\"](),\n isFlv: this._controller._isM3u8 ? false : true\n };\n w.postMessage(objData);\n w.addEventListener('message', this.onwmsg);\n\n w.onerror = function (event) {};\n } catch (err) {\n //logger.warn('Error in worker:', err);\n //logger.error('Error while initializing DemuxerWorker, fallback on DemuxerInline');\n console.log('Create Decode Worker fail: ' + err);\n\n if (w) {// revoke the Object URL that was used to create demuxer worker, so as not to leak it\n //global.URL.revokeObjectURL(w.objectURL);\n }\n\n this.w = undefined;\n }\n } else {\n this.decodeWorker = null;\n }\n\n if (this.decodeWorker) {\n if (this._webGLPlayer == null) {\n this._webGLPlayer = new _common_webgl__WEBPACK_IMPORTED_MODULE_9__[\"default\"](this._mediaCanvas);\n }\n }\n };\n\n _proto.getCurrentPlayTime = function getCurrentPlayTime() {\n return this.currentPlayTime;\n };\n\n _proto.getTotalDuration = function getTotalDuration() {\n if (this._controller) {\n return this._controller._GetM3u8TotalDuration();\n }\n\n return this.totalDuration;\n } //���: ��TsDemuxer�ص�������֡����\n ;\n\n _proto._onMediaDataCallback = function _onMediaDataCallback(_this, isWasm, mediaType, codecId, frametype, framedata, framesize, samplerateOrPts, channels, bitPerSample) {\n if (codecId < 1 && !isWasm && framesize === 1) {\n //������ȡ��һ��TS�ļ���ʱ��\n console.log('_onMediaDataCallback... Exception...');\n /*\n _this.GetNextTsFile(samplerateOrPts);\n if (this.initDuration > 0) {\n _this.totalDuration += (samplerateOrPts - this.initDuration); //ms\n }\n this.initDuration = samplerateOrPts;\n */\n\n return;\n }\n\n if (!isWasm) {\n if (_this._callbackWasmTypePtr) {\n _this._callbackWasmTypePtr(_this._callbackUserPtr, false);\n }\n\n return;\n }\n\n if (_this.decodeWorker == null) {\n _this.createDecodeWorker();\n\n if (_this._callbackWasmTypePtr) {\n _this._callbackWasmTypePtr(_this._callbackUserPtr, true);\n }\n }\n\n var bufdata = new Uint8Array(framedata);\n\n if (_this.decodeWorker) {\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tFrameData\"],\n mediaType: mediaType,\n codecId: codecId,\n frameType: frametype,\n samplerate: samplerateOrPts,\n channelNum: channels,\n bitPerSample: bitPerSample,\n playTimeSec: samplerateOrPts,\n dat: bufdata\n };\n\n _this.decodeWorker.postMessage(objData, [objData.dat.buffer]);\n }\n };\n\n _proto.onWorkerMessage = function onWorkerMessage(ev) {\n var data = ev.data; // console.log(ev)\n //console.log(\"FlvPlayer::MainThread: recv data.\");\n\n switch (data.cmd) {\n case _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tDisconnect\"]:\n {\n //console.log(\"disconnect..\");\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tReOpenStream\"]\n };\n this.downloadWorker.postMessage(objData);\n }\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tCloseStream\"]:\n if (data.workerId == _common_common__WEBPACK_IMPORTED_MODULE_7__[\"DOWNLOAD_WORKER_ID\"]) {\n this.downloadWorker.terminate();\n this.downloadWorker = null; //console.log(\"download worker terminate\");\n } else if (data.workerId == _common_common__WEBPACK_IMPORTED_MODULE_7__[\"DECODE_WORKER_ID\"]) {\n this.decodeWorker.terminate();\n this.decodeWorker = null;\n\n if (this.soundPlayer) {\n this.soundPlayer.destroy();\n delete this.soundPlayer;\n this.soundPlayer = null;\n }\n\n if (this._webGLPlayer) {\n this._webGLPlayer.renderVideoFrame(null, 0, 0);\n } //console.log(\"Decode thread terminate...\");\n\n } else if (data.workerId == _common_common__WEBPACK_IMPORTED_MODULE_7__[\"RENDER_WORKER_ID\"]) {\n this.renderWorker.terminate();\n this.renderWorker = null;\n }\n\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tDecoderWorkerStartup\"]:\n {\n if (this.enableAudio) {\n this.openAudio();\n }\n }\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tFrameData\"]:\n if (data.workerId == _common_common__WEBPACK_IMPORTED_MODULE_7__[\"DOWNLOAD_WORKER_ID\"]) {\n //�����̴߳�����������, ת�������߳�\n if (this.decodeWorker) {//var bufdata = new Uint8Array(data.dat);\n //var objData = {\n //\tcmd: common.tFrameData,\n //\tmediaType: 0,\n //\tcodecId: 0,\n //\tsamplerate: 0,\n //\tchannelNum: 0,\n //\tbitPerSample: 0,\n //\tdat: bufdata\n //};\n //this.decodeWorker.postMessage(objData, [objData.dat.buffer]);\n //this.decodeWorker.postMessage(data);\n }\n } else if (data.workerId == _common_common__WEBPACK_IMPORTED_MODULE_7__[\"DECODE_WORKER_ID\"]) {\n if (this.pauseDisplay) break; //�����̴߳�����������, ������ʾ\n\n if (data.mediaType == 1) {\n //VIDEO\n this._mediaCanvas.width = data.width;\n this._mediaCanvas.height = data.height;\n\n if (this.getVideoInfoCB && this.getVideoInfoCallbackFunc && this.getVideoInfoCallbackFunc != undefined) {\n //this.getVideoInfoCallbackFunc(this._callbackPlaybackTimeUserPtr, data.codec, data.width, data.height);\n this.getVideoInfoCallbackFunc(this._callbackPlaybackTimeUserPtr, 'H265', data.width, data.height);\n this.getVideoInfoCB = false; //���ص�һ��\n } //console.log(\" Render: \" + data.framesize);\n //HLS�е�data.playTimeSec > 0\n\n\n if (data.playTimeSec > 0) {\n //console.log(\"render.. pts: \" + data.playTimeSec);\n //����������ʾ��ǰ���Ž���\n var timeDisplay = Math.floor((data.playTimeSec + 1000) / 1000);\n\n if (this.currentPlayTime !== timeDisplay) {\n if (this.initDuration > 0) {\n this.currentPlayTime += timeDisplay - this.initDuration; //ms\n }\n\n if (this.initDuration !== timeDisplay) {\n this.initDuration = timeDisplay; //this.currentPlayTime = timeDisplay;\n\n if (this._emitter) {\n this._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"].CB_PLAY_INFO);\n }\n }\n }\n } //var videoData = new Uint8Array(data.dat);\n\n\n if (this._webGLPlayer) {\n this._webGLPlayer.renderVideoFrame(data.dat, data.width, data.height);\n }\n } else if (data.mediaType == 2) {\n //AUDIO\n if (this.soundPlayer == null) {\n //ƻ��������Ҫ�����û����������´���, ����������, ���������ڴ˴�����\n if (this.soundPlayer == null && !this.isiOS && !this.isiPad) {\n this.OpenAudioPlayer(data.fmt, data.samplerate >= 16000 ? 2 : data.ch, data.samplerate);\n } else {\n this.audioFmt = data.fmt;\n this.audioSamplerate = data.samplerate;\n this.audioChannelNum = data.ch;\n if (this.audioSamplerate == 44100) this.audioFmt = 1;\n }\n }\n\n if (this.enableAudio && this.soundPlayer && this.initAudioPlayer) {\n //console.log(\"Play audio...\");\n this.soundPlayer.play(data.dat);\n }\n }\n }\n\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tDecode\"]:\n if (this.avQueue.length > 0 && !this.pauseDisplay) {//this.decodeAndDisplayLoop();\n }\n\n break;\n\n default:\n break;\n }\n };\n\n _proto.openAudio = function openAudio() {\n //ִ�е��˴���˵��Ϊ�����\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tOpenAudio\"]\n };\n\n if (this.decodeWorker && this.decodeWorker !== undefined) {\n this.decodeWorker.postMessage(objData);\n } //if (this.enableAudio) return true;\n\n\n this.enableAudio = true; //�ݴ�����, �Ƚ����߳��������ٴ�����\n //�����iPad��iPhone, ����Ҫ�ڴ˴�������Ƶ����(�����û�����λ�ô���), �����������\n\n if (this.soundPlayer == null && (this.isiOS || this.isiPad)) {\n //this.audioFmt = 1;\n //this.audioSamplerate = 44100;\n //this.audioChannelNum = 2;\n if (this.audioSamplerate > 0) {\n this.OpenAudioPlayer(this.audioFmt, this.audioSamplerate >= 16000 ? 2 : this.audioChannelNum, this.audioSamplerate);\n } else {\n //��ʱ�����ʣ���ʧ��, ���û���һ���ֶ��㿪\n return false;\n }\n }\n\n return true;\n };\n\n _proto.closeAudio = function closeAudio() {\n //ִ�е��˴���˵��Ϊ�����\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tCloseAudio\"]\n };\n\n if (this.decodeWorker && this.decodeWorker !== undefined) {\n this.decodeWorker.postMessage(objData);\n }\n\n if (this.soundPlayer && this.initAudioPlayer) {\n //this.soundPlayer.pause();\n this.soundPlayer.clearAudioBuffer();\n }\n\n this.enableAudio = false;\n return true;\n } //=============================================================================\n ;\n\n _proto.open = function open() {\n if (this._worker) {\n this._worker.postMessage({\n cmd: 'start'\n });\n } else {\n this._controller.setMediaSourceCallback(this._onMediaDataCallback, this, this._callbackPlaybackTimePtr, this._callbackPlaybackTimeUserPtr, this.getVideoInfoCallbackFunc);\n\n this._controller.start();\n }\n };\n\n _proto.close = function close() {\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tCloseStream\"]\n };\n\n if (this.decodeWorker && this.decodeWorker !== undefined) {\n this.decodeWorker.postMessage(objData);\n }\n\n if (this._webGLPlayer) {\n //console.log(\"webglPlayer.destroy\");\n this._webGLPlayer.renderVideoFrame(null, 0, 0);\n\n this._webGLPlayer.destroy();\n\n delete this._webGLPlayer;\n this._webGLPlayer = null;\n }\n\n if (this._worker) {\n this._worker.postMessage({\n cmd: 'stop'\n });\n } else {\n this._controller.stop();\n }\n };\n\n _proto.changeSpeed = function changeSpeed(speedValue) {\n if (this._controller) {\n this._controller.changeSpeed(speedValue);\n }\n };\n\n _proto.seekToSecs = function seekToSecs(seekValue, seekType) {\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tSeekStream\"],\n type: seekType,\n time: seekValue\n }; //console.log(\"transmuxer.js::SeekToSecs... val[\" + seekValue + \"] type[\" + seekType + \"]\");\n\n if (this.decodeWorker && this.decodeWorker !== undefined) {\n this.decodeWorker.postMessage(objData);\n }\n\n this._controller.seekToSecs(seekValue, seekType);\n };\n\n _proto.seek = function seek(milliseconds) {\n if (this._worker) {\n this._worker.postMessage({\n cmd: 'seek',\n param: milliseconds\n });\n } else {\n this._controller.seek(milliseconds);\n }\n };\n\n _proto.isPaused = function isPaused() {\n return this.pauseDisplay;\n };\n\n _proto.pause = function pause() {\n this.pauseDisplay = true;\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tPauseStream\"]\n };\n\n if (this.decodeWorker && this.decodeWorker !== undefined) {\n this.decodeWorker.postMessage(objData);\n }\n\n if (this._controller) {\n var p = this._controller._GetM3u8Loader();\n\n if (p) {\n p.pause();\n } else {\n this._controller.pauseOrResume(true);\n }\n }\n\n if (this._worker) {\n this._worker.postMessage({\n cmd: 'pause'\n });\n } else {//this._controller.pause();\n }\n };\n\n _proto.resume = function resume() {\n this.pauseDisplay = false;\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_7__[\"tResumeStream\"]\n };\n\n if (this.decodeWorker && this.decodeWorker !== undefined) {\n this.decodeWorker.postMessage(objData);\n }\n\n if (this._controller) {\n var p = this._controller._GetM3u8Loader();\n\n if (p) {\n p.resume();\n } else {\n this._controller.pauseOrResume(false);\n }\n }\n\n if (this._worker) {\n this._worker.postMessage({\n cmd: 'resume'\n });\n } else {\n this._controller.resume();\n }\n };\n\n _proto.rtspScale = function rtspScale(scaleValue, ptsInterval) {\n if (this._controller) {\n this._controller.rtspScale(scaleValue, ptsInterval);\n }\n };\n\n _proto._onReconnecting = function _onReconnecting(reconnectTimes) {\n var _this2 = this;\n\n Promise.resolve().then(function () {\n _this2._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECONNECT_ING, reconnectTimes);\n });\n };\n\n _proto._onReconnectSuccess = function _onReconnectSuccess(reconnectTimes) {\n var _this3 = this;\n\n Promise.resolve().then(function () {\n _this3._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECONNECT_SUCCESS, reconnectTimes);\n });\n };\n\n _proto._onInitSegment = function _onInitSegment(type, initSegment) {\n var _this4 = this;\n\n // do async invoke\n Promise.resolve().then(function () {\n _this4._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].INIT_SEGMENT, type, initSegment);\n });\n };\n\n _proto._onMediaSegment = function _onMediaSegment(type, mediaSegment) {\n var _this5 = this;\n\n Promise.resolve().then(function () {\n _this5._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].MEDIA_SEGMENT, type, mediaSegment);\n });\n };\n\n _proto._onLoadingComplete = function _onLoadingComplete() {\n var _this6 = this;\n\n Promise.resolve().then(function () {\n _this6._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].LOADING_COMPLETE);\n });\n };\n\n _proto._onRecoveredEarlyEof = function _onRecoveredEarlyEof() {\n var _this7 = this;\n\n Promise.resolve().then(function () {\n _this7._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECOVERED_EARLY_EOF);\n });\n };\n\n _proto._onMediaInfo = function _onMediaInfo(mediaInfo) {\n var _this8 = this;\n\n Promise.resolve().then(function () {\n _this8._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].MEDIA_INFO, mediaInfo);\n });\n };\n\n _proto._onMetaDataArrived = function _onMetaDataArrived(metadata) {\n var _this9 = this;\n\n Promise.resolve().then(function () {\n _this9._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].METADATA_ARRIVED, metadata);\n });\n };\n\n _proto._onScriptDataArrived = function _onScriptDataArrived(data) {\n var _this10 = this;\n\n Promise.resolve().then(function () {\n _this10._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].SCRIPTDATA_ARRIVED, data);\n });\n };\n\n _proto._onStatisticsInfo = function _onStatisticsInfo(statisticsInfo) {\n var _this11 = this;\n\n Promise.resolve().then(function () {\n _this11._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].STATISTICS_INFO, statisticsInfo);\n });\n };\n\n _proto._onIOError = function _onIOError(type, info) {\n var _this12 = this;\n\n Promise.resolve().then(function () {\n _this12._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].IO_ERROR, type, info);\n });\n };\n\n _proto._onDemuxError = function _onDemuxError(type, info) {\n var _this13 = this;\n\n Promise.resolve().then(function () {\n _this13._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].DEMUX_ERROR, type, info);\n });\n };\n\n _proto._onRecommendSeekpoint = function _onRecommendSeekpoint(milliseconds) {\n var _this14 = this;\n\n Promise.resolve().then(function () {\n _this14._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECOMMEND_SEEKPOINT, milliseconds);\n });\n };\n\n _proto._onLoggingConfigChanged = function _onLoggingConfigChanged(config) {\n if (this._worker) {\n this._worker.postMessage({\n cmd: 'logging_config',\n param: config\n });\n }\n };\n\n _proto._onWorkerMessage = function _onWorkerMessage(e) {\n var message = e.data;\n var data = message.data;\n\n if (message.msg === 'destroyed' || this._workerDestroying) {\n this._workerDestroying = false;\n\n this._worker.terminate();\n\n this._worker = null;\n return;\n }\n\n switch (message.msg) {\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].INIT_SEGMENT:\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].MEDIA_SEGMENT:\n this._emitter.emit(message.msg, data.type, data.data);\n\n break;\n\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].LOADING_COMPLETE:\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECOVERED_EARLY_EOF:\n this._emitter.emit(message.msg);\n\n break;\n\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].MEDIA_INFO:\n Object.setPrototypeOf(data, _media_info_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].prototype);\n\n this._emitter.emit(message.msg, data);\n\n break;\n\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].METADATA_ARRIVED:\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].SCRIPTDATA_ARRIVED:\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].STATISTICS_INFO:\n this._emitter.emit(message.msg, data);\n\n break;\n\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].IO_ERROR:\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].DEMUX_ERROR:\n this._emitter.emit(message.msg, data.type, data.info);\n\n break;\n\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECOMMEND_SEEKPOINT:\n this._emitter.emit(message.msg, data);\n\n break;\n\n case 'logcat_callback':\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].emitter.emit('log', data.type, data.logcat);\n break;\n\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECONNECT_ING:\n console.log('no process... reconnectSuccess');\n break;\n\n case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECONNECT_SUCCESS:\n console.log('no process... reconnectSuccess');\n break;\n\n default:\n break;\n }\n };\n\n _proto.snapshot = function snapshot() {\n if (this._controller && this._controller != undefined) {\n this._controller.snapshot();\n }\n };\n\n return Transmuxer;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Transmuxer);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/core/transmuxer.js?"); | |
| 3137 | - | |
| 3138 | -/***/ }), | |
| 3139 | - | |
| 3140 | -/***/ "./src/FlvPlayer/flv.js/core/transmuxing-controller.js": | |
| 3141 | -/*!*************************************************************!*\ | |
| 3142 | - !*** ./src/FlvPlayer/flv.js/core/transmuxing-controller.js ***! | |
| 3143 | - \*************************************************************/ | |
| 3144 | -/*! exports provided: default */ | |
| 3145 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3146 | - | |
| 3147 | -"use strict"; | |
| 3148 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ \"./node_modules/node-libs-browser/node_modules/events/events.js\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/browser.js */ \"./src/FlvPlayer/flv.js/utils/browser.js\");\n/* harmony import */ var _media_info_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./media-info.js */ \"./src/FlvPlayer/flv.js/core/media-info.js\");\n/* harmony import */ var _demux_flv_demuxer_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../demux/flv-demuxer.js */ \"./src/FlvPlayer/flv.js/demux/flv-demuxer.js\");\n/* harmony import */ var _remux_mp4_remuxer_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../remux/mp4-remuxer.js */ \"./src/FlvPlayer/flv.js/remux/mp4-remuxer.js\");\n/* harmony import */ var _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../demux/demux-errors.js */ \"./src/FlvPlayer/flv.js/demux/demux-errors.js\");\n/* harmony import */ var _io_io_controller_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../io/io-controller.js */ \"./src/FlvPlayer/flv.js/io/io-controller.js\");\n/* harmony import */ var _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./transmuxing-events.js */ \"./src/FlvPlayer/flv.js/core/transmuxing-events.js\");\n/* harmony import */ var _io_loader_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../io/loader.js */ \"./src/FlvPlayer/flv.js/io/loader.js\");\n/* harmony import */ var _TSDemuxer__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../TSDemuxer */ \"./src/FlvPlayer/TSDemuxer.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../common/common */ \"./src/common/common.js\");\n/* harmony import */ var _demux_rtsp_demuxer_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../demux/rtsp-demuxer.js */ \"./src/FlvPlayer/flv.js/demux/rtsp-demuxer.js\");\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n // Transmuxing (IO, Demuxing, Remuxing) controller, with multipart support\n\nvar TransmuxingController = /*#__PURE__*/function () {\n function TransmuxingController(mediaDataSource, config) {\n this.TAG = 'TransmuxingController';\n this._emitter = new events__WEBPACK_IMPORTED_MODULE_0___default.a();\n this._config = config; // treat single part media as multipart media, which has only one segment\n\n if (!mediaDataSource.segments) {\n mediaDataSource.segments = [{\n duration: mediaDataSource.duration,\n filesize: mediaDataSource.filesize,\n url: mediaDataSource.url\n }];\n } // fill in default IO params if not exists\n\n\n if (typeof mediaDataSource.cors !== 'boolean') {\n mediaDataSource.cors = true;\n }\n\n if (typeof mediaDataSource.withCredentials !== 'boolean') {\n mediaDataSource.withCredentials = false;\n }\n\n this._mediaDataSource = mediaDataSource;\n this._currentSegmentIndex = 0;\n var totalDuration = 0;\n\n this._mediaDataSource.segments.forEach(function (segment) {\n // timestampBase for each segment, and calculate total duration\n segment.timestampBase = totalDuration;\n totalDuration += segment.duration; // params needed by IOController\n\n segment.cors = mediaDataSource.cors;\n segment.withCredentials = mediaDataSource.withCredentials; // referrer policy control, if exist\n\n if (config.referrerPolicy) {\n segment.referrerPolicy = config.referrerPolicy;\n }\n });\n\n if (!isNaN(totalDuration) && this._mediaDataSource.duration !== totalDuration) {\n this._mediaDataSource.duration = totalDuration;\n }\n\n this._mediaInfo = null;\n this._demuxer = null;\n this._remuxer = null;\n this._ioctl = null;\n this._pendingSeekTime = null;\n this._pendingResolveSeekPoint = null;\n this._statisticsReporter = null;\n this._callbackMediaData = null;\n this._callbackUserPtr = null;\n this._callbackPlaybackTimePtr = null;\n this._callbackPlaybackTimeUserPtr = null;\n this.getVideoInfoCallbackFunc = null;\n this._isM3u8 = false;\n this._isRtsp = false;\n this._reconnectTimes = 0; //��������\n }\n\n var _proto = TransmuxingController.prototype;\n\n _proto.destroy = function destroy() {\n this._mediaInfo = null;\n this._mediaDataSource = null;\n\n if (this._statisticsReporter) {\n this._disableStatisticsReporter();\n }\n\n if (this._ioctl) {\n this._ioctl.destroy();\n\n this._ioctl = null;\n }\n\n if (this._demuxer) {\n this._demuxer.destroy();\n\n this._demuxer = null;\n }\n\n if (this._remuxer) {\n this._remuxer.destroy();\n\n this._remuxer = null;\n }\n\n this._emitter.removeAllListeners();\n\n this._emitter = null;\n };\n\n _proto.on = function on(event, listener) {\n this._emitter.addListener(event, listener);\n };\n\n _proto.off = function off(event, listener) {\n this._emitter.removeListener(event, listener);\n };\n\n _proto.setMediaSourceCallback = function setMediaSourceCallback(cbPtr, userPtr, callbackPlaybackTimePtr, cbTimeUserPtr, getVideoInfoCbFunc) {\n this._callbackMediaData = cbPtr;\n this._callbackUserPtr = userPtr;\n this._callbackPlaybackTimePtr = callbackPlaybackTimePtr;\n this._callbackPlaybackTimeUserPtr = cbTimeUserPtr;\n this.getVideoInfoCallbackFunc = getVideoInfoCbFunc;\n };\n\n _proto.start = function start() {\n this._loadSegment(0);\n\n this._enableStatisticsReporter();\n };\n\n _proto._loadSegment = function _loadSegment(segmentIndex, optionalFrom) {\n this._currentSegmentIndex = segmentIndex;\n if (this._mediaDataSource.segments == null) return;\n var dataSource = this._mediaDataSource.segments[segmentIndex];\n var ioctl = this._ioctl = new _io_io_controller_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"](dataSource, this._config, segmentIndex, this._mediaDataSource.startPlaySecs);\n ioctl.onError = this._onIOException.bind(this);\n ioctl.onSeeked = this._onIOSeeked.bind(this);\n ioctl.onComplete = this._onIOComplete.bind(this);\n ioctl.onRedirect = this._onIORedirect.bind(this);\n ioctl.onRecoveredEarlyEof = this._onIORecoveredEarlyEof.bind(this);\n\n if (optionalFrom) {\n this._demuxer.bindDataSource(this._ioctl);\n } else {\n ioctl.onDataArrival = this._onInitChunkArrival.bind(this);\n }\n\n ioctl.open(optionalFrom);\n this._isM3u8 = ioctl._IsM3u8Loader();\n this._isRtsp = ioctl._IsRtspLoader();\n };\n\n _proto.stop = function stop() {\n this._internalAbort();\n\n this._disableStatisticsReporter();\n };\n\n _proto._internalAbort = function _internalAbort() {\n if (this._ioctl) {\n this._ioctl.destroy();\n\n this._ioctl = null;\n }\n };\n\n _proto.pauseOrResume = function pauseOrResume(b) {\n if (this._demuxer == null) return;\n if (this._isM3u8) return;\n\n if (this._isRtsp) {\n if (b) {\n this._ioctl.pause();\n } else {\n this._ioctl.resume();\n }\n }\n\n if (b) {\n this._demuxer.pause();\n } else {\n this._remuxer.seek(0);\n\n this._demuxer.resume();\n }\n };\n\n _proto.pause = function pause() {\n // take a rest\n if (this._ioctl && this._ioctl.isWorking()) {\n this._ioctl.pause();\n\n this._disableStatisticsReporter();\n }\n };\n\n _proto.resume = function resume() {\n if (this._ioctl && this._ioctl.isPaused()) {\n this._ioctl.resume();\n\n this._enableStatisticsReporter();\n }\n };\n\n _proto.rtspScale = function rtspScale(scaleValue, ptsInterval) {\n if (this._isRtsp) {\n this._ioctl.rtspScale(scaleValue);\n\n if (this._demuxer && this._demuxer != undefined) {\n this._demuxer.changeSpeed(ptsInterval);\n }\n }\n };\n\n _proto.changeSpeed = function changeSpeed(speedValue) {\n if (this._remuxer) {\n this._remuxer.changeSpeed(speedValue);\n }\n };\n\n _proto.seekToSecs = function seekToSecs(seekValue, seekType) {\n var p = this._ioctl._GetM3u8Loader();\n\n if (p) {\n p.seek(seekValue, seekType);\n\n if (this._demuxer) {\n this._demuxer.resetMediaPts(1); //this._demuxer.resetMediaInfo();\n\n }\n }\n\n if (this._remuxer) {\n this._remuxer.seek(0); //this._remuxer.insertDiscontinuity();\n\n }\n\n if (p && this._demuxer) {\n this._demuxer.resetMediaPts(0);\n }\n };\n\n _proto.seek = function seek(milliseconds) {\n if (this._mediaInfo == null || !this._mediaInfo.isSeekable()) {\n return;\n }\n\n var targetSegmentIndex = this._searchSegmentIndexContains(milliseconds);\n\n if (targetSegmentIndex === this._currentSegmentIndex) {\n // intra-segment seeking\n var segmentInfo = this._mediaInfo.segments[targetSegmentIndex];\n\n if (segmentInfo == undefined) {\n // current segment loading started, but mediainfo hasn't received yet\n // wait for the metadata loaded, then seek to expected position\n this._pendingSeekTime = milliseconds;\n } else {\n var keyframe = segmentInfo.getNearestKeyframe(milliseconds);\n\n this._remuxer.seek(keyframe.milliseconds);\n\n this._ioctl.seek(keyframe.fileposition); // Will be resolved in _onRemuxerMediaSegmentArrival()\n\n\n this._pendingResolveSeekPoint = keyframe.milliseconds;\n }\n } else {\n // cross-segment seeking\n var targetSegmentInfo = this._mediaInfo.segments[targetSegmentIndex];\n\n if (targetSegmentInfo == undefined) {\n // target segment hasn't been loaded. We need metadata then seek to expected time\n this._pendingSeekTime = milliseconds;\n\n this._internalAbort();\n\n this._remuxer.seek();\n\n this._remuxer.insertDiscontinuity();\n\n this._loadSegment(targetSegmentIndex); // Here we wait for the metadata loaded, then seek to expected position\n\n } else {\n // We have target segment's metadata, direct seek to target position\n var _keyframe = targetSegmentInfo.getNearestKeyframe(milliseconds);\n\n this._internalAbort();\n\n this._remuxer.seek(milliseconds);\n\n this._remuxer.insertDiscontinuity();\n\n this._demuxer.resetMediaInfo();\n\n this._demuxer.timestampBase = this._mediaDataSource.segments[targetSegmentIndex].timestampBase;\n\n this._loadSegment(targetSegmentIndex, _keyframe.fileposition);\n\n this._pendingResolveSeekPoint = _keyframe.milliseconds;\n\n this._reportSegmentMediaInfo(targetSegmentIndex);\n }\n }\n\n this._enableStatisticsReporter();\n };\n\n _proto._searchSegmentIndexContains = function _searchSegmentIndexContains(milliseconds) {\n var segments = this._mediaDataSource.segments;\n var idx = segments.length - 1;\n\n for (var i = 0; i < segments.length; i++) {\n if (milliseconds < segments[i].timestampBase) {\n idx = i - 1;\n break;\n }\n }\n\n return idx;\n };\n\n _proto._onInitChunkArrival = function _onInitChunkArrival(data, byteStart) {\n var _this = this;\n\n if (!this._isM3u8 && !this._isRtsp) {\n var probeData = null;\n var consumed = 0;\n\n if (data == null && byteStart < 0) {\n //console.log(\"Reconnecting [\" + byteStart + \"]\");\n //������\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].RECONNECT_ING, byteStart);\n\n return;\n } else if (data == null && byteStart > 0) {\n /*\n console.log(\"Reconnected [\" + byteStart + \"]\");\n this._reconnectTimes++;\n if (this._reconnectTimes > 0) {\n //�����ɹ�\n this._emitter.emit(TransmuxingEvents.RECONNECT_SUCCESS, this._reconnectTimes);\n }\n */\n return;\n }\n\n if (byteStart > 0) {\n // IOController seeked immediately after opened, byteStart > 0 callback may received\n this._demuxer.bindDataSource(this._ioctl);\n\n this._demuxer.timestampBase = this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase;\n consumed = this._demuxer.parseChunks(data, byteStart);\n } else if ((probeData = _demux_flv_demuxer_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].probe(data)).match) {\n // Always create new FLVDemuxer\n this._demuxer = new _demux_flv_demuxer_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"](probeData, this._config, this._callbackMediaData, this._callbackUserPtr, this._callbackPlaybackTimeUserPtr, this.getVideoInfoCallbackFunc);\n\n if (!this._remuxer) {\n this._remuxer = new _remux_mp4_remuxer_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"](this._config);\n }\n\n var mds = this._mediaDataSource;\n\n if (mds.duration != undefined && !isNaN(mds.duration)) {\n this._demuxer.overridedDuration = mds.duration;\n }\n\n if (typeof mds.hasAudio === 'boolean') {\n this._demuxer.overridedHasAudio = mds.hasAudio;\n }\n\n if (typeof mds.hasVideo === 'boolean') {\n this._demuxer.overridedHasVideo = mds.hasVideo;\n }\n\n this._demuxer.timestampBase = mds.segments[this._currentSegmentIndex].timestampBase;\n this._demuxer.onError = this._onDemuxException.bind(this);\n this._demuxer.onMediaInfo = this._onMediaInfo.bind(this);\n this._demuxer.onMetaDataArrived = this._onMetaDataArrived.bind(this);\n this._demuxer.onScriptDataArrived = this._onScriptDataArrived.bind(this);\n\n this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl));\n\n this._remuxer.onInitSegment = this._onRemuxerInitSegmentArrival.bind(this);\n this._remuxer.onMediaSegment = this._onRemuxerMediaSegmentArrival.bind(this);\n consumed = this._demuxer.parseChunks(data, byteStart); //gavin\n\n if (this._reconnectTimes > 0) {\n //�����ɹ�\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].RECONNECT_SUCCESS, this._reconnectTimes);\n }\n\n this._reconnectTimes++;\n } else {\n probeData = null;\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].e(this.TAG, 'Non-FLV, Unsupported media type!');\n Promise.resolve().then(function () {\n _this._internalAbort();\n });\n\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].DEMUX_ERROR, _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].FORMAT_UNSUPPORTED, 'Non-FLV, Unsupported media type');\n\n consumed = 0;\n }\n\n return consumed;\n } //RTSP\n else if (this._isRtsp) {\n var _probeData = null;\n var _consumed = 0;\n\n if (data == null && byteStart < 0) {\n //console.log(\"Reconnecting [\" + byteStart + \"]\");\n //������\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].RECONNECT_ING, byteStart);\n\n return;\n } else if (data == null && byteStart > 0) {\n //console.log(\"Reconnected [\" + byteStart + \"]\");\n //this._reconnectTimes++;\n //if (this._reconnectTimes > 0) {\n // //�����ɹ�\n // this._emitter.emit(TransmuxingEvents.RECONNECT_SUCCESS, this._reconnectTimes);\n //}\n return;\n } //console.log(\"proc rtsp data...\" + byteStart + \" :\" + data);\n\n\n if (byteStart > 0) {\n // IOController seeked immediately after opened, byteStart > 0 callback may received\n this._demuxer.bindDataSource(this._ioctl);\n\n this._demuxer.timestampBase = this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase;\n _consumed = this._demuxer.parseChunks(data, byteStart);\n } else if ((_probeData = _demux_rtsp_demuxer_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].probe(data)).match) {\n // Always create new RTSPDemuxer\n this._demuxer = new _demux_rtsp_demuxer_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"](_probeData, this._config, this._callbackMediaData, this._callbackUserPtr, this._callbackPlaybackTimePtr, this._callbackPlaybackTimeUserPtr, this.getVideoInfoCallbackFunc);\n\n if (!this._remuxer) {\n this._remuxer = new _remux_mp4_remuxer_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"](this._config);\n }\n\n var _mds = this._mediaDataSource;\n\n if (_mds.duration != undefined && !isNaN(_mds.duration)) {\n this._demuxer.overridedDuration = _mds.duration;\n }\n\n if (typeof _mds.hasAudio === 'boolean') {\n this._demuxer.overridedHasAudio = _mds.hasAudio;\n }\n\n if (typeof _mds.hasVideo === 'boolean') {\n this._demuxer.overridedHasVideo = _mds.hasVideo;\n }\n\n this._demuxer.timestampBase = _mds.segments[this._currentSegmentIndex].timestampBase;\n this._demuxer.onError = this._onDemuxException.bind(this);\n this._demuxer.onMediaInfo = this._onMediaInfo.bind(this);\n this._demuxer.onMetaDataArrived = this._onMetaDataArrived.bind(this);\n this._demuxer.onScriptDataArrived = this._onScriptDataArrived.bind(this);\n\n this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl));\n\n this._remuxer.onInitSegment = this._onRemuxerInitSegmentArrival.bind(this);\n this._remuxer.onMediaSegment = this._onRemuxerMediaSegmentArrival.bind(this); //consumed = this._demuxer.parseChunks(data, byteStart);\n //gavin\n\n if (this._reconnectTimes > 0) {\n //�����ɹ�\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].RECONNECT_SUCCESS, this._reconnectTimes);\n }\n\n this._reconnectTimes++;\n } else {\n _probeData = null;\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].e(this.TAG, 'Non-RTSP, Unsupported media type!');\n Promise.resolve().then(function () {\n _this._internalAbort();\n });\n\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].DEMUX_ERROR, _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].FORMAT_UNSUPPORTED, 'Non-RTSP, Unsupported media type');\n\n _consumed = 0;\n }\n\n return _consumed;\n } //M3U8\n else {\n //console.log(\"parse m3u8 data...\");\n //==================================================================================\n //==================================================================================\n //=======================M3U8=======================================================\n //==================================================================================\n //==================================================================================\n if (data == null && byteStart < 0) {\n //console.log(\"Reconnecting [\" + byteStart + \"]\");\n //������\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].RECONNECT_ING, byteStart);\n\n return;\n } else if (data == null && byteStart > 0) {\n //console.log(\"Reconnected [\" + byteStart + \"]\");\n //this._reconnectTimes++;\n //if (this._reconnectTimes > 0) {\n // //�����ɹ�\n // this._emitter.emit(TransmuxingEvents.RECONNECT_SUCCESS, this._reconnectTimes);\n //}\n return;\n }\n\n var _probeData2 = null;\n var _consumed2 = 0;\n\n if (byteStart > 0) {\n // IOController seeked immediately after opened, byteStart > 0 callback may received\n this._demuxer.bindDataSource(this._ioctl);\n\n this._demuxer.timestampBase = this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase;\n\n this._demuxer.append(data, byteStart, 0);\n\n _consumed2 = data.length;\n } else {\n this._demuxer = new _TSDemuxer__WEBPACK_IMPORTED_MODULE_10__[\"default\"](this._config, this._callbackMediaData, this._callbackUserPtr);\n\n if (!this._remuxer) {\n this._remuxer = new _remux_mp4_remuxer_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"](this._config);\n }\n\n var _mds2 = this._mediaDataSource;\n\n if (_mds2.duration != undefined && !isNaN(_mds2.duration)) {\n this._demuxer.overridedDuration = _mds2.duration;\n }\n\n if (typeof _mds2.hasAudio === 'boolean') {\n this._demuxer.overridedHasAudio = _mds2.hasAudio;\n }\n\n if (typeof _mds2.hasVideo === 'boolean') {\n this._demuxer.overridedHasVideo = _mds2.hasVideo;\n }\n\n this._demuxer.timestampBase = _mds2.segments[this._currentSegmentIndex].timestampBase;\n this._demuxer.onError = this._onDemuxException.bind(this);\n this._demuxer.onMediaInfo = this._onMediaInfo.bind(this);\n this._demuxer.onMetaDataArrived = this._onMetaDataArrived.bind(this);\n this._demuxer.onScriptDataArrived = this._onScriptDataArrived.bind(this);\n\n this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl));\n\n this._remuxer.onInitSegment = this._onRemuxerInitSegmentArrival.bind(this);\n this._remuxer.onMediaSegment = this._onRemuxerMediaSegmentArrival.bind(this);\n\n this._demuxer.append(data, byteStart, 0);\n\n _consumed2 = data.length; //ts����ȫ����\n }\n\n return _consumed2;\n }\n };\n\n _proto._GetM3u8Loader = function _GetM3u8Loader() {\n if (this._ioctl == null) return null;\n\n var p = this._ioctl._GetM3u8Loader();\n\n if (p) {\n return p;\n }\n\n return null;\n };\n\n _proto._GetM3u8TotalDuration = function _GetM3u8TotalDuration() {\n if (this._ioctl == null) return 0;\n\n var p = this._ioctl._GetM3u8Loader();\n\n if (p) {\n return p.GetM3u8TotalDuration();\n }\n\n return 0;\n };\n\n _proto._onMediaInfo = function _onMediaInfo(mediaInfo) {\n var _this2 = this;\n\n //console.log(\"transmuxing-controller.js::_onMediaInfo\");\n if (this._mediaInfo == null) {\n // Store first segment's mediainfo as global mediaInfo\n this._mediaInfo = Object.assign({}, mediaInfo);\n this._mediaInfo.keyframesIndex = null;\n this._mediaInfo.segments = [];\n this._mediaInfo.segmentCount = this._mediaDataSource.segments.length;\n Object.setPrototypeOf(this._mediaInfo, _media_info_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].prototype);\n }\n\n var segmentInfo = Object.assign({}, mediaInfo);\n Object.setPrototypeOf(segmentInfo, _media_info_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].prototype);\n this._mediaInfo.segments[this._currentSegmentIndex] = segmentInfo; // notify mediaInfo update\n\n this._reportSegmentMediaInfo(this._currentSegmentIndex);\n\n if (this._pendingSeekTime != null) {\n Promise.resolve().then(function () {\n var target = _this2._pendingSeekTime;\n _this2._pendingSeekTime = null;\n\n _this2.seek(target);\n });\n }\n };\n\n _proto._onMetaDataArrived = function _onMetaDataArrived(metadata) {\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].METADATA_ARRIVED, metadata);\n };\n\n _proto._onScriptDataArrived = function _onScriptDataArrived(data) {\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].SCRIPTDATA_ARRIVED, data);\n };\n\n _proto._onIOSeeked = function _onIOSeeked() {\n this._remuxer.insertDiscontinuity();\n };\n\n _proto._onIOComplete = function _onIOComplete(extraData) {\n var segmentIndex = extraData;\n var nextSegmentIndex = segmentIndex + 1; //console.log(\"extraData: \" + extraData);\n //let ioCtlIsM3u8Loader = false;\n\n if (this._ioctl && this._ioctl._IsM3u8Loader()) {\n //ioCtlIsM3u8Loader = true;\n var m3u8Loader = this._ioctl._GetM3u8Loader(); //if (m3u8Loader.)\n\n\n if (_common_common__WEBPACK_IMPORTED_MODULE_11__[\"GetLiveStreamType\"]()) {\n console.log('M3u8: Reconnect Success'); //����MSE\n\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].RECONNECT_SUCCESS, 2); //���ٽ⸴��ģ��\n\n\n if (this._demuxer) {\n this._demuxer.destroy();\n\n this._demuxer = null;\n } //���ٸ���ģ��\n\n\n if (this._remuxer) {\n this._remuxer.destroy();\n\n this._remuxer = null;\n } //����ioctl\n\n\n if (this._ioctl) {\n this._ioctl.destroy();\n\n this._ioctl = null;\n } //���´���ioctl\n\n\n this.start();\n } else {\n /*\n //����MSE\n this._emitter.emit(TransmuxingEvents.RECONNECT_SUCCESS, 2);\n //���ٽ⸴��ģ��\n if (this._demuxer) {\n this._demuxer.destroy();\n this._demuxer = null;\n }\n //���ٸ���ģ��\n if (this._remuxer) {\n this._remuxer.destroy();\n this._remuxer = null;\n }\n */\n }\n\n return;\n }\n\n if (nextSegmentIndex < this._mediaDataSource.segments.length) {\n //console.log(\"transmuxing-controller.js::_onIOComplete: nextSegmentIndex < this._mediaDataSource.segments.length: \" + nextSegmentIndex + \" < \" + this._mediaDataSource.segments.length);\n this._internalAbort();\n\n if (this._remuxer) {\n this._remuxer.flushStashedSamples();\n } //this._loadSegment(nextSegmentIndex);\n //gavin\n\n\n if (extraData === -1) {\n if (this._demuxer) {\n this._demuxer.destroy();\n\n this._demuxer = null;\n }\n\n if (this._remuxer) {\n this._remuxer.destroy();\n\n this._remuxer = null;\n }\n\n if (this._ioctl) {\n this._ioctl.destroy();\n\n this._ioctl = null;\n }\n\n var _self = this;\n\n _common_common__WEBPACK_IMPORTED_MODULE_11__[\"sleep\"](3000).then(function () {\n //console.log(\"Reopen...\");\n _self.start();\n });\n }\n } else {\n //console.log(\"transmuxing-controller.js::_onIOComplete: nextSegmentIndex >= this._mediaDataSource.segments.length: \" + nextSegmentIndex + \" >= \" + this._mediaDataSource.segments.length);\n if (this._remuxer) {\n this._remuxer.flushStashedSamples();\n\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].LOADING_COMPLETE);\n\n this._disableStatisticsReporter();\n } //gavin\n\n\n if (extraData === -1) {\n if (this._demuxer) {\n this._demuxer.destroy();\n\n this._demuxer = null;\n }\n\n if (this._remuxer) {\n this._remuxer.destroy();\n\n this._remuxer = null;\n }\n\n if (this._ioctl) {\n this._ioctl.destroy();\n\n this._ioctl = null;\n } //console.log(\"Destroy..... demuxer... remuxer... ioctl...\");\n\n\n var _self2 = this;\n\n _common_common__WEBPACK_IMPORTED_MODULE_11__[\"sleep\"](3000).then(function () {\n //console.log(\"Reopen...\");\n _self2.start();\n });\n }\n }\n };\n\n _proto._onIORedirect = function _onIORedirect(redirectedURL) {\n var segmentIndex = this._ioctl.extraData;\n this._mediaDataSource.segments[segmentIndex].redirectedURL = redirectedURL;\n };\n\n _proto._onIORecoveredEarlyEof = function _onIORecoveredEarlyEof() {\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].RECOVERED_EARLY_EOF);\n };\n\n _proto._onIOException = function _onIOException(type, info) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].e(this.TAG, \"IOException: type = \" + type + \", code = \" + info.code + \", msg = \" + info.msg);\n\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].IO_ERROR, type, info);\n\n this._disableStatisticsReporter();\n };\n\n _proto._onDemuxException = function _onDemuxException(type, info) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].e(this.TAG, \"DemuxException: type = \" + type + \", info = \" + info);\n\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].DEMUX_ERROR, type, info);\n };\n\n _proto._onRemuxerInitSegmentArrival = function _onRemuxerInitSegmentArrival(type, initSegment) {\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].INIT_SEGMENT, type, initSegment);\n };\n\n _proto._onRemuxerMediaSegmentArrival = function _onRemuxerMediaSegmentArrival(type, mediaSegment) {\n if (this._pendingSeekTime != null) {\n // Media segments after new-segment cross-seeking should be dropped.\n return;\n }\n\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].MEDIA_SEGMENT, type, mediaSegment); // Resolve pending seekPoint\n\n\n if (this._pendingResolveSeekPoint != null && type === 'video') {\n var syncPoints = mediaSegment.info.syncPoints;\n var seekpoint = this._pendingResolveSeekPoint;\n this._pendingResolveSeekPoint = null; // Safari: Pass PTS for recommend_seekpoint\n\n if (_utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].safari && syncPoints.length > 0 && syncPoints[0].originalDts === seekpoint) {\n seekpoint = syncPoints[0].pts;\n } // else: use original DTS (keyframe.milliseconds)\n\n\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].RECOMMEND_SEEKPOINT, seekpoint);\n }\n };\n\n _proto._enableStatisticsReporter = function _enableStatisticsReporter() {\n if (this._statisticsReporter == null) {\n this._statisticsReporter = self.setInterval(this._reportStatisticsInfo.bind(this), this._config.statisticsInfoReportInterval);\n }\n };\n\n _proto._disableStatisticsReporter = function _disableStatisticsReporter() {\n if (this._statisticsReporter) {\n self.clearInterval(this._statisticsReporter);\n this._statisticsReporter = null;\n }\n };\n\n _proto._reportSegmentMediaInfo = function _reportSegmentMediaInfo(segmentIndex) {\n var segmentInfo = this._mediaInfo.segments[segmentIndex];\n var exportInfo = Object.assign({}, segmentInfo);\n exportInfo.duration = this._mediaInfo.duration;\n exportInfo.segmentCount = this._mediaInfo.segmentCount;\n delete exportInfo.segments;\n delete exportInfo.keyframesIndex;\n\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].MEDIA_INFO, exportInfo);\n };\n\n _proto._reportStatisticsInfo = function _reportStatisticsInfo() {\n var info = {};\n if (this._ioctl == null) return;\n info.url = this._ioctl.currentURL;\n info.hasRedirect = this._ioctl.hasRedirect;\n\n if (info.hasRedirect) {\n info.redirectedURL = this._ioctl.currentRedirectedURL;\n }\n\n info.speed = this._ioctl.currentSpeed;\n info.loaderType = this._ioctl.loaderType;\n info.currentSegmentIndex = this._currentSegmentIndex;\n info.totalSegmentCount = this._mediaDataSource.segments.length;\n\n this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].STATISTICS_INFO, info);\n };\n\n _proto.snapshot = function snapshot() {\n if (this._demuxer && this._demuxer != undefined) {\n this._demuxer.snapshot();\n }\n };\n\n return TransmuxingController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (TransmuxingController);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/core/transmuxing-controller.js?"); | |
| 3149 | - | |
| 3150 | -/***/ }), | |
| 3151 | - | |
| 3152 | -/***/ "./src/FlvPlayer/flv.js/core/transmuxing-events.js": | |
| 3153 | -/*!*********************************************************!*\ | |
| 3154 | - !*** ./src/FlvPlayer/flv.js/core/transmuxing-events.js ***! | |
| 3155 | - \*********************************************************/ | |
| 3156 | -/*! exports provided: default */ | |
| 3157 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3158 | - | |
| 3159 | -"use strict"; | |
| 3160 | -eval("__webpack_require__.r(__webpack_exports__);\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar TransmuxingEvents = {\n IO_ERROR: 'io_error',\n DEMUX_ERROR: 'demux_error',\n INIT_SEGMENT: 'init_segment',\n MEDIA_SEGMENT: 'media_segment',\n LOADING_COMPLETE: 'loading_complete',\n RECOVERED_EARLY_EOF: 'recovered_early_eof',\n MEDIA_INFO: 'media_info',\n METADATA_ARRIVED: 'metadata_arrived',\n SCRIPTDATA_ARRIVED: 'scriptdata_arrived',\n STATISTICS_INFO: 'statistics_info',\n RECOMMEND_SEEKPOINT: 'recommend_seekpoint',\n RECONNECT_ING: 'reconnect_ing',\n RECONNECT_SUCCESS: 'reconnect_success'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (TransmuxingEvents);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/core/transmuxing-events.js?"); | |
| 3161 | - | |
| 3162 | -/***/ }), | |
| 3163 | - | |
| 3164 | -/***/ "./src/FlvPlayer/flv.js/core/transmuxing-worker.js": | |
| 3165 | -/*!*********************************************************!*\ | |
| 3166 | - !*** ./src/FlvPlayer/flv.js/core/transmuxing-worker.js ***! | |
| 3167 | - \*********************************************************/ | |
| 3168 | -/*! exports provided: default */ | |
| 3169 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3170 | - | |
| 3171 | -"use strict"; | |
| 3172 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/logging-control.js */ \"./src/FlvPlayer/flv.js/utils/logging-control.js\");\n/* harmony import */ var _utils_polyfill_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/polyfill.js */ \"./src/FlvPlayer/flv.js/utils/polyfill.js\");\n/* harmony import */ var _transmuxing_controller_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./transmuxing-controller.js */ \"./src/FlvPlayer/flv.js/core/transmuxing-controller.js\");\n/* harmony import */ var _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./transmuxing-events.js */ \"./src/FlvPlayer/flv.js/core/transmuxing-events.js\");\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n/* post message to worker:\n data: {\n cmd: string\n param: any\n }\n\n receive message from worker:\n data: {\n msg: string,\n data: any\n }\n */\n\nvar TransmuxingWorker = function TransmuxingWorker(self) {\n var TAG = 'TransmuxingWorker';\n var controller = null;\n var logcatListener = onLogcatCallback.bind(this);\n _utils_polyfill_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].install();\n self.addEventListener('message', function (e) {\n switch (e.data.cmd) {\n case 'init':\n controller = new _transmuxing_controller_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"](e.data.param[0], e.data.param[1]);\n controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].IO_ERROR, onIOError.bind(this));\n controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].DEMUX_ERROR, onDemuxError.bind(this));\n controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].INIT_SEGMENT, onInitSegment.bind(this));\n controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].MEDIA_SEGMENT, onMediaSegment.bind(this));\n controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].LOADING_COMPLETE, onLoadingComplete.bind(this));\n controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECOVERED_EARLY_EOF, onRecoveredEarlyEof.bind(this));\n controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].MEDIA_INFO, onMediaInfo.bind(this));\n controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].METADATA_ARRIVED, onMetaDataArrived.bind(this));\n controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].SCRIPTDATA_ARRIVED, onScriptDataArrived.bind(this));\n controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].STATISTICS_INFO, onStatisticsInfo.bind(this));\n controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECOMMEND_SEEKPOINT, onRecommendSeekpoint.bind(this));\n break;\n\n case 'destroy':\n if (controller) {\n controller.destroy();\n controller = null;\n }\n\n self.postMessage({\n msg: 'destroyed'\n });\n break;\n\n case 'start':\n controller.start();\n break;\n\n case 'stop':\n controller.stop();\n break;\n\n case 'seek':\n controller.seek(e.data.param);\n break;\n\n case 'pause':\n controller.pause();\n break;\n\n case 'resume':\n controller.resume();\n break;\n\n case 'logging_config':\n {\n var config = e.data.param;\n _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].applyConfig(config);\n\n if (config.enableCallback === true) {\n _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].addLogListener(logcatListener);\n } else {\n _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeLogListener(logcatListener);\n }\n\n break;\n }\n }\n });\n\n function onInitSegment(type, initSegment) {\n var obj = {\n msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].INIT_SEGMENT,\n data: {\n type: type,\n data: initSegment\n }\n };\n self.postMessage(obj, [initSegment.data]); // data: ArrayBuffer\n }\n\n function onMediaSegment(type, mediaSegment) {\n var obj = {\n msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].MEDIA_SEGMENT,\n data: {\n type: type,\n data: mediaSegment\n }\n };\n self.postMessage(obj, [mediaSegment.data]); // data: ArrayBuffer\n }\n\n function onLoadingComplete() {\n var obj = {\n msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].LOADING_COMPLETE\n };\n self.postMessage(obj);\n }\n\n function onRecoveredEarlyEof() {\n var obj = {\n msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECOVERED_EARLY_EOF\n };\n self.postMessage(obj);\n }\n\n function onMediaInfo(mediaInfo) {\n var obj = {\n msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].MEDIA_INFO,\n data: mediaInfo\n };\n self.postMessage(obj);\n }\n\n function onMetaDataArrived(metadata) {\n var obj = {\n msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].METADATA_ARRIVED,\n data: metadata\n };\n self.postMessage(obj);\n }\n\n function onScriptDataArrived(data) {\n var obj = {\n msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].SCRIPTDATA_ARRIVED,\n data: data\n };\n self.postMessage(obj);\n }\n\n function onStatisticsInfo(statInfo) {\n var obj = {\n msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].STATISTICS_INFO,\n data: statInfo\n };\n self.postMessage(obj);\n }\n\n function onIOError(type, info) {\n self.postMessage({\n msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].IO_ERROR,\n data: {\n type: type,\n info: info\n }\n });\n }\n\n function onDemuxError(type, info) {\n self.postMessage({\n msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].DEMUX_ERROR,\n data: {\n type: type,\n info: info\n }\n });\n }\n\n function onRecommendSeekpoint(milliseconds) {\n self.postMessage({\n msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].RECOMMEND_SEEKPOINT,\n data: milliseconds\n });\n }\n\n function onLogcatCallback(type, str) {\n self.postMessage({\n msg: 'logcat_callback',\n data: {\n type: type,\n logcat: str\n }\n });\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (TransmuxingWorker);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/core/transmuxing-worker.js?"); | |
| 3173 | - | |
| 3174 | -/***/ }), | |
| 3175 | - | |
| 3176 | -/***/ "./src/FlvPlayer/flv.js/demux/amf-parser.js": | |
| 3177 | -/*!**************************************************!*\ | |
| 3178 | - !*** ./src/FlvPlayer/flv.js/demux/amf-parser.js ***! | |
| 3179 | - \**************************************************/ | |
| 3180 | -/*! exports provided: default */ | |
| 3181 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3182 | - | |
| 3183 | -"use strict"; | |
| 3184 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _utils_utf8_conv_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/utf8-conv.js */ \"./src/FlvPlayer/flv.js/utils/utf8-conv.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\nvar le = function () {\n var buf = new ArrayBuffer(2);\n new DataView(buf).setInt16(0, 256, true); // little-endian write\n\n return new Int16Array(buf)[0] === 256; // platform-spec read, if equal then LE\n}();\n\nvar AMF = /*#__PURE__*/function () {\n function AMF() {}\n\n AMF.parseScriptData = function parseScriptData(arrayBuffer, dataOffset, dataSize) {\n var data = {};\n\n try {\n var name = AMF.parseValue(arrayBuffer, dataOffset, dataSize);\n if (dataSize - name.size < 1) return data;\n var value = AMF.parseValue(arrayBuffer, dataOffset + name.size, dataSize - name.size);\n data[name.data] = value.data;\n } catch (e) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].e('AMF', e.toString());\n }\n\n return data;\n };\n\n AMF.parseObject = function parseObject(arrayBuffer, dataOffset, dataSize) {\n if (dataSize < 3) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"IllegalStateException\"]('Data not enough when parse ScriptDataObject');\n }\n\n var name = AMF.parseString(arrayBuffer, dataOffset, dataSize);\n var value = AMF.parseValue(arrayBuffer, dataOffset + name.size, dataSize - name.size);\n var isObjectEnd = value.objectEnd;\n return {\n data: {\n name: name.data,\n value: value.data\n },\n size: name.size + value.size,\n objectEnd: isObjectEnd\n };\n };\n\n AMF.parseVariable = function parseVariable(arrayBuffer, dataOffset, dataSize) {\n return AMF.parseObject(arrayBuffer, dataOffset, dataSize);\n };\n\n AMF.parseString = function parseString(arrayBuffer, dataOffset, dataSize) {\n if (dataSize < 2) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"IllegalStateException\"]('Data not enough when parse String');\n }\n\n var v = new DataView(arrayBuffer, dataOffset, dataSize);\n var length = v.getUint16(0, !le);\n var str;\n\n if (length > 0) {\n str = Object(_utils_utf8_conv_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(new Uint8Array(arrayBuffer, dataOffset + 2, length));\n } else {\n str = '';\n }\n\n return {\n data: str,\n size: 2 + length\n };\n };\n\n AMF.parseLongString = function parseLongString(arrayBuffer, dataOffset, dataSize) {\n if (dataSize < 4) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"IllegalStateException\"]('Data not enough when parse LongString');\n }\n\n var v = new DataView(arrayBuffer, dataOffset, dataSize);\n var length = v.getUint32(0, !le);\n var str;\n\n if (length > 0) {\n str = Object(_utils_utf8_conv_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(new Uint8Array(arrayBuffer, dataOffset + 4, length));\n } else {\n str = '';\n }\n\n return {\n data: str,\n size: 4 + length\n };\n };\n\n AMF.parseDate = function parseDate(arrayBuffer, dataOffset, dataSize) {\n if (dataSize < 10) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"IllegalStateException\"]('Data size invalid when parse Date');\n }\n\n var v = new DataView(arrayBuffer, dataOffset, dataSize);\n var timestamp = v.getFloat64(0, !le);\n var localTimeOffset = v.getInt16(8, !le);\n timestamp += localTimeOffset * 60 * 1000; // get UTC time\n\n return {\n data: new Date(timestamp),\n size: 8 + 2\n };\n };\n\n AMF.parseValue = function parseValue(arrayBuffer, dataOffset, dataSize) {\n if (dataSize < 1) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"IllegalStateException\"]('Data not enough when parse Value');\n }\n\n var v = new DataView(arrayBuffer, dataOffset, dataSize);\n var offset = 1;\n var type = v.getUint8(0);\n var value;\n var objectEnd = false;\n\n try {\n switch (type) {\n case 0:\n // Number(Double) type\n value = v.getFloat64(1, !le);\n offset += 8;\n break;\n\n case 1:\n {\n // Boolean type\n var b = v.getUint8(1);\n value = b ? true : false;\n offset += 1;\n break;\n }\n\n case 2:\n {\n // String type\n var amfstr = AMF.parseString(arrayBuffer, dataOffset + 1, dataSize - 1);\n value = amfstr.data;\n offset += amfstr.size;\n break;\n }\n\n case 3:\n {\n // Object(s) type\n value = {};\n var terminal = 0; // workaround for malformed Objects which has missing ScriptDataObjectEnd\n\n if ((v.getUint32(dataSize - 4, !le) & 0x00FFFFFF) === 9) {\n terminal = 3;\n }\n\n while (offset < dataSize - 4) {\n // 4 === type(UI8) + ScriptDataObjectEnd(UI24)\n var amfobj = AMF.parseObject(arrayBuffer, dataOffset + offset, dataSize - offset - terminal);\n if (amfobj.objectEnd) break;\n value[amfobj.data.name] = amfobj.data.value;\n offset += amfobj.size;\n }\n\n if (offset <= dataSize - 3) {\n var marker = v.getUint32(offset - 1, !le) & 0x00FFFFFF;\n\n if (marker === 9) {\n offset += 3;\n }\n }\n\n break;\n }\n\n case 8:\n {\n // ECMA array type (Mixed array)\n value = {};\n offset += 4; // ECMAArrayLength(UI32)\n\n var _terminal = 0; // workaround for malformed MixedArrays which has missing ScriptDataObjectEnd\n\n if ((v.getUint32(dataSize - 4, !le) & 0x00FFFFFF) === 9) {\n _terminal = 3;\n }\n\n while (offset < dataSize - 8) {\n // 8 === type(UI8) + ECMAArrayLength(UI32) + ScriptDataVariableEnd(UI24)\n var amfvar = AMF.parseVariable(arrayBuffer, dataOffset + offset, dataSize - offset - _terminal);\n if (amfvar.objectEnd) break;\n value[amfvar.data.name] = amfvar.data.value;\n offset += amfvar.size;\n }\n\n if (offset <= dataSize - 3) {\n var _marker = v.getUint32(offset - 1, !le) & 0x00FFFFFF;\n\n if (_marker === 9) {\n offset += 3;\n }\n }\n\n break;\n }\n\n case 9:\n // ScriptDataObjectEnd\n value = undefined;\n offset = 1;\n objectEnd = true;\n break;\n\n case 10:\n {\n // Strict array type\n // ScriptDataValue[n]. NOTE: according to video_file_format_spec_v10_1.pdf\n value = [];\n var strictArrayLength = v.getUint32(1, !le);\n offset += 4;\n\n for (var i = 0; i < strictArrayLength; i++) {\n var val = AMF.parseValue(arrayBuffer, dataOffset + offset, dataSize - offset);\n value.push(val.data);\n offset += val.size;\n }\n\n break;\n }\n\n case 11:\n {\n // Date type\n var date = AMF.parseDate(arrayBuffer, dataOffset + 1, dataSize - 1);\n value = date.data;\n offset += date.size;\n break;\n }\n\n case 12:\n {\n // Long string type\n var amfLongStr = AMF.parseString(arrayBuffer, dataOffset + 1, dataSize - 1);\n value = amfLongStr.data;\n offset += amfLongStr.size;\n break;\n }\n\n default:\n // ignore and skip\n offset = dataSize;\n //Log.w('AMF', 'Unsupported AMF value type ' + type);\n }\n } catch (e) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].e('AMF', e.toString());\n }\n\n return {\n data: value,\n size: offset,\n objectEnd: objectEnd\n };\n };\n\n return AMF;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AMF);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/demux/amf-parser.js?"); | |
| 3185 | - | |
| 3186 | -/***/ }), | |
| 3187 | - | |
| 3188 | -/***/ "./src/FlvPlayer/flv.js/demux/demux-errors.js": | |
| 3189 | -/*!****************************************************!*\ | |
| 3190 | - !*** ./src/FlvPlayer/flv.js/demux/demux-errors.js ***! | |
| 3191 | - \****************************************************/ | |
| 3192 | -/*! exports provided: default */ | |
| 3193 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3194 | - | |
| 3195 | -"use strict"; | |
| 3196 | -eval("__webpack_require__.r(__webpack_exports__);\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar DemuxErrors = {\n OK: 'OK',\n FORMAT_ERROR: 'FormatError',\n FORMAT_UNSUPPORTED: 'FormatUnsupported',\n CODEC_UNSUPPORTED: 'CodecUnsupported'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (DemuxErrors);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/demux/demux-errors.js?"); | |
| 3197 | - | |
| 3198 | -/***/ }), | |
| 3199 | - | |
| 3200 | -/***/ "./src/FlvPlayer/flv.js/demux/exp-golomb.js": | |
| 3201 | -/*!**************************************************!*\ | |
| 3202 | - !*** ./src/FlvPlayer/flv.js/demux/exp-golomb.js ***! | |
| 3203 | - \**************************************************/ | |
| 3204 | -/*! exports provided: default */ | |
| 3205 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3206 | - | |
| 3207 | -"use strict"; | |
| 3208 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n // Exponential-Golomb buffer decoder\n\nvar ExpGolomb = /*#__PURE__*/function () {\n function ExpGolomb(uint8array) {\n this.TAG = 'ExpGolomb';\n this._buffer = uint8array;\n this._buffer_index = 0;\n this._total_bytes = uint8array.byteLength;\n this._total_bits = uint8array.byteLength * 8;\n this._current_word = 0;\n this._current_word_bits_left = 0;\n }\n\n var _proto = ExpGolomb.prototype;\n\n _proto.destroy = function destroy() {\n this._buffer = null;\n };\n\n _proto._fillCurrentWord = function _fillCurrentWord() {\n var buffer_bytes_left = this._total_bytes - this._buffer_index;\n if (buffer_bytes_left <= 0) throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__[\"IllegalStateException\"]('ExpGolomb: _fillCurrentWord() but no bytes available');\n var bytes_read = Math.min(4, buffer_bytes_left);\n var word = new Uint8Array(4);\n word.set(this._buffer.subarray(this._buffer_index, this._buffer_index + bytes_read));\n this._current_word = new DataView(word.buffer).getUint32(0, false);\n this._buffer_index += bytes_read;\n this._current_word_bits_left = bytes_read * 8;\n };\n\n _proto.readBits = function readBits(bits) {\n if (bits > 32) throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__[\"InvalidArgumentException\"]('ExpGolomb: readBits() bits exceeded max 32bits!');\n\n if (bits <= this._current_word_bits_left) {\n var _result = this._current_word >>> 32 - bits;\n\n this._current_word <<= bits;\n this._current_word_bits_left -= bits;\n return _result;\n }\n\n var result = this._current_word_bits_left ? this._current_word : 0;\n result = result >>> 32 - this._current_word_bits_left;\n var bits_need_left = bits - this._current_word_bits_left;\n\n this._fillCurrentWord();\n\n var bits_read_next = Math.min(bits_need_left, this._current_word_bits_left);\n var result2 = this._current_word >>> 32 - bits_read_next;\n this._current_word <<= bits_read_next;\n this._current_word_bits_left -= bits_read_next;\n result = result << bits_read_next | result2;\n return result;\n };\n\n _proto.readBool = function readBool() {\n return this.readBits(1) === 1;\n };\n\n _proto.readByte = function readByte() {\n return this.readBits(8);\n };\n\n _proto._skipLeadingZero = function _skipLeadingZero() {\n var zero_count;\n\n for (zero_count = 0; zero_count < this._current_word_bits_left; zero_count++) {\n if (0 !== (this._current_word & 0x80000000 >>> zero_count)) {\n this._current_word <<= zero_count;\n this._current_word_bits_left -= zero_count;\n return zero_count;\n }\n }\n\n this._fillCurrentWord();\n\n return zero_count + this._skipLeadingZero();\n };\n\n _proto.readUEG = function readUEG() {\n // unsigned exponential golomb\n var leading_zeros = this._skipLeadingZero();\n\n return this.readBits(leading_zeros + 1) - 1;\n };\n\n _proto.readSEG = function readSEG() {\n // signed exponential golomb\n var value = this.readUEG();\n\n if (value & 0x01) {\n return value + 1 >>> 1;\n } else {\n return -1 * (value >>> 1);\n }\n };\n\n return ExpGolomb;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ExpGolomb);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/demux/exp-golomb.js?"); | |
| 3209 | - | |
| 3210 | -/***/ }), | |
| 3211 | - | |
| 3212 | -/***/ "./src/FlvPlayer/flv.js/demux/flv-demuxer.js": | |
| 3213 | -/*!***************************************************!*\ | |
| 3214 | - !*** ./src/FlvPlayer/flv.js/demux/flv-demuxer.js ***! | |
| 3215 | - \***************************************************/ | |
| 3216 | -/*! exports provided: default */ | |
| 3217 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3218 | - | |
| 3219 | -"use strict"; | |
| 3220 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _amf_parser_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./amf-parser.js */ \"./src/FlvPlayer/flv.js/demux/amf-parser.js\");\n/* harmony import */ var _sps_parser_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sps-parser.js */ \"./src/FlvPlayer/flv.js/demux/sps-parser.js\");\n/* harmony import */ var _demux_errors_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./demux-errors.js */ \"./src/FlvPlayer/flv.js/demux/demux-errors.js\");\n/* harmony import */ var _core_media_info_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/media-info.js */ \"./src/FlvPlayer/flv.js/core/media-info.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../common/common */ \"./src/common/common.js\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n\n\n\nfunction Swap16(src) {\n return src >>> 8 & 0xFF | (src & 0xFF) << 8;\n}\n\nfunction Swap32(src) {\n return (src & 0xFF000000) >>> 24 | (src & 0x00FF0000) >>> 8 | (src & 0x0000FF00) << 8 | (src & 0x000000FF) << 24;\n}\n\nfunction ReadBig32(array, index) {\n return array[index] << 24 | array[index + 1] << 16 | array[index + 2] << 8 | array[index + 3];\n}\n\nvar FLVDemuxer = /*#__PURE__*/function () {\n function FLVDemuxer(probeData, config, callbackMediaDataFunc, callbackMediaDataUserPtr, callbackPlaybackTimeUserPtr, getVideoInfoCallbackFunc) {\n this.TAG = 'FLVDemuxer';\n this._config = config;\n this._onError = null;\n this._onMediaInfo = null;\n this._onMetaDataArrived = null;\n this._onScriptDataArrived = null;\n this._onTrackMetadata = null;\n this._onDataAvailable = null; //this._onDataAvailableToSoftwareDecode = null;\n\n this._dataOffset = probeData.dataOffset;\n this._firstParse = true;\n this._dispatch = false;\n this._hasAudio = probeData.hasAudioTrack;\n this._hasVideo = probeData.hasVideoTrack;\n this._hasAudioFlagOverrided = false;\n this._hasVideoFlagOverrided = false;\n this._audioInitialMetadataDispatched = false;\n this._videoInitialMetadataDispatched = false;\n this._mediaInfo = new _core_media_info_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]();\n this._mediaInfo.hasAudio = this._hasAudio;\n this._mediaInfo.hasVideo = this._hasVideo;\n this._metadata = null;\n this._audioMetadata = null;\n this._videoMetadata = null;\n this._naluLengthSize = 4;\n this._timestampBase = 0; // int32, in milliseconds\n\n this._timescale = 1000;\n this._duration = 0; // int32, in milliseconds\n\n this._durationOverrided = false;\n this._referenceFrameRate = {\n fixed: true,\n fps: 23.976,\n fps_num: 23976,\n fps_den: 1000\n };\n this._flvSoundRateTable = [5500, 11025, 22050, 44100, 48000];\n this._mpegSamplingRates = [96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350];\n this._mpegAudioV10SampleRateTable = [44100, 48000, 32000, 0];\n this._mpegAudioV20SampleRateTable = [22050, 24000, 16000, 0];\n this._mpegAudioV25SampleRateTable = [11025, 12000, 8000, 0];\n this._mpegAudioL1BitRateTable = [0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, -1];\n this._mpegAudioL2BitRateTable = [0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, -1];\n this._mpegAudioL3BitRateTable = [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1];\n this._videoTrack = {\n type: 'video',\n id: 1,\n sequenceNumber: 0,\n samples: [],\n length: 0\n };\n this._audioTrack = {\n type: 'audio',\n id: 2,\n sequenceNumber: 0,\n samples: [],\n length: 0\n };\n\n this._littleEndian = function () {\n var buf = new ArrayBuffer(2);\n new DataView(buf).setInt16(0, 256, true); // little-endian write\n\n return new Int16Array(buf)[0] === 256; // platform-spec read, if equal then LE\n }();\n\n this.videoCodecId = 0;\n this.audioCodecId = 0;\n this._AVC_SPS = null;\n this._AVC_PPS = null;\n this._HEVC_VPS = null;\n this._HEVC_SPS = null;\n this._HEVC_PPS = null;\n this._StartCode = [0, 0, 0, 1];\n this._SampleRate = 8000;\n this._ChannelNum = 1;\n this._pause = false;\n this._callbackInitFlag = false;\n this._callbackMediaDataFunc = callbackMediaDataFunc;\n this._callbackMediaDataUserPtr = callbackMediaDataUserPtr;\n this._callbackPlaybackTimeUserPtr = callbackPlaybackTimeUserPtr;\n this.getVideoInfoCallbackFunc = getVideoInfoCallbackFunc;\n this._debugProcCount = 0;\n this._AudioMaxFrameSize = 0;\n this._lastVideoPts = 0;\n this._lastAudioPts = 0;\n this.snapshotCount = 0;\n this.fullFrameData = new Uint8Array(1024 * 1024 * 2);\n this.fullFramePos = 0;\n this._DebugBuf = null; //new Uint8Array(1024 * 1024 * 2);\n\n this._DebugBufPos = 0;\n }\n\n var _proto = FLVDemuxer.prototype;\n\n _proto.destroy = function destroy() {\n this._mediaInfo = null;\n this._metadata = null;\n this._audioMetadata = null;\n this._videoMetadata = null;\n this._videoTrack = null;\n this._audioTrack = null;\n this._onError = null;\n this._onMediaInfo = null;\n this._onMetaDataArrived = null;\n this._onScriptDataArrived = null;\n this._onTrackMetadata = null;\n this._onDataAvailable = null;\n };\n\n FLVDemuxer.probe = function probe(buffer) {\n var data = new Uint8Array(buffer);\n var mismatch = {\n match: false\n };\n\n if (data[0] !== 0x46 || data[1] !== 0x4C || data[2] !== 0x56 || data[3] !== 0x01) {\n return mismatch;\n }\n\n var hasAudio = (data[4] & 4) >>> 2 !== 0;\n var hasVideo = (data[4] & 1) !== 0;\n var offset = ReadBig32(data, 5);\n\n if (offset < 9) {\n return mismatch;\n }\n\n return {\n match: true,\n consumed: offset,\n dataOffset: offset,\n hasAudioTrack: hasAudio,\n hasVideoTrack: hasVideo\n };\n };\n\n _proto.bindDataSource = function bindDataSource(loader) {\n loader.onDataArrival = this.parseChunks.bind(this);\n return this;\n } // prototype: function(type: string, metadata: any): void\n ;\n\n _proto.resetMediaInfo = function resetMediaInfo() {\n this._mediaInfo = new _core_media_info_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]();\n } //==================================================================================================\n ;\n\n _proto.pause = function pause() {\n this._pause = true;\n };\n\n _proto.resume = function resume() {\n this._pause = false;\n };\n\n _proto._onDataAvailableToSoftwareDecodeVideo = function _onDataAvailableToSoftwareDecodeVideo(codecId, videoTrack) {\n var track = videoTrack;\n var samples = track.samples;\n var idx = -1;\n\n if (samples.length > 1) {\n //console.log(\"frame num: \" + samples.length);\n idx = 0;\n }\n\n while (samples.length) {\n var sample = samples.shift();\n var frameLength = 0;\n\n for (var j = 0; j < sample.units.length; j++) {\n frameLength += sample.units[j].data.length;\n }\n\n var offset = 0;\n var bufdata = new Uint8Array(frameLength); //for (let j = 0; j < sample.units.length; j++) {\n\n while (sample.units.length) {\n var unit = sample.units.shift();\n\n if (codecId == 27) {\n unit.data[0] = 0;\n unit.data[1] = 0;\n unit.data[2] = 0;\n unit.data[3] = 1;\n }\n\n bufdata.set(unit.data, offset);\n offset += unit.data.length;\n } //isKeyframe\n\n\n if (this._callbackMediaDataFunc) {\n //console.log(\"Decode: \" + bufdata);\n //console.log(\"Decode: \" + frameLength);\n if (idx >= 0) {\n //console.log(\"frame idx \" + idx + \" length: \" + frameLength);// + \":\" + bufdata);\n idx++;\n } //console.log(\"Flv-Demuxer.js:: callback pts: \" + sample.pts);\n\n\n this._callbackMediaDataFunc(this._callbackMediaDataUserPtr, true, 1, codecId, sample.isKeyframe, bufdata, frameLength, sample.pts, 0, 0);\n }\n }\n };\n\n _proto._onDataAvailableToSoftwareDecodeAudio = function _onDataAvailableToSoftwareDecodeAudio(codecId, audioTrack) {\n //console.log(\"proc audio frame....\" + codecId + \" samples: \" + audioTrack.samples.length);\n var track = audioTrack;\n var samples = track.samples;\n var idx = -1;\n\n if (samples.length > 1) {\n //console.log(\"frame num: \" + samples.length);\n idx = 0;\n }\n\n while (samples.length) {\n var sample = samples.shift();\n\n if (this._callbackMediaDataFunc) {\n //console.log(\"Decode audio: \" + sample.unit);\n //console.log(\"Decode: \" + frameLength);\n if (idx >= 0) {\n //console.log(\"frame idx \" + idx + \" length: \" + frameLength);// + \":\" + bufdata);\n idx++;\n } //mediaType, codecId, framedata, framesize, samplerate, channels, bitPerSample) {\n\n\n this._callbackMediaDataFunc(this._callbackMediaDataUserPtr, true, 2, codecId, 0, sample.unit, sample.length, this._SampleRate, this._ChannelNum, this._SampleRate >= 44100 ? 32 : 16);\n }\n }\n } //==================================================================================================\n ;\n\n _proto._isInitialMetadataDispatched = function _isInitialMetadataDispatched() {\n if (this._hasAudio && this._hasVideo) {\n // both audio & video\n return this._audioInitialMetadataDispatched && this._videoInitialMetadataDispatched;\n }\n\n if (this._hasAudio && !this._hasVideo) {\n // audio only\n return this._audioInitialMetadataDispatched;\n }\n\n if (!this._hasAudio && this._hasVideo) {\n // video only\n return this._videoInitialMetadataDispatched;\n }\n\n return false;\n } // function parseChunks(chunk: ArrayBuffer, byteStart: number): number;\n ;\n\n _proto.parseChunks = function parseChunks(chunk, byteStart) {\n if (chunk === null) return;\n\n if (!this._onError || !this._onMediaInfo || !this._onTrackMetadata || !this._onDataAvailable) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__[\"IllegalStateException\"]('Flv: onError & onMediaInfo & onTrackMetadata & onDataAvailable callback must be specified');\n }\n\n var offset = 0;\n var le = this._littleEndian;\n\n if (byteStart === 0) {\n // buffer with FLV header\n if (chunk.byteLength > 13) {\n var probeData = FLVDemuxer.probe(chunk);\n offset = probeData.dataOffset;\n } else {\n return 0;\n }\n }\n\n if (this._firstParse) {\n // handle PreviousTagSize0 before Tag1\n this._firstParse = false;\n\n if (byteStart + offset !== this._dataOffset) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'First time parsing but chunk byteStart invalid!');\n }\n\n var v = new DataView(chunk, offset);\n var prevTagSize0 = v.getUint32(0, !le);\n\n if (prevTagSize0 !== 0) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'PrevTagSize0 !== 0 !!!');\n }\n\n offset += 4;\n } //console.log(\"flv-demuxer.js::parseChunks: while...\" + chunk.byteLength);\n\n\n while (offset < chunk.byteLength) {\n this._dispatch = true;\n\n var _v = new DataView(chunk, offset);\n\n if (offset + 11 + 4 > chunk.byteLength) {\n // data not enough for parsing an flv tag\n break;\n }\n\n var tagType = _v.getUint8(0);\n\n var dataSize = _v.getUint32(0, !le) & 0x00FFFFFF;\n\n if (offset + 11 + dataSize + 4 > chunk.byteLength) {\n // data not enough for parsing actual data body\n break;\n }\n\n if (tagType !== 8 && tagType !== 9 && tagType !== 18) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, \"Unsupported tag type \" + tagType + \", skipped\"); // consume the whole tag (skip it)\n\n offset += 11 + dataSize + 4;\n continue;\n }\n\n var ts2 = _v.getUint8(4);\n\n var ts1 = _v.getUint8(5);\n\n var ts0 = _v.getUint8(6);\n\n var ts3 = _v.getUint8(7);\n\n var timestamp = ts0 | ts1 << 8 | ts2 << 16 | ts3 << 24;\n var streamId = _v.getUint32(7, !le) & 0x00FFFFFF;\n\n if (streamId !== 0) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Meet tag which has StreamID != 0!');\n }\n\n var dataOffset = offset + 11;\n\n if (!this._pause) {\n switch (tagType) {\n case 8:\n // Audio\n if (this._lastAudioPts > 0) {\n var t = timestamp - this._lastAudioPts; //console.log(\"flv::Audio Timestamp: \" + timestamp + \" t:\" + t);\n }\n\n this._lastAudioPts = timestamp; //console.log(\"flv::Audio Timestamp: \" + timestamp);\n\n this.audioCodecId = this._parseAudioData(chunk, dataOffset, dataSize, timestamp);\n break;\n\n case 9:\n // Video\n if (this._lastVideoPts > 0) {\n var _t = timestamp - this._lastVideoPts; //if (t != 40) {\n //console.log(\"flv::Video Timestamp: \" + timestamp + \" t:\" + t);\n //}\n\n }\n\n this._lastVideoPts = timestamp;\n this.videoCodecId = this._parseVideoData(chunk, dataOffset, dataSize, timestamp, byteStart + offset);\n break;\n\n case 18:\n // ScriptDataObject\n this._parseScriptData(chunk, dataOffset, dataSize);\n\n break;\n }\n }\n\n var prevTagSize = _v.getUint32(11 + dataSize, !le);\n\n if (prevTagSize !== 11 + dataSize) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, \"Invalid PrevTagSize \" + prevTagSize);\n }\n\n offset += 11 + dataSize + 4; // tagBody + dataSize + prevTagSize\n } // dispatch parsed frames to consumer (typically, the remuxer)\n\n\n if (this._isInitialMetadataDispatched()) {\n //console.log(\"flv-demuxer.js::parseChunks: _isInitialMetadataDispatched\");\n if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {\n //Video H264\n if (this.videoCodecId == 7 || this.videoCodecId == 0) {\n //H264\n if (this._config.decodeType === 'auto' || this._config.decodeType === 'hard') {\n this._onDataAvailable(this._audioTrack, this._videoTrack);\n\n if (!this._callbackInitFlag) {\n this._callbackInitFlag = true;\n\n if (this._callbackMediaDataFunc) {\n this._callbackMediaDataFunc(this._callbackMediaDataUserPtr, false, 1, 0, 0, null, 0, 0, 0, 0);\n }\n }\n } else {\n //console.log(\"H264: Software Decode...\");\n if (this._videoTrack.samples.length > 0) {\n this._onDataAvailableToSoftwareDecodeVideo(27, this._videoTrack);\n }\n\n if (this._audioTrack.samples.length > 0) {\n this._onDataAvailableToSoftwareDecodeAudio(this.audioCodecId == 10 ? 86018 : 0, this._audioTrack);\n }\n }\n } else if (this.videoCodecId == 12) {\n //H265\n //console.log(\"H265: Software Decode...\");\n if (this._videoTrack.samples.length > 0) {\n this._onDataAvailableToSoftwareDecodeVideo(173, this._videoTrack);\n }\n\n if (this._audioTrack.samples.length > 0) {\n this._onDataAvailableToSoftwareDecodeAudio(this.audioCodecId == 10 ? 86018 : 0, this._audioTrack);\n }\n }\n }\n } else {\n // console.log(\"flv-demuxer.js::parseChunks: ! _isInitialMetadataDispatched\");\n this._debugProcCount++;\n\n if (this._debugProcCount >= 60) {\n console.log('InitialMetadataDispatched fail.');\n this._debugProcCount = 0;\n this._hasAudio = false;\n this._mediaInfo.hasAudio = false;\n }\n } //console.log(\"flv-demuxer.js::parseChunks: offset: \" + offset);\n\n\n return offset; // consumed bytes, just equals latest offset index\n };\n\n _proto._parseScriptData = function _parseScriptData(arrayBuffer, dataOffset, dataSize) {\n var scriptData = _amf_parser_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].parseScriptData(arrayBuffer, dataOffset, dataSize);\n\n if (scriptData.hasOwnProperty('onMetaData')) {\n if (scriptData.onMetaData == null || typeof scriptData.onMetaData !== 'object') {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Invalid onMetaData structure!');\n return;\n }\n\n if (this._metadata) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Found another onMetaData tag!');\n }\n\n this._metadata = scriptData;\n var onMetaData = this._metadata.onMetaData;\n\n if (this._onMetaDataArrived) {\n this._onMetaDataArrived(Object.assign({}, onMetaData));\n }\n\n if (typeof onMetaData.hasAudio === 'boolean') {\n // hasAudio\n if (this._hasAudioFlagOverrided === false) {\n this._hasAudio = onMetaData.hasAudio;\n this._mediaInfo.hasAudio = this._hasAudio;\n }\n }\n\n if (typeof onMetaData.hasVideo === 'boolean') {\n // hasVideo\n if (this._hasVideoFlagOverrided === false) {\n this._hasVideo = onMetaData.hasVideo;\n this._mediaInfo.hasVideo = this._hasVideo;\n }\n }\n\n if (typeof onMetaData.audiodatarate === 'number') {\n // audiodatarate\n this._mediaInfo.audioDataRate = onMetaData.audiodatarate;\n }\n\n if (typeof onMetaData.videodatarate === 'number') {\n // videodatarate\n this._mediaInfo.videoDataRate = onMetaData.videodatarate;\n }\n\n if (typeof onMetaData.width === 'number') {\n // width\n this._mediaInfo.width = onMetaData.width;\n }\n\n if (typeof onMetaData.height === 'number') {\n // height\n this._mediaInfo.height = onMetaData.height;\n }\n\n if (typeof onMetaData.duration === 'number') {\n // duration\n if (!this._durationOverrided) {\n var duration = Math.floor(onMetaData.duration * this._timescale);\n this._duration = duration;\n this._mediaInfo.duration = duration;\n }\n } else {\n this._mediaInfo.duration = 0;\n }\n\n if (typeof onMetaData.framerate === 'number') {\n // framerate\n var fps_num = Math.floor(onMetaData.framerate * 1000);\n\n if (fps_num > 0) {\n var fps = fps_num / 1000;\n this._referenceFrameRate.fixed = true;\n this._referenceFrameRate.fps = fps;\n this._referenceFrameRate.fps_num = fps_num;\n this._referenceFrameRate.fps_den = 1000;\n this._mediaInfo.fps = fps;\n }\n }\n\n if (typeof onMetaData.keyframes === 'object') {\n // keyframes\n this._mediaInfo.hasKeyframesIndex = true;\n var keyframes = onMetaData.keyframes;\n this._mediaInfo.keyframesIndex = this._parseKeyframesIndex(keyframes);\n onMetaData.keyframes = null; // keyframes has been extracted, remove it\n } else {\n this._mediaInfo.hasKeyframesIndex = false;\n }\n\n this._dispatch = false;\n this._mediaInfo.metadata = onMetaData;\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].v(this.TAG, 'Parsed onMetaData');\n\n if (this._mediaInfo.isComplete()) {\n this._onMediaInfo(this._mediaInfo);\n }\n }\n\n if (Object.keys(scriptData).length > 0) {\n if (this._onScriptDataArrived) {\n this._onScriptDataArrived(Object.assign({}, scriptData));\n }\n } // console.log('this._mediaInfo:', this._mediaInfo);\n\n };\n\n _proto._parseKeyframesIndex = function _parseKeyframesIndex(keyframes) {\n var times = [];\n var filepositions = []; // ignore first keyframe which is actually AVC Sequence Header (AVCDecoderConfigurationRecord)\n\n for (var i = 1; i < keyframes.times.length; i++) {\n var time = this._timestampBase + Math.floor(keyframes.times[i] * 1000);\n times.push(time);\n filepositions.push(keyframes.filepositions[i]);\n }\n\n return {\n times: times,\n filepositions: filepositions\n };\n };\n\n _proto._parseAudioData = function _parseAudioData(arrayBuffer, dataOffset, dataSize, tagTimestamp) {\n if (dataSize <= 1) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Flv: Invalid audio packet, missing SoundData payload!');\n return 0;\n }\n\n if (this._hasAudioFlagOverrided === true && this._hasAudio === false) {\n // If hasAudio: false indicated explicitly in MediaDataSource,\n // Ignore all the audio packets\n return 0;\n }\n\n var le = this._littleEndian;\n var v = new DataView(arrayBuffer, dataOffset, dataSize);\n var soundSpec = v.getUint8(0);\n var soundFormat = soundSpec >>> 4;\n\n if (soundFormat !== 2 && soundFormat !== 10) {\n // MP3 or AAC\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].CODEC_UNSUPPORTED, 'Flv: Unsupported audio codec idx: ' + soundFormat);\n\n return 0;\n }\n\n var soundRate = 0;\n var soundRateIndex = (soundSpec & 12) >>> 2;\n\n if (soundRateIndex >= 0 && soundRateIndex <= 4) {\n soundRate = this._flvSoundRateTable[soundRateIndex];\n } else {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, 'Flv: Invalid audio sample rate idx: ' + soundRateIndex);\n\n return 0;\n }\n\n var soundSize = (soundSpec & 2) >>> 1; // unused\n\n var soundType = soundSpec & 1; //console.log(\"soundSize: \" + soundSize);\n\n var meta = this._audioMetadata;\n var track = this._audioTrack;\n\n if (!meta) {\n if (this._hasAudio === false && this._hasAudioFlagOverrided === false) {\n this._hasAudio = true;\n this._mediaInfo.hasAudio = true;\n } // initial metadata\n\n\n meta = this._audioMetadata = {};\n meta.type = 'audio';\n meta.id = track.id;\n meta.timescale = this._timescale;\n meta.duration = this._duration;\n meta.audioSampleRate = soundRate;\n meta.channelCount = soundType === 0 ? 1 : 2;\n }\n\n if (soundFormat === 10) {\n // AAC\n var aacData = this._parseAACAudioData(arrayBuffer, dataOffset + 1, dataSize - 1);\n\n if (aacData == undefined) {\n return 0;\n }\n\n if (aacData.packetType === 0) {\n // AAC sequence header (AudioSpecificConfig)\n if (meta.config) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Found another AudioSpecificConfig!');\n }\n\n var misc = aacData.data;\n meta.audioSampleRate = misc.samplingRate;\n meta.channelCount = misc.channelCount;\n meta.codec = misc.codec;\n meta.originalCodec = misc.originalCodec;\n meta.config = misc.config; // The decode result of an aac sample is 1024 PCM samples\n\n meta.refSampleDuration = 1024 / meta.audioSampleRate * meta.timescale; //Log.v(this.TAG, 'Parsed AudioSpecificConfig');\n //console.log(\"AAC: \" + misc.samplingRate + \" \" + misc.channelCount + \" \" + misc.codec + \" \" + misc.conf);\n\n this._SampleRate = misc.samplingRate;\n this._ChannelNum = misc.channelCount;\n\n if (this._isInitialMetadataDispatched()) {\n // Non-initial metadata, force dispatch (or flush) parsed frames to remuxer\n if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {\n this._onDataAvailable(this._audioTrack, this._videoTrack);\n }\n } else {\n this._audioInitialMetadataDispatched = true;\n } // then notify new metadata\n\n\n this._dispatch = false;\n\n this._onTrackMetadata('audio', meta);\n\n var mi = this._mediaInfo;\n mi.audioCodec = meta.originalCodec;\n mi.audioSampleRate = meta.audioSampleRate;\n mi.audioChannelCount = meta.channelCount;\n\n if (mi.hasVideo) {\n if (mi.videoCodec != null) {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.videoCodec + ',' + mi.audioCodec + '\"';\n }\n } else {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.audioCodec + '\"';\n }\n\n if (mi.isComplete()) {\n console.log('this._onMediaInfo audio:', mi);\n\n this._onMediaInfo(mi);\n }\n } else if (aacData.packetType === 1) {\n // AAC raw frame data\n var dts = this._timestampBase + tagTimestamp; // console.log('FLV:Audio DTS:' + dts , aacData.data);\n\n var aacSample = {\n unit: aacData.data,\n length: aacData.data.byteLength,\n dts: dts,\n pts: dts\n };\n track.samples.push(aacSample);\n track.length += aacData.data.length;\n\n if (aacData.data.length > this._AudioMaxFrameSize) {\n this._AudioMaxFrameSize = aacData.data.length; //console.log(\"max audio frame size: \" + aacData.data.length);\n } //console.log(\"flv-demuxer.js:: audio dts: \" + dts);\n\n } else {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].e(this.TAG, \"Flv: Unsupported AAC data type \" + aacData.packetType);\n }\n } else if (soundFormat === 2) {\n // MP3\n if (!meta.codec) {\n // We need metadata for mp3 audio track, extract info from frame header\n var _misc = this._parseMP3AudioData(arrayBuffer, dataOffset + 1, dataSize - 1, true);\n\n if (_misc == undefined) {\n return 0;\n }\n\n meta.audioSampleRate = _misc.samplingRate;\n meta.channelCount = _misc.channelCount;\n meta.codec = _misc.codec;\n meta.originalCodec = _misc.originalCodec; // The decode result of an mp3 sample is 1152 PCM samples\n\n meta.refSampleDuration = 1152 / meta.audioSampleRate * meta.timescale;\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].v(this.TAG, 'Parsed MPEG Audio Frame Header');\n this._audioInitialMetadataDispatched = true;\n\n this._onTrackMetadata('audio', meta);\n\n var _mi = this._mediaInfo;\n _mi.audioCodec = meta.codec;\n _mi.audioSampleRate = meta.audioSampleRate;\n _mi.audioChannelCount = meta.channelCount;\n _mi.audioDataRate = _misc.bitRate;\n\n if (_mi.hasVideo) {\n if (_mi.videoCodec != null) {\n _mi.mimeType = 'video/x-flv; codecs=\"' + _mi.videoCodec + ',' + _mi.audioCodec + '\"';\n }\n } else {\n _mi.mimeType = 'video/x-flv; codecs=\"' + _mi.audioCodec + '\"';\n }\n\n if (_mi.isComplete()) {\n this._onMediaInfo(_mi);\n }\n } // This packet is always a valid audio packet, extract it\n\n\n var data = this._parseMP3AudioData(arrayBuffer, dataOffset + 1, dataSize - 1, false);\n\n if (data == undefined) {\n return 0;\n }\n\n var _dts = this._timestampBase + tagTimestamp;\n\n var mp3Sample = {\n unit: data,\n length: data.byteLength,\n dts: _dts,\n pts: _dts\n };\n track.samples.push(mp3Sample);\n track.length += data.length;\n }\n\n return soundFormat;\n };\n\n _proto._parseAACAudioData = function _parseAACAudioData(arrayBuffer, dataOffset, dataSize) {\n if (dataSize <= 1) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Flv: Invalid AAC packet, missing AACPacketType or/and Data!');\n return;\n }\n\n var result = {};\n var array = new Uint8Array(arrayBuffer, dataOffset, dataSize);\n result.packetType = array[0];\n\n if (array[0] === 0) {\n result.data = this._parseAACAudioSpecificConfig(arrayBuffer, dataOffset + 1, dataSize - 1);\n } else {\n result.data = array.subarray(1); // console.log(\"_parseAACAudioData:\", result.data);\n }\n\n return result;\n };\n\n _proto._parseAACAudioSpecificConfig = function _parseAACAudioSpecificConfig(arrayBuffer, dataOffset, dataSize) {\n var array = new Uint8Array(arrayBuffer, dataOffset, dataSize);\n var config = null;\n /* Audio Object Type:\n 0: Null\n 1: AAC Main\n 2: AAC LC\n 3: AAC SSR (Scalable Sample Rate)\n 4: AAC LTP (Long Term Prediction)\n 5: HE-AAC / SBR (Spectral Band Replication)\n 6: AAC Scalable\n */\n\n var audioObjectType = 0;\n var originalAudioObjectType = 0;\n var audioExtensionObjectType = null;\n var samplingIndex = 0;\n var extensionSamplingIndex = null; // 5 bits\n\n audioObjectType = originalAudioObjectType = array[0] >>> 3; // 4 bits\n\n samplingIndex = (array[0] & 0x07) << 1 | array[1] >>> 7;\n\n if (samplingIndex < 0 || samplingIndex >= this._mpegSamplingRates.length) {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, 'Flv: AAC invalid sampling frequency index!');\n\n return;\n }\n\n var samplingFrequence = this._mpegSamplingRates[samplingIndex]; // 4 bits\n\n var channelConfig = (array[1] & 0x78) >>> 3;\n\n if (channelConfig < 0 || channelConfig >= 8) {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, 'Flv: AAC invalid channel configuration');\n\n return;\n }\n\n if (audioObjectType === 5) {\n // HE-AAC?\n // 4 bits\n extensionSamplingIndex = (array[1] & 0x07) << 1 | array[2] >>> 7; // 5 bits\n\n audioExtensionObjectType = (array[2] & 0x7C) >>> 2;\n } // workarounds for various browsers\n\n\n var userAgent = self.navigator.userAgent.toLowerCase();\n\n if (userAgent.indexOf('firefox') !== -1) {\n // firefox: use SBR (HE-AAC) if freq less than 24kHz\n if (samplingIndex >= 6) {\n audioObjectType = 5;\n config = new Array(4);\n extensionSamplingIndex = samplingIndex - 3;\n } else {\n // use LC-AAC\n audioObjectType = 2;\n config = new Array(2);\n extensionSamplingIndex = samplingIndex;\n }\n } else if (userAgent.indexOf('android') !== -1) {\n // android: always use LC-AAC\n audioObjectType = 2;\n config = new Array(2);\n extensionSamplingIndex = samplingIndex;\n } else {\n // for other browsers, e.g. chrome...\n // Always use HE-AAC to make it easier to switch aac codec profile\n audioObjectType = 5;\n extensionSamplingIndex = samplingIndex;\n config = new Array(4);\n\n if (samplingIndex >= 6) {\n extensionSamplingIndex = samplingIndex - 3;\n } else if (channelConfig === 1) {\n // Mono channel\n audioObjectType = 2;\n config = new Array(2);\n extensionSamplingIndex = samplingIndex;\n }\n }\n\n config[0] = audioObjectType << 3;\n config[0] |= (samplingIndex & 0x0F) >>> 1;\n config[1] = (samplingIndex & 0x0F) << 7;\n config[1] |= (channelConfig & 0x0F) << 3;\n\n if (audioObjectType === 5) {\n config[1] |= (extensionSamplingIndex & 0x0F) >>> 1;\n config[2] = (extensionSamplingIndex & 0x01) << 7; // extended audio object type: force to 2 (LC-AAC)\n\n config[2] |= 2 << 2;\n config[3] = 0;\n }\n\n return {\n config: config,\n samplingRate: samplingFrequence,\n channelCount: channelConfig,\n codec: 'mp4a.40.' + audioObjectType,\n originalCodec: 'mp4a.40.' + originalAudioObjectType\n };\n };\n\n _proto._parseMP3AudioData = function _parseMP3AudioData(arrayBuffer, dataOffset, dataSize, requestHeader) {\n if (dataSize < 4) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Flv: Invalid MP3 packet, header missing!');\n return;\n }\n\n var le = this._littleEndian;\n var array = new Uint8Array(arrayBuffer, dataOffset, dataSize);\n var result = null;\n\n if (requestHeader) {\n if (array[0] !== 0xFF) {\n return;\n }\n\n var ver = array[1] >>> 3 & 0x03;\n var layer = (array[1] & 0x06) >> 1;\n var bitrate_index = (array[2] & 0xF0) >>> 4;\n var sampling_freq_index = (array[2] & 0x0C) >>> 2;\n var channel_mode = array[3] >>> 6 & 0x03;\n var channel_count = channel_mode !== 3 ? 2 : 1;\n var sample_rate = 0;\n var bit_rate = 0;\n var object_type = 34; // Layer-3, listed in MPEG-4 Audio Object Types\n\n var codec = 'mp3';\n\n switch (ver) {\n case 0:\n // MPEG 2.5\n sample_rate = this._mpegAudioV25SampleRateTable[sampling_freq_index];\n break;\n\n case 2:\n // MPEG 2\n sample_rate = this._mpegAudioV20SampleRateTable[sampling_freq_index];\n break;\n\n case 3:\n // MPEG 1\n sample_rate = this._mpegAudioV10SampleRateTable[sampling_freq_index];\n break;\n }\n\n switch (layer) {\n case 1:\n // Layer 3\n object_type = 34;\n\n if (bitrate_index < this._mpegAudioL3BitRateTable.length) {\n bit_rate = this._mpegAudioL3BitRateTable[bitrate_index];\n }\n\n break;\n\n case 2:\n // Layer 2\n object_type = 33;\n\n if (bitrate_index < this._mpegAudioL2BitRateTable.length) {\n bit_rate = this._mpegAudioL2BitRateTable[bitrate_index];\n }\n\n break;\n\n case 3:\n // Layer 1\n object_type = 32;\n\n if (bitrate_index < this._mpegAudioL1BitRateTable.length) {\n bit_rate = this._mpegAudioL1BitRateTable[bitrate_index];\n }\n\n break;\n }\n\n result = {\n bitRate: bit_rate,\n samplingRate: sample_rate,\n channelCount: channel_count,\n codec: codec,\n originalCodec: codec\n };\n } else {\n result = array;\n }\n\n return result;\n };\n\n _proto._parseVideoData = function _parseVideoData(arrayBuffer, dataOffset, dataSize, tagTimestamp, tagPosition) {\n if (dataSize <= 1) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Flv: Invalid video packet, missing VideoData payload!');\n return;\n }\n\n if (this._hasVideoFlagOverrided === true && this._hasVideo === false) {\n // If hasVideo: false indicated explicitly in MediaDataSource,\n // Ignore all the video packets\n return;\n }\n\n var spec = new Uint8Array(arrayBuffer, dataOffset, dataSize)[0];\n var frameType = (spec & 240) >>> 4;\n var codecId = spec & 15; //7:H264 12:HEVC\n\n if (codecId !== 7 && codecId !== 12) {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].CODEC_UNSUPPORTED, \"Flv: Unsupported codec in video frame: \" + codecId);\n\n return;\n }\n\n this._parseAVCAndHEVCVideoPacket(codecId, arrayBuffer, dataOffset + 1, dataSize - 1, tagTimestamp, tagPosition, frameType);\n\n return codecId;\n };\n\n _proto._parseAVCAndHEVCVideoPacket = function _parseAVCAndHEVCVideoPacket(codecId, arrayBuffer, dataOffset, dataSize, tagTimestamp, tagPosition, frameType) {\n if (dataSize < 4) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime');\n return;\n }\n\n var le = this._littleEndian;\n var v = new DataView(arrayBuffer, dataOffset, dataSize);\n var packetType = v.getUint8(0);\n var cts_unsigned = v.getUint32(0, !le) & 0x00FFFFFF;\n var cts = cts_unsigned << 8 >> 8; // convert to 24-bit signed int\n\n if (packetType === 0) {\n // AVCDecoderConfigurationRecord\n if (codecId == 7) //H264\n {\n _common_common__WEBPACK_IMPORTED_MODULE_6__[\"setCodecTypeStr\"]('H264');\n\n this._parseAVCDecoderConfigurationRecord(arrayBuffer, dataOffset + 4, dataSize - 4);\n } else {\n //H265\n _common_common__WEBPACK_IMPORTED_MODULE_6__[\"setCodecTypeStr\"]('H265'); //console.log(\"_parseHEVCDecoderConfigurationRecord\");\n\n this._parseHEVCDecoderConfigurationRecord(arrayBuffer, dataOffset + 4, dataSize - 4);\n }\n } else if (packetType === 1) {\n // One or more Nalus\n if (codecId == 7) {\n //H264\n this._parseAVCVideoData(arrayBuffer, dataOffset + 4, dataSize - 4, tagTimestamp, tagPosition, frameType, cts);\n } else {\n //H265\n //console.log(\"_parseHEVCVideoData\");\n this._parseHEVCVideoData(arrayBuffer, dataOffset + 4, dataSize - 4, tagTimestamp, tagPosition, frameType, cts);\n }\n } else if (packetType === 2) {// empty, AVC end of sequence\n } else {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, \"Flv: Invalid video packet type \" + packetType);\n\n return;\n }\n };\n\n _proto._parseAVCDecoderConfigurationRecord = function _parseAVCDecoderConfigurationRecord(arrayBuffer, dataOffset, dataSize) {\n if (dataSize < 7) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Flv: Invalid AVCDecoderConfigurationRecord, lack of data!');\n return;\n }\n\n var meta = this._videoMetadata;\n var track = this._videoTrack;\n var le = this._littleEndian;\n var v = new DataView(arrayBuffer, dataOffset, dataSize);\n\n if (!meta) {\n if (this._hasVideo === false && this._hasVideoFlagOverrided === false) {\n this._hasVideo = true;\n this._mediaInfo.hasVideo = true;\n }\n\n meta = this._videoMetadata = {};\n meta.type = 'video';\n meta.id = track.id;\n meta.timescale = this._timescale;\n meta.duration = this._duration;\n } else {\n if (typeof meta.avcc !== 'undefined') {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Found another AVCDecoderConfigurationRecord!');\n }\n }\n\n var version = v.getUint8(0); // configurationVersion\n\n var avcProfile = v.getUint8(1); // avcProfileIndication\n\n var profileCompatibility = v.getUint8(2); // profile_compatibility\n\n var avcLevel = v.getUint8(3); // AVCLevelIndication\n\n if (version !== 1 || avcProfile === 0) {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord');\n\n return;\n }\n\n this._naluLengthSize = (v.getUint8(4) & 3) + 1; // lengthSizeMinusOne\n\n if (this._naluLengthSize !== 3 && this._naluLengthSize !== 4) {\n // holy shit!!!\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, \"Flv: Strange NaluLengthSizeMinusOne: \" + (this._naluLengthSize - 1));\n\n return;\n }\n\n var spsCount = v.getUint8(5) & 31; // numOfSequenceParameterSets\n\n if (spsCount === 0) {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No SPS');\n\n return;\n } else if (spsCount > 1) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, \"Flv: Strange AVCDecoderConfigurationRecord: SPS Count = \" + spsCount);\n }\n\n var offset = 6;\n\n for (var i = 0; i < spsCount; i++) {\n var len = v.getUint16(offset, !le); // sequenceParameterSetLength\n\n offset += 2;\n\n if (len === 0) {\n continue;\n } // Notice: Nalu without startcode header (00 00 00 01)\n\n\n var sps = new Uint8Array(arrayBuffer, dataOffset + offset, len);\n this._AVC_SPS = new Uint8Array(len + 4);\n offset += len;\n\n this._AVC_SPS.set(this._StartCode, 0);\n\n this._AVC_SPS.set(sps, 4); //console.log(\"SPS: \" + this._AVC_SPS);\n\n\n var config = _sps_parser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].parseSPS(sps);\n\n if (i !== 0) {\n // ignore other sps's config\n continue;\n }\n\n meta.codecWidth = config.codec_size.width;\n meta.codecHeight = config.codec_size.height;\n meta.presentWidth = config.present_size.width;\n meta.presentHeight = config.present_size.height;\n meta.profile = config.profile_string;\n meta.level = config.level_string;\n meta.bitDepth = config.bit_depth;\n meta.chromaFormat = config.chroma_format;\n meta.sarRatio = config.sar_ratio;\n meta.frameRate = config.frame_rate;\n\n if (config.frame_rate.fixed === false || config.frame_rate.fps_num === 0 || config.frame_rate.fps_den === 0) {\n meta.frameRate = this._referenceFrameRate;\n }\n\n var fps_den = meta.frameRate.fps_den;\n var fps_num = meta.frameRate.fps_num;\n meta.refSampleDuration = meta.timescale * (fps_den / fps_num);\n var codecArray = sps.subarray(1, 4);\n var codecString = 'avc1.';\n\n for (var j = 0; j < 3; j++) {\n var h = codecArray[j].toString(16);\n\n if (h.length < 2) {\n h = '0' + h;\n }\n\n codecString += h;\n }\n\n meta.codec = codecString;\n var mi = this._mediaInfo;\n mi.width = meta.codecWidth;\n mi.height = meta.codecHeight;\n mi.fps = meta.frameRate.fps;\n mi.profile = meta.profile;\n mi.level = meta.level;\n mi.refFrames = config.ref_frames;\n mi.chromaFormat = config.chroma_format_string;\n mi.sarNum = meta.sarRatio.width;\n mi.sarDen = meta.sarRatio.height;\n mi.videoCodec = codecString;\n\n if (mi.hasAudio) {\n if (mi.audioCodec != null) {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.videoCodec + ',' + mi.audioCodec + '\"';\n }\n } else {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.videoCodec + '\"';\n }\n\n if (mi.isComplete()) {\n console.log('this._onMediaInfo video:', mi);\n\n this._onMediaInfo(mi);\n }\n }\n\n var ppsCount = v.getUint8(offset); // numOfPictureParameterSets\n\n if (ppsCount === 0) {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No PPS');\n\n return;\n } else if (ppsCount > 1) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, \"Flv: Strange AVCDecoderConfigurationRecord: PPS Count = \" + ppsCount);\n }\n\n offset++;\n\n for (var _i = 0; _i < ppsCount; _i++) {\n var _len = v.getUint16(offset, !le); // pictureParameterSetLength\n\n\n offset += 2;\n\n if (_len === 0) {\n continue;\n }\n\n var pps = new Uint8Array(arrayBuffer, dataOffset + offset, _len);\n this._AVC_PPS = new Uint8Array(_len + 4);\n\n this._AVC_PPS.set(this._StartCode, 0);\n\n this._AVC_PPS.set(pps, 4); //console.log(\"PPS: \" + this._AVC_PPS);\n // pps is useless for extracting video information\n\n\n offset += _len;\n }\n\n meta.avcc = new Uint8Array(dataSize);\n meta.avcc.set(new Uint8Array(arrayBuffer, dataOffset, dataSize), 0); //Log.v(this.TAG, 'Parsed AVCDecoderConfigurationRecord');\n\n if (this._isInitialMetadataDispatched()) {\n // flush parsed frames\n if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {\n this._onDataAvailable(this._audioTrack, this._videoTrack);\n }\n } else {\n this._videoInitialMetadataDispatched = true;\n } // notify new metadata\n\n\n this._dispatch = false;\n\n this._onTrackMetadata('video', meta);\n\n if (this.getVideoInfoCallbackFunc && this.getVideoInfoCallbackFunc != undefined) {\n this.getVideoInfoCallbackFunc(this._callbackPlaybackTimeUserPtr, 'H264', meta.codecWidth, meta.codecHeight);\n } //Log.i(this.TAG, `Video resolution: ${meta.codecWidth} x ${meta.codecHeight}`);\n\n };\n\n _proto.uint8arrayToBase64 = function uint8arrayToBase64(u8Arr) {\n var CHUNK_SIZE = 0x8000; //arbitrary number\n\n var index = 0;\n var length = u8Arr.length;\n var result = '';\n var slice;\n\n while (index < length) {\n slice = u8Arr.subarray(index, Math.min(index + CHUNK_SIZE, length));\n result += String.fromCharCode.apply(null, slice);\n index += CHUNK_SIZE;\n } // web image base64ͼƬ��ʽ: \"data:image/png;base64,\" + b64encoded;\n // return \"data:image/png;base64,\" + btoa(result);\n\n\n return btoa(result);\n };\n\n _proto._parseAVCVideoData = function _parseAVCVideoData(arrayBuffer, dataOffset, dataSize, tagTimestamp, tagPosition, frameType, cts) {\n var le = this._littleEndian;\n var v = new DataView(arrayBuffer, dataOffset, dataSize);\n var units = [],\n length = 0; //console.log(\"_parseAVCVideoData timestampBase:\" + this._timestampBase + \" tagTimestamp:\" + tagTimestamp);\n\n var offset = 0;\n var lengthSize = this._naluLengthSize;\n var dts = this._timestampBase + tagTimestamp;\n var keyframe = frameType === 1; // from FLV Frame Type constants\n\n var bAddStart = true;\n\n if (this.videoCodecId == 7) {\n //H264\n if (this._config.decodeType === 'auto' || this._config.decodeType === 'hard') {\n bAddStart = false;\n }\n }\n\n while (offset < dataSize) {\n if (offset + 4 >= dataSize) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, \"Malformed Nalu near timestamp \" + dts + \", offset = \" + offset + \", dataSize = \" + dataSize);\n break; // data not enough for next Nalu\n } // Nalu with length-header (AVC1)\n\n\n var naluSize = v.getUint32(offset, !le); // Big-Endian read\n\n if (lengthSize === 3) {\n naluSize >>>= 8;\n }\n\n if (naluSize > dataSize - lengthSize) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, \"Malformed Nalus near timestamp \" + dts + \", NaluSize > DataSize!\");\n return;\n }\n\n var unitType = v.getUint8(offset + lengthSize) & 0x1F;\n\n if (unitType === 5) {\n // IDR\n keyframe = true; //���û��sps & pps\n\n if (units.length < 1 && this._AVC_SPS && this._AVC_SPS.length > 0) {\n if (bAddStart) {\n //���\n var unitSps = {\n type: 7,\n data: this._AVC_SPS\n };\n units.push(unitSps);\n length += unitSps.data.length;\n var unitPps = {\n type: 8,\n data: this._AVC_PPS\n };\n units.push(unitPps);\n length += unitPps.data.length;\n } else {\n //Ӳ��\n //ǰ4���ֽ�Ϊ����\n var datSps = this._AVC_SPS.subarray(0, this._AVC_SPS.length);\n\n var datSpsSize = datSps.length - 4;\n datSps[0] = datSpsSize >> 24;\n datSps[1] = datSpsSize >> 16;\n datSps[2] = datSpsSize >> 8;\n datSps[3] = datSpsSize & 255;\n var _unitSps = {\n type: 7,\n data: datSps\n };\n units.push(_unitSps);\n length += _unitSps.data.length; //ǰ4���ֽ�Ϊ����\n\n var datPps = this._AVC_PPS.subarray(0, this._AVC_PPS.length);\n\n var datPpsSize = datPps.length - 4;\n datPps[0] = datPpsSize >> 24;\n datPps[1] = datPpsSize >> 16;\n datPps[2] = datPpsSize >> 8;\n datPps[3] = datPpsSize & 255;\n var _unitPps = {\n type: 8,\n data: datPps\n };\n units.push(_unitPps);\n length += _unitPps.data.length;\n } //console.log(\"add sps & pps...\");\n //���ڿ���\n\n\n if (this.snapshotCount > 0 && this.fullFrameData && this.fullFrameData != undefined) {\n this.fullFrameData.set(this._AVC_SPS, 0);\n this.fullFrameData[0] = 0;\n this.fullFrameData[1] = 0;\n this.fullFrameData[2] = 0;\n this.fullFrameData[3] = 1;\n this.fullFramePos = this._AVC_SPS.length; //console.log(\"fullFramedata sps:\", this.fullFrameData);\n\n this.fullFrameData.set(this._AVC_PPS, this.fullFramePos);\n this.fullFramePos += this._AVC_PPS.length;\n this.fullFrameData[this._AVC_SPS.length + 0] = 0;\n this.fullFrameData[this._AVC_SPS.length + 1] = 0;\n this.fullFrameData[this._AVC_SPS.length + 2] = 0;\n this.fullFrameData[this._AVC_SPS.length + 3] = 1; //console.log(\"fullFramedata pps:\", this._AVC_PPS);\n //console.log(\"fullFramedata:\", this.fullFrameData);\n }\n }\n }\n\n var data = new Uint8Array(arrayBuffer, dataOffset + offset, lengthSize + naluSize);\n var unit = {\n type: unitType,\n data: data\n };\n units.push(unit);\n length += data.byteLength;\n offset += lengthSize + naluSize; //���ڿ���\n //==========================================================\n\n if (keyframe && this.snapshotCount > 0 && this.fullFrameData && this.fullFrameData != undefined && this.fullFramePos > 0 && window.vssModuleInitialized) {\n this.snapshotCount--; //console.log(\"this.framePos:\", this.framePos);\n //console.log(\"tmpF.length:\", tmpF.length);\n //console.log(\"data:\", data);\n\n this.fullFrameData.set(data, this.fullFramePos);\n this.fullFrameData[this.fullFramePos] = 0;\n this.fullFrameData[this.fullFramePos + 1] = 0;\n this.fullFrameData[this.fullFramePos + 2] = 0;\n this.fullFrameData[this.fullFramePos + 3] = 1;\n this.fullFramePos += data.length; //console.log(\"fullFramedata:\", this.fullFrameData);\n //console.log(\"fullFramePos:\" + this.fullFramePos+\" framedata:\", this.fullFrameData);\n\n var mModule = window.vssPlayerModule;\n var wasmKits = window.VssPlayerWasmKits;\n\n if (mModule && mModule != undefined && wasmKits && wasmKits != undefined) {\n var typedArray = new Uint8Array(this.fullFrameData);\n\n if (typedArray.length > 0) {\n var _offset = mModule._malloc(typedArray.length);\n\n mModule.HEAP8.set(typedArray, _offset); //console.log(\"offset:\", offset);\n\n var n = wasmKits.convertFrame2Image(0, _offset, this.fullFramePos, wasmKits.yuvData, 0);\n\n if (n < 1) {\n console.log('Convert fail.');\n } else {\n var outImageData = mModule.HEAPU8.subarray(wasmKits.yuvData, wasmKits.yuvData + n); //console.log(\"imagedata:\", outImageData);\n //const b64encoded = btoa(String.fromCharCode.apply(null, typedArray));\n\n var b64encoded = this.uint8arrayToBase64(outImageData);\n /*\n const image = document.createElement('img');\n image.src = 'data:image/jpeg;base64,' + b64encoded;\n image.style = \"width:500px;height: 250px\";\n document.querySelector(\"body\").append(image);\n */\n //��������\n\n var downloadFileA = document.createElement('a');\n document.body.append(downloadFileA);\n downloadFileA.href = 'data:image/jpeg;base64,' + b64encoded;\n downloadFileA.download = 'snapshot.jpg';\n downloadFileA.rel = 'noopener noreferrer';\n downloadFileA.click();\n document.body.removeChild(downloadFileA);\n }\n\n mModule._free(_offset);\n }\n }\n\n this.fullFramePos = 0;\n } //==========================================================\n\n }\n\n if (units.length) {\n //\n var track = this._videoTrack;\n var avcSample = {\n units: units,\n length: length,\n isKeyframe: keyframe,\n dts: dts,\n cts: cts,\n pts: dts + cts\n };\n\n if (keyframe) {\n avcSample.fileposition = tagPosition;\n } //console.log(\"flv-demuer.js::_parseAVCVideoData:\" + keyframe + \" tagPosition: \" + tagPosition + \" length:\" + length + \" dts:\" + dts + \" cts:\" + cts);\n\n\n track.samples.push(avcSample);\n track.length += length; //console.log(\"flv-demuer.js::_parseAVCVideoData: \" + track.samples.length);\n }\n } //==================================================================\n ;\n\n _proto._parseHEVCDecoderConfigurationRecord = function _parseHEVCDecoderConfigurationRecord(arrayBuffer, dataOffset, dataSize) {\n if (dataSize < 7) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Flv: Invalid AVCDecoderConfigurationRecord, lack of data!');\n return;\n }\n\n var meta = this._videoMetadata;\n var track = this._videoTrack;\n var le = this._littleEndian;\n var v = new DataView(arrayBuffer, dataOffset, dataSize);\n\n if (!meta) {\n if (this._hasVideo === false && this._hasVideoFlagOverrided === false) {\n this._hasVideo = true;\n this._mediaInfo.hasVideo = true;\n }\n\n meta = this._videoMetadata = {};\n meta.type = 'video';\n meta.id = track.id;\n meta.timescale = this._timescale;\n meta.duration = this._duration;\n } else {\n if (typeof meta.avcc !== 'undefined') {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Found another AVCDecoderConfigurationRecord!');\n }\n }\n\n var startCode1 = v.getUint8(0);\n var startCode2 = v.getUint8(1);\n var startCode3 = v.getUint8(2);\n var startCode4 = v.getUint8(3);\n\n if (startCode1 === 0 && startCode2 === 0 && startCode3 === 0 && startCode4 === 1) {\n console.log('H265 1');\n } else {\n var _offset2 = 22;\n var num = v.getUint8(_offset2);\n _offset2 += 1; //console.log(\"H265::num: \" + num);\n\n for (var idx = 0; idx < num; idx++) {\n var ucTmp = v.getUint8(_offset2);\n _offset2 += 1;\n var number = v.getUint16(_offset2, !le);\n _offset2 += 2;\n var len = v.getUint16(_offset2, !le);\n _offset2 += 2; //console.log(\"uctmp:\", ucTmp);\n\n if (ucTmp === 32 || ucTmp == 160) {\n //VPS\n // Notice: Nalu without startcode header (00 00 00 01)\n var vps = new Uint8Array(arrayBuffer, dataOffset + _offset2, len);\n this._HEVC_VPS = new Uint8Array(len + 4);\n\n this._HEVC_VPS.set(this._StartCode, 0);\n\n this._HEVC_VPS.set(vps, 4); //this._HEVC_VPS = new Uint8Array(arrayBuffer, dataOffset + offset, len);\n // console.log('VPS[' + len + '] : ' + this._HEVC_VPS);\n\n } else if (ucTmp === 33 || ucTmp == 161) {\n //SPS\n var sps = new Uint8Array(arrayBuffer, dataOffset + _offset2, len);\n this._HEVC_SPS = new Uint8Array(len + 4);\n\n this._HEVC_SPS.set(this._StartCode, 0);\n\n this._HEVC_SPS.set(sps, 4); //this._HEVC_SPS = new Uint8Array(arrayBuffer, dataOffset + offset, len);\n // console.log('SPS[' + len + '] : ' + this._HEVC_SPS);\n\n } else if (ucTmp === 34 || ucTmp == 162) {\n //PPS\n var pps = new Uint8Array(arrayBuffer, dataOffset + _offset2, len);\n this._HEVC_PPS = new Uint8Array(len + 4);\n\n this._HEVC_PPS.set(this._StartCode, 0);\n\n this._HEVC_PPS.set(pps, 4); //this._HEVC_PPS = new Uint8Array(arrayBuffer, dataOffset + offset, len);\n // console.log('PPS[' + len + '] : ' + this._HEVC_PPS);\n\n }\n\n _offset2 += len;\n }\n }\n\n if (this._isInitialMetadataDispatched()) {\n // flush parsed frames\n if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {\n this._onDataAvailable(this._audioTrack, this._videoTrack);\n }\n } else {\n this._videoInitialMetadataDispatched = true;\n } // notify new metadata\n\n\n this._dispatch = false;\n return;\n var version = v.getUint8(0); // configurationVersion\n\n var avcProfile = v.getUint8(1); // avcProfileIndication\n\n var profileCompatibility = v.getUint8(2); // profile_compatibility\n\n var avcLevel = v.getUint8(3); // AVCLevelIndication\n\n if (version !== 1 || avcProfile === 0) {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord');\n\n return;\n }\n\n this._naluLengthSize = (v.getUint8(4) & 3) + 1; // lengthSizeMinusOne\n\n if (this._naluLengthSize !== 3 && this._naluLengthSize !== 4) {\n // holy shit!!!\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, \"Flv: Strange NaluLengthSizeMinusOne: \" + (this._naluLengthSize - 1));\n\n return;\n }\n\n var spsCount = v.getUint8(5) & 31; // numOfSequenceParameterSets\n\n if (spsCount === 0) {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No SPS');\n\n return;\n } else if (spsCount > 1) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, \"Flv: Strange AVCDecoderConfigurationRecord: SPS Count = \" + spsCount);\n }\n\n var offset = 6;\n\n for (var i = 0; i < spsCount; i++) {\n var _len2 = v.getUint16(offset, !le); // sequenceParameterSetLength\n\n\n offset += 2;\n\n if (_len2 === 0) {\n continue;\n } // Notice: Nalu without startcode header (00 00 00 01)\n\n\n var _sps = new Uint8Array(arrayBuffer, dataOffset + offset, _len2);\n\n offset += _len2;\n var config = _sps_parser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].parseSPS(_sps);\n\n if (i !== 0) {\n // ignore other sps's config\n continue;\n }\n\n meta.codecWidth = config.codec_size.width;\n meta.codecHeight = config.codec_size.height;\n meta.presentWidth = config.present_size.width;\n meta.presentHeight = config.present_size.height;\n meta.profile = config.profile_string;\n meta.level = config.level_string;\n meta.bitDepth = config.bit_depth;\n meta.chromaFormat = config.chroma_format;\n meta.sarRatio = config.sar_ratio;\n meta.frameRate = config.frame_rate;\n\n if (config.frame_rate.fixed === false || config.frame_rate.fps_num === 0 || config.frame_rate.fps_den === 0) {\n meta.frameRate = this._referenceFrameRate;\n }\n\n var fps_den = meta.frameRate.fps_den;\n var fps_num = meta.frameRate.fps_num;\n meta.refSampleDuration = meta.timescale * (fps_den / fps_num);\n\n var codecArray = _sps.subarray(1, 4);\n\n var codecString = 'avc1.';\n\n for (var j = 0; j < 3; j++) {\n var h = codecArray[j].toString(16);\n\n if (h.length < 2) {\n h = '0' + h;\n }\n\n codecString += h;\n }\n\n meta.codec = codecString;\n var mi = this._mediaInfo;\n mi.width = meta.codecWidth;\n mi.height = meta.codecHeight;\n mi.fps = meta.frameRate.fps;\n mi.profile = meta.profile;\n mi.level = meta.level;\n mi.refFrames = config.ref_frames;\n mi.chromaFormat = config.chroma_format_string;\n mi.sarNum = meta.sarRatio.width;\n mi.sarDen = meta.sarRatio.height;\n mi.videoCodec = codecString;\n\n if (mi.hasAudio) {\n if (mi.audioCodec != null) {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.videoCodec + ',' + mi.audioCodec + '\"';\n }\n } else {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.videoCodec + '\"';\n }\n\n if (mi.isComplete()) {\n this._onMediaInfo(mi);\n }\n }\n\n var ppsCount = v.getUint8(offset); // numOfPictureParameterSets\n\n if (ppsCount === 0) {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No PPS');\n\n return;\n } else if (ppsCount > 1) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, \"Flv: Strange AVCDecoderConfigurationRecord: PPS Count = \" + ppsCount);\n }\n\n offset++;\n\n for (var _i2 = 0; _i2 < ppsCount; _i2++) {\n var _len3 = v.getUint16(offset, !le); // pictureParameterSetLength\n\n\n offset += 2;\n\n if (_len3 === 0) {\n continue;\n } // pps is useless for extracting video information\n\n\n offset += _len3;\n }\n\n meta.avcc = new Uint8Array(dataSize);\n meta.avcc.set(new Uint8Array(arrayBuffer, dataOffset, dataSize), 0);\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].v(this.TAG, 'Parsed AVCDecoderConfigurationRecord');\n\n if (this._isInitialMetadataDispatched()) {\n // flush parsed frames\n if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {\n this._onDataAvailable(this._audioTrack, this._videoTrack);\n }\n } else {\n this._videoInitialMetadataDispatched = true;\n } // notify new metadata\n\n\n this._dispatch = false;\n\n this._onTrackMetadata('video', meta);\n };\n\n _proto.snapshot = function snapshot() {\n this.snapshotCount++;\n } //#define H265_Get_NalType(c)\t (((c) & 0x7E) >> 1);\n ;\n\n _proto._makeH265Header = function _makeH265Header(buf) {\n var frameType = 0x02;\n\n switch (buf) {\n case 0x4E:\n //Prefix SEI\n {\n frameType = 0x01;\n }\n break;\n\n case 0x50:\n //Suffix SEI\n {\n frameType = 0x01;\n }\n break;\n\n case 0x40: //VPS\n\n case 0x42: //SPS\n\n case 0x20: //I frame 16\n\n case 0x22: //I frame 17\n\n case 0x24: //I frame 18\n\n case 0x26: //I frame 19\n\n case 0x28: //I frame 20\n\n case 0x2A:\n //I frame 21(acturally we should find naltype 16-21)\n {\n frameType = 0x01;\n }\n break;\n\n case 0x44:\n //PPS\n break;\n\n default:\n break;\n }\n\n return frameType;\n };\n\n _proto._parseHEVCVideoData = function _parseHEVCVideoData(arrayBuffer, dataOffset, dataSize, tagTimestamp, tagPosition, frameType, cts) {\n var le = this._littleEndian;\n var v = new DataView(arrayBuffer, dataOffset, dataSize); //console.log(\"Parse HEVC Video data... \" + dataSize);\n\n var dts = this._timestampBase + tagTimestamp;\n var keyframe = frameType === 1; // from FLV Frame Type constants\n\n var units = [];\n var framePos = 0;\n var offset = 0;\n\n while (offset < dataSize) {\n if (offset + 4 >= dataSize) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, \"Malformed Nalu near timestamp \" + dts + \", offset = \" + offset + \", dataSize = \" + dataSize);\n break; // data not enough for next Nalu\n }\n\n var startCode1 = v.getUint8(offset);\n var startCode2 = v.getUint8(offset + 1);\n var startCode3 = v.getUint8(offset + 2);\n var startCode4 = v.getUint8(offset + 3);\n\n if (startCode1 === 0 && startCode2 === 0 && startCode3 === 0 && startCode4 === 1) {\n console.log('memcpy.....'); //������\n } else {\n // Nalu with length-header (AVC1)\n //let naluSize = v.getUint32(offset, !le); // Big-Endian read\n //if (lengthSize === 3) {\n // naluSize >>>= 8;\n //}\n //if (naluSize > dataSize - lengthSize) {\n // Log.w(this.TAG, `Malformed Nalus near timestamp ${dts}, NaluSize > DataSize!`);\n // return;\n //}\n var naluDataSize = v.getUint32(offset, !le);\n offset += 4;\n var ucTmp = v.getUint8(offset);\n offset += 1;\n\n if (naluDataSize > dataSize - 4) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, \"Malformed Nalus near timestamp \" + dts + \", NaluSize > DataSize!\");\n return;\n }\n\n var codecId = ucTmp & 15; //console.log(\"NaluDataSize: \" + naluDataSize);\n\n if (naluDataSize + offset - 1 > dataSize) {\n //console.log(\" > dataSize... need more data... \" + dataSize + \" / \" + naluDataSize);\n break;\n }\n\n var byte1 = v.getUint8(offset - 1);\n\n var _frameType = this._makeH265Header(byte1);\n\n var unitType = 0; //console.log(\"byte1:\", byte1);\n\n if (byte1 == 0x4E) {\n if (units.length < 1) {\n //console.log(\"length<1:\");\n if (this._HEVC_VPS) {\n var unitVps = {\n type: 5,\n data: this._HEVC_VPS\n };\n units.push(unitVps);\n framePos += this._HEVC_VPS.length; //console.log(\"has VPS\");\n }\n\n if (this._HEVC_SPS) {\n var unitSps = {\n type: 6,\n data: this._HEVC_SPS\n };\n units.push(unitSps);\n framePos += this._HEVC_SPS.length; //console.log(\"has SPS\");\n }\n\n if (this._HEVC_PPS) {\n var unitPps = {\n type: 7,\n data: this._HEVC_PPS\n };\n units.push(unitPps);\n framePos += this._HEVC_PPS.length; //console.log(\"has PPS\");\n }\n }\n\n if (dataOffset + offset - 1 - 4 >= 0 && naluDataSize > 0) {\n var data = new Uint8Array(arrayBuffer, dataOffset + offset - 1 - 4, naluDataSize + 4);\n data[0] = 0;\n data[1] = 0;\n data[2] = 0;\n data[3] = 1;\n var unit = {\n type: 5,\n data: data\n };\n units.push(unit); //console.log(\"data:\", data);\n\n framePos += data.length;\n }\n\n offset += naluDataSize - 1;\n continue;\n }\n\n if (byte1 === 0x20 || byte1 === 0x22 || byte1 === 0x24 || byte1 === 0x26 || byte1 === 0x28 || byte1 === 0x2A) {\n //console.log(\"###############:\", byte1);\n if (units.length < 1) {\n //console.log(\"length<1:\");\n if (this._HEVC_VPS) {\n var _unitVps = {\n type: 5,\n data: this._HEVC_VPS\n };\n units.push(_unitVps);\n framePos += this._HEVC_VPS.length; //console.log(\"has VPS\");\n }\n\n if (this._HEVC_SPS) {\n var _unitSps2 = {\n type: 6,\n data: this._HEVC_SPS\n };\n units.push(_unitSps2);\n framePos += this._HEVC_SPS.length; //console.log(\"has SPS\");\n }\n\n if (this._HEVC_PPS) {\n var _unitPps2 = {\n type: 7,\n data: this._HEVC_PPS\n };\n units.push(_unitPps2);\n framePos += this._HEVC_PPS.length; //console.log(\"has PPS\");\n }\n }\n }\n\n if (_frameType === 1 && this._HEVC_VPS && byte1 !== this._HEVC_VPS[0]) {//console.log(\"memcpy vps sps pps...\");\n } //console.log(\"naluDataSize: \" + naluDataSize);\n\n\n if (dataOffset + offset - 1 - 4 >= 0 && naluDataSize > 0) {\n var _data = new Uint8Array(arrayBuffer, dataOffset + offset - 1 - 4, naluDataSize + 4);\n\n _data[0] = 0;\n _data[1] = 0;\n _data[2] = 0;\n _data[3] = 1;\n var _unit = {\n type: 5,\n data: _data\n };\n units.push(_unit); //console.log(\"data:\", data);\n\n framePos += _data.length;\n }\n\n offset += naluDataSize - 1;\n }\n } //����Ϊ���Դ���\n\n\n if (this._DebugBuf) {\n if (this._DebugBufPos < 1024 * 1024) {\n this._DebugBuf.set(data2, this._DebugBufPos);\n\n this._DebugBufPos += data2.length;\n } else {\n console.log('DebugBuf: ' + this._DebugBuf);\n this._DebugBufPos = 0;\n }\n }\n /*\n if (bRet) {\n console.log(\"Frame data I[\" + framePos + \"]: \");// + data2);\n }\n else {\n console.log(\" Frame data P[\" + framePos + \"]: \");// + data2);\n }\n */\n //�������\n\n\n if (units.length) {\n var track = this._videoTrack;\n var avcSample = {\n units: units,\n length: framePos,\n isKeyframe: keyframe,\n dts: dts,\n cts: cts,\n pts: dts + cts\n };\n\n if (keyframe) {\n avcSample.fileposition = tagPosition;\n }\n\n track.samples.push(avcSample);\n track.length += framePos; //console.log(\"flv-demuer.js::_parseAVCVideoData: \" + track.samples.length);\n }\n\n return;\n /*\n let units = [], length = 0;\n //let offset = 0;\n const lengthSize = this._naluLengthSize;\n let dts = this._timestampBase + tagTimestamp;\n let keyframe = (frameType === 1); // from FLV Frame Type constants\n while (offset < dataSize) {\n if (offset + 4 >= dataSize) {\n Log.w(this.TAG, `Malformed Nalu near timestamp ${dts}, offset = ${offset}, dataSize = ${dataSize}`);\n break; // data not enough for next Nalu\n }\n // Nalu with length-header (AVC1)\n let naluSize = v.getUint32(offset, !le); // Big-Endian read\n if (lengthSize === 3) {\n naluSize >>>= 8;\n }\n if (naluSize > dataSize - lengthSize) {\n Log.w(this.TAG, `Malformed Nalus near timestamp ${dts}, NaluSize > DataSize!`);\n return;\n }\n let unitType = v.getUint8(offset + lengthSize) & 0x1F;\n if (unitType === 5) { // IDR\n keyframe = true;\n }\n let data = new Uint8Array(arrayBuffer, dataOffset + offset, lengthSize + naluSize);\n let unit = { type: unitType, data: data };\n units.push(unit);\n length += data.byteLength;\n offset += lengthSize + naluSize;\n }\n if (units.length) {\n let track = this._videoTrack;\n let avcSample = {\n units: units,\n length: length,\n isKeyframe: keyframe,\n dts: dts,\n cts: cts,\n pts: (dts + cts)\n };\n if (keyframe) {\n avcSample.fileposition = tagPosition;\n }\n track.samples.push(avcSample);\n track.length += length;\n //console.log(\"flv-demuer.js::_parseAVCVideoData: \" + track.samples.length);\n }\n */\n };\n\n _createClass(FLVDemuxer, [{\n key: \"onTrackMetadata\",\n get: function get() {\n console.log('onTrackMetadata:', this._onTrackMetadata);\n return this._onTrackMetadata;\n },\n set: function set(callback) {\n this._onTrackMetadata = callback;\n } // prototype: function(mediaInfo: MediaInfo): void\n\n }, {\n key: \"onMediaInfo\",\n get: function get() {\n console.log('onMediaInfo():', this._onMediaInfo);\n return this._onMediaInfo;\n },\n set: function set(callback) {\n this._onMediaInfo = callback;\n }\n }, {\n key: \"onMetaDataArrived\",\n get: function get() {\n return this._onMetaDataArrived;\n },\n set: function set(callback) {\n this._onMetaDataArrived = callback;\n }\n }, {\n key: \"onScriptDataArrived\",\n get: function get() {\n return this._onScriptDataArrived;\n },\n set: function set(callback) {\n this._onScriptDataArrived = callback;\n } // prototype: function(type: number, info: string): void\n\n }, {\n key: \"onError\",\n get: function get() {\n return this._onError;\n },\n set: function set(callback) {\n this._onError = callback;\n } // prototype: function(videoTrack: any, audioTrack: any): void\n\n }, {\n key: \"onDataAvailable\",\n get: function get() {\n return this._onDataAvailable;\n },\n set: function set(callback) {\n this._onDataAvailable = callback;\n } // timestamp base for output samples, must be in milliseconds\n\n }, {\n key: \"timestampBase\",\n get: function get() {\n return this._timestampBase;\n },\n set: function set(base) {\n this._timestampBase = base;\n }\n }, {\n key: \"overridedDuration\",\n get: function get() {\n return this._duration;\n } // Force-override media duration. Must be in milliseconds, int32\n ,\n set: function set(duration) {\n this._durationOverrided = true;\n this._duration = duration;\n this._mediaInfo.duration = duration;\n } // Force-override audio track present flag, boolean\n\n }, {\n key: \"overridedHasAudio\",\n set: function set(hasAudio) {\n this._hasAudioFlagOverrided = true;\n this._hasAudio = hasAudio;\n this._mediaInfo.hasAudio = hasAudio;\n } // Force-override video track present flag, boolean\n\n }, {\n key: \"overridedHasVideo\",\n set: function set(hasVideo) {\n this._hasVideoFlagOverrided = true;\n this._hasVideo = hasVideo;\n this._mediaInfo.hasVideo = hasVideo;\n }\n }]);\n\n return FLVDemuxer;\n}(); //==================================================================\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FLVDemuxer);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/demux/flv-demuxer.js?"); | |
| 3221 | - | |
| 3222 | -/***/ }), | |
| 3223 | - | |
| 3224 | -/***/ "./src/FlvPlayer/flv.js/demux/rtsp-demuxer.js": | |
| 3225 | -/*!****************************************************!*\ | |
| 3226 | - !*** ./src/FlvPlayer/flv.js/demux/rtsp-demuxer.js ***! | |
| 3227 | - \****************************************************/ | |
| 3228 | -/*! exports provided: default */ | |
| 3229 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3230 | - | |
| 3231 | -"use strict"; | |
| 3232 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _sps_parser_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sps-parser.js */ \"./src/FlvPlayer/flv.js/demux/sps-parser.js\");\n/* harmony import */ var _demux_errors_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./demux-errors.js */ \"./src/FlvPlayer/flv.js/demux/demux-errors.js\");\n/* harmony import */ var _core_media_info_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/media-info.js */ \"./src/FlvPlayer/flv.js/core/media-info.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n\n\n\n\n //import * as common from '../../../common/common';\n\nfunction Swap16(src) {\n return src >>> 8 & 0xFF | (src & 0xFF) << 8;\n}\n\nfunction Swap32(src) {\n return (src & 0xFF000000) >>> 24 | (src & 0x00FF0000) >>> 8 | (src & 0x0000FF00) << 8 | (src & 0x000000FF) << 24;\n}\n\nfunction ReadBig32(array, index) {\n return array[index] << 24 | array[index + 1] << 16 | array[index + 2] << 8 | array[index + 3];\n}\n\nvar RTSPDemuxer = /*#__PURE__*/function () {\n function RTSPDemuxer(probeData, config, callbackMediaDataFunc, callbackMediaDataUserPtr, callbackPlaybackTimePtr, callbackPlaybackTimeUserPtr, getVideoInfoCbFunc) {\n this.TAG = 'RTSPDemuxer';\n this._config = config;\n this._onError = null;\n this._onMediaInfo = null;\n this._onMetaDataArrived = null;\n this._onScriptDataArrived = null;\n this._onTrackMetadata = null;\n this._onDataAvailable = null; //this._onDataAvailableToSoftwareDecode = null;\n\n this._dataOffset = probeData.dataOffset;\n this._firstParse = true;\n this._dispatch = false;\n this._hasAudio = probeData.hasAudioTrack;\n this._hasVideo = probeData.hasVideoTrack;\n this._hasAudioFlagOverrided = false;\n this._hasVideoFlagOverrided = false;\n this._audioInitialMetadataDispatched = false;\n this._videoInitialMetadataDispatched = false;\n this._initVideoMetadata = false;\n this._initAudioMetadata = false;\n this._mediaInfo = new _core_media_info_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]();\n this._mediaInfo.hasAudio = this._hasAudio;\n this._mediaInfo.hasVideo = this._hasVideo;\n this._metadata = null;\n this._audioMetadata = null;\n this._videoMetadata = null;\n this._naluLengthSize = 4;\n this._timestampBase = 0; // int32, in milliseconds\n\n this._timescale = 1000;\n this._duration = 0; // int32, in milliseconds\n\n this._durationOverrided = false;\n this._referenceFrameRate = {\n fixed: true,\n fps: 23.976,\n fps_num: 23976,\n fps_den: 1000\n };\n this._flvSoundRateTable = [5500, 11025, 22050, 44100, 48000];\n this._mpegSamplingRates = [96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350];\n this._mpegAudioV10SampleRateTable = [44100, 48000, 32000, 0];\n this._mpegAudioV20SampleRateTable = [22050, 24000, 16000, 0];\n this._mpegAudioV25SampleRateTable = [11025, 12000, 8000, 0];\n this._mpegAudioL1BitRateTable = [0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, -1];\n this._mpegAudioL2BitRateTable = [0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, -1];\n this._mpegAudioL3BitRateTable = [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1];\n this._videoTrack = {\n type: 'video',\n id: 1,\n sequenceNumber: 0,\n samples: [],\n length: 0\n };\n this._audioTrack = {\n type: 'audio',\n id: 2,\n sequenceNumber: 0,\n samples: [],\n length: 0\n };\n\n this._littleEndian = function () {\n var buf = new ArrayBuffer(2);\n new DataView(buf).setInt16(0, 256, true); // little-endian write\n\n return new Int16Array(buf)[0] === 256; // platform-spec read, if equal then LE\n }();\n\n this.videoCodecId = probeData.videoCodecId;\n this.audioCodecId = probeData.audioCodecId;\n this._AVC_SPS = null;\n this._AVC_PPS = null;\n this._HEVC_VPS = null;\n this._HEVC_SPS = null;\n this._HEVC_PPS = null;\n this._StartCode = [0, 0, 0, 1];\n this._SampleRate = 8000;\n this._ChannelNum = 1;\n this._AVC_Config = null;\n this._pause = false;\n this._callbackInitFlag = false;\n this._callbackMediaDataFunc = callbackMediaDataFunc;\n this._callbackMediaDataUserPtr = callbackMediaDataUserPtr;\n this._callbackPlaybackTimePtr = callbackPlaybackTimePtr;\n this._callbackPlaybackTimeUserPtr = callbackPlaybackTimeUserPtr;\n this.getVideoInfoCallbackFunc = getVideoInfoCbFunc;\n this._debugProcCount = 0;\n this.ptsInterval = 40; //Ĭ��Ϊ25FPS\n\n this.packetData = null; //new Uint8Array(1024 * 16);\n\n this.packetPos = 0;\n this.frameData = new Uint8Array(1024 * 1024 * 2);\n this.fullFrameData = null; //new Uint8Array(1024 * 1024 * 2);\n\n this.fullFramePos = 0;\n this.snapshotCount = 0;\n this.framePos = 0;\n this.lastTimestamp = 0;\n this.currentIsKeyFrame = false;\n this.reset = 0;\n this.findKeyframe = true;\n this.syncVideoPts = 0;\n this.syncAudioPts = 0;\n this.startVideoPts = 0;\n this.startAudioPts = 0;\n this.lastNALType = 0;\n this._fileposition = 0;\n this._DebugBuf = null; //new Uint8Array(1024 * 1024 * 2);\n //this._DebugBuf = new Uint8Array(1024 * 1024 * 2);\n\n this._DebugBufPos = 0;\n }\n\n var _proto = RTSPDemuxer.prototype;\n\n _proto.destroy = function destroy() {\n this._mediaInfo = null;\n this._metadata = null;\n this._audioMetadata = null;\n this._videoMetadata = null;\n this._videoTrack = null;\n this._audioTrack = null;\n this._onError = null;\n this._onMediaInfo = null;\n this._onMetaDataArrived = null;\n this._onScriptDataArrived = null;\n this._onTrackMetadata = null;\n this._onDataAvailable = null;\n\n if (this.packetData) {\n delete this.packetData;\n this.packetData = null;\n }\n\n if (this.frameData) {\n delete this.frameData;\n this.frameData = null;\n }\n\n if (this.fullFrameData) {\n delete this.fullFrameData;\n this.fullFrameData = null;\n }\n };\n\n RTSPDemuxer.probe = function probe(buffer) {\n //�˴���bufferΪrtsp�е�mediainfo\n if (buffer.videoCodecId > 0) {\n return {\n match: true,\n consumed: 0,\n dataOffset: 0,\n hasAudioTrack: buffer.audioCodecId > 0 ? true : false,\n hasVideoTrack: buffer.videoCodecId > 0 ? true : false,\n videoCodecId: buffer.videoCodecId,\n audioCodecId: buffer.audioCodecId\n };\n }\n\n var data = new Uint8Array(buffer);\n var mismatch = {\n match: false\n };\n\n if (data[0] !== '$') {\n return mismatch;\n }\n\n var hasAudio = (data[4] & 4) >>> 2 !== 0;\n var hasVideo = (data[4] & 1) !== 0;\n var offset = ReadBig32(data, 5);\n\n if (offset < 9) {\n return mismatch;\n }\n\n return {\n match: true,\n consumed: offset,\n dataOffset: offset,\n hasAudioTrack: hasAudio,\n hasVideoTrack: hasVideo\n };\n };\n\n _proto.bindDataSource = function bindDataSource(loader) {\n loader.onDataArrival = this.parseChunks.bind(this);\n return this;\n } // prototype: function(type: string, metadata: any): void\n ;\n\n _proto.resetMediaInfo = function resetMediaInfo() {\n this._mediaInfo = new _core_media_info_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]();\n } //==================================================================================================\n ;\n\n _proto.pause = function pause() {\n this._pause = true;\n };\n\n _proto.resume = function resume() {\n this._pause = false;\n };\n\n _proto._onDataAvailableToSoftwareDecodeVideo = function _onDataAvailableToSoftwareDecodeVideo(codecId, videoTrack) {\n var track = videoTrack;\n var samples = track.samples;\n var idx = -1;\n\n if (samples.length > 1) {\n //console.log(\"frame num: \" + samples.length);\n idx = 0;\n }\n\n while (samples.length) {\n var sample = samples.shift();\n var frameLength = 0;\n\n for (var j = 0; j < sample.units.length; j++) {\n frameLength += sample.units[j].data.length;\n }\n\n var offset = 0;\n var bufdata = new Uint8Array(frameLength); //for (let j = 0; j < sample.units.length; j++) {\n\n while (sample.units.length) {\n var unit = sample.units.shift();\n\n if (codecId == 27) {\n unit.data[0] = 0;\n unit.data[1] = 0;\n unit.data[2] = 0;\n unit.data[3] = 1;\n }\n\n bufdata.set(unit.data, offset);\n offset += unit.data.length;\n } //isKeyframe\n\n\n if (this._callbackMediaDataFunc) {\n //console.log(\"Decode: \" + bufdata);\n //console.log(\"Decode: \" + frameLength);\n if (idx >= 0) {\n //console.log(\"frame idx \" + idx + \" length: \" + frameLength);// + \":\" + bufdata);\n idx++;\n } //console.log(\"Flv-Demuxer.js:: callback pts: \" + sample.pts);\n\n\n this._callbackMediaDataFunc(this._callbackMediaDataUserPtr, true, 1, codecId, sample.isKeyframe, bufdata, frameLength, sample.pts, 0, 0);\n }\n }\n };\n\n _proto._onDataAvailableToSoftwareDecodeAudio = function _onDataAvailableToSoftwareDecodeAudio(codecId, audioTrack) {\n //console.log(\"proc audio frame....\" + codecId + \" samples: \" + audioTrack.samples.length);\n var track = audioTrack;\n var samples = track.samples;\n var idx = -1;\n\n if (samples.length > 1) {\n //console.log(\"frame num: \" + samples.length);\n idx = 0;\n }\n\n while (samples.length) {\n var sample = samples.shift();\n\n if (this._callbackMediaDataFunc) {\n //console.log(\"Decode audio: \" + sample.unit);\n //console.log(\"Decode: \" + frameLength);\n if (idx >= 0) {\n //console.log(\"frame idx \" + idx + \" length: \" + frameLength);// + \":\" + bufdata);\n idx++;\n } //mediaType, codecId, framedata, framesize, samplerate, channels, bitPerSample) {\n\n\n this._callbackMediaDataFunc(this._callbackMediaDataUserPtr, true, 2, codecId, 0, sample.unit, sample.length, this._SampleRate, this._ChannelNum, this._SampleRate >= 44100 ? 32 : 16);\n }\n }\n } //==================================================================================================\n ;\n\n _proto._isInitialMetadataDispatched = function _isInitialMetadataDispatched() {\n if (this._hasAudio && this._hasVideo) {\n // both audio & video\n return this._audioInitialMetadataDispatched && this._videoInitialMetadataDispatched;\n }\n\n if (this._hasAudio && !this._hasVideo) {\n // audio only\n return this._audioInitialMetadataDispatched;\n }\n\n if (!this._hasAudio && this._hasVideo) {\n // video only\n return this._videoInitialMetadataDispatched;\n }\n\n return false;\n };\n\n _proto.procH264Packet = function procH264Packet(srcBuf, srcLen) {\n //unsigned char *dstbuf, unsigned int *bKeyFrame, unsigned int *bNaluEnd\n var StartCode = [0, 0, 0, 1]; //console.log(\"rtp data: \" + srcBuf);\n\n var offset = 0;\n var isKeyFrame = false;\n var nalType = srcBuf[0] & 0x1F; //console.log(\"nalType:\", nalType);\n\n if (nalType >= 1 && nalType <= 23) {\n if (nalType == 5) {\n isKeyFrame = true;\n }\n\n nalType = 1;\n }\n\n var result = {\n length: 0,\n keyframe: isKeyFrame,\n endBit: 0\n };\n\n switch (nalType) {\n case 0:\n console.log('nalType == 0.');\n break;\n\n case 1:\n {\n //console.log(\"naltype=1. data:\" + srcBuf);\n this.frameData.set(StartCode, this.framePos);\n this.framePos += 4;\n this.frameData.set(srcBuf, this.framePos);\n this.framePos += srcBuf.length;\n result.length = 4 + srcBuf.length; //console.log(\"nalType == 1. result.length:\" + result.length);\n\n if (this._AVC_SPS && this._AVC_PPS) {\n //console.log(\"this._AVC_SPS:\" + this._AVC_SPS.length + \" this._AVC_PPS:\" + this._AVC_PPS.length);\n if (result.length > this._AVC_SPS.length + this._AVC_PPS.length + 8) {\n result.endBit = 1;\n }\n }\n }\n break;\n\n case 24:\n {\n console.log('one packet, multiple nals...');\n offset++;\n\n for (var pass = 0; pass < 2; pass++) {\n var src_len = this.framePos - offset;\n\n do {\n var nal_size = srcBuf[offset] << 8 | srcBuf[offset + 1] & 0xFF;\n offset += 2;\n src_len -= 2;\n\n if (nal_size <= src_len) {}\n } while (src_len > 2);\n }\n }\n break;\n\n case 25:\n case 26:\n case 27:\n case 29:\n {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].e(this.TAG, 'Unhandled type(' + nalType + ') (See RFC for implementation details');\n }\n break;\n\n case 28:\n {\n // FU-A (fragmented nal)\n offset++;\n var fu_indicator = nalType;\n var fu_header = srcBuf[offset];\n var start_bit = fu_header >> 7;\n var end_bit = (fu_header & 0x40) >> 6;\n var fu_type = fu_header & 0x1F;\n var reconstructed_nal = fu_indicator & 0xE0;\n reconstructed_nal |= nalType;\n var nal_fua = fu_indicator & 0xe0 | fu_header & 0x1f;\n offset++; //console.log(\"fu_type:\" + fu_type + \" nal_fua:\" + nal_fua + \" startBit:\" + start_bit + \" end_bit:\" + end_bit);\n\n if (fu_type == 5 || fu_type == 6) {\n //2022.02.24 ����fu_type==6\n result.keyframe = true;\n }\n\n if (end_bit == 1) {\n var p = srcBuf.subarray(offset);\n this.frameData.set(p, this.framePos);\n this.framePos += p.length; //console.log(\"frame size:\" + this.framePos);\n\n result.endBit = 1;\n } else if (start_bit == 1) {\n //this.frameData[this.framePos] = nal_fua;\n //=====================================\n //�����SPS��PPS�����\n var p1 = srcBuf[0] & 0xE0 | srcBuf[1] & 0x1F;\n\n if (this._AVC_SPS && this._AVC_PPS) {\n //console.log(\"start:\" + p1 + \" sps[4]:\" + this._AVC_SPS[4] + \" nal_fua:\" + nal_fua + \" this._AVC_SPS.length:\" + this._AVC_SPS.length + \" this._AVC_PPS.length:\" + this._AVC_PPS.length);\n if (this._AVC_SPS[4] != p1 && nal_fua == 5 && (this.frameData[4] != this._AVC_SPS[4] || this.frameData[4] == this._AVC_SPS[4] && this.framePos < 1)) {\n this.frameData.set(this._AVC_SPS, this._AVC_SPS.length);\n this.framePos += this._AVC_SPS.length;\n this.frameData.set(this._AVC_PPS, this._AVC_PPS.length);\n this.framePos += this._AVC_PPS.length;\n }\n } //=====================================\n //\n\n\n this.frameData.set(StartCode, this.framePos);\n this.framePos += 4; //this.frameData[this.framePos] = (srcBuf[1] & 0xE0) | 28;\n\n this.frameData[this.framePos] = srcBuf[0] & 0xE0 | srcBuf[1] & 0x1F;\n this.framePos += 1; //this.frameData[this.framePos] = 0x80 | (srcBuf[1] & 0x1F);\n //this.framePos += 1;\n\n var _p = srcBuf.subarray(2, srcBuf.length);\n\n this.frameData.set(_p, this.framePos);\n this.framePos += _p.length;\n } else {\n var _p2 = srcBuf.subarray(2);\n\n this.frameData.set(_p2, this.framePos);\n this.framePos += _p2.length;\n }\n /*\n if (start_bit) {\n if (nal_type == 5) result.keyframe = true;\n //00 00 00 01\n this.frameData.set(StartCode, this.framePos);\n this.framePos += 4;\n //this.frameData.set(reconstructed_nal, this.framePos);\n this.frameData[this.framePos] = reconstructed_nal;\n this.framePos += 1;\n let p = srcBuf.subarray(offset);\n this.frameData.set(p, this.framePos);\n this.framePos += (p.length);\n result.length = 4 + 1 + p.length;\n }\n else {\n let p = srcBuf.subarray(offset);\n this.frameData.set(p, this.framePos);\n this.framePos += (p.length);\n }\n */\n\n }\n break;\n\n case 30:\n case 31:\n {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].e(this.TAG, 'Undefined type: ' + nalType);\n }\n break;\n\n default:\n {\n console.log('naltype: ' + nalType);\n }\n break;\n }\n\n return result;\n };\n\n _proto.procH264NALHeader = function procH264NALHeader(payload) {\n var naltype = payload[0] & 0x1F;\n this.lastNALType = naltype;\n\n if ((naltype == 7 || naltype == 8 || naltype == 6 || naltype == 5) && payload.length < 256) {\n var StartCode = [0, 0, 0, 1]; // this.frameData.set(StartCode, this.framePos);\n // this.framePos += 4;\n //this.waitKeyFrame = true;\n\n this.currentIsKeyFrame = true;\n\n if (naltype == 7) {\n if (!this._initVideoMetadata) {\n this._AVC_Config = _sps_parser_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].parseSPS(payload);\n var config = this._AVC_Config;\n var codecString = 'avc1.';\n\n if (config) {\n //console.log(\"config2: \" + config);\n var codecArray = payload.subarray(1, 4);\n\n for (var j = 0; j < 3; j++) {\n var h = codecArray[j].toString(16);\n\n if (h.length < 2) {\n h = '0' + h;\n }\n\n codecString += h;\n } //console.log(\"codecString: \" + codecString);\n\n }\n\n if (this._AVC_SPS == null) {\n this._AVC_SPS = new Uint8Array(payload.length + 4);\n\n this._AVC_SPS.set(StartCode, 0);\n\n this._AVC_SPS.set(payload, 4);\n }\n\n var meta = this._videoMetadata;\n var track = this._videoTrack; //let le = this._littleEndian;\n //let v = new DataView(arrayBuffer, dataOffset, dataSize);\n\n if (!meta) {\n if (this._hasVideo === false && this._hasVideoFlagOverrided === false) {\n this._hasVideo = true;\n this._mediaInfo.hasVideo = true;\n }\n\n meta = this._videoMetadata = {};\n meta.type = 'video';\n meta.id = track.id;\n meta.timescale = this._timescale;\n meta.duration = this._duration;\n } else {\n if (typeof meta.avcc !== 'undefined') {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Found another AVCDecoderConfigurationRecord!');\n }\n }\n\n meta.codecWidth = config.codec_size.width;\n meta.codecHeight = config.codec_size.height;\n meta.presentWidth = config.present_size.width;\n meta.presentHeight = config.present_size.height; //console.log(\"codecWidth: \" + meta.codecWidth + \" x \" + meta.codecHeight);\n\n if (this.getVideoInfoCallbackFunc && this.getVideoInfoCallbackFunc != undefined) {\n this.getVideoInfoCallbackFunc(this._callbackPlaybackTimeUserPtr, 'H264', meta.codecWidth, meta.codecHeight);\n }\n\n meta.profile = config.profile_string;\n meta.level = config.level_string;\n meta.bitDepth = config.bit_depth;\n meta.chromaFormat = config.chroma_format;\n meta.sarRatio = config.sar_ratio;\n meta.frameRate = config.frame_rate;\n\n if (config.frame_rate.fixed === false || config.frame_rate.fps_num === 0 || config.frame_rate.fps_den === 0) {\n meta.frameRate = this._referenceFrameRate;\n }\n\n if (meta.frameRate !== undefined) {\n var fps_den = meta.frameRate.fps_den;\n var fps_num = meta.frameRate.fps_num;\n meta.refSampleDuration = meta.timescale * (fps_den / fps_num);\n }\n /*\n let codecArray = sps.subarray(1, 4);\n let codecString = 'avc1.';\n for (let j = 0; j < 3; j++) {\n let h = codecArray[j].toString(16);\n if (h.length < 2) {\n h = '0' + h;\n }\n codecString += h;\n }\n */\n\n\n meta.codec = codecString;\n var mi = this._mediaInfo;\n mi.width = meta.codecWidth;\n mi.height = meta.codecHeight;\n\n if (meta.frameRate !== undefined) {\n mi.fps = meta.frameRate.fps;\n }\n\n mi.profile = meta.profile;\n mi.level = meta.level;\n mi.refFrames = config.ref_frames;\n mi.chromaFormat = config.chroma_format_string;\n mi.sarNum = meta.sarRatio.width;\n mi.sarDen = meta.sarRatio.height;\n mi.videoCodec = codecString; //mi.duration = 40;\n //mi.metadata = meta;\n //mi.hasKeyframesIndex = true;\n\n if (mi.hasAudio) {\n if (mi.audioCodec != null) {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.videoCodec + ',' + mi.audioCodec + '\"';\n }\n } else {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.videoCodec + '\"';\n }\n\n if (mi.isComplete()) {\n console.log('this._onMediaInfo video:', mi);\n\n this._onMediaInfo(mi);\n }\n }\n } else if (naltype == 8) {\n if (this._AVC_PPS == null) {\n this._AVC_PPS = new Uint8Array(payload.length + 4);\n\n this._AVC_PPS.set(StartCode, 0);\n\n this._AVC_PPS.set(payload, 4);\n }\n\n if (!this._initVideoMetadata) {\n var _meta = this._videoMetadata;\n\n if (_meta.avcc == null) {\n /*\n var version = v.getUint8(0); // configurationVersion\n var avcProfile = v.getUint8(1); // avcProfileIndication\n var profileCompatibility = v.getUint8(2); // profile_compatibility\n var avcLevel = v.getUint8(3); // AVCLevelIndication\n */\n var datOffset = 0;\n var dataSize = 5 + 1 + 2 + (this._AVC_SPS.length - 4) + 1 + 2 + (this._AVC_PPS.length - 4);\n _meta.avcc = new Uint8Array(dataSize + 1);\n _meta.avcc[0] = 1;\n _meta.avcc[1] = this._AVC_SPS[4 + 1];\n _meta.avcc[2] = this._AVC_SPS[4 + 2];\n _meta.avcc[3] = this._AVC_SPS[4 + 3];\n _meta.avcc[4] = 255; //this._AVC_SPS[4 + 4];\n\n _meta.avcc[5] = 225;\n datOffset = 6; //let sps = new Uint8Array();\n\n _meta.avcc[datOffset++] = this._AVC_SPS.length - 4 >> 8;\n _meta.avcc[datOffset++] = this._AVC_SPS.length - 4 & 0xFF;\n\n var datSps = this._AVC_SPS.subarray(4, this._AVC_SPS.length);\n\n _meta.avcc.set(datSps, datOffset);\n\n datOffset += datSps.length;\n _meta.avcc[datOffset++] = 1; //pps����\n\n _meta.avcc[datOffset++] = this._AVC_PPS.length - 4 >> 8;\n _meta.avcc[datOffset++] = this._AVC_PPS.length - 4 & 0xFF;\n\n var datPps = this._AVC_PPS.subarray(4, this._AVC_PPS.length);\n\n _meta.avcc.set(datPps, datOffset);\n\n datOffset += datPps.length;\n _meta.avcc[dataSize] = 1;\n } //console.log(\"meta.avcc: \" + meta.avcc);\n\n\n this._onTrackMetadata('video', _meta);\n\n this._initVideoMetadata = true;\n }\n }\n } else {//this.currentIsKeyFrame = false;\n }\n };\n\n _proto.procH265Packet = function procH265Packet(srcBuf, srcLen, rtpMarkerBit) {\n //unsigned char *dstbuf, unsigned int *bKeyFrame, unsigned int *bNaluEnd\n var StartCode = [0, 0, 0, 1]; //console.log(\"rtp data: \" + srcBuf);\n\n var offset = 0;\n var isKeyFrame = false;\n var fu_header0 = srcBuf[0];\n var nalu_type = fu_header0 >> 1 & 0x3F;\n var result = {\n length: 0,\n keyframe: isKeyFrame,\n endBit: 0\n };\n\n if (nalu_type == 49) {\n var fu_header2 = srcBuf[2];\n var start_flag = fu_header2 & 0x80;\n var end_flag = fu_header2 & 0x40;\n nalu_type = fu_header2 & 0x3F;\n var nalu_header0 = nalu_type << 1;\n var nalu_header1 = 0x01; //console.log(\"nalu_header0:\" + nalu_header0 + \" nalu_header1:\" + nalu_header1);\n //�ж�֡����\n\n if (nalu_type == 16 || nalu_type == 17 || nalu_type == 18 || nalu_type == 19 || nalu_type == 20 || nalu_type == 21 || nalu_type == 39) {\n //2022.01.10 ����39, ¼��طŲ�����, ǰ���16-21ΪʵʱԤ������\n result.keyframe = true;\n }\n\n var _offset = 3;\n\n if (start_flag != 0) {\n this.framePos = 0;\n this.frameData.set(StartCode, this.framePos);\n this.framePos += 4; //console.log(\"reset framePos:\", this.framePos);\n //this.frameData.set(nalu_header0, this.framePos);\n //this.framePos += 1;\n //this.frameData.set(nalu_header1, this.framePos);\n //this.framePos += 1;\n\n srcBuf[1] = nalu_header0;\n srcBuf[2] = nalu_header1;\n _offset = 1;\n }\n\n if (end_flag != 0) {\n result.endBit = 1;\n }\n\n if (start_flag != 0 && end_flag != 0) {\n console.log('Small frame.');\n } //console.log(\"framePos+:\", this.framePos);\n\n\n var p = srcBuf.subarray(_offset);\n this.frameData.set(p, this.framePos);\n this.framePos += p.length;\n result.length = this.framePos; //console.log(\"framePos++: \", this.framePos);\n\n if (this.frameData[4] == 0x26) {\n result.keyframe = true; //console.log(\"keyframe.\");\n }\n } else if (nalu_type == 48) {\n console.log('nal_type==48....');\n } else if (nalu_type == 1 || nalu_type == 19 || nalu_type == 32 || nalu_type == 33 || nalu_type == 34 || nalu_type == 39) {\n /*\n value type\n 32 VPS\n 33 SPS\n 34 PPS\n 39 SEI\n 19 IDR ֡\n 1 ��IDR֡\n */\n var proc = false;\n\n if (nalu_type == 32) {\n if (this._AVC_VPS == null) this._AVC_VPS = new Uint8Array(srcBuf.length + 4);\n\n this._AVC_VPS.set(StartCode, 0);\n\n this._AVC_VPS.set(srcBuf, 4);\n\n proc = true; //console.log(\"VPS: \", srcBuf);\n } else if (nalu_type == 33) {\n if (this._AVC_SPS == null) this._AVC_SPS = new Uint8Array(srcBuf.length + 4);\n\n this._AVC_SPS.set(StartCode, 0);\n\n this._AVC_SPS.set(srcBuf, 4);\n\n proc = true; //console.log(\"SPS: \", srcBuf);\n } else if (nalu_type == 34) {\n if (this._AVC_PPS == null) this._AVC_PPS = new Uint8Array(srcBuf.length + 4);\n\n this._AVC_PPS.set(StartCode, 0);\n\n this._AVC_PPS.set(srcBuf, 4);\n\n proc = true; //console.log(\"PPS: \", srcBuf);\n } else if (nalu_type == 39) {//SEI\n } else if (nalu_type == 1) {\n //===================\n //(1)һ��NALU�����һ��RTP����ֻ��Ҫ��һ��12�ֽڵ�RTP��ͷ�����ȥ����ʼ���NALU����\n //������ģʽ��һ��NALU�Ĵ�СС��MTUʱʹ�ã������NALU������1��32��33��34��39��RTP����ֻ��Ҫ�ڲ����ʱ��ȥ��RTPͷ��Ȼ����������ʼ�뼴��\n var _offset2 = 0;\n this.framePos = 0;\n this.frameData.set(StartCode, this.framePos);\n this.framePos += 4;\n\n var _p3 = srcBuf.subarray(_offset2);\n\n this.frameData.set(_p3, this.framePos);\n this.framePos += _p3.length;\n result.length = this.framePos; //if (rtpMarkerBit == 1)\n\n result.endBit = 1; //===================\n } else {//console.log(\"Unknown nal_type:\" + nalu_type + \" length:\" + srcBuf.length);\n }\n\n if (proc) {\n result.length = 4 + srcBuf.length;\n result.keyframe = true;\n }\n }\n\n return result;\n };\n\n _proto.uint8arrayToBase64 = function uint8arrayToBase64(u8Arr) {\n var CHUNK_SIZE = 0x8000; //arbitrary number\n\n var index = 0;\n var length = u8Arr.length;\n var result = '';\n var slice;\n\n while (index < length) {\n slice = u8Arr.subarray(index, Math.min(index + CHUNK_SIZE, length));\n result += String.fromCharCode.apply(null, slice);\n index += CHUNK_SIZE;\n } // web image base64ͼƬ��ʽ: \"data:image/png;base64,\" + b64encoded;\n // return \"data:image/png;base64,\" + btoa(result);\n\n\n return btoa(result);\n } //����Video RTP��\n ;\n\n _proto.parseVideoRTPPacket = function parseVideoRTPPacket(rtpData) {\n var rtpPacketSize = rtpData.length;\n var offset = 0;\n var rtpHdr = ReadBig32(rtpData, offset) >>> 0;\n var rtpMarkerBit = (rtpHdr & 0x00800000) >> 23;\n offset += 4;\n var rtpTimestamp = ReadBig32(rtpData, offset) >>> 0;\n offset += 4;\n var rtpSSRC = ReadBig32(rtpData, offset) >>> 0;\n offset += 4; //if ((rtpHdr & 0xC0000000) != 0x80000000) return;\n\n var cc = rtpHdr >> 24 & 0xF;\n if (rtpData.length < cc) return;\n\n if (rtpHdr & 0x10000000) {\n if (rtpData.length < 4) return;\n var extHdr = ReadBig32(rtpData, offset) >>> 0;\n offset += 4;\n var extSize = 4 * (extHdr & 0xFFFF);\n if (rtpData.length < extSize) return;\n offset += extSize;\n }\n\n if (rtpHdr & 0x20000000) {\n if (rtpData.length < 1) return;\n var numPaddingBytes = rtpData[rtpData.length - 1];\n if (rtpData.length < numPaddingBytes) return;\n rtpPacketSize -= numPaddingBytes;\n }\n\n var payloadType = (rtpHdr & 0x007F0000) >> 16;\n var rtpSeqNo = rtpHdr & 0xFFFF;\n var t1 = rtpTimestamp >> 24 & 0xFF;\n var t2 = rtpTimestamp >> 16 & 0xFF;\n var t3 = rtpTimestamp >> 8 & 0xFF;\n var t4 = rtpTimestamp & 0xFF; //rtpTimestamp = ((t4 << 24) | (t3 << 16) | (t2 << 8) | t1) >>> 0;\n //console.log(t1 + \" \" + t2 + \" \" + t3 + \" \" + t4);\n //if (rtpMarkerBit) {\n //console.log(\"rtp size: \" + rtpData.length + \" rtpSeqNo:\" + rtpSeqNo + \" markerBit[\" + rtpMarkerBit + \"] timestamp[\" + rtpTimestamp + \"] SSRC[\" + rtpSSRC + \"]\");\n //}\n //return;\n //if (this.lastTimestamp != rtpTimestamp) {\n //}\n //this.lastTimestamp = rtpTimestamp;\n //let rtpHdr = Swap32();\n\n var payload = rtpData.subarray(offset, rtpPacketSize);\n var p = null; //H264\n\n if (this.videoCodecId == 7) {\n this.procH264NALHeader(payload);\n p = this.procH264Packet(payload, payload.length);\n } //H265\n else if (this.videoCodecId == 12) {\n //console.log(\"H265... procH265NALHeader...\");\n p = this.procH265Packet(payload, payload.length, rtpMarkerBit);\n } else {\n console.log('Unknown codecId: ' + this.videoCodecId);\n }\n\n if (p == null) return;\n\n if (p) {//console.log(\"payload.length:\" + payload.length + \" --> p.length:\" + p.length);\n //this.frameData.set(payload, this.framePos);\n //this.framePos += (payload.length);\n } //if (rtpData.length < 128) {\n //console.log(\"rtp data: \" + payload);\n //}\n //if (this._videoTrack.samples.length > 0) {\n // console.log(\"frame 1:\" + this._videoTrack.samples[0].units[2].data);\n //}\n //������֡\n\n\n if (rtpMarkerBit == 1 || p.endBit == 1) {\n //console.log(\"frame data: \" + this.frameData);\n var tmpUnits = [];\n var tmpLength = 0;\n var frameLength = 0; //����֡�� Ӳ��ʱΪ264Ϊ3��unit, �ֱ���sps, pps, idr, ǰ4�ֽھ�Ϊ����, �ִ���Ϊ��Ӳ��֮ǰȥ��sei\n\n var unitType = 1;\n var keyFrame = false; //this.currentIsKeyFrame;\n\n keyFrame = p.keyframe;\n var bAddStart = true;\n\n if (this.videoCodecId == 7) {\n //H264\n if (this._config.decodeType === 'auto' || this._config.decodeType === 'hard') {\n bAddStart = false;\n }\n } else if (this.videoCodecId == 12) {\n keyFrame = p.keyframe;\n }\n\n if (keyFrame) {\n //if (this.waitKeyFrame) {\n this.findKeyframe = false;\n this.fullFramePos = 0; //H265\n\n if (this.videoCodecId == 12) {\n if (this._AVC_VPS) {\n var tmpVpsDat = new Uint8Array(this._AVC_VPS.length);\n\n if (bAddStart) {\n //���\n tmpVpsDat.set(this._AVC_VPS, 0);\n }\n /*\n else { //Ӳ��\n let tmpSpsLen = this._AVC_SPS.length - 4;\n tmpSpsDat.set(this._AVC_SPS, 0);\n tmpSpsDat[0] = (tmpSpsLen >> 24) & 0xFF;\n tmpSpsDat[1] = (tmpSpsLen >> 16) & 0xFF;\n tmpSpsDat[2] = (tmpSpsLen >> 8) & 0xFF;\n tmpSpsDat[3] = tmpSpsLen & 0xFF;\n }\n */\n\n\n var tmpVpsUnit = {\n type: 7,\n data: tmpVpsDat\n };\n tmpUnits.push(tmpVpsUnit);\n tmpLength += tmpVpsDat.length;\n frameLength = tmpLength; //���ڿ���\n\n if (this.snapshotCount > 0 && this.fullFrameData && this.fullFrameData != undefined) {\n this.fullFrameData.set(this._AVC_VPS, 0);\n this.fullFramePos = this._AVC_VPS.length;\n }\n\n if (this._DebugBuf) {\n this._DebugBuf.set(tmpVpsDat, this._DebugBufPos);\n\n this._DebugBufPos += tmpVpsDat.length;\n }\n } else {\n console.log('Not found VPS.');\n }\n }\n\n if (this._AVC_SPS) {\n var tmpSpsDat = new Uint8Array(this._AVC_SPS.length);\n\n if (bAddStart) {\n //���\n tmpSpsDat.set(this._AVC_SPS, 0);\n } else {\n //Ӳ��\n var tmpSpsLen = this._AVC_SPS.length - 4;\n tmpSpsDat.set(this._AVC_SPS, 0);\n tmpSpsDat[0] = tmpSpsLen >> 24 & 0xFF;\n tmpSpsDat[1] = tmpSpsLen >> 16 & 0xFF;\n tmpSpsDat[2] = tmpSpsLen >> 8 & 0xFF;\n tmpSpsDat[3] = tmpSpsLen & 0xFF;\n } //���ڿ���\n\n\n if (this.snapshotCount > 0 && this.fullFrameData && this.fullFrameData != undefined) {\n this.fullFrameData.set(this._AVC_SPS, this.fullFramePos);\n this.fullFramePos += this._AVC_SPS.length;\n }\n\n var tmpSpsUnit = {\n type: 7,\n data: tmpSpsDat\n };\n tmpUnits.push(tmpSpsUnit);\n tmpLength += tmpSpsDat.length;\n frameLength += tmpSpsDat.length; //console.log(\"SPS:\" + tmpSpsDat);\n\n if (this._DebugBuf) {\n this._DebugBuf.set(tmpSpsDat, this._DebugBufPos);\n\n this._DebugBufPos += tmpSpsDat.length;\n }\n\n if (this._AVC_PPS) {\n var tmpPpsDat = new Uint8Array(this._AVC_PPS.length);\n\n if (bAddStart) {\n //���\n tmpPpsDat.set(this._AVC_PPS, 0);\n } else {\n //Ӳ��\n var tmpPpsLen = this._AVC_PPS.length - 4;\n tmpPpsDat.set(this._AVC_PPS, 0);\n tmpPpsDat[0] = tmpPpsLen >> 24 & 0xFF;\n tmpPpsDat[1] = tmpPpsLen >> 16 & 0xFF;\n tmpPpsDat[2] = tmpPpsLen >> 8 & 0xFF;\n tmpPpsDat[3] = tmpPpsLen & 0xFF;\n } //���ڿ���\n\n\n if (this.snapshotCount > 0 && this.fullFrameData && this.fullFrameData != undefined) {\n this.fullFrameData.set(this._AVC_PPS, this.fullFramePos);\n this.fullFramePos += this._AVC_PPS.length;\n }\n\n var tmpPpsUnit = {\n type: 8,\n data: tmpPpsDat\n };\n tmpUnits.push(tmpPpsUnit);\n tmpLength += tmpPpsDat.length;\n frameLength += tmpPpsDat.length; //console.log(\"PPS:\" + tmpPpsDat);\n\n if (this._DebugBuf) {\n this._DebugBuf.set(tmpPpsDat, this._DebugBufPos);\n\n this._DebugBufPos += tmpPpsDat.length;\n }\n } else {\n console.log('Not found PPS.');\n }\n } else {\n console.log('Not found SPS.');\n }\n\n if (this.frameData[tmpLength + 4] == 0x06) {\n for (var i = 0; i < tmpLength + 32; i++) {\n if (this.frameData[i + tmpLength + 4] == 0x00 && this.frameData[i + tmpLength + 4 + 1] == 0x00 && this.frameData[i + tmpLength + 4 + 2] == 0x00 && this.frameData[i + tmpLength + 4 + 3] == 0x01) {\n tmpLength = tmpLength + i + 4;\n break;\n }\n\n if (this.frameData[i + tmpLength + 4] == 0x00 && this.frameData[i + tmpLength + 4 + 1] == 0x00 && this.frameData[i + tmpLength + 4 + 2] == 0x01) {\n tmpLength = tmpLength + i + 3;\n break;\n }\n }\n }\n\n unitType = 5;\n this._videoInitialMetadataDispatched = true;\n }\n\n if (this.videoCodecId == 12) tmpLength = 0;\n\n if (p.endBit == 0) {\n return;\n } //let frame = this.frameData.subarray(tmpLength, this.framePos);\n\n\n var tmpF = this.frameData.subarray(tmpLength, this.framePos); //console.log(\"tmpF:\" + tmpF);\n //if (keyFrame) {\n // console.log(\"KeyFrame:\" + this.frameData);\n //}\n\n var frame = new Uint8Array(tmpF); //this.framePos-tmpLength+4);// this.frameData.subarray(tmpLength, this.framePos);\n //frame.set(this.frameData.subarray(tmpLength, this.framePos), 0);\n //this.frameData, tmpLength, this.framePos\n //==================================================\n //���ڿ���\n\n if (keyFrame && this.snapshotCount > 0 && this.fullFrameData && this.fullFrameData != undefined && this.fullFramePos > 0 && window.vssModuleInitialized) {\n this.snapshotCount--; //console.log(\"this.framePos:\", this.framePos);\n //console.log(\"tmpF.length:\", tmpF.length);\n\n this.fullFrameData.set(frame, this.fullFramePos);\n this.fullFramePos += frame.length; //console.log(\"fullFramePos:\" + this.fullFramePos+\" framedata:\", this.fullFrameData);\n\n var mModule = window.vssPlayerModule;\n var wasmKits = window.VssPlayerWasmKits;\n\n if (mModule && mModule != undefined && wasmKits && wasmKits != undefined) {\n var typedArray = new Uint8Array(this.fullFrameData);\n\n if (typedArray.length > 0) {\n var _offset3 = mModule._malloc(typedArray.length);\n\n mModule.HEAP8.set(typedArray, _offset3); //console.log(\"offset:\", offset);\n\n var n = wasmKits.convertFrame2Image(0, _offset3, this.fullFramePos, wasmKits.yuvData, 0);\n\n if (n < 1) {\n console.log('Convert fail.');\n } else {\n var outImageData = mModule.HEAPU8.subarray(wasmKits.yuvData, wasmKits.yuvData + n); //console.log(\"imagedata:\", outImageData);\n //const b64encoded = btoa(String.fromCharCode.apply(null, typedArray));\n\n var b64encoded = this.uint8arrayToBase64(outImageData);\n /*\n const image = document.createElement('img');\n image.src = 'data:image/jpeg;base64,' + b64encoded;\n image.style = \"width:500px;height: 250px\";\n document.querySelector(\"body\").append(image);\n */\n //��������\n\n var downloadFileA = document.createElement('a');\n document.body.append(downloadFileA);\n downloadFileA.href = 'data:image/jpeg;base64,' + b64encoded;\n downloadFileA.download = 'snapshot.jpg';\n downloadFileA.rel = 'noopener noreferrer';\n downloadFileA.click();\n document.body.removeChild(downloadFileA);\n }\n\n mModule._free(_offset3);\n }\n }\n\n this.fullFramePos = 0;\n } //==================================================\n\n\n frameLength += frame.length;\n\n if (unitType == 5) {//console.log(\"frame[\" + frame.length + \"] data:\" + frame);\n }\n\n if (bAddStart) {//���\n } else {\n //Ӳ��\n\n /*\n frame[0] = ((this.framePos - tmpLength - 4) >> 24) & 0xFF;\n frame[1] = ((this.framePos - tmpLength - 4) >> 16) & 0xFF;\n frame[2] = ((this.framePos - tmpLength - 4) >> 8) & 0xFF;\n frame[3] = ((this.framePos - tmpLength - 4)) & 0xFF;\n */\n var len = frame.length - 4;\n frame[0] = len >> 24 & 0xFF;\n frame[1] = len >> 16 & 0xFF;\n frame[2] = len >> 8 & 0xFF;\n frame[3] = len & 0xFF; //console.log(\"frame: \" + frame);\n //if (unitType == 5) {\n //console.log(frame[0] + \" \" + frame[1] + \" \" + frame[2] + \" \" + frame[3]);\n //console.log(\"frame[\" + frame.length + \"] data:\" + frame);\n //}\n }\n\n if (unitType == 1) {//console.log(\"P frame: \" + frame);\n } //����Ϊ���Դ���\n\n\n if (this._DebugBuf) {\n if (this._DebugBufPos + frame.length < 1024 * 1024 && (this._DebugBufPos > 0 || unitType == 5 || p.keyframe == true)) {\n this._DebugBuf.set(frame, this._DebugBufPos);\n\n this._DebugBufPos += frame.length;\n } //else\n\n\n {\n if (this._DebugBufPos > 0) {\n var _p4 = this._DebugBuf.subarray(0, this._DebugBufPos);\n\n console.log('DebugBuf: ' + _p4);\n }\n\n this._DebugBufPos = 0;\n }\n }\n\n var tmpFrame = {\n type: unitType,\n data: frame\n };\n tmpUnits.push(tmpFrame);\n tmpLength += frame.length;\n\n if (!this.findKeyframe) {//if (unitType == 5) {\n //console.log(frame[0] + \" \" + frame[1] + \" \" + frame[2] + \" \" + frame[3]);\n //console.log(\"frame[\" + frame.length + \"] data:\" + tmpFrame.data);\n } //if (this.syncVideoPts > 0) {\n //this.startVideoPts = rtpTimestamp - this.syncVideoPts;\n //this.startVideoPts += 40;\n //console.log(\"video pts: \" + this.startVideoPts);\n //}\n //let pts = 0;//this.startVideoPts;\n //if (this.syncVideoPts == 0) {\n // this.syncVideoPts = rtpTimestamp;\n //}\n //else {\n // //pts = (rtpTimestamp - this.syncVideoPts) / 90;\n // pts = (rtpTimestamp - this.syncVideoPts) / 90;\n // //this.syncVideoPts = rtpTimestamp;\n // //console.log(\"PTS: \" + pts);\n //}\n\n\n var pts = this.startVideoPts;\n this.startVideoPts += this.ptsInterval;\n if (this.startVideoPts >= 0x7FFFFFFF) this.startVideoPts = 0; //console.log(\"startVideoPts:\" + this.startVideoPts);\n //console.log(\"VIdeo PTS:\", pts);\n\n var track = this._videoTrack;\n var avcSample = {\n units: tmpUnits,\n length: frameLength,\n //tmpLength,//pes.len,//length,\n isKeyframe: keyFrame,\n //this.waitKeyFrame,\n dts: pts,\n //-40,// / 90,// - this.lastVideoPts + this.accurateTimeOffset,\n cts: 0,\n //40,//pes.pts,\n pts: pts,\n // / 90)// - this.lastVideoPts + this.accurateTimeOffset)\n fileposition: this._fileposition\n };\n\n if (keyFrame) {\n this._fileposition = 0;\n avcSample.fileposition = 0; //this.tagPosition;\n }\n\n this._fileposition += frameLength; //if (keyFrame) {\n // var v = 0;\n // for (var k = 0; k < 32; k++) {\n // var n = frame[k];\n // v += \" \" + n.toString(16);\n // }\n // console.log(\"frameLength: \" + tmpLength + \" dts:\" + avcSample.dts + \" data:\" + v);\n // //console.log(frame[0] + \" \" + frame[1] + \" \" + frame[2] + \" \" + frame[3] + \" \" + frame[4] + \" \" + frame[5] + \" \" + frame[6] + \" \" + frame[7] +\n // // \" \" + frame[8] + \" \" + frame[9] + \" \" + frame[10] + \" \" + frame[11] + \" \" + frame[12] + \" \" + frame[13] + \" \" + frame[14] + \" \" + frame[15]);\n // //console.log(\"tmpLength: \" + tmpLength + \" tagPosition: \" + this.tagPosition + \" pts[\" + avcSample.pts + \"] dts[\" + avcSample.dts + \"]\");\n //}\n //console.log(\"video pts: \" + pts);\n //let idx = 0;\n //for (idx = 0; idx < this._videoTrack.samples.length; idx++) {\n // let p = this._videoTrack.samples[idx];\n // for (let k = 0; k < p.units.length; k++) {\n // //console.log(\"rtsp-demuxer.js:: \" + (idx + 1) + \"/\" + this._videoTrack.samples.length + \" sample.length[\" + this._videoTrack.samples[idx].length + \"]: \" + this._videoTrack.samples[idx].data);\n // //console.log(\"rtsp-demuxer.js:: \" + (k + 1) + \"/\" + p.units.length + \" sample.length[\" + p.units[k].data.length + \"]: \");// + p.units[k].data);\n // }\n //}\n //�ص����ϲ�, �л�����\n\n if (!this._callbackInitFlag && this._callbackMediaDataFunc) {\n this._callbackInitFlag = true;\n\n if (this.videoCodecId == 12) {\n //HEVC\n this._callbackMediaDataFunc(this._callbackMediaDataUserPtr, true, 1, 0, 0, null, 0, 0, 0, 0);\n } else {\n if (this._config.decodeType === 'auto' || this._config.decodeType === 'hard') {\n this._callbackMediaDataFunc(this._callbackMediaDataUserPtr, false, 1, 0, 0, null, 0, 0, 0, 0);\n } else {\n this._callbackMediaDataFunc(this._callbackMediaDataUserPtr, true, 1, 0, 0, null, 0, 0, 0, 0);\n }\n }\n }\n\n if (this.videoCodecId == 7 || this.videoCodecId == 0) {\n //H264\n //if (keyFrame && this.reset === 0) {\n //if (this.waitKeyFrame && this.reset === 0) {\n if (this._config.decodeType === 'auto' || this._config.decodeType === 'hard') {\n //����codecIdΪ0, ��ʾ��ʱ������, ���ص����ϲ���������ʾ\n //this._onDataAvailableToSoftwareDecodeVideo(0, this._videoTrack);\n //��mp4-remuxer.js����\n //if (this._videoTrack.length > 0 && this._videoTrack.samples.length > 3 && keyFrame) {\n if (this._videoTrack.length > 0 && (this._videoTrack.samples.length >= 1 && !this.findKeyframe || keyFrame)) {\n //console.log(\"proc video frame num: \" + this._videoTrack.samples.length);\n this._onDataAvailable(this._audioTrack, this._videoTrack);\n }\n } else {\n //console.log(\"H264: Software Decode...\");\n if (this._videoTrack.samples.length > 0) {\n this._onDataAvailableToSoftwareDecodeVideo(27, this._videoTrack);\n }\n\n if (this._audioTrack.samples.length > 0) {\n this._onDataAvailableToSoftwareDecodeAudio(86018, this._audioTrack);\n }\n }\n } else if (this.videoCodecId == 12) {\n //H265\n //console.log(\"H265: Software Decode...\");\n if (this._videoTrack.samples.length > 0) {\n this._onDataAvailableToSoftwareDecodeVideo(173, this._videoTrack);\n }\n\n if (this._audioTrack.samples.length > 0) {\n this._onDataAvailableToSoftwareDecodeAudio(this.audioCodecId == 10 ? 86018 : 0, this._audioTrack);\n }\n } //console.log(\"pushAccessUnit....\");\n //}\n\n\n if (this.reset === 0 && !this.findKeyframe) {\n track.samples.push(avcSample);\n track.length += tmpLength; //pes.len;//length;\n //console.log(\"length:\" + track.samples.length);\n }\n\n {//let frame = this.frameData.subarray(0, this.framePos);\n //console.log(\"Frame data size:\" + frame.length + \" data:\" + frame);\n } //if (this.framePos > 1024 * 5) {\n //let frame = this.frameData.subarray(0, this.framePos);\n //console.log(\"Frame data:\" + frame);\n //}\n //else {\n //console.log(\"-------------------------------------------\");\n //}\n //console.log(\"reset framepos=0\");\n\n this.framePos = 0;\n\n if (tmpUnits.length > 1) {\n this.currentIsKeyFrame = false;\n } //this.waitKeyFrame = false;\n //if (this._videoTrack.samples.length > 0) {\n // console.log(\"frame 2:\" + this._videoTrack.samples[0].units[2].data);\n //}\n\n }\n };\n\n _proto._parseAACAudioSpecificConfig = function _parseAACAudioSpecificConfig(payload) {\n var array = payload; //new Uint8Array(payload, dataOffset, dataSize);\n\n var config = null;\n /* Audio Object Type:\n 0: Null\n 1: AAC Main\n 2: AAC LC\n 3: AAC SSR (Scalable Sample Rate)\n 4: AAC LTP (Long Term Prediction)\n 5: HE-AAC / SBR (Spectral Band Replication)\n 6: AAC Scalable\n */\n\n var audioObjectType = 0;\n var originalAudioObjectType = 0;\n var audioExtensionObjectType = null;\n var samplingIndex = 0;\n var extensionSamplingIndex = null; // 5 bits\n\n audioObjectType = originalAudioObjectType = 2; //array[0] >>> 3;\n // 4 bits\n\n samplingIndex = 5; //((array[0] & 0x07) << 1) | (array[1] >>> 7);\n\n if (samplingIndex < 0 || samplingIndex >= this._mpegSamplingRates.length) {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].FORMAT_ERROR, 'Flv: AAC invalid sampling frequency index!');\n\n return;\n }\n\n var samplingFrequence = 32000; //this._mpegSamplingRates[samplingIndex];\n // 4 bits\n\n var channelConfig = 2; //(array[1] & 0x78) >>> 3;\n\n if (channelConfig < 0 || channelConfig >= 8) {\n this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].FORMAT_ERROR, 'Flv: AAC invalid channel configuration');\n\n return;\n }\n\n if (audioObjectType === 5) {\n // HE-AAC?\n // 4 bits\n extensionSamplingIndex = (array[1] & 0x07) << 1 | array[2] >>> 7; // 5 bits\n\n audioExtensionObjectType = (array[2] & 0x7C) >>> 2;\n } // workarounds for various browsers\n\n\n var userAgent = self.navigator.userAgent.toLowerCase();\n\n if (userAgent.indexOf('firefox') !== -1) {\n // firefox: use SBR (HE-AAC) if freq less than 24kHz\n if (samplingIndex >= 6) {\n audioObjectType = 5;\n config = new Array(4);\n extensionSamplingIndex = samplingIndex - 3;\n } else {\n // use LC-AAC\n audioObjectType = 2;\n config = new Array(2);\n extensionSamplingIndex = samplingIndex;\n }\n } else if (userAgent.indexOf('android') !== -1) {\n // android: always use LC-AAC\n audioObjectType = 2;\n config = new Array(2);\n extensionSamplingIndex = samplingIndex;\n } else {\n // for other browsers, e.g. chrome...\n // Always use HE-AAC to make it easier to switch aac codec profile\n audioObjectType = 5;\n extensionSamplingIndex = samplingIndex;\n config = new Array(4);\n\n if (samplingIndex >= 6) {\n extensionSamplingIndex = samplingIndex - 3;\n } else if (channelConfig === 1) {\n // Mono channel\n audioObjectType = 2;\n config = new Array(2);\n extensionSamplingIndex = samplingIndex;\n }\n }\n\n config[0] = audioObjectType << 3;\n config[0] |= (samplingIndex & 0x0F) >>> 1;\n config[1] = (samplingIndex & 0x0F) << 7;\n config[1] |= (channelConfig & 0x0F) << 3;\n\n if (audioObjectType === 5) {\n config[1] |= (extensionSamplingIndex & 0x0F) >>> 1;\n config[2] = (extensionSamplingIndex & 0x01) << 7; // extended audio object type: force to 2 (LC-AAC)\n\n config[2] |= 2 << 2;\n config[3] = 0;\n }\n\n return {\n config: config,\n samplingRate: samplingFrequence,\n channelCount: channelConfig,\n codec: 'mp4a.40.' + audioObjectType,\n originalCodec: 'mp4a.40.' + originalAudioObjectType\n };\n };\n\n _proto.procAACHeader = function procAACHeader(payload, dataOffset, dataSize) {\n var result = {};\n if (this._initAudioMetadata) return;\n var meta = this._audioMetadata;\n var track = this._audioTrack;\n\n if (!meta) {\n if (this._hasAudio === false && this._hasAudioFlagOverrided === false) {\n this._hasAudio = true;\n this._mediaInfo.hasAudio = true;\n } // initial metadata\n\n\n meta = this._audioMetadata = {};\n meta.type = 'audio';\n meta.id = track.id;\n meta.timescale = this._timescale > 0 ? this._timescale : 1000;\n meta.duration = this._duration > 0 ? this._duration : 32; //128;\n\n meta.audioSampleRate = 32000; //8000;//soundRate;\n\n meta.channelCount = 2; //1;//(soundType === 0 ? 1 : 2);\n } //let aacData = this._parseAACAudioData(arrayBuffer, dataOffset + 1, dataSize - 1);\n\n\n result.data = this._parseAACAudioSpecificConfig(payload, dataOffset + 1, dataSize - 1);\n\n if (!this._initAudioMetadata && this._initVideoMetadata) {\n //let array = new Uint8Array(arrayBuffer, dataOffset, dataSize);\n if (result.data == undefined) {\n return 0;\n }\n\n var misc = result.data;\n meta.audioSampleRate = misc.samplingRate;\n meta.channelCount = misc.channelCount;\n meta.codec = misc.codec;\n meta.originalCodec = misc.originalCodec;\n meta.config = misc.config; // The decode result of an aac sample is 1024 PCM samples\n\n meta.refSampleDuration = 1024 / meta.audioSampleRate * meta.timescale;\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].v(this.TAG, 'Parsed AudioSpecificConfig'); //console.log(\"AAC: \" + misc.samplingRate + \" \" + misc.channelCount + \" \" + misc.codec + \" \" + misc.conf);\n\n this._SampleRate = misc.samplingRate;\n this._ChannelNum = misc.channelCount;\n this._duration = 0; //meta.refSampleDuration; //2021.12.14\n\n console.log('Audio samplerate:' + misc.samplingRate + ' channel:' + misc.channelCount);\n\n if (this._isInitialMetadataDispatched()) {\n // Non-initial metadata, force dispatch (or flush) parsed frames to remuxer\n if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {\n this._onDataAvailable(this._audioTrack, this._videoTrack);\n }\n } else {\n this._audioInitialMetadataDispatched = true;\n } // then notify new metadata\n\n\n this._dispatch = false;\n\n this._onTrackMetadata('audio', meta);\n\n var mi = this._mediaInfo;\n mi.audioCodec = meta.originalCodec;\n mi.audioSampleRate = meta.audioSampleRate;\n mi.audioChannelCount = meta.channelCount;\n\n if (mi.hasVideo) {\n if (mi.videoCodec != null) {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.videoCodec + ',' + mi.audioCodec + '\"';\n }\n } else {\n mi.mimeType = 'video/x-flv; codecs=\"' + mi.audioCodec + '\"';\n }\n\n if (mi.isComplete()) {\n console.log('this._onMediaInfo audio:', mi);\n\n this._onMediaInfo(mi);\n\n this._initAudioMetadata = true;\n }\n\n this._initAudioMetadata = true;\n }\n } //����Audio RTP��\n ;\n\n _proto.parseAudioRTPPacket = function parseAudioRTPPacket(rtpData) {\n var rtpPacketSize = rtpData.length;\n var offset = 0;\n var rtpHdr = ReadBig32(rtpData, offset) >>> 0;\n var rtpMarkerBit = (rtpHdr & 0x00800000) >> 23;\n offset += 4;\n var rtpTimestamp = ReadBig32(rtpData, offset) >>> 0;\n offset += 4;\n var rtpSSRC = ReadBig32(rtpData, offset) >>> 0;\n offset += 4; //if ((rtpHdr & 0xC0000000) != 0x80000000) return;\n\n var cc = rtpHdr >> 24 & 0xF;\n if (rtpData.length < cc) return;\n\n if (rtpHdr & 0x10000000) {\n if (rtpData.length < 4) return;\n var extHdr = ReadBig32(rtpData, offset) >>> 0;\n offset += 4;\n var extSize = 4 * (extHdr & 0xFFFF);\n if (rtpData.length < extSize) return;\n offset += extSize;\n }\n\n if (rtpHdr & 0x20000000) {\n if (rtpData.length < 1) return;\n var numPaddingBytes = rtpData[rtpData.length - 1];\n if (rtpData.length < numPaddingBytes) return;\n rtpPacketSize -= numPaddingBytes;\n }\n\n var payloadType = (rtpHdr & 0x007F0000) >> 16;\n var rtpSeqNo = rtpHdr & 0xFFFF;\n var t1 = rtpTimestamp >> 24 & 0xFF;\n var t2 = rtpTimestamp >> 16 & 0xFF;\n var t3 = rtpTimestamp >> 8 & 0xFF;\n var t4 = rtpTimestamp & 0xFF; //rtpTimestamp = ((t4 << 24) | (t3 << 16) | (t2 << 8) | t1) >>> 0;\n //console.log(t1 + \" \" + t2 + \" \" + t3 + \" \" + t4);\n //if (rtpMarkerBit) {\n //console.log(\"rtp size: \" + rtpData.length + \" rtpSeqNo:\" + rtpSeqNo + \" markerBit[\" + rtpMarkerBit + \"] timestamp[\" + rtpTimestamp + \"] SSRC[\" + rtpSSRC + \"]\");\n //}\n\n return; //if (this.lastTimestamp != rtpTimestamp) {\n //}\n //this.lastTimestamp = rtpTimestamp;\n //let rtpHdr = Swap32();\n //return;\n\n var payload = rtpData.subarray(offset, rtpPacketSize); //console.log(\"this.audioCodecId: \" + this.audioCodecId);\n //return;\n\n var p = null; //AAC\n\n if (this.audioCodecId == 10) {\n this.procAACHeader(payload + 4, 1, rtpPacketSize - 1); //p = this.procH264Packet(payload, payload.length);\n } else {\n console.log('Unknown audio codecId: ' + this.audioCodecId);\n } //if (p == null) return;\n //if (p) {\n //console.log(\"payload.length:\" + payload.length + \" --> p.length:\" + p.length);\n //this.frameData.set(payload, this.framePos);\n //this.framePos += (payload.length);\n //}\n //if (rtpData.length < 128) {\n //console.log(\"rtp data: \" + payload);\n //}\n //if (this._videoTrack.samples.length > 0) {\n // console.log(\"frame 1:\" + this._videoTrack.samples[0].units[2].data);\n //}\n\n\n if (!this._initVideoMetadata) return; //if (!this._initAudioMetadata) return;\n //������֡\n\n if (rtpMarkerBit == 1) {\n var pts = 0; //this.startAudioPts;\n //if (this.syncAudioPts == 0) {\n // this.syncAudioPts = rtpTimestamp;\n //}\n //else {\n // pts = (rtpTimestamp - this.syncAudioPts) / 8;\n // //this.syncVideoPts = rtpTimestamp;\n // console.log(\"Audio PTS: \" + pts);\n //}\n //if (this.startVideoPts - this.startAudioPts > 1024) {\n // this.startAudioPts += 1024;\n //}\n\n if (this.startAudioPts < 1) {\n this.startAudioPts = this.startVideoPts;\n }\n\n this.startAudioPts += 32;\n pts = this.startAudioPts; //console.log(\"Audio PTS: \" + pts);\n\n var track = this._audioTrack;\n var dts = pts; //let framedata = payload.subarray(4, rtpPacketSize-4);\n\n var framedata = payload.subarray(4 + 7, rtpPacketSize - 4 - 7);\n console.log('aac frame:', framedata);\n return;\n var aacSample = {\n unit: framedata,\n length: framedata.length,\n dts: dts,\n pts: dts\n };\n track.samples.push(aacSample);\n track.length += aacSample.length;\n\n if (this._config.decodeType === 'auto' || this._config.decodeType === 'hard') {\n //����codecIdΪ0, ��ʾ��ʱ������, ���ص����ϲ���������ʾ\n //this._onDataAvailableToSoftwareDecodeVideo(0, this._videoTrack);\n //��mp4-remuxer.js����\n if (this._audioTrack.length > 0 && this._audioTrack.samples.length > 0) {\n console.log('proc audio frame num: ' + this._audioTrack.samples.length); //this._onDataAvailable(this._audioTrack, this._videoTrack);\n }\n } else {//console.log(\"H264: Software Decode...\");\n //if (this._videoTrack.samples.length > 0) {\n // this._onDataAvailableToSoftwareDecodeVideo(27, this._videoTrack);\n //}\n //if (this._audioTrack.samples.length > 0) {\n // this._onDataAvailableToSoftwareDecodeAudio(86018, this._audioTrack);\n //}\n }\n }\n };\n\n _proto.parseChunks = function parseChunks(chunk, byteStart) {\n if (chunk === null) return 0;\n if (chunk.byteLength < 1) return 0;\n var data = new Uint8Array(chunk); //console.log(\"rtsp-demuxer.js::parseChunks...\" + byteStart + \" len:\" + chunk.byteLength + \" data:\" + data);\n\n /*\n let packetOffset = this.packetPos;\n this.packetData.set(data, packetOffset);\n packetOffset += data.length;\n */\n\n var offset = 0;\n\n if (data[offset] != 0x24) {\n console.log('data error...');\n\n for (var i = 0; i < data.length; i++) {\n var len = data[i + 2] << 8 | data[i + 3];\n\n if (data[i] == 0x24 && data[i + 1] == 0x00 && len <= 1460) {\n offset = i;\n console.log('Found 0x24... start proc data');\n break;\n }\n }\n\n if (offset < 1) {\n console.log('not found 0x24 $ ... continue');\n return 0;\n }\n } //��һ���ֽ�Ϊ$\n\n\n var channelId = data[offset + 1];\n var rtspLen = data[offset + 2] << 8 | data[offset + 3]; //if (this.packetPos < rtspLen + 4) break;\n\n if (data.length - offset < rtspLen + 4) {\n //if (rtspLen + 4 < 1460) {\n //console.log(\"data size error... waiting for more data... dataLength[\" + data.length + \"] offset[\" + offset + \"] rtspLen[\" + (rtspLen + 4) + \"]\");\n //}\n return 0; //����������\n }\n\n if (channelId == 0) {\n //��Ƶ rtp\n //����rtp\n //console.log(\"channelId:\" + channelId + \" rtspLen: \" + rtspLen + \" payloadSize:\" + (rtspLen - 12));\n var rtpPacket = data.subarray(4, rtspLen + 4);\n this.parseVideoRTPPacket(rtpPacket);\n } else if (channelId == 1) {//��Ƶ rtcp\n //console.log(\"video rtcp...\");\n } else if (channelId == 2) {\n //��Ƶ rtp\n //console.log(\"audio rtp...\");\n var _rtpPacket = data.subarray(4, rtspLen + 4);\n\n this.parseAudioRTPPacket(_rtpPacket);\n } else if (channelId == 3) {//��Ƶ rtcp\n //console.log(\"audio rtcp...\");\n } else if (channelId == 4) {\n var _rtpPacket2 = data.subarray(4 + 12 + 32, rtspLen + 4 + 12 + 32); //4�ֽ�rtspheader+12�ֽ�rtpheader+32�ֽ�payloadHeader\n //console.log(\"Metadata rtp...\" + rtpPacket);\n //this.parseVideoRTPPacket(rtpPacket);\n\n\n if (this._callbackPlaybackTimePtr) this._callbackPlaybackTimePtr(this._callbackPlaybackTimeUserPtr, 'rtspPlaybackTime', _rtpPacket2);\n } else if (channelId == 5) {//console.log(\"Metadata rtcp...\");\n }\n\n if (data.length > rtspLen + 4) {//console.log(\"dataLength[\" + data.length + \"] > rtspLen[\" + (rtspLen + 4) + \"] remain[\" + (data.length - rtspLen - 4) + \"]\");\n }\n\n return rtspLen + 4;\n /*\n if (rtspLen + 4 == data.length) {\n //console.log(\"PacketSize:\" + this.packetPos);\n this.packetPos = 0;\n //break;\n return data.length;\n }\n else {\n console.log(\"continues......\" + (rtspLen + 4) + \" --> \" + packetOffset);\n //�˴�ֻ�п������ж��������(��һ����������)\n let p = this.packetData.subarray(rtspLen + 4, packetOffset);\n this.packetData.set(p, 0);\n this.packetPos = packetOffset - rtspLen - 4;\n break;\n }\n */\n\n return;\n } //#define H265_Get_NalType(c)\t (((c) & 0x7E) >> 1);\n ;\n\n _proto._makeH265Header = function _makeH265Header(buf) {\n var frameType = 0x02;\n\n switch (buf) {\n case 0x4E:\n //Prefix SEI\n {\n frameType = 0x01;\n }\n break;\n\n case 0x50:\n //Suffix SEI\n {\n frameType = 0x01;\n }\n break;\n\n case 0x40: //VPS\n\n case 0x42: //SPS\n\n case 0x20: //I frame 16\n\n case 0x22: //I frame 17\n\n case 0x24: //I frame 18\n\n case 0x26: //I frame 19\n\n case 0x28: //I frame 20\n\n case 0x2A:\n //I frame 21(acturally we should find naltype 16-21)\n {\n frameType = 0x01;\n }\n break;\n\n case 0x44:\n //PPS\n break;\n\n default:\n break;\n }\n\n return frameType;\n };\n\n _proto.snapshot = function snapshot() {\n if (this.fullFrameData == null) {\n this.fullFrameData = new Uint8Array(1024 * 1024 * 2);\n }\n\n this.snapshotCount++;\n };\n\n _proto.changeSpeed = function changeSpeed(val) {\n this.ptsInterval = val;\n };\n\n _createClass(RTSPDemuxer, [{\n key: \"onTrackMetadata\",\n get: function get() {\n return this._onTrackMetadata;\n },\n set: function set(callback) {\n this._onTrackMetadata = callback;\n } // prototype: function(mediaInfo: MediaInfo): void\n\n }, {\n key: \"onMediaInfo\",\n get: function get() {\n return this._onMediaInfo;\n },\n set: function set(callback) {\n this._onMediaInfo = callback;\n }\n }, {\n key: \"onMetaDataArrived\",\n get: function get() {\n return this._onMetaDataArrived;\n },\n set: function set(callback) {\n this._onMetaDataArrived = callback;\n }\n }, {\n key: \"onScriptDataArrived\",\n get: function get() {\n return this._onScriptDataArrived;\n },\n set: function set(callback) {\n this._onScriptDataArrived = callback;\n } // prototype: function(type: number, info: string): void\n\n }, {\n key: \"onError\",\n get: function get() {\n return this._onError;\n },\n set: function set(callback) {\n this._onError = callback;\n } // prototype: function(videoTrack: any, audioTrack: any): void\n\n }, {\n key: \"onDataAvailable\",\n get: function get() {\n return this._onDataAvailable;\n },\n set: function set(callback) {\n this._onDataAvailable = callback;\n } // timestamp base for output samples, must be in milliseconds\n\n }, {\n key: \"timestampBase\",\n get: function get() {\n return this._timestampBase;\n },\n set: function set(base) {\n this._timestampBase = base;\n }\n }, {\n key: \"overridedDuration\",\n get: function get() {\n return this._duration;\n } // Force-override media duration. Must be in milliseconds, int32\n ,\n set: function set(duration) {\n this._durationOverrided = true;\n this._duration = duration;\n this._mediaInfo.duration = duration;\n } // Force-override audio track present flag, boolean\n\n }, {\n key: \"overridedHasAudio\",\n set: function set(hasAudio) {\n this._hasAudioFlagOverrided = true;\n this._hasAudio = hasAudio;\n this._mediaInfo.hasAudio = hasAudio;\n } // Force-override video track present flag, boolean\n\n }, {\n key: \"overridedHasVideo\",\n set: function set(hasVideo) {\n this._hasVideoFlagOverrided = true;\n this._hasVideo = hasVideo;\n this._mediaInfo.hasVideo = hasVideo;\n }\n }]);\n\n return RTSPDemuxer;\n}(); //==================================================================\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (RTSPDemuxer);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/demux/rtsp-demuxer.js?"); | |
| 3233 | - | |
| 3234 | -/***/ }), | |
| 3235 | - | |
| 3236 | -/***/ "./src/FlvPlayer/flv.js/demux/sps-parser.js": | |
| 3237 | -/*!**************************************************!*\ | |
| 3238 | - !*** ./src/FlvPlayer/flv.js/demux/sps-parser.js ***! | |
| 3239 | - \**************************************************/ | |
| 3240 | -/*! exports provided: default */ | |
| 3241 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3242 | - | |
| 3243 | -"use strict"; | |
| 3244 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exp_golomb_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exp-golomb.js */ \"./src/FlvPlayer/flv.js/demux/exp-golomb.js\");\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nvar SPSParser = /*#__PURE__*/function () {\n function SPSParser() {}\n\n SPSParser._ebsp2rbsp = function _ebsp2rbsp(uint8array) {\n var src = uint8array;\n var src_length = src.byteLength;\n var dst = new Uint8Array(src_length);\n var dst_idx = 0;\n\n for (var i = 0; i < src_length; i++) {\n if (i >= 2) {\n // Unescape: Skip 0x03 after 00 00\n if (src[i] === 0x03 && src[i - 1] === 0x00 && src[i - 2] === 0x00) {\n continue;\n }\n }\n\n dst[dst_idx] = src[i];\n dst_idx++;\n }\n\n return new Uint8Array(dst.buffer, 0, dst_idx);\n };\n\n SPSParser.parseSPS = function parseSPS(uint8array) {\n var rbsp = SPSParser._ebsp2rbsp(uint8array);\n\n var gb = new _exp_golomb_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](rbsp);\n gb.readByte();\n var profile_idc = gb.readByte(); // profile_idc\n\n gb.readByte(); // constraint_set_flags[5] + reserved_zero[3]\n\n var level_idc = gb.readByte(); // level_idc\n\n gb.readUEG(); // seq_parameter_set_id\n\n var profile_string = SPSParser.getProfileString(profile_idc);\n var level_string = SPSParser.getLevelString(level_idc);\n var chroma_format_idc = 1;\n var chroma_format = 420;\n var chroma_format_table = [0, 420, 422, 444];\n var bit_depth = 8;\n\n if (profile_idc === 100 || profile_idc === 110 || profile_idc === 122 || profile_idc === 244 || profile_idc === 44 || profile_idc === 83 || profile_idc === 86 || profile_idc === 118 || profile_idc === 128 || profile_idc === 138 || profile_idc === 144) {\n chroma_format_idc = gb.readUEG();\n\n if (chroma_format_idc === 3) {\n gb.readBits(1); // separate_colour_plane_flag\n }\n\n if (chroma_format_idc <= 3) {\n chroma_format = chroma_format_table[chroma_format_idc];\n }\n\n bit_depth = gb.readUEG() + 8; // bit_depth_luma_minus8\n\n gb.readUEG(); // bit_depth_chroma_minus8\n\n gb.readBits(1); // qpprime_y_zero_transform_bypass_flag\n\n if (gb.readBool()) {\n // seq_scaling_matrix_present_flag\n var scaling_list_count = chroma_format_idc !== 3 ? 8 : 12;\n\n for (var i = 0; i < scaling_list_count; i++) {\n if (gb.readBool()) {\n // seq_scaling_list_present_flag\n if (i < 6) {\n SPSParser._skipScalingList(gb, 16);\n } else {\n SPSParser._skipScalingList(gb, 64);\n }\n }\n }\n }\n }\n\n gb.readUEG(); // log2_max_frame_num_minus4\n\n var pic_order_cnt_type = gb.readUEG();\n\n if (pic_order_cnt_type === 0) {\n gb.readUEG(); // log2_max_pic_order_cnt_lsb_minus_4\n } else if (pic_order_cnt_type === 1) {\n gb.readBits(1); // delta_pic_order_always_zero_flag\n\n gb.readSEG(); // offset_for_non_ref_pic\n\n gb.readSEG(); // offset_for_top_to_bottom_field\n\n var num_ref_frames_in_pic_order_cnt_cycle = gb.readUEG();\n\n for (var _i = 0; _i < num_ref_frames_in_pic_order_cnt_cycle; _i++) {\n gb.readSEG(); // offset_for_ref_frame\n }\n }\n\n var ref_frames = gb.readUEG(); // max_num_ref_frames\n\n gb.readBits(1); // gaps_in_frame_num_value_allowed_flag\n\n var pic_width_in_mbs_minus1 = gb.readUEG();\n var pic_height_in_map_units_minus1 = gb.readUEG();\n var frame_mbs_only_flag = gb.readBits(1);\n\n if (frame_mbs_only_flag === 0) {\n gb.readBits(1); // mb_adaptive_frame_field_flag\n }\n\n gb.readBits(1); // direct_8x8_inference_flag\n\n var frame_crop_left_offset = 0;\n var frame_crop_right_offset = 0;\n var frame_crop_top_offset = 0;\n var frame_crop_bottom_offset = 0;\n var frame_cropping_flag = gb.readBool();\n\n if (frame_cropping_flag) {\n frame_crop_left_offset = gb.readUEG();\n frame_crop_right_offset = gb.readUEG();\n frame_crop_top_offset = gb.readUEG();\n frame_crop_bottom_offset = gb.readUEG();\n }\n\n var sar_width = 1,\n sar_height = 1;\n var fps = 0,\n fps_fixed = true,\n fps_num = 0,\n fps_den = 0;\n var vui_parameters_present_flag = gb.readBool();\n\n if (vui_parameters_present_flag) {\n if (gb.readBool()) {\n // aspect_ratio_info_present_flag\n var aspect_ratio_idc = gb.readByte();\n var sar_w_table = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2];\n var sar_h_table = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1];\n\n if (aspect_ratio_idc > 0 && aspect_ratio_idc < 16) {\n sar_width = sar_w_table[aspect_ratio_idc - 1];\n sar_height = sar_h_table[aspect_ratio_idc - 1];\n } else if (aspect_ratio_idc === 255) {\n sar_width = gb.readByte() << 8 | gb.readByte();\n sar_height = gb.readByte() << 8 | gb.readByte();\n }\n }\n\n if (gb.readBool()) {\n // overscan_info_present_flag\n gb.readBool(); // overscan_appropriate_flag\n }\n\n if (gb.readBool()) {\n // video_signal_type_present_flag\n gb.readBits(4); // video_format & video_full_range_flag\n\n if (gb.readBool()) {\n // colour_description_present_flag\n gb.readBits(24); // colour_primaries & transfer_characteristics & matrix_coefficients\n }\n }\n\n if (gb.readBool()) {\n // chroma_loc_info_present_flag\n gb.readUEG(); // chroma_sample_loc_type_top_field\n\n gb.readUEG(); // chroma_sample_loc_type_bottom_field\n }\n\n if (gb.readBool()) {\n // timing_info_present_flag\n var num_units_in_tick = gb.readBits(32);\n var time_scale = gb.readBits(32);\n fps_fixed = gb.readBool(); // fixed_frame_rate_flag\n\n fps_num = time_scale;\n fps_den = num_units_in_tick * 2;\n fps = fps_num / fps_den;\n }\n }\n\n var sarScale = 1;\n\n if (sar_width !== 1 || sar_height !== 1) {\n sarScale = sar_width / sar_height;\n }\n\n var crop_unit_x = 0,\n crop_unit_y = 0;\n\n if (chroma_format_idc === 0) {\n crop_unit_x = 1;\n crop_unit_y = 2 - frame_mbs_only_flag;\n } else {\n var sub_wc = chroma_format_idc === 3 ? 1 : 2;\n var sub_hc = chroma_format_idc === 1 ? 2 : 1;\n crop_unit_x = sub_wc;\n crop_unit_y = sub_hc * (2 - frame_mbs_only_flag);\n }\n\n var codec_width = (pic_width_in_mbs_minus1 + 1) * 16;\n var codec_height = (2 - frame_mbs_only_flag) * ((pic_height_in_map_units_minus1 + 1) * 16);\n codec_width -= (frame_crop_left_offset + frame_crop_right_offset) * crop_unit_x;\n codec_height -= (frame_crop_top_offset + frame_crop_bottom_offset) * crop_unit_y;\n var present_width = Math.ceil(codec_width * sarScale);\n gb.destroy();\n gb = null;\n return {\n avc_profile: profile_idc,\n profile_string: profile_string,\n // baseline, high, high10, ...\n avc_level: level_idc,\n level_string: level_string,\n // 3, 3.1, 4, 4.1, 5, 5.1, ...\n bit_depth: bit_depth,\n // 8bit, 10bit, ...\n ref_frames: ref_frames,\n chroma_format: chroma_format,\n // 4:2:0, 4:2:2, ...\n chroma_format_string: SPSParser.getChromaFormatString(chroma_format),\n frame_rate: {\n fixed: fps_fixed,\n fps: fps,\n fps_den: fps_den,\n fps_num: fps_num\n },\n sar_ratio: {\n width: sar_width,\n height: sar_height\n },\n codec_size: {\n width: codec_width,\n height: codec_height\n },\n present_size: {\n width: present_width,\n height: codec_height\n }\n };\n };\n\n SPSParser._skipScalingList = function _skipScalingList(gb, count) {\n var last_scale = 8,\n next_scale = 8;\n var delta_scale = 0;\n\n for (var i = 0; i < count; i++) {\n if (next_scale !== 0) {\n delta_scale = gb.readSEG();\n next_scale = (last_scale + delta_scale + 256) % 256;\n }\n\n last_scale = next_scale === 0 ? last_scale : next_scale;\n }\n };\n\n SPSParser.getProfileString = function getProfileString(profile_idc) {\n switch (profile_idc) {\n case 66:\n return 'Baseline';\n\n case 77:\n return 'Main';\n\n case 88:\n return 'Extended';\n\n case 100:\n return 'High';\n\n case 110:\n return 'High10';\n\n case 122:\n return 'High422';\n\n case 244:\n return 'High444';\n\n default:\n return 'Unknown';\n }\n };\n\n SPSParser.getLevelString = function getLevelString(level_idc) {\n return (level_idc / 10).toFixed(1);\n };\n\n SPSParser.getChromaFormatString = function getChromaFormatString(chroma) {\n switch (chroma) {\n case 420:\n return '4:2:0';\n\n case 422:\n return '4:2:2';\n\n case 444:\n return '4:4:4';\n\n default:\n return 'Unknown';\n }\n };\n\n return SPSParser;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SPSParser);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/demux/sps-parser.js?"); | |
| 3245 | - | |
| 3246 | -/***/ }), | |
| 3247 | - | |
| 3248 | -/***/ "./src/FlvPlayer/flv.js/io/fetch-stream-loader.js": | |
| 3249 | -/*!********************************************************!*\ | |
| 3250 | - !*** ./src/FlvPlayer/flv.js/io/fetch-stream-loader.js ***! | |
| 3251 | - \********************************************************/ | |
| 3252 | -/*! exports provided: default */ | |
| 3253 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3254 | - | |
| 3255 | -"use strict"; | |
| 3256 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _utils_browser_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/browser.js */ \"./src/FlvPlayer/flv.js/utils/browser.js\");\n/* harmony import */ var _loader_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./loader.js */ \"./src/FlvPlayer/flv.js/io/loader.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../common/common */ \"./src/common/common.js\");\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n/* fetch + stream IO loader. Currently working on chrome 43+.\n * fetch provides a better alternative http API to XMLHttpRequest\n *\n * fetch spec https://fetch.spec.whatwg.org/\n * stream spec https://streams.spec.whatwg.org/\n */\n\nvar FetchStreamLoader = /*#__PURE__*/function (_BaseLoader) {\n _inheritsLoose(FetchStreamLoader, _BaseLoader);\n\n FetchStreamLoader.isSupported = function isSupported() {\n try {\n // fetch + stream is broken on Microsoft Edge. Disable before build 15048.\n // see https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8196907/\n // Fixed in Jan 10, 2017. Build 15048+ removed from blacklist.\n var isWorkWellEdge = _utils_browser_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].msedge && _utils_browser_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].version.minor >= 15048;\n var browserNotBlacklisted = _utils_browser_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].msedge ? isWorkWellEdge : true;\n return self.fetch && self.ReadableStream && browserNotBlacklisted;\n } catch (e) {\n return false;\n }\n };\n\n function FetchStreamLoader(seekHandler, config) {\n var _this;\n\n _this = _BaseLoader.call(this, 'fetch-stream-loader') || this;\n _this.TAG = 'FetchStreamLoader';\n _this._seekHandler = seekHandler;\n _this._config = config;\n _this._needStash = true;\n _this._requestAbort = false;\n _this._contentLength = null;\n _this._receivedLength = 0;\n _this._retryConnectTimes = 0;\n _this._fetchUrl = null;\n _this._fetchParam = null;\n _this._triggerReconnectingNotify = true;\n _this._triggerReconnectSuccessNotify = true;\n return _this;\n }\n\n var _proto = FetchStreamLoader.prototype;\n\n _proto.destroy = function destroy() {\n if (this.isWorking()) {\n this.abort();\n }\n\n _BaseLoader.prototype.destroy.call(this);\n };\n\n _proto.fetchStream = function fetchStream() {\n var _this2 = this;\n\n var params = this._fetchParam;\n this._retryConnectTimes++; //֪ͨ�ϲ�, ��ǰ��������, 1Ϊ��һ������, ʹ�����еķ���_onDataArrival\n\n if (this._triggerReconnectingNotify) {\n this._triggerReconnectingNotify = false;\n\n if (this._onDataArrival) {\n this._onDataArrival(null, -this._retryConnectTimes, 0);\n }\n }\n\n this._triggerReconnectSuccessNotify = true;\n self.fetch(this._fetchUrl, params).then(function (res) {\n if (_this2._requestAbort) {\n _this2._requestAbort = false;\n _this2._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kIdle;\n return;\n }\n\n if (res.ok && res.status >= 200 && res.status <= 299) {\n if (res.url !== _this2._fetchUrl) {\n if (_this2._onURLRedirect) {\n var redirectedURL = _this2._seekHandler.removeURLParameters(res.url);\n\n _this2._onURLRedirect(redirectedURL);\n }\n }\n\n var lengthHeader = res.headers.get('Content-Length');\n\n if (lengthHeader != null) {\n _this2._contentLength = parseInt(lengthHeader);\n\n if (_this2._contentLength !== 0) {\n if (_this2._onContentLengthKnown) {\n _this2._onContentLengthKnown(_this2._contentLength);\n }\n }\n }\n\n _this2._triggerReconnectingNotify = true;\n return _this2._pump.call(_this2, res.body.getReader());\n } else {\n _this2._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kError;\n\n if (_this2._onError) {//this._onError(LoaderErrors.HTTP_STATUS_CODE_INVALID, { code: res.status, msg: res.statusText });\n } else {//throw new RuntimeException('FetchStreamLoader: Http code invalid, ' + res.status + ' ' + res.statusText);\n }\n\n _common_common__WEBPACK_IMPORTED_MODULE_4__[\"MediaWorkerLog\"]('fetch-stream: code:' + res.status + ' msg:' + res.statusText);\n var _self = _this2;\n _common_common__WEBPACK_IMPORTED_MODULE_4__[\"sleep\"](3000).then(function () {\n //console.log(\"fetch-stream-loader.js::Reopen...\");\n console.log('Reconnecting...');\n\n _self.fetchStream();\n });\n return;\n }\n }).catch(function (e) {\n _this2._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kError;\n\n if (_this2._onError) {\n _this2._onError(_loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].EXCEPTION, {\n code: -1,\n msg: e.message\n });\n } else {\n throw e;\n }\n\n var self = _this2;\n _common_common__WEBPACK_IMPORTED_MODULE_4__[\"sleep\"](3000).then(function () {\n //console.log(\"fetch-stream-loader.js::Reopen...\");\n self.fetchStream();\n });\n return;\n });\n };\n\n _proto.open = function open(dataSource, range) {\n /*\n if (this._fetchUrl != null &&\n this._fetchParam != null) {\n this.fetchStream();\n return;\n }\n */\n this._dataSource = dataSource;\n this._range = range;\n var sourceURL = dataSource.url;\n\n if (this._config.reuseRedirectedURL && dataSource.redirectedURL != undefined) {\n sourceURL = dataSource.redirectedURL;\n }\n\n var seekConfig = this._seekHandler.getConfig(sourceURL, range);\n\n var headers = new self.Headers();\n\n if (typeof seekConfig.headers === 'object') {\n var configHeaders = seekConfig.headers;\n\n for (var key in configHeaders) {\n if (configHeaders.hasOwnProperty(key)) {\n headers.append(key, configHeaders[key]);\n }\n }\n }\n\n var params = {\n method: 'GET',\n headers: headers,\n mode: 'cors',\n cache: 'default',\n // The default policy of Fetch API in the whatwg standard\n // Safari incorrectly indicates 'no-referrer' as default policy, fuck it\n referrerPolicy: 'no-referrer-when-downgrade'\n }; // add additional headers\n\n if (typeof this._config.headers === 'object') {\n for (var _key in this._config.headers) {\n headers.append(_key, this._config.headers[_key]);\n }\n } // cors is enabled by default\n\n\n if (dataSource.cors === false) {\n // no-cors means 'disregard cors policy', which can only be used in ServiceWorker\n params.mode = 'same-origin';\n } // withCredentials is disabled by default\n\n\n if (dataSource.withCredentials) {\n params.credentials = 'include';\n } // referrerPolicy from config\n\n\n if (dataSource.referrerPolicy) {\n params.referrerPolicy = dataSource.referrerPolicy;\n }\n\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kConnecting;\n this._fetchUrl = seekConfig.url;\n this._fetchParam = params;\n this.fetchStream();\n /*\n self.fetch(seekConfig.url, params).then((res) => {\n if (this._requestAbort) {\n this._requestAbort = false;\n this._status = LoaderStatus.kIdle;\n return;\n }\n if (res.ok && (res.status >= 200 && res.status <= 299)) {\n if (res.url !== seekConfig.url) {\n if (this._onURLRedirect) {\n let redirectedURL = this._seekHandler.removeURLParameters(res.url);\n this._onURLRedirect(redirectedURL);\n }\n }\n let lengthHeader = res.headers.get('Content-Length');\n if (lengthHeader != null) {\n this._contentLength = parseInt(lengthHeader);\n if (this._contentLength !== 0) {\n if (this._onContentLengthKnown) {\n this._onContentLengthKnown(this._contentLength);\n }\n }\n }\n return this._pump.call(this, res.body.getReader());\n } else {\n this._status = LoaderStatus.kError;\n if (this._onError) {\n this._onError(LoaderErrors.HTTP_STATUS_CODE_INVALID, { code: res.status, msg: res.statusText });\n } else {\n throw new RuntimeException('FetchStreamLoader: Http code invalid, ' + res.status + ' ' + res.statusText);\n }\n }\n }).catch((e) => {\n this._status = LoaderStatus.kError;\n if (this._onError) {\n this._onError(LoaderErrors.EXCEPTION, { code: -1, msg: e.message });\n } else {\n throw e;\n }\n });\n */\n };\n\n _proto.abort = function abort() {\n this._requestAbort = true;\n };\n\n _proto._pump = function _pump(reader) {\n var _this3 = this;\n\n // ReadableStreamReader\n return reader.read().then(function (result) {\n if (result.done) {\n // First check received length\n if (_this3._contentLength !== null && _this3._receivedLength < _this3._contentLength) {\n // Report Early-EOF\n _this3._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kError;\n var type = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].EARLY_EOF;\n var info = {\n code: -1,\n msg: 'Fetch stream meet Early-EOF'\n };\n\n if (_this3._onError) {\n _this3._onError(type, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__[\"RuntimeException\"](info.msg);\n } //������ļ�\n\n\n if (_this3._contentLength !== null && _this3._receivedLength === _this3._contentLength && _this3._receivedLength > 0) {\n _common_common__WEBPACK_IMPORTED_MODULE_4__[\"setLiveStreamType\"](false);\n\n _this3._onComplete(_this3._range.from, _this3._range.from + _this3._receivedLength - 1);\n } else {\n _this3._onComplete(-1, -1);\n }\n } else {\n // OK. Download complete\n _this3._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kComplete;\n\n if (_this3._onComplete) {\n //������ļ�\n if (_this3._contentLength !== null && _this3._receivedLength === _this3._contentLength && _this3._receivedLength > 0) {\n _common_common__WEBPACK_IMPORTED_MODULE_4__[\"setLiveStreamType\"](false);\n\n _this3._onComplete(_this3._range.from, _this3._range.from + _this3._receivedLength - 1);\n } else {\n _this3._onComplete(-1, -1);\n }\n }\n }\n } else {\n if (_this3._requestAbort === true) {\n _this3._requestAbort = false;\n _this3._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kComplete;\n return reader.cancel();\n }\n\n _this3._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kBuffering;\n var chunk = result.value.buffer;\n var byteStart = _this3._range.from + _this3._receivedLength;\n _this3._receivedLength += chunk.byteLength;\n\n if (_this3._onDataArrival) {\n _this3._onDataArrival(chunk, byteStart, _this3._receivedLength);\n } //֪ͨ�ϲ�, ��ǰ��������, 1Ϊ��һ������, ʹ�����еķ���_onDataArrival\n\n\n if (_this3._triggerReconnectSuccessNotify) {\n _this3._triggerReconnectSuccessNotify = false;\n\n if (_this3._onDataArrival) {\n //console.log(\"fetch-stream-loader.js::Connected:\" + this._retryConnectTimes);\n _this3._onDataArrival(null, _this3._retryConnectTimes, 0);\n\n _this3._retryConnectTimes++;\n }\n }\n\n _this3._pump(reader);\n }\n }).catch(function (e) {\n console.log('fetch-stream-loader:: errCode:' + e.code + ' msg:' + e.message);\n\n _this3._onComplete(-1, -1);\n\n return;\n\n if (e.code === 11 && _utils_browser_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].msedge) {\n // InvalidStateError on Microsoft Edge\n // Workaround: Edge may throw InvalidStateError after ReadableStreamReader.cancel() call\n // Ignore the unknown exception.\n // Related issue: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/11265202/\n return;\n }\n\n _this3._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kError;\n var type = 0;\n var info = null;\n\n if ((e.code === 19 || e.message === 'network error') && ( // NETWORK_ERR\n _this3._contentLength === null || _this3._contentLength !== null && _this3._receivedLength < _this3._contentLength)) {\n type = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].EARLY_EOF;\n info = {\n code: e.code,\n msg: 'Fetch stream meet Early-EOF'\n };\n } else {\n type = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].EXCEPTION;\n info = {\n code: e.code,\n msg: e.message\n };\n }\n\n if (_this3._onError) {\n _this3._onError(type, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__[\"RuntimeException\"](info.msg);\n }\n });\n };\n\n return FetchStreamLoader;\n}(_loader_js__WEBPACK_IMPORTED_MODULE_2__[\"BaseLoader\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FetchStreamLoader);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/io/fetch-stream-loader.js?"); | |
| 3257 | - | |
| 3258 | -/***/ }), | |
| 3259 | - | |
| 3260 | -/***/ "./src/FlvPlayer/flv.js/io/io-controller.js": | |
| 3261 | -/*!**************************************************!*\ | |
| 3262 | - !*** ./src/FlvPlayer/flv.js/io/io-controller.js ***! | |
| 3263 | - \**************************************************/ | |
| 3264 | -/*! exports provided: default */ | |
| 3265 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3266 | - | |
| 3267 | -"use strict"; | |
| 3268 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _speed_sampler_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./speed-sampler.js */ \"./src/FlvPlayer/flv.js/io/speed-sampler.js\");\n/* harmony import */ var _loader_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./loader.js */ \"./src/FlvPlayer/flv.js/io/loader.js\");\n/* harmony import */ var _fetch_stream_loader_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fetch-stream-loader.js */ \"./src/FlvPlayer/flv.js/io/fetch-stream-loader.js\");\n/* harmony import */ var _xhr_moz_chunked_loader_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./xhr-moz-chunked-loader.js */ \"./src/FlvPlayer/flv.js/io/xhr-moz-chunked-loader.js\");\n/* harmony import */ var _xhr_msstream_loader_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./xhr-msstream-loader.js */ \"./src/FlvPlayer/flv.js/io/xhr-msstream-loader.js\");\n/* harmony import */ var _xhr_range_loader_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./xhr-range-loader.js */ \"./src/FlvPlayer/flv.js/io/xhr-range-loader.js\");\n/* harmony import */ var _websocket_loader_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./websocket-loader.js */ \"./src/FlvPlayer/flv.js/io/websocket-loader.js\");\n/* harmony import */ var _range_seek_handler_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./range-seek-handler.js */ \"./src/FlvPlayer/flv.js/io/range-seek-handler.js\");\n/* harmony import */ var _param_seek_handler_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./param-seek-handler.js */ \"./src/FlvPlayer/flv.js/io/param-seek-handler.js\");\n/* harmony import */ var _m3u8_loader_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./m3u8-loader.js */ \"./src/FlvPlayer/flv.js/io/m3u8-loader.js\");\n/* harmony import */ var _rtsp_stream_loader_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./rtsp-stream-loader.js */ \"./src/FlvPlayer/flv.js/io/rtsp-stream-loader.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * DataSource: {\n * url: string,\n * filesize: number,\n * cors: boolean,\n * withCredentials: boolean\n * }\n *\n */\n// Manage IO Loaders\n\nvar IOController = /*#__PURE__*/function () {\n function IOController(dataSource, config, extraData, startPlaySecs) {\n this.TAG = 'IOController';\n this._config = config;\n this._extraData = extraData;\n this._stashInitialSize = 1024 * 384; // default initial size: 384KB\n\n if (config.stashInitialSize != undefined && config.stashInitialSize > 0) {\n // apply from config\n this._stashInitialSize = config.stashInitialSize;\n }\n\n this._stashUsed = 0;\n this._stashSize = this._stashInitialSize;\n this._bufferSize = 1024 * 1024 * 3; // initial size: 3MB\n\n this._stashBuffer = new ArrayBuffer(this._bufferSize);\n this._stashByteStart = 0;\n this._enableStash = true;\n\n if (config.enableStashBuffer === false) {\n this._enableStash = false;\n } //add by gavin 2020.05.06\n //���û��� ��decodeTypeΪ'soft'ʱ, �˴�������Ϊfalse\n\n\n if (config.decodeType === 'soft') {\n this._enableStash = false;\n }\n\n this._loader = null;\n this._loaderClass = null;\n this._seekHandler = null;\n this._dataSource = dataSource;\n this._isWebSocketURL = /wss?:\\/\\/(.+?)/.test(dataSource.url);\n this._refTotalLength = dataSource.filesize ? dataSource.filesize : null;\n this._totalLength = this._refTotalLength;\n this._fullRequestFlag = false;\n this._currentRange = null;\n this._redirectedURL = null;\n this._speedNormalized = 0;\n this._speedSampler = new _speed_sampler_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]();\n this._speedNormalizeList = [64, 128, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096];\n this._isEarlyEofReconnecting = false;\n this._paused = false;\n this._resumeFrom = 0;\n this._onDataArrival = null;\n this._onSeeked = null;\n this._onError = null;\n this._onComplete = null;\n this._onRedirect = null;\n this._onRecoveredEarlyEof = null;\n\n this._selectSeekHandler();\n\n this._selectLoader();\n\n this._createLoader(startPlaySecs);\n }\n\n var _proto = IOController.prototype;\n\n _proto.destroy = function destroy() {\n if (this._loader.isWorking()) {\n this._loader.abort();\n }\n\n if (this._stashBuffer) {\n delete this._stashBuffer;\n this._stashBuffer = null;\n }\n\n this._loader.destroy();\n\n this._loader = null;\n this._loaderClass = null;\n this._dataSource = null;\n this._stashBuffer = null;\n this._stashUsed = this._stashSize = this._bufferSize = this._stashByteStart = 0;\n this._currentRange = null;\n this._speedSampler = null;\n this._isEarlyEofReconnecting = false;\n this._onDataArrival = null;\n this._onSeeked = null;\n this._onError = null;\n this._onComplete = null;\n this._onRedirect = null;\n this._onRecoveredEarlyEof = null;\n this._extraData = null;\n };\n\n _proto.isWorking = function isWorking() {\n return this._loader && this._loader.isWorking() && !this._paused;\n };\n\n _proto.isPaused = function isPaused() {\n return this._paused;\n };\n\n _proto._selectSeekHandler = function _selectSeekHandler() {\n var config = this._config;\n\n if (config.seekType === 'range') {\n this._seekHandler = new _range_seek_handler_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this._config.rangeLoadZeroStart);\n } else if (config.seekType === 'param') {\n var paramStart = config.seekParamStart || 'bstart';\n var paramEnd = config.seekParamEnd || 'bend';\n this._seekHandler = new _param_seek_handler_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"](paramStart, paramEnd);\n } else if (config.seekType === 'custom') {\n if (typeof config.customSeekHandler !== 'function') {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_12__[\"InvalidArgumentException\"]('Custom seekType specified in config but invalid customSeekHandler!');\n }\n\n this._seekHandler = new config.customSeekHandler();\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_12__[\"InvalidArgumentException\"](\"Invalid seekType in config: \" + config.seekType);\n }\n };\n\n _proto._selectLoader = function _selectLoader() {\n if (this._config.customLoader != null) {\n this._loaderClass = this._config.customLoader;\n } else if (this._config.streamType === 'm3u8') {\n this._loaderClass = _m3u8_loader_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"];\n } else if (this._config.streamType === 'rtsp') {\n this._loaderClass = _rtsp_stream_loader_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"];\n } else if (this._isWebSocketURL) {\n this._loaderClass = _websocket_loader_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"];\n } else if (_fetch_stream_loader_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isSupported()) {\n this._loaderClass = _fetch_stream_loader_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n } else if (_xhr_moz_chunked_loader_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].isSupported()) {\n this._loaderClass = _xhr_moz_chunked_loader_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n } else if (_xhr_range_loader_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].isSupported()) {\n this._loaderClass = _xhr_range_loader_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_12__[\"RuntimeException\"]('Your browser doesn\\'t support xhr with arraybuffer responseType!');\n }\n };\n\n _proto._IsM3u8Loader = function _IsM3u8Loader() {\n return this._loaderClass == _m3u8_loader_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"] ? true : false;\n };\n\n _proto._GetM3u8Loader = function _GetM3u8Loader() {\n if (this._loaderClass == _m3u8_loader_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]) return this._loader;\n return null;\n };\n\n _proto._IsRtspLoader = function _IsRtspLoader() {\n return this._loaderClass == _rtsp_stream_loader_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"] ? true : false;\n };\n\n _proto._createLoader = function _createLoader(startPlaySecs) {\n this._loader = new this._loaderClass(this._seekHandler, this._config);\n\n if (this._loader.needStashBuffer === false) {\n this._enableStash = false;\n }\n\n if (this._loaderClass == _m3u8_loader_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]) {\n this._loader.setStartPlaySecs(startPlaySecs);\n }\n\n this._loader.onContentLengthKnown = this._onContentLengthKnown.bind(this);\n this._loader.onURLRedirect = this._onURLRedirect.bind(this);\n this._loader.onDataArrival = this._onLoaderChunkArrival.bind(this);\n this._loader.onComplete = this._onLoaderComplete.bind(this);\n this._loader.onError = this._onLoaderError.bind(this);\n };\n\n _proto.open = function open(optionalFrom) {\n this._currentRange = {\n from: 0,\n to: -1\n };\n\n if (optionalFrom) {\n this._currentRange.from = optionalFrom;\n }\n\n this._speedSampler.reset();\n\n if (!optionalFrom) {\n this._fullRequestFlag = true;\n }\n\n this._loader.open(this._dataSource, Object.assign({}, this._currentRange));\n };\n\n _proto.abort = function abort() {\n this._loader.abort();\n\n if (this._paused) {\n this._paused = false;\n this._resumeFrom = 0;\n }\n };\n\n _proto.pause = function pause() {\n if (this._IsRtspLoader()) {\n if (this._loader) {\n this._loader.pause();\n }\n\n return;\n }\n\n if (this.isWorking()) {\n this._loader.abort();\n\n if (this._stashUsed !== 0) {\n this._resumeFrom = this._stashByteStart;\n this._currentRange.to = this._stashByteStart - 1;\n } else {\n this._resumeFrom = this._currentRange.to + 1;\n }\n\n this._stashUsed = 0;\n this._stashByteStart = 0;\n this._paused = true;\n }\n };\n\n _proto.resume = function resume() {\n if (this._IsRtspLoader()) {\n if (this._loader) {\n this._loader.resume();\n }\n\n return;\n }\n\n if (this._paused) {\n this._paused = false;\n var bytes = this._resumeFrom;\n this._resumeFrom = 0;\n\n this._internalSeek(bytes, true);\n }\n };\n\n _proto.rtspScale = function rtspScale(scaleValue) {\n if (this._IsRtspLoader()) {\n if (this._loader) {\n this._loader.scale(scaleValue);\n }\n }\n };\n\n _proto.seek = function seek(bytes) {\n //console.log(\"io-controller.js::seek(bytes):\" + bytes);\n this._paused = false;\n this._stashUsed = 0;\n this._stashByteStart = 0;\n\n this._internalSeek(bytes, true);\n }\n /**\n * When seeking request is from media seeking, unconsumed stash data should be dropped\n * However, stash data shouldn't be dropped if seeking requested from http reconnection\n *\n * @dropUnconsumed: Ignore and discard all unconsumed data in stash buffer\n */\n ;\n\n _proto._internalSeek = function _internalSeek(bytes, dropUnconsumed) {\n if (this._loader.isWorking()) {\n this._loader.abort();\n } // dispatch & flush stash buffer before seek\n\n\n this._flushStashBuffer(dropUnconsumed);\n\n this._loader.destroy();\n\n this._loader = null;\n var requestRange = {\n from: bytes,\n to: -1\n };\n this._currentRange = {\n from: requestRange.from,\n to: -1\n };\n\n this._speedSampler.reset();\n\n this._stashSize = this._stashInitialSize;\n\n this._createLoader();\n\n this._loader.open(this._dataSource, requestRange);\n\n if (this._onSeeked) {\n this._onSeeked();\n }\n };\n\n _proto.updateUrl = function updateUrl(url) {\n if (!url || typeof url !== 'string' || url.length === 0) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_12__[\"InvalidArgumentException\"]('Url must be a non-empty string!');\n }\n\n this._dataSource.url = url; // TODO: replace with new url\n };\n\n _proto._expandBuffer = function _expandBuffer(expectedBytes) {\n var bufferNewSize = this._stashSize;\n\n while (bufferNewSize + 1024 * 1024 * 1 < expectedBytes) {\n bufferNewSize *= 2;\n }\n\n bufferNewSize += 1024 * 1024 * 1; // bufferSize = stashSize + 1MB\n\n if (bufferNewSize === this._bufferSize) {\n return;\n }\n\n console.log('io-controller.js::_expandBuffer' + bufferNewSize);\n var newBuffer = new ArrayBuffer(bufferNewSize);\n\n if (this._stashUsed > 0) {\n // copy existing data into new buffer\n var stashOldArray = new Uint8Array(this._stashBuffer, 0, this._stashUsed);\n var stashNewArray = new Uint8Array(newBuffer, 0, bufferNewSize);\n stashNewArray.set(stashOldArray, 0);\n }\n\n if (this._stashBuffer) {\n delete this._stashBuffer;\n this._stashBuffer = null;\n }\n\n this._stashBuffer = newBuffer;\n this._bufferSize = bufferNewSize;\n };\n\n _proto._normalizeSpeed = function _normalizeSpeed(input) {\n var list = this._speedNormalizeList;\n var last = list.length - 1;\n var mid = 0;\n var lbound = 0;\n var ubound = last;\n\n if (input < list[0]) {\n return list[0];\n } // binary search\n\n\n while (lbound <= ubound) {\n mid = lbound + Math.floor((ubound - lbound) / 2);\n\n if (mid === last || input >= list[mid] && input < list[mid + 1]) {\n return list[mid];\n } else if (list[mid] < input) {\n lbound = mid + 1;\n } else {\n ubound = mid - 1;\n }\n }\n };\n\n _proto._adjustStashSize = function _adjustStashSize(normalized) {\n var stashSizeKB = 0;\n\n if (this._config.isLive) {\n // live stream: always use single normalized speed for size of stashSizeKB\n stashSizeKB = normalized;\n } else {\n if (normalized < 512) {\n stashSizeKB = normalized;\n } else if (normalized >= 512 && normalized <= 1024) {\n stashSizeKB = Math.floor(normalized * 1.5);\n } else {\n stashSizeKB = normalized * 2;\n }\n }\n\n if (stashSizeKB > 8192) {\n stashSizeKB = 8192;\n }\n\n var bufferSize = stashSizeKB * 1024 + 1024 * 1024 * 1; // stashSize + 1MB\n //console.log(\"_adjustStashSize: \" + bufferSize);\n\n if (this._bufferSize < bufferSize) {\n this._expandBuffer(bufferSize);\n }\n\n this._stashSize = stashSizeKB * 1024;\n };\n\n _proto._dispatchChunks = function _dispatchChunks(chunks, byteStart) {\n if (chunks === null) {\n if (this._IsM3u8Loader()) {\n if (byteStart > 1 && this._onComplete) {\n this._onComplete(-1);\n }\n\n return;\n }\n\n return this._onDataArrival(chunks, byteStart);\n }\n\n this._currentRange.to = byteStart + chunks.byteLength - 1;\n return this._onDataArrival(chunks, byteStart);\n };\n\n _proto._onURLRedirect = function _onURLRedirect(redirectedURL) {\n this._redirectedURL = redirectedURL;\n\n if (this._onRedirect) {\n this._onRedirect(redirectedURL);\n }\n };\n\n _proto._onContentLengthKnown = function _onContentLengthKnown(contentLength) {\n if (contentLength && this._fullRequestFlag) {\n this._totalLength = contentLength;\n this._fullRequestFlag = false;\n }\n };\n\n _proto._onLoaderChunkArrival = function _onLoaderChunkArrival(chunk, byteStart, receivedLength) {\n if (!this._onDataArrival) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_12__[\"IllegalStateException\"]('IOController: No existing consumer (onDataArrival) callback!');\n }\n\n if (this._paused) {\n return;\n }\n\n if (this._isEarlyEofReconnecting) {\n // Auto-reconnect for EarlyEof succeed, notify to upper-layer by callback\n this._isEarlyEofReconnecting = false;\n\n if (this._onRecoveredEarlyEof) {\n this._onRecoveredEarlyEof();\n }\n }\n\n if (chunk === null && receivedLength < 1) {\n this._dispatchChunks(chunk, byteStart);\n\n return;\n }\n\n this._speedSampler.addBytes(chunk.byteLength); // adjust stash buffer size according to network speed dynamically\n\n\n var KBps = this._speedSampler.lastSecondKBps;\n\n if (KBps !== 0) {\n var normalized = this._normalizeSpeed(KBps);\n\n if (this._speedNormalized !== normalized) {\n this._speedNormalized = normalized;\n\n this._adjustStashSize(normalized);\n }\n }\n\n if (!this._enableStash) {\n // disable stash\n //console.log(\"this._stashUsed: \" + this._stashUsed + \" / \" + this._bufferSize);\n if (this._stashUsed === 0) {\n // dispatch chunk directly to consumer;\n // check ret value (consumed bytes) and stash unconsumed to stashBuffer\n var consumed = this._dispatchChunks(chunk, byteStart);\n\n if (consumed < chunk.byteLength) {\n // unconsumed data remain.\n var remain = chunk.byteLength - consumed;\n\n if (remain > this._bufferSize) {\n this._expandBuffer(remain);\n }\n\n var stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);\n stashArray.set(new Uint8Array(chunk, consumed), 0);\n this._stashUsed += remain;\n this._stashByteStart = byteStart + consumed;\n }\n } else {\n // else: Merge chunk into stashBuffer, and dispatch stashBuffer to consumer.\n if (this._stashUsed + chunk.byteLength > this._bufferSize) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, '_expandBuffer... ' + (this._stashUsed + chunk.byteLength));\n\n this._expandBuffer(this._stashUsed + chunk.byteLength);\n }\n\n var _stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);\n\n _stashArray.set(new Uint8Array(chunk), this._stashUsed);\n\n this._stashUsed += chunk.byteLength;\n\n var _consumed = this._dispatchChunks(this._stashBuffer.slice(0, this._stashUsed), this._stashByteStart);\n\n if (_consumed < this._stashUsed && _consumed > 0) {\n // unconsumed data remain\n var remainArray = new Uint8Array(this._stashBuffer, _consumed);\n\n _stashArray.set(remainArray, 0);\n }\n\n this._stashUsed -= _consumed;\n this._stashByteStart += _consumed; //console.log(\"this._stashUsed: \" + this._stashUsed + \" / \" + this._bufferSize);\n }\n } else {\n // enable stash\n if (this._stashUsed === 0 && this._stashByteStart === 0) {\n // seeked? or init chunk?\n // This is the first chunk after seek action\n this._stashByteStart = byteStart;\n }\n\n if (this._stashUsed + chunk.byteLength <= this._stashSize) {\n // just stash\n var _stashArray2 = new Uint8Array(this._stashBuffer, 0, this._stashSize);\n\n _stashArray2.set(new Uint8Array(chunk), this._stashUsed);\n\n this._stashUsed += chunk.byteLength;\n } else {\n // stashUsed + chunkSize > stashSize, size limit exceeded\n var _stashArray3 = new Uint8Array(this._stashBuffer, 0, this._bufferSize);\n\n if (this._stashUsed > 0) {\n // There're stash datas in buffer\n // dispatch the whole stashBuffer, and stash remain data\n // then append chunk to stashBuffer (stash)\n var buffer = this._stashBuffer.slice(0, this._stashUsed);\n\n var _consumed2 = this._dispatchChunks(buffer, this._stashByteStart);\n\n if (_consumed2 < buffer.byteLength) {\n if (_consumed2 > 0) {\n var _remainArray = new Uint8Array(buffer, _consumed2);\n\n _stashArray3.set(_remainArray, 0);\n\n this._stashUsed = _remainArray.byteLength;\n this._stashByteStart += _consumed2;\n }\n } else {\n this._stashUsed = 0;\n this._stashByteStart += _consumed2;\n }\n\n if (this._stashUsed + chunk.byteLength > this._bufferSize) {\n this._expandBuffer(this._stashUsed + chunk.byteLength);\n\n _stashArray3 = new Uint8Array(this._stashBuffer, 0, this._bufferSize);\n }\n\n _stashArray3.set(new Uint8Array(chunk), this._stashUsed);\n\n this._stashUsed += chunk.byteLength;\n } else {\n // stash buffer empty, but chunkSize > stashSize (oh, holy shit)\n // dispatch chunk directly and stash remain data\n var _consumed3 = this._dispatchChunks(chunk, byteStart);\n\n if (_consumed3 < chunk.byteLength) {\n var _remain = chunk.byteLength - _consumed3;\n\n if (_remain > this._bufferSize) {\n this._expandBuffer(_remain);\n\n _stashArray3 = new Uint8Array(this._stashBuffer, 0, this._bufferSize);\n }\n\n _stashArray3.set(new Uint8Array(chunk, _consumed3), 0);\n\n this._stashUsed += _remain;\n this._stashByteStart = byteStart + _consumed3;\n }\n }\n }\n }\n };\n\n _proto._flushStashBuffer = function _flushStashBuffer(dropUnconsumed) {\n if (this._stashUsed > 0) {\n var buffer = this._stashBuffer.slice(0, this._stashUsed);\n\n var consumed = this._dispatchChunks(buffer, this._stashByteStart);\n\n var remain = buffer.byteLength - consumed;\n\n if (consumed < buffer.byteLength) {\n if (dropUnconsumed) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, remain + \" bytes unconsumed data remain when flush buffer, dropped\");\n } else {\n if (consumed > 0) {\n var stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);\n var remainArray = new Uint8Array(buffer, consumed);\n stashArray.set(remainArray, 0);\n this._stashUsed = remainArray.byteLength;\n this._stashByteStart += consumed;\n }\n\n return 0;\n }\n }\n\n this._stashUsed = 0;\n this._stashByteStart = 0;\n return remain;\n }\n\n return 0;\n };\n\n _proto._onLoaderComplete = function _onLoaderComplete(from, to) {\n // Force-flush stash buffer, and drop unconsumed data\n this._flushStashBuffer(true);\n\n if (from == to && to == -1) {\n if (this._onComplete) {\n this._onComplete(-1);\n }\n\n return;\n }\n\n if (this._onComplete) {\n this._onComplete(this._extraData);\n }\n };\n\n _proto._onLoaderError = function _onLoaderError(type, data) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].e(this.TAG, \"Loader error, code = \" + data.code + \", msg = \" + data.msg);\n\n this._flushStashBuffer(false);\n\n if (this._isEarlyEofReconnecting) {\n // Auto-reconnect for EarlyEof failed, throw UnrecoverableEarlyEof error to upper-layer\n this._isEarlyEofReconnecting = false;\n type = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].UNRECOVERABLE_EARLY_EOF;\n }\n\n switch (type) {\n case _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].EARLY_EOF:\n {\n if (!this._config.isLive) {\n // Do internal http reconnect if not live stream\n if (this._totalLength) {\n var nextFrom = this._currentRange.to + 1;\n\n if (nextFrom < this._totalLength) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Connection lost, trying reconnect...');\n this._isEarlyEofReconnecting = true;\n\n this._internalSeek(nextFrom, false);\n }\n\n return;\n } // else: We don't know totalLength, throw UnrecoverableEarlyEof\n\n } // live stream: throw UnrecoverableEarlyEof error to upper-layer\n\n\n type = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].UNRECOVERABLE_EARLY_EOF;\n break;\n }\n\n case _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].UNRECOVERABLE_EARLY_EOF:\n case _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].CONNECTING_TIMEOUT:\n case _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].HTTP_STATUS_CODE_INVALID:\n case _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].EXCEPTION:\n break;\n }\n\n if (this._onError) {\n this._onError(type, data);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_12__[\"RuntimeException\"]('IOException: ' + data.msg);\n }\n };\n\n _createClass(IOController, [{\n key: \"status\",\n get: function get() {\n return this._loader.status;\n }\n }, {\n key: \"extraData\",\n get: function get() {\n return this._extraData;\n },\n set: function set(data) {\n this._extraData = data;\n } // prototype: function onDataArrival(chunks: ArrayBuffer, byteStart: number): number\n\n }, {\n key: \"onDataArrival\",\n get: function get() {\n return this._onDataArrival;\n },\n set: function set(callback) {\n this._onDataArrival = callback;\n }\n }, {\n key: \"onSeeked\",\n get: function get() {\n return this._onSeeked;\n },\n set: function set(callback) {\n this._onSeeked = callback;\n } // prototype: function onError(type: number, info: {code: number, msg: string}): void\n\n }, {\n key: \"onError\",\n get: function get() {\n return this._onError;\n },\n set: function set(callback) {\n this._onError = callback;\n }\n }, {\n key: \"onComplete\",\n get: function get() {\n return this._onComplete;\n },\n set: function set(callback) {\n this._onComplete = callback;\n }\n }, {\n key: \"onRedirect\",\n get: function get() {\n return this._onRedirect;\n },\n set: function set(callback) {\n this._onRedirect = callback;\n }\n }, {\n key: \"onRecoveredEarlyEof\",\n get: function get() {\n return this._onRecoveredEarlyEof;\n },\n set: function set(callback) {\n this._onRecoveredEarlyEof = callback;\n }\n }, {\n key: \"currentURL\",\n get: function get() {\n return this._dataSource.url;\n }\n }, {\n key: \"hasRedirect\",\n get: function get() {\n return this._redirectedURL != null || this._dataSource.redirectedURL != undefined;\n }\n }, {\n key: \"currentRedirectedURL\",\n get: function get() {\n return this._redirectedURL || this._dataSource.redirectedURL;\n } // in KB/s\n\n }, {\n key: \"currentSpeed\",\n get: function get() {\n if (this._loaderClass === _xhr_range_loader_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]) {\n // SpeedSampler is inaccuracy if loader is RangeLoader\n return this._loader.currentSpeed;\n }\n\n return this._speedSampler.lastSecondKBps;\n }\n }, {\n key: \"loaderType\",\n get: function get() {\n return this._loader.type;\n }\n }]);\n\n return IOController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (IOController);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/io/io-controller.js?"); | |
| 3269 | - | |
| 3270 | -/***/ }), | |
| 3271 | - | |
| 3272 | -/***/ "./src/FlvPlayer/flv.js/io/loader.js": | |
| 3273 | -/*!*******************************************!*\ | |
| 3274 | - !*** ./src/FlvPlayer/flv.js/io/loader.js ***! | |
| 3275 | - \*******************************************/ | |
| 3276 | -/*! exports provided: LoaderStatus, LoaderErrors, BaseLoader */ | |
| 3277 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3278 | - | |
| 3279 | -"use strict"; | |
| 3280 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LoaderStatus\", function() { return LoaderStatus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LoaderErrors\", function() { return LoaderErrors; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BaseLoader\", function() { return BaseLoader; });\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar LoaderStatus = {\n kIdle: 0,\n kConnecting: 1,\n kBuffering: 2,\n kError: 3,\n kComplete: 4\n};\nvar LoaderErrors = {\n OK: 'OK',\n EXCEPTION: 'Exception',\n HTTP_STATUS_CODE_INVALID: 'HttpStatusCodeInvalid',\n CONNECTING_TIMEOUT: 'ConnectingTimeout',\n EARLY_EOF: 'EarlyEof',\n UNRECOVERABLE_EARLY_EOF: 'UnrecoverableEarlyEof'\n};\n/* Loader has callbacks which have following prototypes:\n * function onContentLengthKnown(contentLength: number): void\n * function onURLRedirect(url: string): void\n * function onDataArrival(chunk: ArrayBuffer, byteStart: number, receivedLength: number): void\n * function onError(errorType: number, errorInfo: {code: number, msg: string}): void\n * function onComplete(rangeFrom: number, rangeTo: number): void\n */\n\nvar BaseLoader = /*#__PURE__*/function () {\n function BaseLoader(typeName) {\n this._type = typeName || 'undefined';\n this._status = LoaderStatus.kIdle;\n this._needStash = false; // callbacks\n\n this._onContentLengthKnown = null;\n this._onURLRedirect = null;\n this._onDataArrival = null;\n this._onError = null;\n this._onComplete = null;\n }\n\n var _proto = BaseLoader.prototype;\n\n _proto.destroy = function destroy() {\n this._status = LoaderStatus.kIdle;\n this._onContentLengthKnown = null;\n this._onURLRedirect = null;\n this._onDataArrival = null;\n this._onError = null;\n this._onComplete = null;\n };\n\n _proto.isWorking = function isWorking() {\n return this._status === LoaderStatus.kConnecting || this._status === LoaderStatus.kBuffering;\n };\n\n // pure virtual\n _proto.open = function open(dataSource, range) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__[\"NotImplementedException\"]('Unimplemented abstract function!');\n };\n\n _proto.abort = function abort() {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__[\"NotImplementedException\"]('Unimplemented abstract function!');\n };\n\n _createClass(BaseLoader, [{\n key: \"type\",\n get: function get() {\n return this._type;\n }\n }, {\n key: \"status\",\n get: function get() {\n return this._status;\n }\n }, {\n key: \"needStashBuffer\",\n get: function get() {\n return this._needStash;\n }\n }, {\n key: \"onContentLengthKnown\",\n get: function get() {\n return this._onContentLengthKnown;\n },\n set: function set(callback) {\n this._onContentLengthKnown = callback;\n }\n }, {\n key: \"onURLRedirect\",\n get: function get() {\n return this._onURLRedirect;\n },\n set: function set(callback) {\n this._onURLRedirect = callback;\n }\n }, {\n key: \"onDataArrival\",\n get: function get() {\n return this._onDataArrival;\n },\n set: function set(callback) {\n this._onDataArrival = callback;\n }\n }, {\n key: \"onError\",\n get: function get() {\n return this._onError;\n },\n set: function set(callback) {\n this._onError = callback;\n }\n }, {\n key: \"onComplete\",\n get: function get() {\n return this._onComplete;\n },\n set: function set(callback) {\n this._onComplete = callback;\n }\n }]);\n\n return BaseLoader;\n}();\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/io/loader.js?"); | |
| 3281 | - | |
| 3282 | -/***/ }), | |
| 3283 | - | |
| 3284 | -/***/ "./src/FlvPlayer/flv.js/io/m3u8-loader.js": | |
| 3285 | -/*!************************************************!*\ | |
| 3286 | - !*** ./src/FlvPlayer/flv.js/io/m3u8-loader.js ***! | |
| 3287 | - \************************************************/ | |
| 3288 | -/*! exports provided: default */ | |
| 3289 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3290 | - | |
| 3291 | -"use strict"; | |
| 3292 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _loader_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loader.js */ \"./src/FlvPlayer/flv.js/io/loader.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../common/common */ \"./src/common/common.js\");\n/* harmony import */ var webworkify_webpack__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! webworkify-webpack */ \"./node_modules/webworkify-webpack/index.js\");\n/* harmony import */ var webworkify_webpack__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(webworkify_webpack__WEBPACK_IMPORTED_MODULE_4__);\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\nvar M3U8Loader = /*#__PURE__*/function (_BaseLoader) {\n _inheritsLoose(M3U8Loader, _BaseLoader);\n\n M3U8Loader.isSupported = function isSupported() {\n return true;\n };\n\n function M3U8Loader() {\n var _this;\n\n _this = _BaseLoader.call(this, 'm3u8-loader') || this;\n _this.TAG = 'M3U8Loader';\n _this._needStash = true;\n _this.url = '';\n _this.startPlayTime = 0;\n _this._requestAbort = false;\n _this._receivedLength = 0;\n _this.getNextFileFlag = true;\n _this.pauseDisplay = false;\n _this.totalDuration = 0;\n _this.seeking = false;\n return _this;\n }\n\n var _proto = M3U8Loader.prototype;\n\n _proto.destroy = function destroy() {\n this.abort();\n\n _BaseLoader.prototype.destroy.call(this);\n };\n\n _proto.GetM3u8TotalDuration = function GetM3u8TotalDuration() {\n return this.totalDuration;\n };\n\n _proto.createDownloadWorker = function createDownloadWorker() {\n if (this.downloadWorker) return; // 2023-09-05 新增ts\n\n var ext = this.url.substr(this.url.lastIndexOf('.') + 1);\n\n if (ext) {\n var extLowerCase = ext.toLowerCase();\n\n if (extLowerCase.indexOf('ts') > -1) {\n if (typeof Worker !== 'undefined') {\n var w;\n\n try {\n w = this.downloadWorker = webworkify_webpack__WEBPACK_IMPORTED_MODULE_4__(/*require.resolve*/(/*! ../../downloadTsWorker.js */ \"./src/FlvPlayer/downloadTsWorker.js\"));\n this.onwmsg = this.onWorkerMessage.bind(this);\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tGetTsStream\"],\n url: this.url,\n time: this.startPlayTime,\n t: 0\n };\n w.postMessage(objData); //, [objData.canvas]);\n\n w.addEventListener('message', this.onwmsg);\n\n w.onerror = function (event) {};\n } catch (err) {\n console.log('Create download Worker fail: ' + err);\n\n if (w) {// revoke the Object URL that was used to create demuxer worker, so as not to leak it\n //global.URL.revokeObjectURL(w.objectURL);\n }\n\n this.downloadWorker = undefined;\n }\n } else {\n console.log('Unsupport worker...');\n }\n\n return;\n }\n }\n\n if (typeof Worker !== 'undefined') {\n var _w;\n\n try {\n _w = this.downloadWorker = webworkify_webpack__WEBPACK_IMPORTED_MODULE_4__(/*require.resolve*/(/*! ../../downloadWorker.js */ \"./src/FlvPlayer/downloadWorker.js\"));\n this.onwmsg = this.onWorkerMessage.bind(this);\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tOpenStream\"],\n url: this.url,\n time: this.startPlayTime\n };\n\n _w.postMessage(objData); //, [objData.canvas]);\n\n\n _w.addEventListener('message', this.onwmsg);\n\n _w.onerror = function (event) {};\n } catch (err) {\n console.log('Create download Worker fail: ' + err);\n\n if (_w) {// revoke the Object URL that was used to create demuxer worker, so as not to leak it\n //global.URL.revokeObjectURL(w.objectURL);\n }\n\n this.downloadWorker = undefined;\n }\n } else {\n console.log('Unsupport worker...');\n }\n };\n\n _proto.setStartPlaySecs = function setStartPlaySecs(secs) {\n this.startPlayTime = secs;\n };\n\n _proto.open = function open(dataSource) {\n try {\n this.url = dataSource.url; //this.startPlayTime = dataSource.startPlaySecs;\n\n this.createDownloadWorker();\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kConnecting;\n } catch (e) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError;\n var info = {\n code: e.code,\n msg: e.message\n };\n\n if (this._onError) {\n this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].EXCEPTION, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"RuntimeException\"](info.msg);\n }\n }\n };\n\n _proto.abort = function abort() {\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tCloseStream\"]\n };\n\n if (this.downloadWorker && this.downloadWorker !== undefined) {\n this.downloadWorker.postMessage(objData);\n }\n\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kComplete;\n };\n\n _proto._onWebSocketOpen = function _onWebSocketOpen(e) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kBuffering;\n };\n\n _proto._onWebSocketClose = function _onWebSocketClose(e) {\n if (this._requestAbort === true) {\n this._requestAbort = false;\n return;\n }\n\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kComplete;\n\n if (this._onComplete) {\n this._onComplete(0, this._receivedLength - 1);\n }\n };\n\n _proto.seek = function seek(seekValue, seekType) {\n this.pauseDisplay = false;\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tSeekStream\"],\n type: seekType,\n time: seekValue\n };\n\n if (this.downloadWorker && this.downloadWorker !== undefined) {\n this.downloadWorker.postMessage(objData);\n this.seeking = true; //console.log(\"seeking...\");\n } else {}\n };\n\n _proto.pause = function pause() {\n this.pauseDisplay = true;\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tPauseStream\"]\n };\n\n if (this.downloadWorker && this.downloadWorker !== undefined) {\n this.downloadWorker.postMessage(objData);\n }\n };\n\n _proto.resume = function resume() {\n this.pauseDisplay = false;\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tResumeStream\"]\n };\n\n if (this.downloadWorker && this.downloadWorker !== undefined) {\n this.downloadWorker.postMessage(objData);\n }\n };\n\n _proto.onWorkerMessage = function onWorkerMessage(ev) {\n var data = ev.data; //console.log(\"FlvPlayer::MainThread: recv data.\");\n\n switch (data.cmd) {\n case _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tOpenStream\"]:\n //case common.tGetTsStreamRsp:\n {\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tGetTsStream\"],\n t: 0\n };\n this.downloadWorker.postMessage(objData);\n }\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tGetTsStreamRsp\"]:\n //��һ��ts�ļ��������, �ᴫ�ݸ���Ϣ\n this.getNextFileFlag = true;\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tGetTsComplete\"]:\n this.playComplete = true; //�ط����\n\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tDisconnect\"]:\n {\n console.log('disconnect..');\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tReOpenStream\"]\n };\n this.downloadWorker.postMessage(objData);\n }\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tCloseStream\"]:\n if (data.workerId == _common_common__WEBPACK_IMPORTED_MODULE_3__[\"DOWNLOAD_WORKER_ID\"]) {\n this.downloadWorker.terminate();\n this.downloadWorker = null; //console.log(\"download worker terminate\");\n } else if (data.workerId == _common_common__WEBPACK_IMPORTED_MODULE_3__[\"DECODE_WORKER_ID\"]) {\n this.decodeWorker.terminate();\n this.decodeWorker = null; //console.log(\"Decode worker terminate.\");\n\n if (this.soundPlayer) {\n this.soundPlayer.destroy();\n delete this.soundPlayer;\n this.soundPlayer = null;\n }\n\n if (this.webGLPlayer) {\n this.webGLPlayer.renderVideoFrame(null, 0, 0);\n }\n } else if (data.workerId == _common_common__WEBPACK_IMPORTED_MODULE_3__[\"RENDER_WORKER_ID\"]) {\n this.renderWorker.terminate();\n this.renderWorker = null; //console.log(\"Render worker terminate.\");\n }\n\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tFrameData\"]:\n if (data.workerId == _common_common__WEBPACK_IMPORTED_MODULE_3__[\"DOWNLOAD_WORKER_ID\"]) {\n //�����̴߳�����������, ת�������߳�\n //������HLS, ���Դ˴����ݵ������ڶ�ʱ���ڻ�dz���, �˴������������߳�, �������л��洦��\n //console.log(\"ts frame...\");\n var chunk = data.dat;\n var byteStart = this._receivedLength;\n this._receivedLength += chunk.byteLength;\n\n if (this._onDataArrival) {\n this._onDataArrival(chunk, byteStart, this._receivedLength);\n } //console.log(\"Get Next ts file...\");\n\n /*\n if (!this.pauseDisplay) {\n if (this.getNextFileFlag) {\n var objData = {\n cmd: common.tGetTsStream\n };\n this.downloadWorker.postMessage(objData);\n this.getNextFileFlag = false;\n }\n }\n */\n\n\n break;\n\n if (this.decodeWorker) {\n console.log('send to decode worker...');\n\n if (this.lastPTS > 0) {\n var n = (data.pts - this.lastPTS) / 90;\n\n if (n != this.intervalMs) {\n this.intervalMs = n;\n\n if (n >= 2) {\n n *= 0.9;\n }\n\n var objData = {\n cmd: _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tVidInterval\"],\n interval: n\n };\n this.decodeWorker.postMessage(objData);\n }\n }\n\n this.lastPTS = data.pts; //var bufdata = new Uint8Array(data.dat);\n //var objData = {\n //\tcmd: common.tFrameData,\n //\tmediaType: data.mediaType,\n //\tcodecId: data.codecId,\n //\tplayTimeSec: data.playTimeSec,\n //\tsamplerate: data.samplerate,\n //\tchannelNum: data.channelNum,\n //\tbitPerSample: data.bitPerSample,\n //\tdat: bufdata\n //};\n //this.decodeWorker.postMessage(objData, [objData.dat.buffer]);\n\n this.decodeWorker.postMessage(data);\n }\n } else if (data.workerId == _common_common__WEBPACK_IMPORTED_MODULE_3__[\"DECODE_WORKER_ID\"]) {\n //�����ǰ��ͣ, ����ʾ\n if (this.pauseDisplay) break; //�����̴߳�����������, ������ʾ\n\n if (data.mediaType == 1) {\n //VIDEO\n this.canvas.width = data.width;\n this.canvas.height = data.height;\n this.webGLPlayer.renderVideoFrame(data.dat, data.width, data.height);\n this.OnUpdatePlayInfo(data.playTimeSec, data.frameNum);\n } else if (data.mediaType == 2) {\n //AUDIO\n if (this.soundPlayer == null) {\n this.OpenAudioPlayer(data.fmt, data.ch, data.samplerate);\n }\n\n if (this.soundPlayer != null) {\n this.soundPlayer.play(data.dat);\n }\n }\n }\n\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tMediaInfo\"]:\n this.totalDuration = data.duration;\n _common_common__WEBPACK_IMPORTED_MODULE_3__[\"setLiveStreamType\"](data.live);\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tGetTsStream\"]:\n if (!this.pauseDisplay) {\n if (this.getNextFileFlag) {\n this.downloadWorker.postMessage(data);\n this.getNextFileFlag = false;\n }\n }\n\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tSeekStream\"]:\n this.seeking = false; //console.log(\"seek ok.\");\n //data.type\n\n break;\n\n case _common_common__WEBPACK_IMPORTED_MODULE_3__[\"tResetMSE\"]:\n //data.fileSequence;\n if (this._onDataArrival) {\n this._receivedLength = 0;\n\n this._onDataArrival(null, data.fileSequence, 0);\n }\n\n break;\n\n default:\n break;\n }\n };\n\n _proto._dispatchArrayBuffer = function _dispatchArrayBuffer(arraybuffer) {\n var chunk = arraybuffer;\n var byteStart = this._receivedLength;\n this._receivedLength += chunk.byteLength;\n\n if (this._onDataArrival) {\n this._onDataArrival(chunk, byteStart, this._receivedLength);\n }\n };\n\n _proto._onWebSocketError = function _onWebSocketError(e) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError;\n var info = {\n code: e.code,\n msg: e.message\n };\n\n if (this._onError) {\n this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].EXCEPTION, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"RuntimeException\"](info.msg);\n }\n };\n\n return M3U8Loader;\n}(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"BaseLoader\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (M3U8Loader);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/io/m3u8-loader.js?"); | |
| 3293 | - | |
| 3294 | -/***/ }), | |
| 3295 | - | |
| 3296 | -/***/ "./src/FlvPlayer/flv.js/io/param-seek-handler.js": | |
| 3297 | -/*!*******************************************************!*\ | |
| 3298 | - !*** ./src/FlvPlayer/flv.js/io/param-seek-handler.js ***! | |
| 3299 | - \*******************************************************/ | |
| 3300 | -/*! exports provided: default */ | |
| 3301 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3302 | - | |
| 3303 | -"use strict"; | |
| 3304 | -eval("__webpack_require__.r(__webpack_exports__);\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar ParamSeekHandler = /*#__PURE__*/function () {\n function ParamSeekHandler(paramStart, paramEnd) {\n this._startName = paramStart;\n this._endName = paramEnd;\n }\n\n var _proto = ParamSeekHandler.prototype;\n\n _proto.getConfig = function getConfig(baseUrl, range) {\n var url = baseUrl;\n\n if (range.from !== 0 || range.to !== -1) {\n var needAnd = true;\n\n if (url.indexOf('?') === -1) {\n url += '?';\n needAnd = false;\n }\n\n if (needAnd) {\n url += '&';\n }\n\n url += this._startName + \"=\" + range.from.toString();\n\n if (range.to !== -1) {\n url += \"&\" + this._endName + \"=\" + range.to.toString();\n }\n }\n\n return {\n url: url,\n headers: {}\n };\n };\n\n _proto.removeURLParameters = function removeURLParameters(seekedURL) {\n var baseURL = seekedURL.split('?')[0];\n var params = undefined;\n var queryIndex = seekedURL.indexOf('?');\n\n if (queryIndex !== -1) {\n params = seekedURL.substring(queryIndex + 1);\n }\n\n var resultParams = '';\n\n if (params != undefined && params.length > 0) {\n var pairs = params.split('&');\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i].split('=');\n var requireAnd = i > 0;\n\n if (pair[0] !== this._startName && pair[0] !== this._endName) {\n if (requireAnd) {\n resultParams += '&';\n }\n\n resultParams += pairs[i];\n }\n }\n }\n\n return resultParams.length === 0 ? baseURL : baseURL + '?' + resultParams;\n };\n\n return ParamSeekHandler;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ParamSeekHandler);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/io/param-seek-handler.js?"); | |
| 3305 | - | |
| 3306 | -/***/ }), | |
| 3307 | - | |
| 3308 | -/***/ "./src/FlvPlayer/flv.js/io/range-seek-handler.js": | |
| 3309 | -/*!*******************************************************!*\ | |
| 3310 | - !*** ./src/FlvPlayer/flv.js/io/range-seek-handler.js ***! | |
| 3311 | - \*******************************************************/ | |
| 3312 | -/*! exports provided: default */ | |
| 3313 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3314 | - | |
| 3315 | -"use strict"; | |
| 3316 | -eval("__webpack_require__.r(__webpack_exports__);\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar RangeSeekHandler = /*#__PURE__*/function () {\n function RangeSeekHandler(zeroStart) {\n this._zeroStart = zeroStart || false;\n }\n\n var _proto = RangeSeekHandler.prototype;\n\n _proto.getConfig = function getConfig(url, range) {\n var headers = {};\n\n if (range.from !== 0 || range.to !== -1) {\n var param;\n\n if (range.to !== -1) {\n param = \"bytes=\" + range.from.toString() + \"-\" + range.to.toString();\n } else {\n param = \"bytes=\" + range.from.toString() + \"-\";\n }\n\n headers['Range'] = param;\n } else if (this._zeroStart) {\n headers['Range'] = 'bytes=0-';\n }\n\n return {\n url: url,\n headers: headers\n };\n };\n\n _proto.removeURLParameters = function removeURLParameters(seekedURL) {\n return seekedURL;\n };\n\n return RangeSeekHandler;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (RangeSeekHandler);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/io/range-seek-handler.js?"); | |
| 3317 | - | |
| 3318 | -/***/ }), | |
| 3319 | - | |
| 3320 | -/***/ "./src/FlvPlayer/flv.js/io/rtsp-stream-loader.js": | |
| 3321 | -/*!*******************************************************!*\ | |
| 3322 | - !*** ./src/FlvPlayer/flv.js/io/rtsp-stream-loader.js ***! | |
| 3323 | - \*******************************************************/ | |
| 3324 | -/*! exports provided: default */ | |
| 3325 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3326 | - | |
| 3327 | -"use strict"; | |
| 3328 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _loader_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loader.js */ \"./src/FlvPlayer/flv.js/io/loader.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\n/* harmony import */ var _rtspclient_rtspHandler_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./rtspclient/rtspHandler.js */ \"./src/FlvPlayer/flv.js/io/rtspclient/rtspHandler.js\");\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n // For RTSP over WebSocket live stream\n\nvar RtspStreamLoader = /*#__PURE__*/function (_BaseLoader) {\n _inheritsLoose(RtspStreamLoader, _BaseLoader);\n\n RtspStreamLoader.isSupported = function isSupported() {\n try {\n return typeof self.WebSocket !== 'undefined';\n } catch (e) {\n return false;\n }\n };\n\n function RtspStreamLoader() {\n var _this;\n\n _this = _BaseLoader.call(this, 'RtspStream-loader') || this;\n _this.TAG = 'RtspStreamLoader';\n _this._needStash = true;\n _this._ws = null;\n _this._RtspHandler = null;\n _this._requestAbort = false;\n _this._receivedLength = 0;\n _this._retryConnectTimes = 0;\n _this._triggerReconnectingNotify = true;\n _this._triggerReconnectSuccessNotify = true;\n _this._procMediaInfo = true;\n _this._heartbeatTime = 0;\n return _this;\n }\n\n var _proto = RtspStreamLoader.prototype;\n\n _proto.destroy = function destroy() {\n if (this._ws) {\n this.abort();\n }\n\n _BaseLoader.prototype.destroy.call(this);\n };\n\n _proto.rtspCallbackEvent = function rtspCallbackEvent(self, eventCode, redirURL, dataSource) {\n //console.log(\"EventCode: \" + eventCode + \" redirect:\" + redirURL);\n self.abort();\n dataSource.url = redirURL;\n self.open(dataSource);\n };\n\n _proto.open = function open(dataSource) {\n try {\n this._retryConnectTimes++; //֪ͨ�ϲ�, ��ǰ��������, 1Ϊ��һ������, ʹ�����еķ���_onDataArrival\n\n if (this._triggerReconnectingNotify) {\n this._triggerReconnectingNotify = false;\n\n if (this._onDataArrival) {\n this._onDataArrival(null, -this._retryConnectTimes, 0);\n }\n }\n\n this._triggerReconnectSuccessNotify = true;\n var wsURL = dataSource.url.replace('rtsp', 'ws');\n ;\n var ws = this._ws = new self.WebSocket(wsURL);\n this._RtspHandler = new _rtspclient_rtspHandler_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"](dataSource.url, ws, this.rtspCallbackEvent, this, dataSource); //ws.binaryType = 'arraybuffer';\n\n ws.onopen = this._onWebSocketOpen.bind(this);\n ws.onclose = this._onWebSocketClose.bind(this);\n ws.onmessage = this._onWebSocketMessage.bind(this);\n ws.onerror = this._onWebSocketError.bind(this); //console.log(\"ws.binaryType:\" + ws.binaryType);\n\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kConnecting;\n } catch (e) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError;\n var info = {\n code: e.code,\n msg: e.message\n };\n\n if (this._onError) {\n this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].EXCEPTION, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"RuntimeException\"](info.msg);\n }\n }\n };\n\n _proto.abort = function abort() {\n //console.log(\"rtsp-stream-loader.js::stop\");\n var ws = this._ws;\n\n if (ws && (ws.readyState === 0 || ws.readyState === 1)) {\n // CONNECTING || OPEN\n this._requestAbort = true;\n ws.close();\n }\n\n this._ws = null;\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kComplete;\n };\n\n _proto.pause = function pause() {\n if (this._RtspHandler) {\n this._RtspHandler.sendPause();\n }\n };\n\n _proto.resume = function resume() {\n if (this._RtspHandler) {\n this._RtspHandler.sendPlay();\n }\n };\n\n _proto.scale = function scale(scaleValue) {\n if (this._RtspHandler) {\n this._RtspHandler.sendScale(scaleValue);\n }\n };\n\n _proto._onWebSocketOpen = function _onWebSocketOpen(e) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kBuffering; //Log.i(this.TAG, 'WebSocketOpen: ' + e.target.url);\n\n this._RtspHandler.sendDescribe();\n };\n\n _proto._onWebSocketClose = function _onWebSocketClose(e) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].e(this.TAG, 'onWebSocketClose');\n\n if (this._requestAbort === true) {\n this._requestAbort = false;\n return;\n }\n\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kComplete;\n\n if (this._onComplete) {\n //this._onComplete(0, this._receivedLength - 1);\n this._onComplete(-1, -1); //this._receivedLength - 1);\n\n }\n };\n\n _proto._onWebSocketMessage = function _onWebSocketMessage(e) {\n var _this2 = this;\n\n //Log.e(this.TAG, '_onWebSocketMessage: ' + e);\n if (e.data instanceof ArrayBuffer) {\n console.log('RTP Data1: ' + e.data); //this._ws.binaryType = 'arraybuffer';\n\n this._dispatchArrayBuffer(e.data);\n } else if (e.data instanceof Blob) {\n var reader = new FileReader();\n\n reader.onload = function () {\n //var data = new Uint8Array(reader.result);\n //console.log(\"RTP Data2: \" + data);\n _this2._dispatchArrayBuffer(reader.result);\n };\n\n reader.readAsArrayBuffer(e.data);\n } else if (e.data instanceof String) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].d(this.TAG, 'response:' + e.data);\n } else if (e.type == 'message') {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].d(this.TAG, 'response message:' + e.data);\n\n this._RtspHandler.parseResponseStr(e.data);\n } else {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError;\n var info = {\n code: -1,\n msg: 'Unsupported WebSocket message type: ' + e.data.constructor.name\n };\n\n if (this._onError) {\n this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].EXCEPTION, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"RuntimeException\"](info.msg);\n }\n }\n };\n\n _proto._dispatchArrayBuffer = function _dispatchArrayBuffer(arraybuffer) {\n //var data = new Uint8Array(reader.result);\n //let chunk = new Uint8Array(arraybuffer);\n var chunk = arraybuffer;\n var byteStart = this._receivedLength;\n this._receivedLength += chunk.byteLength;\n\n if (this._procMediaInfo) {\n this._procMediaInfo = false;\n\n var mediaInfo = this._RtspHandler.getMediaInfo();\n\n if (this._onDataArrival) {\n this._onDataArrival(mediaInfo, byteStart, 1);\n }\n }\n\n if (this._heartbeatTime < 1) {\n this._heartbeatTime = Date.parse(new Date());\n }\n\n var timestamp = Date.parse(new Date());\n\n if ((timestamp - this._heartbeatTime) / 1000 > 10) {\n //��������\n this._heartbeatTime = timestamp; //this._RtspHandler.sendOptions();\n }\n\n if (this._onDataArrival) {\n this._onDataArrival(chunk, byteStart, this._receivedLength);\n } //֪ͨ�ϲ�, ��ǰ��������, 1Ϊ��һ������, ʹ�����еķ���_onDataArrival\n\n\n if (this._triggerReconnectSuccessNotify) {\n this._triggerReconnectSuccessNotify = false;\n\n if (this._onDataArrival) {\n //console.log(\"fetch-stream-loader.js::Connected:\" + this._retryConnectTimes);\n this._onDataArrival(null, this._retryConnectTimes, 0);\n\n this._retryConnectTimes++;\n }\n }\n };\n\n _proto._onWebSocketError = function _onWebSocketError(e) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].e(this.TAG, '_onWebSocketError: ' + e);\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError;\n var info = {\n code: e.code,\n msg: e.message\n };\n\n if (this._onError) {\n this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].EXCEPTION, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"RuntimeException\"](info.msg);\n }\n };\n\n return RtspStreamLoader;\n}(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"BaseLoader\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (RtspStreamLoader);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/io/rtsp-stream-loader.js?"); | |
| 3329 | - | |
| 3330 | -/***/ }), | |
| 3331 | - | |
| 3332 | -/***/ "./src/FlvPlayer/flv.js/io/rtspclient/rtspHandler.js": | |
| 3333 | -/*!***********************************************************!*\ | |
| 3334 | - !*** ./src/FlvPlayer/flv.js/io/rtspclient/rtspHandler.js ***! | |
| 3335 | - \***********************************************************/ | |
| 3336 | -/*! exports provided: default */ | |
| 3337 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3338 | - | |
| 3339 | -"use strict"; | |
| 3340 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../common/common */ \"./src/common/common.js\");\n\n\n\nvar RTSP_CLIENT_NAME = 'SYNC RTSP CLIENT v2020.07.10';\nvar RTSP_AUTH_TYPE_BASIC = 1;\nvar RTSP_AUTH_TYPE_DIGEST = 2;\nvar RTSP_STATE_INIT = 0;\nvar RTSP_STATE_OPTIONS = 1;\nvar RTSP_STATE_DESCRIBE = 2;\nvar RTSP_STATE_SETUP = 3;\nvar RTSP_STATE_PLAY = 4;\nvar RTSP_STATE_PAUSE = 5;\nvar RTSP_STATE_TEARDOWN = 6;\nvar RTSP_STATE_HEARTBEAT = 7;\n\nvar RtspHandler = /*#__PURE__*/function () {\n function RtspHandler(rtspUrl, ws, callbackPtr, userPtr, dataSource) {\n this.TAG = 'RtspHandler';\n this._ws = ws;\n this.rtspUrl = rtspUrl;\n this.rtspSeq = 1;\n this.state = RTSP_STATE_INIT;\n this.authType = RTSP_AUTH_TYPE_BASIC;\n this.username = '';\n this.realm = '';\n this.nonce = '';\n this.authBasicStr = '';\n this.authDigestStr = '';\n this.videoTrack = '';\n this.audioTrack = '';\n this.metadataTrack = '';\n this.contentBaseStr = '';\n this.setupStreamNum = 0;\n this.videoSessionId = '';\n this.audioSessionId = '';\n this.metadataSessionId = '';\n this.mediaInfo = {\n videoCodecId: 0,\n audioCodecId: 0\n };\n this.RTSP_VER_STR = 'RTSP/1.0';\n this.callbackPtr = callbackPtr;\n this.userPtr = userPtr;\n this.dataSource = dataSource;\n }\n\n var _proto = RtspHandler.prototype;\n\n _proto.destroy = function destroy() {};\n\n _proto.getMediaInfo = function getMediaInfo() {\n return this.mediaInfo;\n };\n\n _proto.sendPacket = function sendPacket(commandStr) {\n //Log.i(this.TAG, \"REQUEST: \" + commandStr);\n //console.log(\"current ws.binaryType:\" + this._ws.binaryType);\n //this._ws.binaryType = 'blob';\n this._ws.send(commandStr);\n };\n\n _proto.makeHeader = function makeHeader(cmd, track) {\n var pbuf = '';\n\n if (this.contentBaseStr == '') {\n pbuf = cmd + ' ' + this.rtspUrl;\n } else {\n pbuf = cmd + ' ' + this.contentBaseStr;\n }\n\n if (track && track != undefined) {\n var len = this.contentBaseStr.length;\n\n if (this.contentBaseStr[len - 1] != '/') {\n pbuf += '/' + track;\n } else {\n pbuf += track;\n }\n }\n\n pbuf += ' ' + this.RTSP_VER_STR + '\\r\\n';\n pbuf += 'CSeq: ' + this.rtspSeq + '\\r\\n';\n this.rtspSeq++;\n return pbuf;\n };\n\n _proto.getLineString = function getLineString(str, symbol) {\n var i = 0;\n var pbuf = '';\n\n for (i = 0; i < str.length; i++) {\n if (str[i] == '\\r' || str[i] == '\\n' || symbol && symbol != undefined && symbol == str[i] || i + 1 == str.length) {\n return pbuf;\n } else {\n pbuf += str[i];\n }\n }\n\n return pbuf;\n };\n\n _proto.FindStringByStr = function FindStringByStr(responseStr, indexStr) {\n var indexOfValue = responseStr.indexOf(indexStr);\n\n if (indexOfValue >= 0) {\n var mSubStr = responseStr.substr(indexOfValue);\n return mSubStr;\n }\n\n return null;\n };\n\n _proto.rtspParseDESCRIBE = function rtspParseDESCRIBE(responseStr) {\n var videoPayloadCodec = '';\n var videoPayloadValue = 0;\n var audioPayloadCodec = '';\n var audioPayloadValue = 0;\n var metadataPayloadCodec = '';\n var metadataPayloadValue = 0;\n var videoTrack = '';\n var audioTrack = '';\n var metadataTrack = '';\n var contentBaseStr = '';\n var indexOfValue = responseStr.indexOf('RTSP/1.0 401 Unauthorized');\n\n if (indexOfValue >= 0) {\n //console.log(\"Unauthorized\");\n var authType = responseStr.indexOf('WWW-Authenticate: Digest');\n\n if (authType > 0) {} else {\n authType = responseStr.indexOf('WWW-Authenticate: Basic');\n }\n\n return 401;\n }\n\n indexOfValue = responseStr.indexOf('RTSP/1.0 302');\n\n if (indexOfValue >= 0) {\n var url = '';\n indexOfValue = responseStr.indexOf('Location: ');\n\n if (indexOfValue >= 0) {\n var s = responseStr.substring(indexOfValue, responseStr.length);\n var endPos = s.indexOf('\\r', 0);\n url = s.substring(10, endPos); //console.log(\"Location:\" + url);\n }\n\n if (this.callbackPtr && this.userPtr) {\n this.callbackPtr(this.userPtr, 302, url, this.dataSource);\n }\n\n return 302;\n }\n\n indexOfValue = responseStr.indexOf('200 OK');\n\n if (indexOfValue < 0) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].e(this.TAG, 'DESCRIBE ERROR');\n return -1;\n } //var itemArray = responseStr.split(\"\\r\\n\");\n //var i=0;\n //for (i=0; i<itemArray.length; i++)\n //{\n //if (itemArray[i] ==\n //}\n\n\n var mString = this.FindStringByStr(responseStr, 'm=video'); //console.log(\"mVideo: \" + mString);\n\n if (mString) {\n var rtpmapStr = this.FindStringByStr(mString, 'a=rtpmap');\n\n if (rtpmapStr) {\n var lineStr = this.getLineString(rtpmapStr); //console.log(\"lineStr:\" + lineStr);\n\n var array = lineStr.split(' ');\n\n if (array.length > 0) {\n var payloadValue = array[0].substr(9); //console.log(\"payloadValue: \" + payloadValue);\n\n videoPayloadValue = parseInt(payloadValue);\n }\n\n if (array.length > 1) {\n var payloadCode = array[1].split('/');\n\n if (payloadCode.length > 0) {\n //console.log(\"payloadCode: \" + payloadCode[0]);\n videoPayloadCodec = payloadCode[0];\n }\n }\n }\n\n var trackIdStr = this.FindStringByStr(mString, 'trackID=');\n\n if (trackIdStr) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'not process');\n } else {\n trackIdStr = this.FindStringByStr(mString, 'a=control:');\n\n if (trackIdStr) {\n var lineStr = this.getLineString(trackIdStr);\n var arr = lineStr.split(':');\n\n if (arr.length > 1) {\n videoTrack = arr[1];\n }\n }\n }\n /*\n m=video 0 RTP/AVP 96\n c=IN IP4 0.0.0.0\n b=AS:2097152\n a=rtpmap:96 H264/90000\n a=fmtp:96 packetization-mode=1;sprop-parameter-sets=\n a=control:track1\n m=audio 0 RTP/AVP 0\n c=IN IP4 0.0.0.0\n b=AS:500\n a=control:track2\n */\n\n }\n\n mString = this.FindStringByStr(responseStr, 'm=audio'); //console.log(\"mAudio: \" + mString);\n\n if (mString) {\n var rtpmapStr = this.FindStringByStr(mString, 'a=rtpmap');\n\n if (rtpmapStr) {\n var lineStr = this.getLineString(rtpmapStr); //console.log(\"lineStr:\" + lineStr);\n\n var array = lineStr.split(' ');\n\n if (array.length > 0) {\n var payloadValue = array[0].substr(9); //console.log(\"payloadValue: \" + payloadValue);\n\n audioPayloadValue = parseInt(payloadValue);\n }\n\n if (array.length > 1) {\n var payloadCode = array[1].split('/');\n\n if (payloadCode.length > 0) {\n //console.log(\"payloadCode: \" + payloadCode[0]);\n audioPayloadCodec = payloadCode[0];\n }\n }\n }\n\n var trackIdStr = this.FindStringByStr(mString, 'trackID=');\n\n if (trackIdStr) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'not process');\n } else {\n trackIdStr = this.FindStringByStr(mString, 'a=control:');\n\n if (trackIdStr) {\n var lineStr = this.getLineString(trackIdStr);\n var arr = lineStr.split(':');\n\n if (arr.length > 1) {\n audioTrack = arr[1];\n }\n }\n }\n /*\n m=video 0 RTP/AVP 96\n c=IN IP4 0.0.0.0\n b=AS:2097152\n a=rtpmap:96 H264/90000\n a=fmtp:96 packetization-mode=1;sprop-parameter-sets=\n a=control:track1\n m=audio 0 RTP/AVP 0\n c=IN IP4 0.0.0.0\n b=AS:500\n a=control:track2\n */\n\n } //===============\n\n\n mString = this.FindStringByStr(responseStr, 'm=metadata');\n\n if (mString) {\n var rtpmapStr = this.FindStringByStr(mString, 'a=rtpmap');\n\n if (rtpmapStr) {\n var lineStr = this.getLineString(rtpmapStr); //console.log(\"lineStr:\" + lineStr);\n\n var array = lineStr.split(' ');\n\n if (array.length > 0) {\n var payloadValue = array[0].substr(9); //console.log(\"payloadValue: \" + payloadValue);\n\n metadataPayloadValue = parseInt(payloadValue);\n }\n\n if (array.length > 1) {\n var payloadCode = array[1].split('/');\n\n if (payloadCode.length > 0) {\n //console.log(\"payloadCode: \" + payloadCode[0]);\n metadataPayloadCodec = payloadCode[0];\n }\n }\n }\n\n var trackIdStr = this.FindStringByStr(mString, 'trackID=');\n\n if (trackIdStr) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'not process');\n } else {\n trackIdStr = this.FindStringByStr(mString, 'a=control:');\n\n if (trackIdStr) {\n var lineStr = this.getLineString(trackIdStr);\n var arr = lineStr.split(':');\n\n if (arr.length > 1) {\n metadataTrack = arr[1];\n }\n }\n }\n /*\n m=video 0 RTP/AVP 96\n c=IN IP4 0.0.0.0\n b=AS:2097152\n a=rtpmap:96 H264/90000\n a=fmtp:96 packetization-mode=1;sprop-parameter-sets=\n a=control:track1\n m=audio 0 RTP/AVP 0\n c=IN IP4 0.0.0.0\n b=AS:500\n a=control:track2\n */\n\n }\n\n mString = this.FindStringByStr(responseStr, 'Content-Base: ');\n\n if (mString) {\n var lineStr = this.getLineString(mString);\n contentBaseStr = lineStr.substr(14);\n } //console.log(\"Video : \" + videoTrack + \" \" + videoPayloadCodec + \" \" + videoPayloadValue);\n //console.log(\"Audio : \" + audioTrack);\n\n\n if (metadataTrack) {//console.log(\"metadata : \" + metadataTrack);\n } //console.log(\"Content-Base: \" + contentBaseStr);\n\n\n if (videoPayloadCodec == 'H264') {\n this.mediaInfo.videoCodecId = 7; //ʹ��FLV�еı� 7ΪH264, 12ΪH265\n\n _common_common__WEBPACK_IMPORTED_MODULE_2__[\"setCodecTypeStr\"]('H264');\n } else if (videoPayloadCodec == 'H265') {\n this.mediaInfo.videoCodecId = 12;\n _common_common__WEBPACK_IMPORTED_MODULE_2__[\"setCodecTypeStr\"]('H265');\n }\n\n if (audioPayloadCodec == 'MPEG4-GENERIC') {\n this.mediaInfo.audioCodecId = 10; //AAC\n } else if (audioPayloadCodec == 'PCMU') {\n this.mediaInfo.audioCodecId = 1;\n } else if (audioPayloadCodec == 'PCMA') {\n this.mediaInfo.audioCodecId = 2;\n }\n\n this.videoTrack = videoTrack;\n this.audioTrack = audioTrack;\n this.metadataTrack = metadataTrack;\n this.contentBaseStr = contentBaseStr;\n return 0;\n };\n\n _proto.rtspParseSETUP = function rtspParseSETUP(responseStr) {\n var sessionId = '0';\n var mString = this.FindStringByStr(responseStr, 'Session:');\n\n if (mString) {\n var lineStr = this.getLineString(mString);\n var arr = lineStr.split(';');\n\n if (arr.length > 0) {\n //\"Session: 54C0C122;timeout=65\"\n var s = arr[0].substr(9);\n sessionId = s;\n }\n\n if (this.setupStreamNum == 1) {\n this.videoSessionId = sessionId; //console.log(\"Video SessionId: \" + this.videoSessionId);\n } else if (this.setupStreamNum == 2) {\n this.audioSessionId = sessionId; //console.log(\"Audio SessionId: \" + this.audioSessionId);\n } else if (this.setupStreamNum == 3) {\n this.metadataSessionId = sessionId; //console.log(\"Metadata SessionId: \" + this.audioSessionId);\n }\n }\n };\n\n _proto.rtspParsePLAY = function rtspParsePLAY(responseStr) {\n var sessionId = '0';\n var indexOfValue = responseStr.indexOf('200 OK');\n\n if (indexOfValue < 0) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].e(this.TAG, 'PLAY ERROR: ' + responseStr);\n return -1;\n }\n\n var mString = this.FindStringByStr(responseStr, 'Session:');\n\n if (mString) {\n var lineStr = this.getLineString(mString);\n var arr = lineStr.split(';');\n\n if (arr.length > 0) {\n //\"Session: 54C0C122;timeout=65\"\n var s = arr[0].substr(9);\n sessionId = s;\n }\n\n this.videoSessionId = sessionId; //console.log(\"Update Video SessionId: \" + this.videoSessionId);\n }\n\n this.state = RTSP_STATE_HEARTBEAT;\n };\n\n _proto.sendOptions = function sendOptions() {\n var pbuf = this.makeHeader('OPTIONS', null);\n\n if (this.authType == RTSP_AUTH_TYPE_BASIC) {\n pbuf += 'WWW-Authorization: Basic ' + this.authBasicStr + '\\r\\n';\n } else if (this.authType == RTSP_AUTH_TYPE_DIGEST) {\n pbuf += 'WWW-Authorization: Digest ';\n pbuf += 'username = \"' + this.username + '\"' + ',';\n pbuf += 'realm = \"' + this.realm + '\"' + ',';\n pbuf += 'nonce = \"' + this.nonce + '\"' + ',';\n pbuf += 'uri = \"' + this.rtspUrl + '\"' + ',';\n pbuf += 'response = \"' + this.authDigestStr + '\"' + '\\r\\n';\n } //pbuf += \"User-Agent: \" + RTSP_CLIENT_NAME + \"\\r\\n\";\n\n\n pbuf += '\\r\\n';\n this.sendPacket(pbuf); //this.state = RTSP_STATE_OPTIONS;\n };\n\n _proto.sendDescribe = function sendDescribe() {\n var pbuf = this.makeHeader('DESCRIBE', null);\n\n if (this.authType == RTSP_AUTH_TYPE_BASIC) {\n pbuf += 'WWW-Authorization: Basic ' + this.authBasicStr + '\\r\\n';\n } else if (this.authType == RTSP_AUTH_TYPE_DIGEST) {\n pbuf += 'WWW-Authorization: Digest ';\n pbuf += 'username = \"' + this.username + '\"' + ',';\n pbuf += 'realm = \"' + this.realm + '\"' + ',';\n pbuf += 'nonce = \"' + this.nonce + '\"' + ',';\n pbuf += 'uri = \"' + this.rtspUrl + '\"' + ',';\n pbuf += 'response = \"' + this.authDigestStr + '\"' + '\\r\\n';\n }\n\n pbuf += 'Accept: application/sdp\\r\\n';\n pbuf += 'User-Agent: ' + RTSP_CLIENT_NAME + '\\r\\n';\n pbuf += '\\r\\n';\n this.sendPacket(pbuf);\n this.state = RTSP_STATE_DESCRIBE;\n };\n\n _proto.sendSetup = function sendSetup(trackId) {\n //console.log(\"send SETUP: \" + trackId);\n var pbuf = this.makeHeader('SETUP', trackId);\n\n if (this.videoSessionId != '') {\n pbuf += 'Session: ' + this.videoSessionId + '\\r\\n';\n }\n /*\n if (this.authType == RTSP_AUTH_TYPE_BASIC) {\n pbuf += \"WWW-Authorization: Basic \" + this.authBasicStr + \"\\r\\n\";\n }\n else if (this.authType == RTSP_AUTH_TYPE_DIGEST) {\n pbuf += \"WWW-Authorization: Digest \";\n pbuf += \"username = \\\"\" + this.username + \"\\\"\" + \",\";\n pbuf += \"realm = \\\"\" + this.realm + \"\\\"\" + \",\";\n pbuf += \"nonce = \\\"\" + this.nonce + \"\\\"\" + \",\";\n pbuf += \"uri = \\\"\" + this.rtspUrl + \"\\\"\" + \",\";\n pbuf += \"response = \\\"\" + this.authDigestStr + \"\\\"\" + \"\\r\\n\";\n }\n */\n\n\n pbuf += 'User-Agent: ' + RTSP_CLIENT_NAME + '\\r\\n'; //��֧��TCP\n\n if (trackId == this.videoTrack) {\n pbuf += 'Transport: RTP/AVP/TCP;unicast;interleaved=0-1\\r\\n\\r\\n';\n\n if (this.audioTrack != '') {//this.state = RTSP_STATE_SETUP;\n } else {//this.state = RTSP_STATE_PLAY;\n }\n\n this.setupStreamNum++;\n } else if (trackId == this.audioTrack) {\n pbuf += 'Transport: RTP/AVP/TCP;unicast;interleaved=2-3\\r\\n\\r\\n'; //this.state = RTSP_STATE_PLAY;\n\n this.setupStreamNum++;\n } else if (trackId == this.metadataTrack) {\n pbuf += 'Transport: RTP/AVP/TCP;unicast;interleaved=4-5\\r\\n\\r\\n'; //this.state = RTSP_STATE_PLAY;\n\n this.setupStreamNum++;\n }\n\n this.state = RTSP_STATE_SETUP;\n this.sendPacket(pbuf);\n };\n\n _proto.sendPlay = function sendPlay() {\n var pbuf = this.makeHeader('PLAY', null);\n pbuf += 'Session: ' + this.videoSessionId + '\\r\\n';\n\n if (this.authType == RTSP_AUTH_TYPE_BASIC) {\n pbuf += 'WWW-Authorization: Basic ' + this.authBasicStr + '\\r\\n';\n } else if (this.authType == RTSP_AUTH_TYPE_DIGEST) {\n pbuf += 'WWW-Authorization: Digest ';\n pbuf += 'username = \"' + this.username + '\"' + ',';\n pbuf += 'realm = \"' + this.realm + '\"' + ',';\n pbuf += 'nonce = \"' + this.nonce + '\"' + ',';\n pbuf += 'uri = \"' + this.rtspUrl + '\"' + ',';\n pbuf += 'response = \"' + this.authDigestStr + '\"' + '\\r\\n';\n }\n\n pbuf += 'Range: npt=0.000-\\r\\n\\r\\n';\n this.state = RTSP_STATE_PLAY;\n this.sendPacket(pbuf);\n };\n\n _proto.sendPause = function sendPause() {\n console.log('rtsp pause...');\n var pbuf = this.makeHeader('PAUSE', null);\n pbuf += 'Session: ' + this.videoSessionId + '\\r\\n';\n\n if (this.authType == RTSP_AUTH_TYPE_BASIC) {\n pbuf += 'WWW-Authorization: Basic ' + this.authBasicStr + '\\r\\n';\n } else if (this.authType == RTSP_AUTH_TYPE_DIGEST) {\n pbuf += 'WWW-Authorization: Digest ';\n pbuf += 'username = \"' + this.username + '\"' + ',';\n pbuf += 'realm = \"' + this.realm + '\"' + ',';\n pbuf += 'nonce = \"' + this.nonce + '\"' + ',';\n pbuf += 'uri = \"' + this.rtspUrl + '\"' + ',';\n pbuf += 'response = \"' + this.authDigestStr + '\"' + '\\r\\n';\n }\n\n this.state = RTSP_STATE_PAUSE; //const buffer = new ArrayBuffer(pbuf.length);\n //let blob = new Blob([pbuf], {type:\"text/plain\"});\n\n this.sendPacket(pbuf);\n };\n\n _proto.sendScale = function sendScale(scaleValue) {\n var pbuf = this.makeHeader('PLAY', null);\n pbuf += 'Session: ' + this.videoSessionId + '\\r\\n';\n\n if (this.authType == RTSP_AUTH_TYPE_BASIC) {\n pbuf += 'WWW-Authorization: Basic ' + this.authBasicStr + '\\r\\n';\n } else if (this.authType == RTSP_AUTH_TYPE_DIGEST) {\n pbuf += 'WWW-Authorization: Digest ';\n pbuf += 'username = \"' + this.username + '\"' + ',';\n pbuf += 'realm = \"' + this.realm + '\"' + ',';\n pbuf += 'nonce = \"' + this.nonce + '\"' + ',';\n pbuf += 'uri = \"' + this.rtspUrl + '\"' + ',';\n pbuf += 'response = \"' + this.authDigestStr + '\"' + '\\r\\n';\n }\n\n pbuf += 'Scale: ' + scaleValue + '\\r\\n';\n pbuf += 'Range: npt=0.000-\\r\\n\\r\\n';\n this.state = RTSP_STATE_PLAY;\n this.sendPacket(pbuf);\n };\n\n _proto.abort = function abort() {\n var ws = this._ws;\n\n if (ws && (ws.readyState === 0 || ws.readyState === 1)) {\n // CONNECTING || OPEN\n this._requestAbort = true;\n ws.close();\n }\n\n this._ws = null;\n this._status = LoaderStatus.kComplete;\n };\n\n _proto._onWebSocketOpen = function _onWebSocketOpen(e) {\n this._status = LoaderStatus.kBuffering;\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].e(this.TAG, '_onWebSocketOpen: ' + e.target.url); //this._ws.send(\"DESCRIBE rtsp://192.168.0.106/ch1\\r\\n\");\n };\n\n _proto._onWebSocketClose = function _onWebSocketClose(e) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].e(this.TAG, 'onWebSocketClose');\n\n if (this._requestAbort === true) {\n this._requestAbort = false;\n return;\n }\n\n this._status = LoaderStatus.kComplete;\n\n if (this._onComplete) {\n //this._onComplete(0, this._receivedLength - 1);\n this._onComplete(-1, -1); //this._receivedLength - 1);\n\n }\n };\n\n _proto._onWebSocketMessage = function _onWebSocketMessage(e) {\n var _this = this;\n\n //Log.e(this.TAG, '_onWebSocketMessage: ' + e);\n if (e.data instanceof ArrayBuffer) {\n this._dispatchArrayBuffer(e.data);\n } else if (e.data instanceof Blob) {\n var reader = new FileReader();\n\n reader.onload = function () {\n _this._dispatchArrayBuffer(reader.result);\n };\n\n reader.readAsArrayBuffer(e.data);\n } else {\n this._status = LoaderStatus.kError;\n var info = {\n code: -1,\n msg: 'Unsupported WebSocket message type: ' + e.data.constructor.name\n };\n\n if (this._onError) {\n this._onError(LoaderErrors.EXCEPTION, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_1__[\"RuntimeException\"](info.msg);\n }\n }\n };\n\n _proto._dispatchArrayBuffer = function _dispatchArrayBuffer(arraybuffer) {\n var chunk = arraybuffer;\n var byteStart = this._receivedLength;\n this._receivedLength += chunk.byteLength;\n\n if (this._onDataArrival) {\n this._onDataArrival(chunk, byteStart, this._receivedLength);\n } //֪ͨ�ϲ�, ��ǰ��������, 1Ϊ��һ������, ʹ�����еķ���_onDataArrival\n\n\n if (this._triggerReconnectSuccessNotify) {\n this._triggerReconnectSuccessNotify = false;\n\n if (this._onDataArrival) {\n //console.log(\"fetch-stream-loader.js::Connected:\" + this._retryConnectTimes);\n this._onDataArrival(null, this._retryConnectTimes, 0);\n\n this._retryConnectTimes++;\n }\n }\n };\n\n _proto._onWebSocketError = function _onWebSocketError(e) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].e(this.TAG, '_onWebSocketError: ' + e);\n this._status = LoaderStatus.kError;\n var info = {\n code: e.code,\n msg: e.message\n };\n\n if (this._onError) {\n this._onError(LoaderErrors.EXCEPTION, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_1__[\"RuntimeException\"](info.msg);\n }\n };\n\n _proto.parseResponseStr = function parseResponseStr(responseStr) {\n //Log.d(this.TAG, \"RESPONSE: \" + responseStr);\n //console.log(\"RESPONSE: \" + responseStr);\n if (this.state == RTSP_STATE_DESCRIBE) {\n var ret = this.rtspParseDESCRIBE(responseStr); //console.log(\"contentBaseStr: \" + this.contentBaseStr);\n\n if (ret == 0) {\n this.sendSetup(this.videoTrack);\n }\n } else if (this.state == RTSP_STATE_SETUP) {\n this.rtspParseSETUP(responseStr);\n\n if (this.setupStreamNum < 2 && this.audioTrack != '') {\n this.sendSetup(this.audioTrack);\n } else if (this.setupStreamNum < 3 && this.metadataTrack != '') {\n this.sendSetup(this.metadataTrack);\n } else {\n this.sendPlay();\n }\n } else if (this.state == RTSP_STATE_PLAY) {\n this.rtspParsePLAY(responseStr);\n } else if (this.state == RTSP_STATE_HEARTBEAT) {//console.log(\"recv heartbeat data...\" + responseStr);\n } else if (this.state == RTSP_STATE_PAUSE) {\n console.log('recv pause data...' + responseStr);\n }\n };\n\n return RtspHandler;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (RtspHandler);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/io/rtspclient/rtspHandler.js?"); | |
| 3341 | - | |
| 3342 | -/***/ }), | |
| 3343 | - | |
| 3344 | -/***/ "./src/FlvPlayer/flv.js/io/speed-sampler.js": | |
| 3345 | -/*!**************************************************!*\ | |
| 3346 | - !*** ./src/FlvPlayer/flv.js/io/speed-sampler.js ***! | |
| 3347 | - \**************************************************/ | |
| 3348 | -/*! exports provided: default */ | |
| 3349 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3350 | - | |
| 3351 | -"use strict"; | |
| 3352 | -eval("__webpack_require__.r(__webpack_exports__);\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Utility class to calculate realtime network I/O speed\nvar SpeedSampler = /*#__PURE__*/function () {\n function SpeedSampler() {\n // milliseconds\n this._firstCheckpoint = 0;\n this._lastCheckpoint = 0;\n this._intervalBytes = 0;\n this._totalBytes = 0;\n this._lastSecondBytes = 0; // compatibility detection\n\n if (self.performance && self.performance.now) {\n this._now = self.performance.now.bind(self.performance);\n } else {\n this._now = Date.now;\n }\n }\n\n var _proto = SpeedSampler.prototype;\n\n _proto.reset = function reset() {\n this._firstCheckpoint = this._lastCheckpoint = 0;\n this._totalBytes = this._intervalBytes = 0;\n this._lastSecondBytes = 0;\n };\n\n _proto.addBytes = function addBytes(bytes) {\n if (this._firstCheckpoint === 0) {\n this._firstCheckpoint = this._now();\n this._lastCheckpoint = this._firstCheckpoint;\n this._intervalBytes += bytes;\n this._totalBytes += bytes;\n } else if (this._now() - this._lastCheckpoint < 1000) {\n this._intervalBytes += bytes;\n this._totalBytes += bytes;\n } else {\n // duration >= 1000\n this._lastSecondBytes = this._intervalBytes;\n this._intervalBytes = bytes;\n this._totalBytes += bytes;\n this._lastCheckpoint = this._now();\n }\n };\n\n _createClass(SpeedSampler, [{\n key: \"currentKBps\",\n get: function get() {\n this.addBytes(0);\n var durationSeconds = (this._now() - this._lastCheckpoint) / 1000;\n if (durationSeconds == 0) durationSeconds = 1;\n return this._intervalBytes / durationSeconds / 1024;\n }\n }, {\n key: \"lastSecondKBps\",\n get: function get() {\n this.addBytes(0);\n\n if (this._lastSecondBytes !== 0) {\n return this._lastSecondBytes / 1024;\n } else {\n // lastSecondBytes === 0\n if (this._now() - this._lastCheckpoint >= 500) {\n // if time interval since last checkpoint has exceeded 500ms\n // the speed is nearly accurate\n return this.currentKBps;\n } else {\n // We don't know\n return 0;\n }\n }\n }\n }, {\n key: \"averageKBps\",\n get: function get() {\n var durationSeconds = (this._now() - this._firstCheckpoint) / 1000;\n return this._totalBytes / durationSeconds / 1024;\n }\n }]);\n\n return SpeedSampler;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SpeedSampler);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/io/speed-sampler.js?"); | |
| 3353 | - | |
| 3354 | -/***/ }), | |
| 3355 | - | |
| 3356 | -/***/ "./src/FlvPlayer/flv.js/io/websocket-loader.js": | |
| 3357 | -/*!*****************************************************!*\ | |
| 3358 | - !*** ./src/FlvPlayer/flv.js/io/websocket-loader.js ***! | |
| 3359 | - \*****************************************************/ | |
| 3360 | -/*! exports provided: default */ | |
| 3361 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3362 | - | |
| 3363 | -"use strict"; | |
| 3364 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _loader_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loader.js */ \"./src/FlvPlayer/flv.js/io/loader.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n // For FLV over WebSocket live stream\n\nvar WebSocketLoader = /*#__PURE__*/function (_BaseLoader) {\n _inheritsLoose(WebSocketLoader, _BaseLoader);\n\n WebSocketLoader.isSupported = function isSupported() {\n try {\n return typeof self.WebSocket !== 'undefined';\n } catch (e) {\n return false;\n }\n };\n\n function WebSocketLoader() {\n var _this;\n\n _this = _BaseLoader.call(this, 'websocket-loader') || this;\n _this.TAG = 'WebSocketLoader';\n _this._needStash = true;\n _this._ws = null;\n _this._requestAbort = false;\n _this._receivedLength = 0;\n _this._retryConnectTimes = 0;\n _this._triggerReconnectingNotify = true;\n _this._triggerReconnectSuccessNotify = true;\n return _this;\n }\n\n var _proto = WebSocketLoader.prototype;\n\n _proto.destroy = function destroy() {\n if (this._ws) {\n this.abort();\n }\n\n _BaseLoader.prototype.destroy.call(this);\n };\n\n _proto.open = function open(dataSource) {\n try {\n this._retryConnectTimes++; //֪ͨ�ϲ�, ��ǰ��������, 1Ϊ��һ������, ʹ�����еķ���_onDataArrival\n\n if (this._triggerReconnectingNotify) {\n this._triggerReconnectingNotify = false;\n\n if (this._onDataArrival) {\n this._onDataArrival(null, -this._retryConnectTimes, 0);\n }\n }\n\n this._triggerReconnectSuccessNotify = true;\n var ws = this._ws = new self.WebSocket(dataSource.url);\n ws.binaryType = 'arraybuffer';\n ws.onopen = this._onWebSocketOpen.bind(this);\n ws.onclose = this._onWebSocketClose.bind(this);\n ws.onmessage = this._onWebSocketMessage.bind(this);\n ws.onerror = this._onWebSocketError.bind(this);\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kConnecting;\n } catch (e) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError;\n var info = {\n code: e.code,\n msg: e.message\n };\n\n if (this._onError) {\n this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].EXCEPTION, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"RuntimeException\"](info.msg);\n }\n }\n };\n\n _proto.abort = function abort() {\n var ws = this._ws;\n\n if (ws && (ws.readyState === 0 || ws.readyState === 1)) {\n // CONNECTING || OPEN\n this._requestAbort = true;\n ws.close();\n }\n\n this._ws = null;\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kComplete;\n };\n\n _proto._onWebSocketOpen = function _onWebSocketOpen(e) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kBuffering;\n };\n\n _proto._onWebSocketClose = function _onWebSocketClose(e) {\n if (this._requestAbort === true) {\n this._requestAbort = false;\n return;\n }\n\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kComplete;\n\n if (this._onComplete) {\n //this._onComplete(0, this._receivedLength - 1);\n this._onComplete(-1, -1); //this._receivedLength - 1);\n\n }\n };\n\n _proto._onWebSocketMessage = function _onWebSocketMessage(e) {\n var _this2 = this;\n\n if (e.data instanceof ArrayBuffer) {\n this._dispatchArrayBuffer(e.data);\n } else if (e.data instanceof Blob) {\n var reader = new FileReader();\n\n reader.onload = function () {\n _this2._dispatchArrayBuffer(reader.result);\n };\n\n reader.readAsArrayBuffer(e.data);\n } else {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError;\n var info = {\n code: -1,\n msg: 'Unsupported WebSocket message type: ' + e.data.constructor.name\n };\n\n if (this._onError) {\n this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].EXCEPTION, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"RuntimeException\"](info.msg);\n }\n }\n };\n\n _proto._dispatchArrayBuffer = function _dispatchArrayBuffer(arraybuffer) {\n var chunk = arraybuffer;\n var byteStart = this._receivedLength;\n this._receivedLength += chunk.byteLength;\n\n if (this._onDataArrival) {\n this._onDataArrival(chunk, byteStart, this._receivedLength);\n } //֪ͨ�ϲ�, ��ǰ��������, 1Ϊ��һ������, ʹ�����еķ���_onDataArrival\n\n\n if (this._triggerReconnectSuccessNotify) {\n this._triggerReconnectSuccessNotify = false;\n\n if (this._onDataArrival) {\n //console.log(\"fetch-stream-loader.js::Connected:\" + this._retryConnectTimes);\n this._onDataArrival(null, this._retryConnectTimes, 0);\n\n this._retryConnectTimes++;\n }\n }\n };\n\n _proto._onWebSocketError = function _onWebSocketError(e) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError;\n var info = {\n code: e.code,\n msg: e.message\n };\n\n if (this._onError) {\n this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].EXCEPTION, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"RuntimeException\"](info.msg);\n }\n };\n\n return WebSocketLoader;\n}(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"BaseLoader\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (WebSocketLoader);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/io/websocket-loader.js?"); | |
| 3365 | - | |
| 3366 | -/***/ }), | |
| 3367 | - | |
| 3368 | -/***/ "./src/FlvPlayer/flv.js/io/xhr-moz-chunked-loader.js": | |
| 3369 | -/*!***********************************************************!*\ | |
| 3370 | - !*** ./src/FlvPlayer/flv.js/io/xhr-moz-chunked-loader.js ***! | |
| 3371 | - \***********************************************************/ | |
| 3372 | -/*! exports provided: default */ | |
| 3373 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3374 | - | |
| 3375 | -"use strict"; | |
| 3376 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _loader_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loader.js */ \"./src/FlvPlayer/flv.js/io/loader.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n // For FireFox browser which supports `xhr.responseType = 'moz-chunked-arraybuffer'`\n\nvar MozChunkedLoader = /*#__PURE__*/function (_BaseLoader) {\n _inheritsLoose(MozChunkedLoader, _BaseLoader);\n\n MozChunkedLoader.isSupported = function isSupported() {\n try {\n var xhr = new XMLHttpRequest(); // Firefox 37- requires .open() to be called before setting responseType\n\n xhr.open('GET', 'https://example.com', true);\n xhr.responseType = 'moz-chunked-arraybuffer';\n return xhr.responseType === 'moz-chunked-arraybuffer';\n } catch (e) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w('MozChunkedLoader', e.message);\n return false;\n }\n };\n\n function MozChunkedLoader(seekHandler, config) {\n var _this;\n\n _this = _BaseLoader.call(this, 'xhr-moz-chunked-loader') || this;\n _this.TAG = 'MozChunkedLoader';\n _this._seekHandler = seekHandler;\n _this._config = config;\n _this._needStash = true;\n _this._xhr = null;\n _this._requestAbort = false;\n _this._contentLength = null;\n _this._receivedLength = 0;\n return _this;\n }\n\n var _proto = MozChunkedLoader.prototype;\n\n _proto.destroy = function destroy() {\n if (this.isWorking()) {\n this.abort();\n }\n\n if (this._xhr) {\n this._xhr.onreadystatechange = null;\n this._xhr.onprogress = null;\n this._xhr.onloadend = null;\n this._xhr.onerror = null;\n this._xhr = null;\n }\n\n _BaseLoader.prototype.destroy.call(this);\n };\n\n _proto.open = function open(dataSource, range) {\n this._dataSource = dataSource;\n this._range = range;\n var sourceURL = dataSource.url;\n\n if (this._config.reuseRedirectedURL && dataSource.redirectedURL != undefined) {\n sourceURL = dataSource.redirectedURL;\n }\n\n var seekConfig = this._seekHandler.getConfig(sourceURL, range);\n\n this._requestURL = seekConfig.url;\n var xhr = this._xhr = new XMLHttpRequest();\n xhr.open('GET', seekConfig.url, true);\n xhr.responseType = 'moz-chunked-arraybuffer';\n xhr.onreadystatechange = this._onReadyStateChange.bind(this);\n xhr.onprogress = this._onProgress.bind(this);\n xhr.onloadend = this._onLoadEnd.bind(this);\n xhr.onerror = this._onXhrError.bind(this); // cors is auto detected and enabled by xhr\n // withCredentials is disabled by default\n\n if (dataSource.withCredentials) {\n xhr.withCredentials = true;\n }\n\n if (typeof seekConfig.headers === 'object') {\n var headers = seekConfig.headers;\n\n for (var key in headers) {\n if (headers.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, headers[key]);\n }\n }\n } // add additional headers\n\n\n if (typeof this._config.headers === 'object') {\n var _headers = this._config.headers;\n\n for (var _key in _headers) {\n if (_headers.hasOwnProperty(_key)) {\n xhr.setRequestHeader(_key, _headers[_key]);\n }\n }\n }\n\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kConnecting;\n xhr.send();\n };\n\n _proto.abort = function abort() {\n this._requestAbort = true;\n\n if (this._xhr) {\n this._xhr.abort();\n }\n\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kComplete;\n };\n\n _proto._onReadyStateChange = function _onReadyStateChange(e) {\n var xhr = e.target;\n\n if (xhr.readyState === 2) {\n // HEADERS_RECEIVED\n if (xhr.responseURL != undefined && xhr.responseURL !== this._requestURL) {\n if (this._onURLRedirect) {\n var redirectedURL = this._seekHandler.removeURLParameters(xhr.responseURL);\n\n this._onURLRedirect(redirectedURL);\n }\n }\n\n if (xhr.status !== 0 && (xhr.status < 200 || xhr.status > 299)) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError;\n\n if (this._onError) {\n this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].HTTP_STATUS_CODE_INVALID, {\n code: xhr.status,\n msg: xhr.statusText\n });\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"RuntimeException\"]('MozChunkedLoader: Http code invalid, ' + xhr.status + ' ' + xhr.statusText);\n }\n } else {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kBuffering;\n }\n }\n };\n\n _proto._onProgress = function _onProgress(e) {\n if (this._status === _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError) {\n // Ignore error response\n return;\n }\n\n if (this._contentLength === null) {\n if (e.total !== null && e.total !== 0) {\n this._contentLength = e.total;\n\n if (this._onContentLengthKnown) {\n this._onContentLengthKnown(this._contentLength);\n }\n }\n }\n\n var chunk = e.target.response;\n var byteStart = this._range.from + this._receivedLength;\n this._receivedLength += chunk.byteLength;\n\n if (this._onDataArrival) {\n this._onDataArrival(chunk, byteStart, this._receivedLength);\n }\n };\n\n _proto._onLoadEnd = function _onLoadEnd(e) {\n if (this._requestAbort === true) {\n this._requestAbort = false;\n return;\n } else if (this._status === _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError) {\n return;\n }\n\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kComplete;\n\n if (this._onComplete) {\n this._onComplete(this._range.from, this._range.from + this._receivedLength - 1);\n }\n };\n\n _proto._onXhrError = function _onXhrError(e) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError;\n var type = 0;\n var info = null;\n\n if (this._contentLength && e.loaded < this._contentLength) {\n type = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].EARLY_EOF;\n info = {\n code: -1,\n msg: 'Moz-Chunked stream meet Early-Eof'\n };\n } else {\n type = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].EXCEPTION;\n info = {\n code: -1,\n msg: e.constructor.name + ' ' + e.type\n };\n }\n\n if (this._onError) {\n this._onError(type, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"RuntimeException\"](info.msg);\n }\n };\n\n return MozChunkedLoader;\n}(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"BaseLoader\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (MozChunkedLoader);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/io/xhr-moz-chunked-loader.js?"); | |
| 3377 | - | |
| 3378 | -/***/ }), | |
| 3379 | - | |
| 3380 | -/***/ "./src/FlvPlayer/flv.js/io/xhr-msstream-loader.js": | |
| 3381 | -/*!********************************************************!*\ | |
| 3382 | - !*** ./src/FlvPlayer/flv.js/io/xhr-msstream-loader.js ***! | |
| 3383 | - \********************************************************/ | |
| 3384 | -/*! exports provided: default */ | |
| 3385 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3386 | - | |
| 3387 | -"use strict"; | |
| 3388 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _loader_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loader.js */ \"./src/FlvPlayer/flv.js/io/loader.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n/* Notice: ms-stream may cause IE/Edge browser crash if seek too frequently!!!\n * The browser may crash in wininet.dll. Disable for now.\n *\n * For IE11/Edge browser by microsoft which supports `xhr.responseType = 'ms-stream'`\n * Notice that ms-stream API sucks. The buffer is always expanding along with downloading.\n *\n * We need to abort the xhr if buffer size exceeded limit size (e.g. 16 MiB), then do reconnect.\n * in order to release previous ArrayBuffer to avoid memory leak\n *\n * Otherwise, the ArrayBuffer will increase to a terrible size that equals final file size.\n */\n\nvar MSStreamLoader = /*#__PURE__*/function (_BaseLoader) {\n _inheritsLoose(MSStreamLoader, _BaseLoader);\n\n MSStreamLoader.isSupported = function isSupported() {\n try {\n if (typeof self.MSStream === 'undefined' || typeof self.MSStreamReader === 'undefined') {\n return false;\n }\n\n var xhr = new XMLHttpRequest();\n xhr.open('GET', 'https://example.com', true);\n xhr.responseType = 'ms-stream';\n return xhr.responseType === 'ms-stream';\n } catch (e) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w('MSStreamLoader', e.message);\n return false;\n }\n };\n\n function MSStreamLoader(seekHandler, config) {\n var _this;\n\n _this = _BaseLoader.call(this, 'xhr-msstream-loader') || this;\n _this.TAG = 'MSStreamLoader';\n _this._seekHandler = seekHandler;\n _this._config = config;\n _this._needStash = true;\n _this._xhr = null;\n _this._reader = null; // MSStreamReader\n\n _this._totalRange = null;\n _this._currentRange = null;\n _this._currentRequestURL = null;\n _this._currentRedirectedURL = null;\n _this._contentLength = null;\n _this._receivedLength = 0;\n _this._bufferLimit = 16 * 1024 * 1024; // 16MB\n\n _this._lastTimeBufferSize = 0;\n _this._isReconnecting = false;\n return _this;\n }\n\n var _proto = MSStreamLoader.prototype;\n\n _proto.destroy = function destroy() {\n if (this.isWorking()) {\n this.abort();\n }\n\n if (this._reader) {\n this._reader.onprogress = null;\n this._reader.onload = null;\n this._reader.onerror = null;\n this._reader = null;\n }\n\n if (this._xhr) {\n this._xhr.onreadystatechange = null;\n this._xhr = null;\n }\n\n _BaseLoader.prototype.destroy.call(this);\n };\n\n _proto.open = function open(dataSource, range) {\n this._internalOpen(dataSource, range, false);\n };\n\n _proto._internalOpen = function _internalOpen(dataSource, range, isSubrange) {\n this._dataSource = dataSource;\n\n if (!isSubrange) {\n this._totalRange = range;\n } else {\n this._currentRange = range;\n }\n\n var sourceURL = dataSource.url;\n\n if (this._config.reuseRedirectedURL) {\n if (this._currentRedirectedURL != undefined) {\n sourceURL = this._currentRedirectedURL;\n } else if (dataSource.redirectedURL != undefined) {\n sourceURL = dataSource.redirectedURL;\n }\n }\n\n var seekConfig = this._seekHandler.getConfig(sourceURL, range);\n\n this._currentRequestURL = seekConfig.url;\n var reader = this._reader = new self.MSStreamReader();\n reader.onprogress = this._msrOnProgress.bind(this);\n reader.onload = this._msrOnLoad.bind(this);\n reader.onerror = this._msrOnError.bind(this);\n var xhr = this._xhr = new XMLHttpRequest();\n xhr.open('GET', seekConfig.url, true);\n xhr.responseType = 'ms-stream';\n xhr.onreadystatechange = this._xhrOnReadyStateChange.bind(this);\n xhr.onerror = this._xhrOnError.bind(this);\n\n if (dataSource.withCredentials) {\n xhr.withCredentials = true;\n }\n\n if (typeof seekConfig.headers === 'object') {\n var headers = seekConfig.headers;\n\n for (var key in headers) {\n if (headers.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, headers[key]);\n }\n }\n } // add additional headers\n\n\n if (typeof this._config.headers === 'object') {\n var _headers = this._config.headers;\n\n for (var _key in _headers) {\n if (_headers.hasOwnProperty(_key)) {\n xhr.setRequestHeader(_key, _headers[_key]);\n }\n }\n }\n\n if (this._isReconnecting) {\n this._isReconnecting = false;\n } else {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kConnecting;\n }\n\n xhr.send();\n };\n\n _proto.abort = function abort() {\n this._internalAbort();\n\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kComplete;\n };\n\n _proto._internalAbort = function _internalAbort() {\n if (this._reader) {\n if (this._reader.readyState === 1) {\n // LOADING\n this._reader.abort();\n }\n\n this._reader.onprogress = null;\n this._reader.onload = null;\n this._reader.onerror = null;\n this._reader = null;\n }\n\n if (this._xhr) {\n this._xhr.abort();\n\n this._xhr.onreadystatechange = null;\n this._xhr = null;\n }\n };\n\n _proto._xhrOnReadyStateChange = function _xhrOnReadyStateChange(e) {\n var xhr = e.target;\n\n if (xhr.readyState === 2) {\n // HEADERS_RECEIVED\n if (xhr.status >= 200 && xhr.status <= 299) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kBuffering;\n\n if (xhr.responseURL != undefined) {\n var redirectedURL = this._seekHandler.removeURLParameters(xhr.responseURL);\n\n if (xhr.responseURL !== this._currentRequestURL && redirectedURL !== this._currentRedirectedURL) {\n this._currentRedirectedURL = redirectedURL;\n\n if (this._onURLRedirect) {\n this._onURLRedirect(redirectedURL);\n }\n }\n }\n\n var lengthHeader = xhr.getResponseHeader('Content-Length');\n\n if (lengthHeader != null && this._contentLength == null) {\n var length = parseInt(lengthHeader);\n\n if (length > 0) {\n this._contentLength = length;\n\n if (this._onContentLengthKnown) {\n this._onContentLengthKnown(this._contentLength);\n }\n }\n }\n } else {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError;\n\n if (this._onError) {\n this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].HTTP_STATUS_CODE_INVALID, {\n code: xhr.status,\n msg: xhr.statusText\n });\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"RuntimeException\"]('MSStreamLoader: Http code invalid, ' + xhr.status + ' ' + xhr.statusText);\n }\n }\n } else if (xhr.readyState === 3) {\n // LOADING\n if (xhr.status >= 200 && xhr.status <= 299) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kBuffering;\n var msstream = xhr.response;\n\n this._reader.readAsArrayBuffer(msstream);\n }\n }\n };\n\n _proto._xhrOnError = function _xhrOnError(e) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError;\n var type = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].EXCEPTION;\n var info = {\n code: -1,\n msg: e.constructor.name + ' ' + e.type\n };\n\n if (this._onError) {\n this._onError(type, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"RuntimeException\"](info.msg);\n }\n };\n\n _proto._msrOnProgress = function _msrOnProgress(e) {\n var reader = e.target;\n var bigbuffer = reader.result;\n\n if (bigbuffer == null) {\n // result may be null, workaround for buggy M$\n this._doReconnectIfNeeded();\n\n return;\n }\n\n var slice = bigbuffer.slice(this._lastTimeBufferSize);\n this._lastTimeBufferSize = bigbuffer.byteLength;\n var byteStart = this._totalRange.from + this._receivedLength;\n this._receivedLength += slice.byteLength;\n\n if (this._onDataArrival) {\n this._onDataArrival(slice, byteStart, this._receivedLength);\n }\n\n if (bigbuffer.byteLength >= this._bufferLimit) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].v(this.TAG, \"MSStream buffer exceeded max size near \" + (byteStart + slice.byteLength) + \", reconnecting...\");\n\n this._doReconnectIfNeeded();\n }\n };\n\n _proto._doReconnectIfNeeded = function _doReconnectIfNeeded() {\n if (this._contentLength == null || this._receivedLength < this._contentLength) {\n this._isReconnecting = true;\n this._lastTimeBufferSize = 0;\n\n this._internalAbort();\n\n var range = {\n from: this._totalRange.from + this._receivedLength,\n to: -1\n };\n\n this._internalOpen(this._dataSource, range, true);\n }\n };\n\n _proto._msrOnLoad = function _msrOnLoad(e) {\n // actually it is onComplete event\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kComplete;\n\n if (this._onComplete) {\n this._onComplete(this._totalRange.from, this._totalRange.from + this._receivedLength - 1);\n }\n };\n\n _proto._msrOnError = function _msrOnError(e) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderStatus\"].kError;\n var type = 0;\n var info = null;\n\n if (this._contentLength && this._receivedLength < this._contentLength) {\n type = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].EARLY_EOF;\n info = {\n code: -1,\n msg: 'MSStream meet Early-Eof'\n };\n } else {\n type = _loader_js__WEBPACK_IMPORTED_MODULE_1__[\"LoaderErrors\"].EARLY_EOF;\n info = {\n code: -1,\n msg: e.constructor.name + ' ' + e.type\n };\n }\n\n if (this._onError) {\n this._onError(type, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__[\"RuntimeException\"](info.msg);\n }\n };\n\n return MSStreamLoader;\n}(_loader_js__WEBPACK_IMPORTED_MODULE_1__[\"BaseLoader\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (MSStreamLoader);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/io/xhr-msstream-loader.js?"); | |
| 3389 | - | |
| 3390 | -/***/ }), | |
| 3391 | - | |
| 3392 | -/***/ "./src/FlvPlayer/flv.js/io/xhr-range-loader.js": | |
| 3393 | -/*!*****************************************************!*\ | |
| 3394 | - !*** ./src/FlvPlayer/flv.js/io/xhr-range-loader.js ***! | |
| 3395 | - \*****************************************************/ | |
| 3396 | -/*! exports provided: default */ | |
| 3397 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3398 | - | |
| 3399 | -"use strict"; | |
| 3400 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _speed_sampler_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./speed-sampler.js */ \"./src/FlvPlayer/flv.js/io/speed-sampler.js\");\n/* harmony import */ var _loader_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./loader.js */ \"./src/FlvPlayer/flv.js/io/loader.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n // Universal IO Loader, implemented by adding Range header in xhr's request header\n\nvar RangeLoader = /*#__PURE__*/function (_BaseLoader) {\n _inheritsLoose(RangeLoader, _BaseLoader);\n\n RangeLoader.isSupported = function isSupported() {\n try {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', 'https://example.com', true);\n xhr.responseType = 'arraybuffer';\n return xhr.responseType === 'arraybuffer';\n } catch (e) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w('RangeLoader', e.message);\n return false;\n }\n };\n\n function RangeLoader(seekHandler, config) {\n var _this;\n\n _this = _BaseLoader.call(this, 'xhr-range-loader') || this;\n _this.TAG = 'RangeLoader';\n _this._seekHandler = seekHandler;\n _this._config = config;\n _this._needStash = false;\n _this._chunkSizeKBList = [128, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192];\n _this._currentChunkSizeKB = 384;\n _this._currentSpeedNormalized = 0;\n _this._zeroSpeedChunkCount = 0;\n _this._xhr = null;\n _this._speedSampler = new _speed_sampler_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]();\n _this._requestAbort = false;\n _this._waitForTotalLength = false;\n _this._totalLengthReceived = false;\n _this._currentRequestURL = null;\n _this._currentRedirectedURL = null;\n _this._currentRequestRange = null;\n _this._totalLength = null; // size of the entire file\n\n _this._contentLength = null; // Content-Length of entire request range\n\n _this._receivedLength = 0; // total received bytes\n\n _this._lastTimeLoaded = 0; // received bytes of current request sub-range\n\n return _this;\n }\n\n var _proto = RangeLoader.prototype;\n\n _proto.destroy = function destroy() {\n if (this.isWorking()) {\n this.abort();\n }\n\n if (this._xhr) {\n this._xhr.onreadystatechange = null;\n this._xhr.onprogress = null;\n this._xhr.onload = null;\n this._xhr.onerror = null;\n this._xhr = null;\n }\n\n _BaseLoader.prototype.destroy.call(this);\n };\n\n _proto.open = function open(dataSource, range) {\n this._dataSource = dataSource;\n this._range = range;\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kConnecting;\n var useRefTotalLength = false;\n\n if (this._dataSource.filesize != undefined && this._dataSource.filesize !== 0) {\n useRefTotalLength = true;\n this._totalLength = this._dataSource.filesize;\n }\n\n if (!this._totalLengthReceived && !useRefTotalLength) {\n // We need total filesize\n this._waitForTotalLength = true;\n\n this._internalOpen(this._dataSource, {\n from: 0,\n to: -1\n });\n } else {\n // We have filesize, start loading\n this._openSubRange();\n }\n };\n\n _proto._openSubRange = function _openSubRange() {\n var chunkSize = this._currentChunkSizeKB * 1024;\n var from = this._range.from + this._receivedLength;\n var to = from + chunkSize;\n\n if (this._contentLength != null) {\n if (to - this._range.from >= this._contentLength) {\n to = this._range.from + this._contentLength - 1;\n }\n }\n\n this._currentRequestRange = {\n from: from,\n to: to\n };\n\n this._internalOpen(this._dataSource, this._currentRequestRange);\n };\n\n _proto._internalOpen = function _internalOpen(dataSource, range) {\n this._lastTimeLoaded = 0;\n var sourceURL = dataSource.url;\n\n if (this._config.reuseRedirectedURL) {\n if (this._currentRedirectedURL != undefined) {\n sourceURL = this._currentRedirectedURL;\n } else if (dataSource.redirectedURL != undefined) {\n sourceURL = dataSource.redirectedURL;\n }\n }\n\n var seekConfig = this._seekHandler.getConfig(sourceURL, range);\n\n this._currentRequestURL = seekConfig.url;\n var xhr = this._xhr = new XMLHttpRequest();\n xhr.open('GET', seekConfig.url, true);\n xhr.responseType = 'arraybuffer';\n xhr.onreadystatechange = this._onReadyStateChange.bind(this);\n xhr.onprogress = this._onProgress.bind(this);\n xhr.onload = this._onLoad.bind(this);\n xhr.onerror = this._onXhrError.bind(this);\n\n if (dataSource.withCredentials) {\n xhr.withCredentials = true;\n }\n\n if (typeof seekConfig.headers === 'object') {\n var headers = seekConfig.headers;\n\n for (var key in headers) {\n if (headers.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, headers[key]);\n }\n }\n } // add additional headers\n\n\n if (typeof this._config.headers === 'object') {\n var _headers = this._config.headers;\n\n for (var _key in _headers) {\n if (_headers.hasOwnProperty(_key)) {\n xhr.setRequestHeader(_key, _headers[_key]);\n }\n }\n }\n\n xhr.send();\n };\n\n _proto.abort = function abort() {\n this._requestAbort = true;\n\n this._internalAbort();\n\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kComplete;\n };\n\n _proto._internalAbort = function _internalAbort() {\n if (this._xhr) {\n this._xhr.onreadystatechange = null;\n this._xhr.onprogress = null;\n this._xhr.onload = null;\n this._xhr.onerror = null;\n\n this._xhr.abort();\n\n this._xhr = null;\n }\n };\n\n _proto._onReadyStateChange = function _onReadyStateChange(e) {\n var xhr = e.target;\n\n if (xhr.readyState === 2) {\n // HEADERS_RECEIVED\n if (xhr.responseURL != undefined) {\n // if the browser support this property\n var redirectedURL = this._seekHandler.removeURLParameters(xhr.responseURL);\n\n if (xhr.responseURL !== this._currentRequestURL && redirectedURL !== this._currentRedirectedURL) {\n this._currentRedirectedURL = redirectedURL;\n\n if (this._onURLRedirect) {\n this._onURLRedirect(redirectedURL);\n }\n }\n }\n\n if (xhr.status >= 200 && xhr.status <= 299) {\n if (this._waitForTotalLength) {\n return;\n }\n\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kBuffering;\n } else {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kError;\n\n if (this._onError) {\n this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].HTTP_STATUS_CODE_INVALID, {\n code: xhr.status,\n msg: xhr.statusText\n });\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__[\"RuntimeException\"]('RangeLoader: Http code invalid, ' + xhr.status + ' ' + xhr.statusText);\n }\n }\n }\n };\n\n _proto._onProgress = function _onProgress(e) {\n if (this._status === _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kError) {\n // Ignore error response\n return;\n }\n\n if (this._contentLength === null) {\n var openNextRange = false;\n\n if (this._waitForTotalLength) {\n this._waitForTotalLength = false;\n this._totalLengthReceived = true;\n openNextRange = true;\n var total = e.total;\n\n this._internalAbort();\n\n if (total != null & total !== 0) {\n this._totalLength = total;\n }\n } // calculate currrent request range's contentLength\n\n\n if (this._range.to === -1) {\n this._contentLength = this._totalLength - this._range.from;\n } else {\n // to !== -1\n this._contentLength = this._range.to - this._range.from + 1;\n }\n\n if (openNextRange) {\n this._openSubRange();\n\n return;\n }\n\n if (this._onContentLengthKnown) {\n this._onContentLengthKnown(this._contentLength);\n }\n }\n\n var delta = e.loaded - this._lastTimeLoaded;\n this._lastTimeLoaded = e.loaded;\n\n this._speedSampler.addBytes(delta);\n };\n\n _proto._normalizeSpeed = function _normalizeSpeed(input) {\n var list = this._chunkSizeKBList;\n var last = list.length - 1;\n var mid = 0;\n var lbound = 0;\n var ubound = last;\n\n if (input < list[0]) {\n return list[0];\n }\n\n while (lbound <= ubound) {\n mid = lbound + Math.floor((ubound - lbound) / 2);\n\n if (mid === last || input >= list[mid] && input < list[mid + 1]) {\n return list[mid];\n } else if (list[mid] < input) {\n lbound = mid + 1;\n } else {\n ubound = mid - 1;\n }\n }\n };\n\n _proto._onLoad = function _onLoad(e) {\n if (this._status === _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kError) {\n // Ignore error response\n return;\n }\n\n if (this._waitForTotalLength) {\n this._waitForTotalLength = false;\n return;\n }\n\n this._lastTimeLoaded = 0;\n var KBps = this._speedSampler.lastSecondKBps;\n\n if (KBps === 0) {\n this._zeroSpeedChunkCount++;\n\n if (this._zeroSpeedChunkCount >= 3) {\n // Try get currentKBps after 3 chunks\n KBps = this._speedSampler.currentKBps;\n }\n }\n\n if (KBps !== 0) {\n var normalized = this._normalizeSpeed(KBps);\n\n if (this._currentSpeedNormalized !== normalized) {\n this._currentSpeedNormalized = normalized;\n this._currentChunkSizeKB = normalized;\n }\n }\n\n var chunk = e.target.response;\n var byteStart = this._range.from + this._receivedLength;\n this._receivedLength += chunk.byteLength;\n var reportComplete = false;\n\n if (this._contentLength != null && this._receivedLength < this._contentLength) {\n // continue load next chunk\n this._openSubRange();\n } else {\n reportComplete = true;\n } // dispatch received chunk\n\n\n if (this._onDataArrival) {\n this._onDataArrival(chunk, byteStart, this._receivedLength);\n }\n\n if (reportComplete) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kComplete;\n\n if (this._onComplete) {\n this._onComplete(this._range.from, this._range.from + this._receivedLength - 1);\n }\n }\n };\n\n _proto._onXhrError = function _onXhrError(e) {\n this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderStatus\"].kError;\n var type = 0;\n var info = null;\n\n if (this._contentLength && this._receivedLength > 0 && this._receivedLength < this._contentLength) {\n type = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].EARLY_EOF;\n info = {\n code: -1,\n msg: 'RangeLoader meet Early-Eof'\n };\n } else {\n type = _loader_js__WEBPACK_IMPORTED_MODULE_2__[\"LoaderErrors\"].EXCEPTION;\n info = {\n code: -1,\n msg: e.constructor.name + ' ' + e.type\n };\n }\n\n if (this._onError) {\n this._onError(type, info);\n } else {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__[\"RuntimeException\"](info.msg);\n }\n };\n\n _createClass(RangeLoader, [{\n key: \"currentSpeed\",\n get: function get() {\n return this._speedSampler.lastSecondKBps;\n }\n }]);\n\n return RangeLoader;\n}(_loader_js__WEBPACK_IMPORTED_MODULE_2__[\"BaseLoader\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (RangeLoader);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/io/xhr-range-loader.js?"); | |
| 3401 | - | |
| 3402 | -/***/ }), | |
| 3403 | - | |
| 3404 | -/***/ "./src/FlvPlayer/flv.js/player/flv-player.js": | |
| 3405 | -/*!***************************************************!*\ | |
| 3406 | - !*** ./src/FlvPlayer/flv.js/player/flv-player.js ***! | |
| 3407 | - \***************************************************/ | |
| 3408 | -/*! exports provided: default */ | |
| 3409 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3410 | - | |
| 3411 | -"use strict"; | |
| 3412 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ \"./node_modules/node-libs-browser/node_modules/events/events.js\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/browser.js */ \"./src/FlvPlayer/flv.js/utils/browser.js\");\n/* harmony import */ var _player_events_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./player-events.js */ \"./src/FlvPlayer/flv.js/player/player-events.js\");\n/* harmony import */ var _core_transmuxer_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/transmuxer.js */ \"./src/FlvPlayer/flv.js/core/transmuxer.js\");\n/* harmony import */ var _core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../core/transmuxing-events.js */ \"./src/FlvPlayer/flv.js/core/transmuxing-events.js\");\n/* harmony import */ var _core_mse_controller_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../core/mse-controller.js */ \"./src/FlvPlayer/flv.js/core/mse-controller.js\");\n/* harmony import */ var _core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../core/mse-events.js */ \"./src/FlvPlayer/flv.js/core/mse-events.js\");\n/* harmony import */ var _player_errors_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./player-errors.js */ \"./src/FlvPlayer/flv.js/player/player-errors.js\");\n/* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../config.js */ \"./src/FlvPlayer/flv.js/config.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../common/common */ \"./src/common/common.js\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar FlvPlayer = /*#__PURE__*/function () {\n function FlvPlayer(mediaDataSource, config) {\n this.TAG = 'FlvPlayer';\n this._type = 'FlvPlayer';\n this._emitter = new events__WEBPACK_IMPORTED_MODULE_0___default.a();\n this._IsWasm = false;\n this.callbackFunc = null;\n this.callbackPlayTimeFunc = null;\n this.callbackConnectStatusFunc = null;\n this.callbackUserPtr = null;\n this.getVideoInfoCallbackFunc = null;\n this.needCallPlay = false;\n this.waitingForData = false;\n this.playTally = 0;\n this._config = Object(_config_js__WEBPACK_IMPORTED_MODULE_9__[\"createDefaultConfig\"])();\n\n if (typeof config === 'object') {\n Object.assign(this._config, config);\n }\n\n if (config.decodeType === 'soft') {\n this._IsWasm = true;\n }\n\n if (mediaDataSource.type.toLowerCase() !== 'flv' && mediaDataSource.type.toLowerCase() !== 'm3u8' && mediaDataSource.type.toLowerCase() !== 'rtsp') {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_10__[\"InvalidArgumentException\"]('FlvPlayer requires an flv MediaDataSource input!');\n }\n\n this.isFlv = true;\n\n if (mediaDataSource.type.toLowerCase() === 'm3u8') {\n this.isFlv = false;\n }\n\n if (mediaDataSource.isLive === true) {\n this._config.isLive = true;\n }\n\n this.e = {\n onvLoadedMetadata: this._onvLoadedMetadata.bind(this),\n onvSeeking: this._onvSeeking.bind(this),\n onvCanPlay: this._onvCanPlay.bind(this),\n onvStalled: this._onvStalled.bind(this),\n onvProgress: this._onvProgress.bind(this),\n onvWaiting: this._onvWaiting.bind(this),\n onvPlaying: this._onvPlaying.bind(this)\n };\n\n if (self.performance && self.performance.now) {\n this._now = self.performance.now.bind(self.performance);\n } else {\n this._now = Date.now;\n }\n\n this._pendingSeekTime = null; // in seconds\n\n this._requestSetTime = false;\n this._seekpointRecord = null;\n this._progressChecker = null;\n this._mediaDataSource = mediaDataSource;\n this._mediaCanvas = null;\n this._mediaElement = null;\n this._msectl = null;\n this._transmuxer = null;\n this._initFlag = false;\n this._msectlInitSegmentVideoParams = null;\n this._msectlInitSegmentAudioParams = null;\n this._msectlResetComplete = true;\n this._mseSourceOpened = false;\n this._hasPendingLoad = false;\n this._receivedCanPlay = false;\n this._mediaInfo = null;\n this._statisticsInfo = null;\n var chromeNeedIDRFix = _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].chrome && (_utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].version.major < 50 || _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].version.major === 50 && _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].version.build < 2661);\n this._alwaysSeekKeyframe = chromeNeedIDRFix || _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].msedge || _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].msie ? true : false;\n\n if (this._alwaysSeekKeyframe) {\n this._config.accurateSeek = false;\n }\n }\n\n var _proto = FlvPlayer.prototype;\n\n _proto.destroy = function destroy() {\n if (this._progressChecker != null) {\n window.clearInterval(this._progressChecker);\n this._progressChecker = null;\n }\n\n if (this._transmuxer) {\n this.unload();\n }\n\n if (this._mediaElement) {\n this.detachMediaElement();\n }\n\n this.e = null;\n this._mediaDataSource = null;\n\n this._emitter.removeAllListeners();\n\n this._emitter = null;\n };\n\n _proto.on = function on(event, listener) {\n var _this2 = this;\n\n if (event === _player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].MEDIA_INFO) {\n if (this._mediaInfo != null) {\n Promise.resolve().then(function () {\n _this2._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].MEDIA_INFO, _this2.mediaInfo);\n });\n }\n } else if (event === _player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].STATISTICS_INFO) {\n if (this._statisticsInfo != null) {\n Promise.resolve().then(function () {\n _this2._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].STATISTICS_INFO, _this2.statisticsInfo);\n });\n }\n }\n\n this._emitter.addListener(event, listener);\n };\n\n _proto.off = function off(event, listener) {\n this._emitter.removeListener(event, listener);\n };\n\n _proto.attachMediaElement = function attachMediaElement(mediaElement, mediaCanvas) {\n var _this3 = this;\n\n this._mediaCanvas = mediaCanvas;\n\n if (!this._IsWasm) {\n this._mediaElement = mediaElement;\n mediaElement.addEventListener('loadedmetadata', this.e.onvLoadedMetadata);\n mediaElement.addEventListener('seeking', this.e.onvSeeking);\n mediaElement.addEventListener('canplay', this.e.onvCanPlay);\n mediaElement.addEventListener('stalled', this.e.onvStalled);\n mediaElement.addEventListener('progress', this.e.onvProgress);\n mediaElement.addEventListener('waiting', this.e.onvWaiting);\n mediaElement.addEventListener('playing', this.e.onvPlaying);\n this._msectl = new _core_mse_controller_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this._config);\n\n this._msectl.setSeekPlayTime(this._mediaDataSource.startPlaySecs);\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].CB_PLAY_INFO, this._onmseCbPlayInfo.bind(this));\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].UPDATE_END, this._onmseUpdateEnd.bind(this));\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].BUFFER_FULL, this._onmseBufferFull.bind(this));\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].SOURCE_OPEN, function () {\n _this3._mseSourceOpened = true;\n\n if (_this3._hasPendingLoad) {\n _this3._hasPendingLoad = false;\n\n _this3.load();\n }\n });\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].ERROR, function (info) {\n //console.log(\"FLV-Player.js::MSEEvents.ERROR\");\n _this3.ReCreateMSECtl();\n /*\n this._emitter.emit(PlayerEvents.ERROR,\n ErrorTypes.MEDIA_ERROR,\n ErrorDetails.MEDIA_MSE_ERROR,\n info\n );\n */\n\n });\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].CHANGE_SPEED, function (info) {\n //console.log(\"ChangeSpeed: \" + info.speed);\n if (_this3._transmuxer) {\n _this3._transmuxer.changeSpeed(info.speed);\n }\n });\n\n this._msectl.attachMediaElement(mediaElement);\n\n if (this._pendingSeekTime != null) {\n try {\n mediaElement.currentTime = this._pendingSeekTime;\n this._pendingSeekTime = null;\n } catch (e) {// IE11 may throw InvalidStateError if readyState === 0\n // We can defer set currentTime operation after loadedmetadata\n }\n }\n } else {//alert(\"apple browse\");\n }\n };\n\n _proto.detachMediaElement = function detachMediaElement() {\n if (!this._IsWasm) {\n if (this._mediaElement) {\n this._msectl.detachMediaElement();\n\n this._mediaElement.removeEventListener('loadedmetadata', this.e.onvLoadedMetadata);\n\n this._mediaElement.removeEventListener('seeking', this.e.onvSeeking);\n\n this._mediaElement.removeEventListener('canplay', this.e.onvCanPlay);\n\n this._mediaElement.removeEventListener('stalled', this.e.onvStalled);\n\n this._mediaElement.removeEventListener('progress', this.e.onvProgress);\n\n this._mediaElement = null;\n }\n\n if (this._msectl) {\n this._msectl.destroy();\n\n this._msectl = null;\n }\n }\n };\n\n _proto.ReCreateMSECtl = function ReCreateMSECtl() {\n var _this4 = this;\n\n this._msectlResetComplete = false; //console.log(\"ReCreateMSECtl...\");\n\n if (this._msectl) {\n if (this._mediaElement) {\n this._msectl.detachMediaElement();\n }\n\n this._msectl.destroy();\n\n this._msectl = null;\n }\n\n this._msectl = new _core_mse_controller_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this._config);\n\n this._msectl.setSeekPlayTime(this._mediaDataSource.startPlaySecs);\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].CB_PLAY_INFO, this._onmseCbPlayInfo.bind(this));\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].UPDATE_END, this._onmseUpdateEnd.bind(this));\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].BUFFER_FULL, this._onmseBufferFull.bind(this));\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].SOURCE_OPEN, function () {\n _this4._mseSourceOpened = true; //if (this._hasPendingLoad) {\n //this._hasPendingLoad = false;\n //this.load();\n //}\n\n if (_this4._msectlInitSegmentVideoParams) {\n _this4._msectl.appendInitSegment(_this4._msectlInitSegmentVideoParams);\n }\n\n if (_this4._msectlInitSegmentAudioParams && !_common_common__WEBPACK_IMPORTED_MODULE_11__[\"GetAppendBufferError\"]().audio) {\n _this4._msectl.appendInitSegment(_this4._msectlInitSegmentAudioParams);\n } else if (_this4._msectlInitSegmentAudioParams && _common_common__WEBPACK_IMPORTED_MODULE_11__[\"GetAppendBufferError\"]().audio) {\n console.log('Discard audio: Error playing audio...');\n _common_common__WEBPACK_IMPORTED_MODULE_11__[\"SetEnableAudio\"](false);\n }\n\n _common_common__WEBPACK_IMPORTED_MODULE_11__[\"ClearAppendBufferError\"]();\n _this4._msectlResetComplete = true;\n });\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].ERROR, function (info) {\n //console.log(\"FLV-Player.js::MSEEvents.ERROR ReCreateMSECtl\");\n _this4.ReCreateMSECtl();\n /*\n this._emitter.emit(PlayerEvents.ERROR,\n ErrorTypes.MEDIA_ERROR,\n ErrorDetails.MEDIA_MSE_ERROR,\n info\n );\n */\n\n });\n\n this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].CHANGE_SPEED, function (info) {\n //console.log(\"ChangeSpeed: \" + info.speed);\n if (_this4._transmuxer) {\n _this4._transmuxer.changeSpeed(info.speed);\n }\n });\n\n this._msectl.attachMediaElement(this._mediaElement);\n\n if (this._transmuxer) {\n this._transmuxer.seekToSecs(0, 0);\n }\n } //��transmuxer.js �лص�����, �Ƿ�Ϊwasm����, ���ݸñ�ʶ��ȷ�Ϻ�������\n ;\n\n _proto.callbackWasmType = function callbackWasmType(_this, isWasm) {\n _this._IsWasm = isWasm;\n\n _this.callbackToParent();\n\n if (_this.needCallPlay) {\n _this.needCallPlay = false;\n\n if (!isWasm) {\n _this.play();\n }\n }\n };\n\n _proto.callbackToParent = function callbackToParent() {\n if (this.callbackFunc) {\n this.callbackFunc(this.callbackUserPtr, this.isFlv ? 'flv' : 'm3u8', this._IsWasm);\n }\n };\n\n _proto.setCallback = function setCallback(func, cbPlayTimeFunc, cbConnectStatusFunc, userPtr, cbGetVideoInfoFunc) {\n this.callbackFunc = func;\n this.callbackPlayTimeFunc = cbPlayTimeFunc;\n this.callbackConnectStatusFunc = cbConnectStatusFunc;\n this.callbackUserPtr = userPtr;\n this.getVideoInfoCallbackFunc = cbGetVideoInfoFunc;\n };\n\n _proto.load = function load() {\n var _this5 = this;\n\n if (!this._IsWasm) {\n if (!this._mediaElement) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_10__[\"IllegalStateException\"]('HTMLMediaElement must be attached before load()!');\n }\n\n if (this._transmuxer) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_10__[\"IllegalStateException\"]('FlvPlayer.load() has been called, please call unload() first!');\n }\n\n if (this._hasPendingLoad) {\n return;\n }\n\n if (this._config.deferLoadAfterSourceOpen && this._mseSourceOpened === false) {\n this._hasPendingLoad = true;\n return;\n }\n\n if (this._mediaElement.readyState > 0) {\n this._requestSetTime = true; // IE11 may throw InvalidStateError if readyState === 0\n\n this._mediaElement.currentTime = 0;\n }\n }\n\n this._transmuxer = new _core_transmuxer_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"](this._mediaDataSource, this._config, this._mediaCanvas, this, this.callbackWasmType, this.callbackPlayTimeFunc, this.callbackUserPtr, this.getVideoInfoCallbackFunc);\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].INIT_SEGMENT, function (type, is) {\n if (!_this5._IsWasm) {\n // && !this._initFlag) {\n _this5._initFlag = true;\n\n _this5._msectl.appendInitSegment(is);\n\n if (type === 'video') {\n _this5._msectlInitSegmentVideoParams = is;\n } else if (type === 'audio') {\n _this5._msectlInitSegmentAudioParams = is;\n } //let p = new Uint8Array(is.data);\n //console.log(\"mp4 header:\" + p);\n\n }\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].MEDIA_SEGMENT, function (type, ms) {\n if (!_this5._IsWasm) {\n if (_this5._msectlResetComplete) {\n _this5._msectl.appendMediaSegment(ms);\n }\n } // lazyLoad check\n\n\n if (_this5._config.lazyLoad && !_this5._config.isLive) {\n var currentTime = _this5._mediaElement.currentTime;\n\n if (ms.info.endDts >= (currentTime + _this5._config.lazyLoadMaxDuration) * 1000) {\n if (_this5._progressChecker == null) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].v(_this5.TAG, 'Maximum buffering duration exceeded, suspend transmuxing task');\n\n _this5._suspendTransmuxer();\n }\n }\n }\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].LOADING_COMPLETE, function () {\n if (!_this5._IsWasm) {\n _this5._msectl.endOfStream();\n }\n\n _this5._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].LOADING_COMPLETE);\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].RECOVERED_EARLY_EOF, function () {\n _this5._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].RECOVERED_EARLY_EOF);\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].IO_ERROR, function (detail, info) {\n _this5._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ERROR, _player_errors_js__WEBPACK_IMPORTED_MODULE_8__[\"ErrorTypes\"].NETWORK_ERROR, detail, info);\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].DEMUX_ERROR, function (detail, info) {\n _this5._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ERROR, _player_errors_js__WEBPACK_IMPORTED_MODULE_8__[\"ErrorTypes\"].MEDIA_ERROR, detail, {\n code: -1,\n msg: info\n });\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].MEDIA_INFO, function (mediaInfo) {\n _this5._mediaInfo = mediaInfo;\n\n _this5._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].MEDIA_INFO, Object.assign({}, mediaInfo));\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].METADATA_ARRIVED, function (metadata) {\n _this5._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].METADATA_ARRIVED, metadata);\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].SCRIPTDATA_ARRIVED, function (data) {\n _this5._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].SCRIPTDATA_ARRIVED, data);\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].STATISTICS_INFO, function (statInfo) {\n _this5._statisticsInfo = _this5._fillStatisticsInfo(statInfo);\n\n _this5._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].STATISTICS_INFO, Object.assign({}, _this5._statisticsInfo));\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].RECOMMEND_SEEKPOINT, function (milliseconds) {\n if (_this5._mediaElement && !_this5._config.accurateSeek) {\n _this5._requestSetTime = true;\n _this5._mediaElement.currentTime = milliseconds / 1000;\n }\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].RECONNECT_ING, function (reconnectTimes) {\n //������\n if (_this5.callbackConnectStatusFunc) {\n _this5.callbackConnectStatusFunc(_this5.callbackUserPtr, 0);\n }\n });\n\n this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].RECONNECT_SUCCESS, function (reconnectTimes) {\n if (!_this5._IsWasm) {\n //console.log(\"Get Reconnect times...\" + reconnectTimes + \" play...\");\n if (reconnectTimes > 1 && _this5._msectl) {\n _this5._transmuxer.seekToSecs(0, 0); //console.log(\"msectl.reset...\");\n\n\n _this5._msectl.reset(true); //\n\n } //��һ������ʱ, ����play\n\n\n if (_this5._mediaElement && reconnectTimes == 1) {//this._mediaElement.play();\n }\n } //���ӳɹ�\n\n\n if (_this5.callbackConnectStatusFunc) {\n _this5.callbackConnectStatusFunc(_this5.callbackUserPtr, 1);\n }\n });\n\n this._transmuxer.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].CB_PLAY_INFO, this._onmseCbPlayInfo.bind(this));\n\n this._transmuxer.open();\n };\n\n _proto.unload = function unload() {\n if (!this._IsWasm) {\n if (this._mediaElement) {\n this._mediaElement.pause();\n }\n\n if (this._msectl) {\n this._msectl.seek(0);\n }\n }\n\n if (this._transmuxer) {\n this._transmuxer.close();\n\n this._transmuxer.destroy();\n\n this._transmuxer = null;\n }\n\n this._initFlag = false;\n };\n\n _proto.play = function play() {\n if (this._transmuxer == null) {\n this.needCallPlay = true;\n\n if (this._mediaElement) {\n this._mediaElement.volume = 0;\n }\n\n return false;\n }\n\n if (this._mediaElement) {\n this.needCallPlay = false; //this._mediaElement.volume = 0;\n\n return this._mediaElement.play();\n }\n };\n\n _proto.pause = function pause() {\n //if (this._IsWasm) {\n if (this._transmuxer) {\n this._transmuxer.pause();\n } //}\n //else\n\n\n if (this._mediaElement) {\n this._mediaElement.pause();\n }\n\n if (this._msectl) {\n this._msectl.pause();\n }\n };\n\n _proto.resume = function resume() {\n if (this._transmuxer) {\n this._transmuxer.resume();\n }\n\n if (this._msectl) {\n if (_common_common__WEBPACK_IMPORTED_MODULE_11__[\"GetLiveStreamType\"]()) {\n this._msectl.reset(false);\n }\n\n this._msectl.resume();\n }\n\n if (this._mediaElement) {\n this._mediaElement.play();\n }\n };\n\n _proto.rtspScale = function rtspScale(scaleValue, ptsInterval) {\n if (this._transmuxer) {\n this._transmuxer.rtspScale(scaleValue, ptsInterval);\n }\n };\n\n //===================\n _proto.openAudio = function openAudio() {\n if (this._IsWasm) {\n if (this._transmuxer) {\n return this._transmuxer.openAudio();\n }\n } else if (this._mediaElement) {\n this._mediaElement.volume = 1;\n return true;\n }\n\n return false;\n };\n\n _proto.closeAudio = function closeAudio() {\n if (this._IsWasm) {\n if (this._transmuxer) {\n return this._transmuxer.closeAudio();\n }\n } else if (this._mediaElement) {\n this._mediaElement.volume = 0;\n return true;\n }\n\n return false;\n };\n\n _proto.seek = function seek(seekValue, seekType) {\n //Ӳ�� && FLV\n if (!this._IsWasm && this.isFlv && this._mediaElement && this._mediaElement.duration > 0) {\n var secs = Math.floor(seekValue / 100 * this._mediaElement.duration);\n\n if (this._mediaElement) {\n this._internalSeek(secs);\n } else {\n this._pendingSeekTime = secs;\n }\n\n return true;\n }\n\n if (this._transmuxer) {\n var _secs = Math.floor(seekValue / 100 * this._transmuxer.getTotalDuration());\n\n if (this._msectl) {\n if (this._msectl.getCurrentPlayTime() == _secs) {\n return true;\n } //this._msectl._doCleanupSourceBuffer(); //gavin\n //this._msectl.reset(true);\n //if (this._mediaElement) this._mediaElement.play();\n\n }\n\n this._transmuxer.seekToSecs(seekValue, seekType);\n\n if (this._msectl) {\n this._msectl.setSeekPlayTime(_secs); //this._msectl._doCleanupSourceBuffer(); //gavin\n\n\n this._msectl.reset(true); //if (this._mediaElement) this._mediaElement.play();\n //this._mediaElement.currentTime = 0;\n\n }\n\n if (this._mediaElement) {\n //this._internalSeek(secs);\n //this._mediaElement.pause();\n //console.log(\"Media duration: \" + this._mediaElement.duration);\n //this._requestSetTime = true;\n if (Math.floor(this._mediaElement.currentTime) !== Math.floor(_secs)) {//console.log(\"Seek[\" + seekValue + \"%] Set CurrentTime: \" + this._mediaElement.currentTime + \" --> \" + secs);\n //this._mediaElement.currentTime = Math.floor(secs);\n } else {//console.log(\"Seek time: \" + Math.floor(this._mediaElement.currentTime) + \" === \" + Math.floor(secs));\n } //this._mediaElement.fastSeek(secs); //chrome��֧��\n //this._mediaElement.play();\n\n\n if (this._progressChecker != null) {//this._checkProgressAndResume();\n }\n } else {\n this._pendingSeekTime = _secs;\n }\n\n return true;\n }\n } //===================\n ;\n\n _proto._fillStatisticsInfo = function _fillStatisticsInfo(statInfo) {\n statInfo.playerType = this._type;\n\n if (!(this._mediaElement instanceof HTMLVideoElement)) {\n return statInfo;\n }\n\n var hasQualityInfo = true;\n var decoded = 0;\n var dropped = 0;\n\n if (this._mediaElement.getVideoPlaybackQuality) {\n var quality = this._mediaElement.getVideoPlaybackQuality();\n\n decoded = quality.totalVideoFrames;\n dropped = quality.droppedVideoFrames;\n } else if (this._mediaElement.webkitDecodedFrameCount != undefined) {\n decoded = this._mediaElement.webkitDecodedFrameCount;\n dropped = this._mediaElement.webkitDroppedFrameCount;\n } else {\n hasQualityInfo = false;\n }\n\n if (hasQualityInfo) {\n statInfo.decodedFrames = decoded;\n statInfo.droppedFrames = dropped;\n }\n\n return statInfo;\n } //�ص���ǰ����ʱ��\n ;\n\n _proto._onmseCbPlayInfo = function _onmseCbPlayInfo() {\n //console.log(\"onmse_CBPlayInfo...\");\n if (this._transmuxer) {\n var currentTime = 0;\n var duration = 0;\n\n if (!this._IsWasm && this._msectl) {\n currentTime = this._msectl.getCurrentPlayTime();\n duration = this._msectl.getTotalDuration(); // / 1000;\n\n if (duration == Infinity && !_common_common__WEBPACK_IMPORTED_MODULE_11__[\"GetLiveStreamType\"]()) {\n //H264�Ļط�, msectl��duration��ΪInfinity, ���Դ˴���ȡtransmuxer����ʱ��\n duration = this._transmuxer.getTotalDuration(); // / 1000;\n }\n } else {\n currentTime = this._transmuxer.getCurrentPlayTime();\n if (currentTime < 0) currentTime = 0;\n duration = this._transmuxer.getTotalDuration(); // / 1000;\n } //duration = this._transmuxer.getTotalDuration();// / 1000;\n //console.log(\"Callback play info...\" + currentTime + \" / \" + duration);\n\n\n if (this.callbackPlayTimeFunc) {\n //_this, streamType, currentTime, totalDuration\n this.callbackPlayTimeFunc(this.callbackUserPtr, this.isFlv ? 'flv' : 'm3u8', currentTime, duration);\n }\n }\n };\n\n _proto._onmseUpdateEnd = function _onmseUpdateEnd() {\n if (!this._config.lazyLoad || this._config.isLive) {\n return;\n }\n\n var buffered = this._mediaElement.buffered;\n var currentTime = this._mediaElement.currentTime;\n var currentRangeStart = 0;\n var currentRangeEnd = 0;\n\n for (var i = 0; i < buffered.length; i++) {\n var start = buffered.start(i);\n var end = buffered.end(i);\n\n if (start <= currentTime && currentTime < end) {\n currentRangeStart = start;\n currentRangeEnd = end;\n break;\n }\n }\n\n if (currentRangeEnd >= currentTime + this._config.lazyLoadMaxDuration && this._progressChecker == null) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].v(this.TAG, 'onmseUpdateEnd::Maximum buffering duration exceeded, suspend transmuxing task');\n\n this._suspendTransmuxer();\n }\n };\n\n _proto._onmseBufferFull = function _onmseBufferFull() {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].v(this.TAG, 'MSE SourceBuffer is full, suspend transmuxing task');\n\n if (this._progressChecker == null) {\n this._suspendTransmuxer();\n }\n };\n\n _proto._suspendTransmuxer = function _suspendTransmuxer() {\n if (this._transmuxer) {\n this._transmuxer.pause();\n\n if (this._progressChecker == null) {\n this._progressChecker = window.setInterval(this._checkProgressAndResume.bind(this), 1000);\n }\n }\n };\n\n _proto._checkProgressAndResume = function _checkProgressAndResume() {\n if (this._mediaElement == null) return;\n var currentTime = this._mediaElement.currentTime;\n var buffered = this._mediaElement.buffered;\n var needResume = false;\n\n for (var i = 0; i < buffered.length; i++) {\n var from = buffered.start(i);\n var to = buffered.end(i);\n\n if (currentTime >= from && currentTime < to) {\n if (currentTime >= to - this._config.lazyLoadRecoverDuration) {\n needResume = true;\n }\n\n break;\n }\n }\n\n if (needResume) {\n window.clearInterval(this._progressChecker);\n this._progressChecker = null;\n\n if (needResume) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].v(this.TAG, 'Continue loading from paused position');\n\n this._transmuxer.resume();\n }\n }\n };\n\n _proto._isTimepointBuffered = function _isTimepointBuffered(seconds) {\n var buffered = this._mediaElement.buffered;\n\n for (var i = 0; i < buffered.length; i++) {\n var from = buffered.start(i);\n var to = buffered.end(i);\n\n if (seconds >= from && seconds < to) {\n return true;\n }\n }\n\n return false;\n };\n\n _proto._internalSeek = function _internalSeek(seconds) {\n // console.log('_internalSeek: ' + seconds);\n var directSeek = this._isTimepointBuffered(seconds);\n\n var directSeekBegin = false;\n var directSeekBeginTime = 0;\n\n if (seconds < 1.0 && this._mediaElement.buffered.length > 0) {\n var videoBeginTime = this._mediaElement.buffered.start(0);\n\n if (videoBeginTime < 1.0 && seconds < videoBeginTime || _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].safari) {\n directSeekBegin = true; // also workaround for Safari: Seek to 0 may cause video stuck, use 0.1 to avoid\n\n directSeekBeginTime = _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].safari ? 0.1 : videoBeginTime;\n }\n }\n\n if (directSeekBegin) {\n // seek to video begin, set currentTime directly if beginPTS buffered\n this._requestSetTime = true;\n this._mediaElement.currentTime = directSeekBeginTime;\n } else if (directSeek) {\n // buffered position\n if (!this._alwaysSeekKeyframe) {\n this._requestSetTime = true;\n this._mediaElement.currentTime = seconds;\n } else {\n var idr = this._msectl.getNearestKeyframe(Math.floor(seconds * 1000));\n\n this._requestSetTime = true;\n\n if (idr != null) {\n this._mediaElement.currentTime = idr.dts / 1000;\n } else {\n this._mediaElement.currentTime = seconds;\n }\n }\n\n if (this._progressChecker != null) {\n this._checkProgressAndResume();\n }\n } else {\n if (this._progressChecker != null) {\n window.clearInterval(this._progressChecker);\n this._progressChecker = null;\n }\n\n this._msectl.seek(seconds);\n\n this._transmuxer.seek(Math.floor(seconds * 1000)); // in milliseconds\n // no need to set mediaElement.currentTime if non-accurateSeek,\n // just wait for the recommend_seekpoint callback\n\n\n if (this._config.accurateSeek) {\n this._requestSetTime = true;\n this._mediaElement.currentTime = seconds;\n }\n }\n };\n\n _proto._checkAndApplyUnbufferedSeekpoint = function _checkAndApplyUnbufferedSeekpoint() {\n return;\n\n if (this.isFlv && this.playTally > 0 && _common_common__WEBPACK_IMPORTED_MODULE_11__[\"GetLiveStreamType\"]()) {\n console.log('_checkAndApplyUnbufferedSeekpoint. RETURN...');\n\n if (this._progressChecker != null) {\n window.clearTimeout(this._progressChecker);\n this._progressChecker = null;\n }\n\n var paused = false;\n\n if (this._transmuxer) {\n paused = this._transmuxer.isPaused();\n }\n\n if (this._mediaElement && !paused) {\n this._mediaElement.play();\n }\n\n return;\n }\n\n if (this._seekpointRecord) {\n console.log('_checkAndApplyUnbufferedSeekpoint seekpointRecord');\n\n if (this._seekpointRecord.recordTime <= this._now() - 100) {\n var target = this._mediaElement.currentTime;\n this._seekpointRecord = null;\n\n if (!this._isTimepointBuffered(target)) {\n if (this._progressChecker != null) {\n window.clearTimeout(this._progressChecker);\n this._progressChecker = null;\n } // .currentTime is consists with .buffered timestamp\n // Chrome/Edge use DTS, while FireFox/Safari use PTS\n\n\n this._msectl.seek(target);\n\n this._transmuxer.seek(Math.floor(target * 1000)); // set currentTime if accurateSeek, or wait for recommend_seekpoint callback\n\n\n if (this._config.accurateSeek) {\n this._requestSetTime = true;\n this._mediaElement.currentTime = target; //gavin\n\n if (this.isFlv && this.playTally > 0) {//console.log(\"_checkAndApplyUnbufferedSeekpoint. RETURN...\");\n // this._transmuxer.seek(0);\n //return;\n }\n }\n }\n } else {\n console.log('_checkAndApplyUnbufferedSeekpoint setTimeout(50)');\n window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this), 50);\n }\n }\n };\n\n _proto._checkAndResumeStuckPlayback = function _checkAndResumeStuckPlayback(stalled) {\n return;\n console.log('_checkAndResumeStuckPlayback: ' + stalled);\n var media = this._mediaElement;\n\n if (stalled || !this._receivedCanPlay || media.readyState < 2) {\n // HAVE_CURRENT_DATA\n var buffered = media.buffered;\n\n if (buffered.length > 0 && media.currentTime < buffered.start(0)) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].w(this.TAG, \"Playback seems stuck at \" + media.currentTime + \", seek to \" + buffered.start(0));\n this._requestSetTime = true; //this._mediaElement.pause(); //gavin\n\n this._mediaElement.currentTime = buffered.start(0); //this._mediaElement.play(); //gavin\n\n this._mediaElement.removeEventListener('progress', this.e.onvProgress);\n }\n } else {\n // Playback didn't stuck, remove progress event listener\n this._mediaElement.removeEventListener('progress', this.e.onvProgress); //console.log(\"this._mediaElement.removeEventListener('progress'\");\n\n }\n };\n\n _proto._onvLoadedMetadata = function _onvLoadedMetadata(e) {\n if (this._pendingSeekTime != null) {\n this._mediaElement.currentTime = this._pendingSeekTime;\n this._pendingSeekTime = null;\n }\n };\n\n _proto._onvSeeking = function _onvSeeking(e) {\n // handle seeking request from browser's progress bar\n var target = this._mediaElement.currentTime;\n var buffered = this._mediaElement.buffered; //console.log(\"_onvSeeking: target:\" + target + \" buffered.length: \" + buffered.length);\n\n if (this._requestSetTime) {\n this._requestSetTime = false;\n return;\n }\n\n if (target < 1.0 && buffered.length > 0) {\n // seek to video begin, set currentTime directly if beginPTS buffered\n var videoBeginTime = buffered.start(0);\n\n if (videoBeginTime < 1.0 && target < videoBeginTime || _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].safari) {\n this._requestSetTime = true; // also workaround for Safari: Seek to 0 may cause video stuck, use 0.1 to avoid\n\n this._mediaElement.currentTime = _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].safari ? 0.1 : videoBeginTime;\n console.log('this._mediaElement.currentTime: ' + this._mediaElement.currentTime);\n return;\n }\n }\n\n if (this._isTimepointBuffered(target)) {\n if (this._alwaysSeekKeyframe) {\n var idr = this._msectl.getNearestKeyframe(Math.floor(target * 1000));\n\n if (idr != null) {\n this._requestSetTime = true;\n this._mediaElement.currentTime = idr.dts / 1000;\n console.log('_isTimepointBuffered this._mediaElement.currentTime: ' + this._mediaElement.currentTime);\n }\n }\n\n if (this._progressChecker != null) {\n this._checkProgressAndResume();\n }\n\n return;\n }\n\n this._seekpointRecord = {\n seekPoint: target,\n recordTime: this._now()\n };\n window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this), 50);\n };\n\n _proto._onvCanPlay = function _onvCanPlay(e) {\n this._receivedCanPlay = true;\n\n this._mediaElement.removeEventListener('canplay', this.e.onvCanPlay);\n };\n\n _proto._onvStalled = function _onvStalled(e) {\n this._checkAndResumeStuckPlayback(true);\n };\n\n _proto._onvProgress = function _onvProgress(e) {\n this._checkAndResumeStuckPlayback();\n };\n\n _proto._onvWaiting = function _onvWaiting(e) {\n //console.log(\"wait for data....\");\n return;\n this.waitingForData = true;\n\n if (this.playTally >= 1) {\n //this._checkAndResumeStuckPlayback(true);\n var media = this._mediaElement;\n var buffered = media.buffered;\n\n if (buffered.length > 0) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].w(this.TAG, \"waiting... Playback seems stuck at \" + media.currentTime + \", seek to \" + buffered.start(0));\n this._requestSetTime = true;\n var end = buffered.end(buffered.length - 1);\n this._mediaElement.currentTime = end - 1; // buffered.start(0) + (buffered.end(0) - buffered.start(0) / 2);\n\n console.log('waiting... set currentTime: ' + (end - 1)); //buffered.end(0));\n } else {\n console.log('waiting... no buffer'); //this._transmuxer.seekToSecs(0, 0);\n //this._msectl._doAppendSegments();\n //this._mediaElement.play();\n //this._mediaElement.currentTime += 3;\n } //this._mediaElement.currentTime = this._msectl.GetSourceBufferStartTime();\n //this._mediaElement.currentTime = 0;\n //this._msectl.reset(true);\n\n }\n };\n\n _proto._onvPlaying = function _onvPlaying(e) {\n //console.log(\"Playing...\");\n this.waitingForData = false;\n this.playTally++;\n };\n\n _proto.snapshot = function snapshot() {\n if (this._transmuxer && this._transmuxer != undefined) {\n this._transmuxer.snapshot();\n }\n };\n\n _createClass(FlvPlayer, [{\n key: \"type\",\n get: function get() {\n return this._type;\n }\n }, {\n key: \"buffered\",\n get: function get() {\n return this._mediaElement.buffered;\n }\n }, {\n key: \"duration\",\n get: function get() {\n return this._mediaElement.duration;\n }\n }, {\n key: \"volume\",\n get: function get() {\n return this._mediaElement.volume;\n },\n set: function set(value) {\n this._mediaElement.volume = value;\n }\n }, {\n key: \"muted\",\n get: function get() {\n return this._mediaElement.muted;\n },\n set: function set(muted) {\n this._mediaElement.muted = muted;\n }\n }, {\n key: \"currentTime\",\n get: function get() {\n if (this._mediaElement) {\n return this._mediaElement.currentTime;\n }\n\n return 0;\n },\n set: function set(seconds) {\n if (this._mediaElement) {\n this._internalSeek(seconds);\n } else {\n this._pendingSeekTime = seconds;\n }\n }\n }, {\n key: \"mediaInfo\",\n get: function get() {\n return Object.assign({}, this._mediaInfo);\n }\n }, {\n key: \"statisticsInfo\",\n get: function get() {\n if (this._statisticsInfo == null) {\n this._statisticsInfo = {};\n }\n\n this._statisticsInfo = this._fillStatisticsInfo(this._statisticsInfo);\n return Object.assign({}, this._statisticsInfo);\n }\n }]);\n\n return FlvPlayer;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FlvPlayer);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/player/flv-player.js?"); | |
| 3413 | - | |
| 3414 | -/***/ }), | |
| 3415 | - | |
| 3416 | -/***/ "./src/FlvPlayer/flv.js/player/native-player.js": | |
| 3417 | -/*!******************************************************!*\ | |
| 3418 | - !*** ./src/FlvPlayer/flv.js/player/native-player.js ***! | |
| 3419 | - \******************************************************/ | |
| 3420 | -/*! exports provided: default */ | |
| 3421 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3422 | - | |
| 3423 | -"use strict"; | |
| 3424 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ \"./node_modules/node-libs-browser/node_modules/events/events.js\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _player_events_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./player-events.js */ \"./src/FlvPlayer/flv.js/player/player-events.js\");\n/* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../config.js */ \"./src/FlvPlayer/flv.js/config.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n // Player wrapper for browser's native player (HTMLVideoElement) without MediaSource src.\n\nvar NativePlayer = /*#__PURE__*/function () {\n function NativePlayer(mediaDataSource, h5Video, callbackPlayTimeFunc, callbackUserPtr, config) {\n this.TAG = 'NativePlayer';\n this._type = 'NativePlayer';\n this._emitter = new events__WEBPACK_IMPORTED_MODULE_0___default.a();\n this._config = Object(_config_js__WEBPACK_IMPORTED_MODULE_2__[\"createDefaultConfig\"])();\n\n if (typeof config === 'object') {\n Object.assign(this._config, config);\n }\n\n if (mediaDataSource.type.toLowerCase() === 'flv') {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__[\"InvalidArgumentException\"]('NativePlayer does\\'t support flv MediaDataSource input!');\n }\n\n if (mediaDataSource.hasOwnProperty('segments')) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__[\"InvalidArgumentException\"](\"NativePlayer(\" + mediaDataSource.type + \") doesn't support multipart playback!\");\n }\n\n this.e = {\n onvLoadedMetadata: this._onvLoadedMetadata.bind(this)\n };\n this._pendingSeekTime = null;\n this._statisticsReporter = null;\n this._mediaDataSource = mediaDataSource;\n this._mediaElement = null;\n this.pauseDisplay = false;\n this.h5Video = h5Video;\n this.callbackPlayTimeFunc = callbackPlayTimeFunc;\n this.callbackUserPtr = callbackUserPtr;\n }\n\n var _proto = NativePlayer.prototype;\n\n _proto.destroy = function destroy() {\n if (this._mediaElement) {\n this.unload();\n this.detachMediaElement();\n }\n\n this.e = null;\n this._mediaDataSource = null;\n\n this._emitter.removeAllListeners();\n\n this._emitter = null;\n };\n\n _proto.on = function on(event, listener) {\n var _this = this;\n\n if (event === _player_events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].MEDIA_INFO) {\n if (this._mediaElement != null && this._mediaElement.readyState !== 0) {\n // HAVE_NOTHING\n Promise.resolve().then(function () {\n _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].MEDIA_INFO, _this.mediaInfo);\n });\n }\n } else if (event === _player_events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].STATISTICS_INFO) {\n if (this._mediaElement != null && this._mediaElement.readyState !== 0) {\n Promise.resolve().then(function () {\n _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].STATISTICS_INFO, _this.statisticsInfo);\n });\n }\n }\n\n this._emitter.addListener(event, listener);\n };\n\n _proto.off = function off(event, listener) {\n this._emitter.removeListener(event, listener);\n };\n\n _proto.attachMediaElement = function attachMediaElement(mediaElement) {\n this._mediaElement = mediaElement;\n mediaElement.addEventListener('loadedmetadata', this.e.onvLoadedMetadata);\n\n if (this._pendingSeekTime != null) {\n try {\n mediaElement.currentTime = this._pendingSeekTime;\n this._pendingSeekTime = null;\n } catch (e) {// IE11 may throw InvalidStateError if readyState === 0\n // Defer set currentTime operation after loadedmetadata\n }\n }\n };\n\n _proto.detachMediaElement = function detachMediaElement() {\n if (this._mediaElement) {\n this._mediaElement.src = '';\n\n this._mediaElement.removeAttribute('src');\n\n this._mediaElement.removeEventListener('loadedmetadata', this.e.onvLoadedMetadata);\n\n this._mediaElement = null;\n }\n\n if (this._statisticsReporter != null) {\n window.clearInterval(this._statisticsReporter);\n this._statisticsReporter = null;\n }\n };\n\n _proto.load = function load() {\n if (!this._mediaElement) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__[\"IllegalStateException\"]('HTMLMediaElement must be attached before load()!');\n }\n\n this._mediaElement.src = this._mediaDataSource.url;\n\n if (this._mediaElement.readyState > 0) {\n this._mediaElement.currentTime = 0;\n }\n\n this._mediaElement.preload = 'auto';\n\n this._mediaElement.load();\n\n this._statisticsReporter = window.setInterval(this._reportStatisticsInfo.bind(this), this._config.statisticsInfoReportInterval);\n };\n\n _proto.unload = function unload() {\n if (this._mediaElement) {\n this._mediaElement.src = '';\n\n this._mediaElement.removeAttribute('src');\n }\n\n if (this._statisticsReporter != null) {\n window.clearInterval(this._statisticsReporter);\n this._statisticsReporter = null;\n }\n };\n\n _proto.play = function play() {\n if (!this.pauseDisplay) {\n this.attachMediaElement(this.h5Video);\n this.load();\n }\n\n this.pauseDisplay = false;\n return this._mediaElement.play();\n };\n\n _proto.stop = function stop() {\n this.unload();\n this.detachMediaElement();\n };\n\n _proto.pause = function pause() {\n this._mediaElement.pause();\n\n this.pauseDisplay = true;\n };\n\n _proto.isPause = function isPause() {\n return this.pauseDisplay;\n };\n\n _proto.openAudio = function openAudio() {\n this._mediaElement.volume = 1;\n return true;\n };\n\n _proto.closeAudio = function closeAudio() {\n this._mediaElement.volume = 0;\n return true;\n };\n\n _proto.seek = function seek(seekValue, seekType) {\n var seekTimeSecs = seekValue; //Ĭ��Ϊ�ⲿ��ֵ(��)\n\n if (seekType == 1) {\n //�϶�������, Ϊ�ٷֱ�, ������ת��Ϊ��\n seekTimeSecs = seekValue / 100 * this._mediaElement.duration;\n }\n\n if (this._mediaElement) {\n this._mediaElement.currentTime = seekTimeSecs;\n } else {\n this._pendingSeekTime = seekTimeSecs;\n }\n };\n\n _proto._onvLoadedMetadata = function _onvLoadedMetadata(e) {\n if (this._pendingSeekTime != null) {\n this._mediaElement.currentTime = this._pendingSeekTime;\n this._pendingSeekTime = null;\n }\n\n this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].MEDIA_INFO, this.mediaInfo);\n };\n\n _proto._reportStatisticsInfo = function _reportStatisticsInfo() {\n this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].STATISTICS_INFO, this.statisticsInfo);\n };\n\n _createClass(NativePlayer, [{\n key: \"type\",\n get: function get() {\n return this._type;\n }\n }, {\n key: \"buffered\",\n get: function get() {\n return this._mediaElement.buffered;\n }\n }, {\n key: \"duration\",\n get: function get() {\n return this._mediaElement.duration;\n }\n }, {\n key: \"volume\",\n get: function get() {\n return this._mediaElement.volume;\n },\n set: function set(value) {\n this._mediaElement.volume = value;\n }\n }, {\n key: \"muted\",\n get: function get() {\n return this._mediaElement.muted;\n },\n set: function set(muted) {\n this._mediaElement.muted = muted;\n }\n }, {\n key: \"currentTime\",\n get: function get() {\n if (this._mediaElement) {\n return this._mediaElement.currentTime;\n }\n\n return 0;\n },\n set: function set(seconds) {\n if (this._mediaElement) {\n this._mediaElement.currentTime = seconds;\n } else {\n this._pendingSeekTime = seconds;\n }\n }\n }, {\n key: \"mediaInfo\",\n get: function get() {\n var mediaPrefix = this._mediaElement instanceof HTMLAudioElement ? 'audio/' : 'video/';\n var info = {\n mimeType: mediaPrefix + this._mediaDataSource.type\n };\n\n if (this._mediaElement) {\n info.duration = Math.floor(this._mediaElement.duration * 1000);\n\n if (this._mediaElement instanceof HTMLVideoElement) {\n info.width = this._mediaElement.videoWidth;\n info.height = this._mediaElement.videoHeight;\n }\n\n if (this.callbackPlayTimeFunc) {\n this.callbackPlayTimeFunc(this.callbackUserPtr, 'mp4', this._mediaElement.currentTime, info.duration / 1000);\n }\n\n var self = this;\n var currentPlayTime = 0;\n var totalDuration = info.duration / 1000;\n\n this._mediaElement.addEventListener('timeupdate', function () {\n //����������ʾ��ǰ���Ž���\n if (self._mediaElement) {\n var t = self._mediaElement.currentTime;\n\n if (t != null) {\n var timeDisplay = Math.floor(t);\n\n if (currentPlayTime != timeDisplay) {\n //self._currentPlayTime = Math.floor(mediaElement.currentTime);\n currentPlayTime = timeDisplay;\n self.callbackPlayTimeFunc(self.callbackUserPtr, 'mp4', currentPlayTime, totalDuration);\n }\n }\n }\n }, false);\n }\n\n return info;\n }\n }, {\n key: \"statisticsInfo\",\n get: function get() {\n var info = {\n playerType: this._type,\n url: this._mediaDataSource.url\n };\n\n if (!(this._mediaElement instanceof HTMLVideoElement)) {\n return info;\n }\n\n var hasQualityInfo = true;\n var decoded = 0;\n var dropped = 0;\n\n if (this._mediaElement.getVideoPlaybackQuality) {\n var quality = this._mediaElement.getVideoPlaybackQuality();\n\n decoded = quality.totalVideoFrames;\n dropped = quality.droppedVideoFrames;\n } else if (this._mediaElement.webkitDecodedFrameCount != undefined) {\n decoded = this._mediaElement.webkitDecodedFrameCount;\n dropped = this._mediaElement.webkitDroppedFrameCount;\n } else {\n hasQualityInfo = false;\n }\n\n if (hasQualityInfo) {\n info.decodedFrames = decoded;\n info.droppedFrames = dropped;\n }\n\n return info;\n }\n }]);\n\n return NativePlayer;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (NativePlayer);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/player/native-player.js?"); | |
| 3425 | - | |
| 3426 | -/***/ }), | |
| 3427 | - | |
| 3428 | -/***/ "./src/FlvPlayer/flv.js/player/player-errors.js": | |
| 3429 | -/*!******************************************************!*\ | |
| 3430 | - !*** ./src/FlvPlayer/flv.js/player/player-errors.js ***! | |
| 3431 | - \******************************************************/ | |
| 3432 | -/*! exports provided: ErrorTypes, ErrorDetails */ | |
| 3433 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3434 | - | |
| 3435 | -"use strict"; | |
| 3436 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ErrorTypes\", function() { return ErrorTypes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ErrorDetails\", function() { return ErrorDetails; });\n/* harmony import */ var _io_loader_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../io/loader.js */ \"./src/FlvPlayer/flv.js/io/loader.js\");\n/* harmony import */ var _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../demux/demux-errors.js */ \"./src/FlvPlayer/flv.js/demux/demux-errors.js\");\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nvar ErrorTypes = {\n NETWORK_ERROR: 'NetworkError',\n MEDIA_ERROR: 'MediaError',\n OTHER_ERROR: 'OtherError'\n};\nvar ErrorDetails = {\n NETWORK_EXCEPTION: _io_loader_js__WEBPACK_IMPORTED_MODULE_0__[\"LoaderErrors\"].EXCEPTION,\n NETWORK_STATUS_CODE_INVALID: _io_loader_js__WEBPACK_IMPORTED_MODULE_0__[\"LoaderErrors\"].HTTP_STATUS_CODE_INVALID,\n NETWORK_TIMEOUT: _io_loader_js__WEBPACK_IMPORTED_MODULE_0__[\"LoaderErrors\"].CONNECTING_TIMEOUT,\n NETWORK_UNRECOVERABLE_EARLY_EOF: _io_loader_js__WEBPACK_IMPORTED_MODULE_0__[\"LoaderErrors\"].UNRECOVERABLE_EARLY_EOF,\n MEDIA_MSE_ERROR: 'MediaMSEError',\n MEDIA_FORMAT_ERROR: _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].FORMAT_ERROR,\n MEDIA_FORMAT_UNSUPPORTED: _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].FORMAT_UNSUPPORTED,\n MEDIA_CODEC_UNSUPPORTED: _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].CODEC_UNSUPPORTED\n};\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/player/player-errors.js?"); | |
| 3437 | - | |
| 3438 | -/***/ }), | |
| 3439 | - | |
| 3440 | -/***/ "./src/FlvPlayer/flv.js/player/player-events.js": | |
| 3441 | -/*!******************************************************!*\ | |
| 3442 | - !*** ./src/FlvPlayer/flv.js/player/player-events.js ***! | |
| 3443 | - \******************************************************/ | |
| 3444 | -/*! exports provided: default */ | |
| 3445 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3446 | - | |
| 3447 | -"use strict"; | |
| 3448 | -eval("__webpack_require__.r(__webpack_exports__);\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar PlayerEvents = {\n ERROR: 'error',\n LOADING_COMPLETE: 'loading_complete',\n RECOVERED_EARLY_EOF: 'recovered_early_eof',\n MEDIA_INFO: 'media_info',\n METADATA_ARRIVED: 'metadata_arrived',\n SCRIPTDATA_ARRIVED: 'scriptdata_arrived',\n STATISTICS_INFO: 'statistics_info'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (PlayerEvents);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/player/player-events.js?"); | |
| 3449 | - | |
| 3450 | -/***/ }), | |
| 3451 | - | |
| 3452 | -/***/ "./src/FlvPlayer/flv.js/remux/aac-silent.js": | |
| 3453 | -/*!**************************************************!*\ | |
| 3454 | - !*** ./src/FlvPlayer/flv.js/remux/aac-silent.js ***! | |
| 3455 | - \**************************************************/ | |
| 3456 | -/*! exports provided: default */ | |
| 3457 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3458 | - | |
| 3459 | -"use strict"; | |
| 3460 | -eval("__webpack_require__.r(__webpack_exports__);\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * This file is modified from dailymotion's hls.js library (hls.js/src/helper/aac.js)\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar AAC = /*#__PURE__*/function () {\n function AAC() {}\n\n AAC.getSilentFrame = function getSilentFrame(codec, channelCount) {\n if (codec === 'mp4a.40.2') {\n // handle LC-AAC\n if (channelCount === 1) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x23, 0x80]);\n } else if (channelCount === 2) {\n return new Uint8Array([0x21, 0x00, 0x49, 0x90, 0x02, 0x19, 0x00, 0x23, 0x80]);\n } else if (channelCount === 3) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x8e]);\n } else if (channelCount === 4) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x80, 0x2c, 0x80, 0x08, 0x02, 0x38]);\n } else if (channelCount === 5) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x38]);\n } else if (channelCount === 6) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x00, 0xb2, 0x00, 0x20, 0x08, 0xe0]);\n }\n } else {\n // handle HE-AAC (mp4a.40.5 / mp4a.40.29)\n if (channelCount === 1) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0:d=0.05\" -c:a libfdk_aac -profile:a aac_he -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x4e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x1c, 0x6, 0xf1, 0xc1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n } else if (channelCount === 2) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0|0:d=0.05\" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n } else if (channelCount === 3) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0|0|0:d=0.05\" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n }\n }\n\n return null;\n };\n\n return AAC;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AAC);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/remux/aac-silent.js?"); | |
| 3461 | - | |
| 3462 | -/***/ }), | |
| 3463 | - | |
| 3464 | -/***/ "./src/FlvPlayer/flv.js/remux/mp4-generator.js": | |
| 3465 | -/*!*****************************************************!*\ | |
| 3466 | - !*** ./src/FlvPlayer/flv.js/remux/mp4-generator.js ***! | |
| 3467 | - \*****************************************************/ | |
| 3468 | -/*! exports provided: default */ | |
| 3469 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3470 | - | |
| 3471 | -"use strict"; | |
| 3472 | -eval("__webpack_require__.r(__webpack_exports__);\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * This file is derived from dailymotion's hls.js library (hls.js/src/remux/mp4-generator.js)\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// MP4 boxes generator for ISO BMFF (ISO Base Media File Format, defined in ISO/IEC 14496-12)\nvar MP4 = /*#__PURE__*/function () {\n function MP4() {}\n\n MP4.init = function init() {\n MP4.types = {\n avc1: [],\n avcC: [],\n btrt: [],\n dinf: [],\n dref: [],\n esds: [],\n ftyp: [],\n hdlr: [],\n mdat: [],\n mdhd: [],\n mdia: [],\n mfhd: [],\n minf: [],\n moof: [],\n moov: [],\n mp4a: [],\n mvex: [],\n mvhd: [],\n sdtp: [],\n stbl: [],\n stco: [],\n stsc: [],\n stsd: [],\n stsz: [],\n stts: [],\n tfdt: [],\n tfhd: [],\n traf: [],\n trak: [],\n trun: [],\n trex: [],\n tkhd: [],\n vmhd: [],\n smhd: [],\n '.mp3': []\n };\n\n for (var name in MP4.types) {\n if (MP4.types.hasOwnProperty(name)) {\n MP4.types[name] = [name.charCodeAt(0), name.charCodeAt(1), name.charCodeAt(2), name.charCodeAt(3)];\n }\n }\n\n var constants = MP4.constants = {};\n constants.FTYP = new Uint8Array([0x69, 0x73, 0x6F, 0x6D, // major_brand: isom\n 0x0, 0x0, 0x0, 0x1, // minor_version: 0x01\n 0x69, 0x73, 0x6F, 0x6D, // isom\n 0x61, 0x76, 0x63, 0x31 // avc1\n ]);\n constants.STSD_PREFIX = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x01 // entry_count\n ]);\n constants.STTS = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00 // entry_count\n ]);\n constants.STSC = constants.STCO = constants.STTS;\n constants.STSZ = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // sample_size\n 0x00, 0x00, 0x00, 0x00 // sample_count\n ]);\n constants.HDLR_VIDEO = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x76, 0x69, 0x64, 0x65, // handler_type: 'vide'\n 0x00, 0x00, 0x00, 0x00, // reserved: 3 * 4 bytes\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x69, 0x64, 0x65, 0x6F, 0x48, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x00 // name: VideoHandler\n ]);\n constants.HDLR_AUDIO = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x73, 0x6F, 0x75, 0x6E, // handler_type: 'soun'\n 0x00, 0x00, 0x00, 0x00, // reserved: 3 * 4 bytes\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x6F, 0x75, 0x6E, 0x64, 0x48, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x00 // name: SoundHandler\n ]);\n constants.DREF = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x01, // entry_count\n 0x00, 0x00, 0x00, 0x0C, // entry_size\n 0x75, 0x72, 0x6C, 0x20, // type 'url '\n 0x00, 0x00, 0x00, 0x01 // version(0) + flags\n ]); // Sound media header\n\n constants.SMHD = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00 // balance(2) + reserved(2)\n ]); // video media header\n\n constants.VMHD = new Uint8Array([0x00, 0x00, 0x00, 0x01, // version(0) + flags\n 0x00, 0x00, // graphicsmode: 2 bytes\n 0x00, 0x00, 0x00, 0x00, // opcolor: 3 * 2 bytes\n 0x00, 0x00]);\n } // Generate a box\n ;\n\n MP4.box = function box(type) {\n var size = 8;\n var result = null;\n var datas = Array.prototype.slice.call(arguments, 1);\n var arrayCount = datas.length;\n\n for (var i = 0; i < arrayCount; i++) {\n size += datas[i].byteLength;\n }\n\n result = new Uint8Array(size);\n result[0] = size >>> 24 & 0xFF; // size\n\n result[1] = size >>> 16 & 0xFF;\n result[2] = size >>> 8 & 0xFF;\n result[3] = size & 0xFF;\n result.set(type, 4); // type\n\n var offset = 8;\n\n for (var _i = 0; _i < arrayCount; _i++) {\n // data body\n result.set(datas[_i], offset);\n offset += datas[_i].byteLength;\n }\n\n return result;\n } // emit ftyp & moov\n ;\n\n MP4.generateInitSegment = function generateInitSegment(meta) {\n var ftyp = MP4.box(MP4.types.ftyp, MP4.constants.FTYP);\n var moov = MP4.moov(meta);\n var result = new Uint8Array(ftyp.byteLength + moov.byteLength);\n result.set(ftyp, 0);\n result.set(moov, ftyp.byteLength);\n return result;\n } // Movie metadata box\n ;\n\n MP4.moov = function moov(meta) {\n var mvhd = MP4.mvhd(meta.timescale, meta.duration);\n var trak = MP4.trak(meta);\n var mvex = MP4.mvex(meta);\n return MP4.box(MP4.types.moov, mvhd, trak, mvex);\n } // Movie header box\n ;\n\n MP4.mvhd = function mvhd(timescale, duration) {\n return MP4.box(MP4.types.mvhd, new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n timescale >>> 24 & 0xFF, // timescale: 4 bytes\n timescale >>> 16 & 0xFF, timescale >>> 8 & 0xFF, timescale & 0xFF, duration >>> 24 & 0xFF, // duration: 4 bytes\n duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, 0x00, 0x01, 0x00, 0x00, // Preferred rate: 1.0\n 0x01, 0x00, 0x00, 0x00, // PreferredVolume(1.0, 2bytes) + reserved(2bytes)\n 0x00, 0x00, 0x00, 0x00, // reserved: 4 + 4 bytes\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ----begin composition matrix----\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // ----end composition matrix----\n 0x00, 0x00, 0x00, 0x00, // ----begin pre_defined 6 * 4 bytes----\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ----end pre_defined 6 * 4 bytes----\n 0xFF, 0xFF, 0xFF, 0xFF // next_track_ID\n ]));\n } // Track box\n ;\n\n MP4.trak = function trak(meta) {\n return MP4.box(MP4.types.trak, MP4.tkhd(meta), MP4.mdia(meta));\n } // Track header box\n ;\n\n MP4.tkhd = function tkhd(meta) {\n var trackId = meta.id,\n duration = meta.duration;\n var width = meta.presentWidth,\n height = meta.presentHeight;\n return MP4.box(MP4.types.tkhd, new Uint8Array([0x00, 0x00, 0x00, 0x07, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n trackId >>> 24 & 0xFF, // track_ID: 4 bytes\n trackId >>> 16 & 0xFF, trackId >>> 8 & 0xFF, trackId & 0xFF, 0x00, 0x00, 0x00, 0x00, // reserved: 4 bytes\n duration >>> 24 & 0xFF, // duration: 4 bytes\n duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // layer(2bytes) + alternate_group(2bytes)\n 0x00, 0x00, 0x00, 0x00, // volume(2bytes) + reserved(2bytes)\n 0x00, 0x01, 0x00, 0x00, // ----begin composition matrix----\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // ----end composition matrix----\n width >>> 8 & 0xFF, // width and height\n width & 0xFF, 0x00, 0x00, height >>> 8 & 0xFF, height & 0xFF, 0x00, 0x00]));\n } // Media Box\n ;\n\n MP4.mdia = function mdia(meta) {\n return MP4.box(MP4.types.mdia, MP4.mdhd(meta), MP4.hdlr(meta), MP4.minf(meta));\n } // Media header box\n ;\n\n MP4.mdhd = function mdhd(meta) {\n var timescale = meta.timescale;\n var duration = meta.duration;\n return MP4.box(MP4.types.mdhd, new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n timescale >>> 24 & 0xFF, // timescale: 4 bytes\n timescale >>> 16 & 0xFF, timescale >>> 8 & 0xFF, timescale & 0xFF, duration >>> 24 & 0xFF, // duration: 4 bytes\n duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, 0x55, 0xC4, // language: und (undetermined)\n 0x00, 0x00 // pre_defined = 0\n ]));\n } // Media handler reference box\n ;\n\n MP4.hdlr = function hdlr(meta) {\n var data = null;\n\n if (meta.type === 'audio') {\n data = MP4.constants.HDLR_AUDIO;\n } else {\n data = MP4.constants.HDLR_VIDEO;\n }\n\n return MP4.box(MP4.types.hdlr, data);\n } // Media infomation box\n ;\n\n MP4.minf = function minf(meta) {\n var xmhd = null;\n\n if (meta.type === 'audio') {\n xmhd = MP4.box(MP4.types.smhd, MP4.constants.SMHD);\n } else {\n xmhd = MP4.box(MP4.types.vmhd, MP4.constants.VMHD);\n }\n\n return MP4.box(MP4.types.minf, xmhd, MP4.dinf(), MP4.stbl(meta));\n } // Data infomation box\n ;\n\n MP4.dinf = function dinf() {\n var result = MP4.box(MP4.types.dinf, MP4.box(MP4.types.dref, MP4.constants.DREF));\n return result;\n } // Sample table box\n ;\n\n MP4.stbl = function stbl(meta) {\n var result = MP4.box(MP4.types.stbl, // type: stbl\n MP4.stsd(meta), // Sample Description Table\n MP4.box(MP4.types.stts, MP4.constants.STTS), // Time-To-Sample\n MP4.box(MP4.types.stsc, MP4.constants.STSC), // Sample-To-Chunk\n MP4.box(MP4.types.stsz, MP4.constants.STSZ), // Sample size\n MP4.box(MP4.types.stco, MP4.constants.STCO) // Chunk offset\n );\n return result;\n } // Sample description box\n ;\n\n MP4.stsd = function stsd(meta) {\n if (meta.type === 'audio') {\n if (meta.codec === 'mp3') {\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.mp3(meta));\n } // else: aac -> mp4a\n\n\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.mp4a(meta));\n } else {\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.avc1(meta));\n }\n };\n\n MP4.mp3 = function mp3(meta) {\n var channelCount = meta.channelCount;\n var sampleRate = meta.audioSampleRate;\n var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, // reserved(4)\n 0x00, 0x00, 0x00, 0x01, // reserved(2) + data_reference_index(2)\n 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes\n 0x00, 0x00, 0x00, 0x00, 0x00, channelCount, // channelCount(2)\n 0x00, 0x10, // sampleSize(2)\n 0x00, 0x00, 0x00, 0x00, // reserved(4)\n sampleRate >>> 8 & 0xFF, // Audio sample rate\n sampleRate & 0xFF, 0x00, 0x00]);\n return MP4.box(MP4.types['.mp3'], data);\n };\n\n MP4.mp4a = function mp4a(meta) {\n var channelCount = meta.channelCount;\n var sampleRate = meta.audioSampleRate;\n var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, // reserved(4)\n 0x00, 0x00, 0x00, 0x01, // reserved(2) + data_reference_index(2)\n 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes\n 0x00, 0x00, 0x00, 0x00, 0x00, channelCount, // channelCount(2)\n 0x00, 0x10, // sampleSize(2)\n 0x00, 0x00, 0x00, 0x00, // reserved(4)\n sampleRate >>> 8 & 0xFF, // Audio sample rate\n sampleRate & 0xFF, 0x00, 0x00]);\n return MP4.box(MP4.types.mp4a, data, MP4.esds(meta));\n };\n\n MP4.esds = function esds(meta) {\n var config = meta.config || [];\n var configSize = config.length;\n var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version 0 + flags\n 0x03, // descriptor_type\n 0x17 + configSize, // length3\n 0x00, 0x01, // es_id\n 0x00, // stream_priority\n 0x04, // descriptor_type\n 0x0F + configSize, // length\n 0x40, // codec: mpeg4_audio\n 0x15, // stream_type: Audio\n 0x00, 0x00, 0x00, // buffer_size\n 0x00, 0x00, 0x00, 0x00, // maxBitrate\n 0x00, 0x00, 0x00, 0x00, // avgBitrate\n 0x05 // descriptor_type\n ].concat([configSize]).concat(config).concat([0x06, 0x01, 0x02 // GASpecificConfig\n ]));\n return MP4.box(MP4.types.esds, data);\n };\n\n MP4.avc1 = function avc1(meta) {\n var avcc = meta.avcc;\n var width = meta.codecWidth,\n height = meta.codecHeight;\n var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, // reserved(4)\n 0x00, 0x00, 0x00, 0x01, // reserved(2) + data_reference_index(2)\n 0x00, 0x00, 0x00, 0x00, // pre_defined(2) + reserved(2)\n 0x00, 0x00, 0x00, 0x00, // pre_defined: 3 * 4 bytes\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, width >>> 8 & 0xFF, // width: 2 bytes\n width & 0xFF, height >>> 8 & 0xFF, // height: 2 bytes\n height & 0xFF, 0x00, 0x48, 0x00, 0x00, // horizresolution: 4 bytes\n 0x00, 0x48, 0x00, 0x00, // vertresolution: 4 bytes\n 0x00, 0x00, 0x00, 0x00, // reserved: 4 bytes\n 0x00, 0x01, // frame_count\n 0x0A, // strlen\n 0x78, 0x71, 0x71, 0x2F, // compressorname: 32 bytes\n 0x66, 0x6C, 0x76, 0x2E, 0x6A, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, // depth\n 0xFF, 0xFF // pre_defined = -1\n ]);\n return MP4.box(MP4.types.avc1, data, MP4.box(MP4.types.avcC, avcc));\n } // Movie Extends box\n ;\n\n MP4.mvex = function mvex(meta) {\n return MP4.box(MP4.types.mvex, MP4.trex(meta));\n } // Track Extends box\n ;\n\n MP4.trex = function trex(meta) {\n var trackId = meta.id;\n var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags\n trackId >>> 24 & 0xFF, // track_ID\n trackId >>> 16 & 0xFF, trackId >>> 8 & 0xFF, trackId & 0xFF, 0x00, 0x00, 0x00, 0x01, // default_sample_description_index\n 0x00, 0x00, 0x00, 0x00, // default_sample_duration\n 0x00, 0x00, 0x00, 0x00, // default_sample_size\n 0x00, 0x01, 0x00, 0x01 // default_sample_flags\n ]);\n return MP4.box(MP4.types.trex, data);\n } // Movie fragment box\n ;\n\n MP4.moof = function moof(track, baseMediaDecodeTime) {\n return MP4.box(MP4.types.moof, MP4.mfhd(track.sequenceNumber), MP4.traf(track, baseMediaDecodeTime));\n };\n\n MP4.mfhd = function mfhd(sequenceNumber) {\n var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, sequenceNumber >>> 24 & 0xFF, // sequence_number: int32\n sequenceNumber >>> 16 & 0xFF, sequenceNumber >>> 8 & 0xFF, sequenceNumber & 0xFF]);\n return MP4.box(MP4.types.mfhd, data);\n } // Track fragment box\n ;\n\n MP4.traf = function traf(track, baseMediaDecodeTime) {\n var trackId = track.id; // Track fragment header box\n\n var tfhd = MP4.box(MP4.types.tfhd, new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) & flags\n trackId >>> 24 & 0xFF, // track_ID\n trackId >>> 16 & 0xFF, trackId >>> 8 & 0xFF, trackId & 0xFF])); // Track Fragment Decode Time\n\n var tfdt = MP4.box(MP4.types.tfdt, new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) & flags\n baseMediaDecodeTime >>> 24 & 0xFF, // baseMediaDecodeTime: int32\n baseMediaDecodeTime >>> 16 & 0xFF, baseMediaDecodeTime >>> 8 & 0xFF, baseMediaDecodeTime & 0xFF]));\n var sdtp = MP4.sdtp(track);\n var trun = MP4.trun(track, sdtp.byteLength + 16 + 16 + 8 + 16 + 8 + 8);\n return MP4.box(MP4.types.traf, tfhd, tfdt, trun, sdtp);\n } // Sample Dependency Type box\n ;\n\n MP4.sdtp = function sdtp(track) {\n var samples = track.samples || [];\n var sampleCount = samples.length;\n var data = new Uint8Array(4 + sampleCount); // 0~4 bytes: version(0) & flags\n\n for (var i = 0; i < sampleCount; i++) {\n var flags = samples[i].flags;\n data[i + 4] = flags.isLeading << 6 // is_leading: 2 (bit)\n | flags.dependsOn << 4 // sample_depends_on\n | flags.isDependedOn << 2 // sample_is_depended_on\n | flags.hasRedundancy; // sample_has_redundancy\n }\n\n return MP4.box(MP4.types.sdtp, data);\n } // Track fragment run box\n ;\n\n MP4.trun = function trun(track, offset) {\n var samples = track.samples || [];\n var sampleCount = samples.length;\n var dataSize = 12 + 16 * sampleCount;\n var data = new Uint8Array(dataSize);\n offset += 8 + dataSize;\n data.set([0x00, 0x00, 0x0F, 0x01, // version(0) & flags\n sampleCount >>> 24 & 0xFF, // sample_count\n sampleCount >>> 16 & 0xFF, sampleCount >>> 8 & 0xFF, sampleCount & 0xFF, offset >>> 24 & 0xFF, // data_offset\n offset >>> 16 & 0xFF, offset >>> 8 & 0xFF, offset & 0xFF], 0);\n\n for (var i = 0; i < sampleCount; i++) {\n var duration = samples[i].duration;\n var size = samples[i].size;\n var flags = samples[i].flags;\n var cts = samples[i].cts;\n data.set([duration >>> 24 & 0xFF, // sample_duration\n duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, size >>> 24 & 0xFF, // sample_size\n size >>> 16 & 0xFF, size >>> 8 & 0xFF, size & 0xFF, flags.isLeading << 2 | flags.dependsOn, // sample_flags\n flags.isDependedOn << 6 | flags.hasRedundancy << 4 | flags.isNonSync, 0x00, 0x00, // sample_degradation_priority\n cts >>> 24 & 0xFF, // sample_composition_time_offset\n cts >>> 16 & 0xFF, cts >>> 8 & 0xFF, cts & 0xFF], 12 + 16 * i);\n }\n\n return MP4.box(MP4.types.trun, data);\n };\n\n MP4.mdat = function mdat(data) {\n return MP4.box(MP4.types.mdat, data);\n };\n\n return MP4;\n}();\n\nMP4.init();\n/* harmony default export */ __webpack_exports__[\"default\"] = (MP4);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/remux/mp4-generator.js?"); | |
| 3473 | - | |
| 3474 | -/***/ }), | |
| 3475 | - | |
| 3476 | -/***/ "./src/FlvPlayer/flv.js/remux/mp4-remuxer.js": | |
| 3477 | -/*!***************************************************!*\ | |
| 3478 | - !*** ./src/FlvPlayer/flv.js/remux/mp4-remuxer.js ***! | |
| 3479 | - \***************************************************/ | |
| 3480 | -/*! exports provided: default */ | |
| 3481 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3482 | - | |
| 3483 | -"use strict"; | |
| 3484 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\n/* harmony import */ var _mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mp4-generator.js */ \"./src/FlvPlayer/flv.js/remux/mp4-generator.js\");\n/* harmony import */ var _aac_silent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./aac-silent.js */ \"./src/FlvPlayer/flv.js/remux/aac-silent.js\");\n/* harmony import */ var _utils_browser_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/browser.js */ \"./src/FlvPlayer/flv.js/utils/browser.js\");\n/* harmony import */ var _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/media-segment-info.js */ \"./src/FlvPlayer/flv.js/core/media-segment-info.js\");\n/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/exception.js */ \"./src/FlvPlayer/flv.js/utils/exception.js\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\n\n\n // Fragmented mp4 remuxer\n\nvar MP4Remuxer = /*#__PURE__*/function () {\n function MP4Remuxer(config) {\n this.TAG = 'MP4Remuxer';\n this._config = config;\n this._isLive = config.isLive === true ? true : false;\n this._dtsBase = -1;\n this._dtsBaseInited = false;\n this._audioDtsBase = Infinity;\n this._videoDtsBase = Infinity;\n this._audioNextDts = undefined;\n this._videoNextDts = undefined;\n this._audioStashedLastSample = null;\n this._videoStashedLastSample = null;\n this._audioMeta = null;\n this._videoMeta = null;\n this._adjustPts = 0; //gavin\n\n this._lastAdjustVideoPts = 0;\n this._lastVideoPts = 0;\n this._audioSegmentInfoList = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__[\"MediaSegmentInfoList\"]('audio');\n this._videoSegmentInfoList = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__[\"MediaSegmentInfoList\"]('video');\n this._onInitSegment = null;\n this._onMediaSegment = null; // Workaround for chrome < 50: Always force first sample as a Random Access Point in media segment\n // see https://bugs.chromium.org/p/chromium/issues/detail?id=229412\n\n this._forceFirstIDR = _utils_browser_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].chrome && (_utils_browser_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].version.major < 50 || _utils_browser_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].version.major === 50 && _utils_browser_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].version.build < 2661) ? true : false; // Workaround for IE11/Edge: Fill silent aac frame after keyframe-seeking\n // Make audio beginDts equals with video beginDts, in order to fix seek freeze\n\n this._fillSilentAfterSeek = _utils_browser_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].msedge || _utils_browser_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].msie; // While only FireFox supports 'audio/mp4, codecs=\"mp3\"', use 'audio/mpeg' for chrome, safari, ...\n\n this._mp3UseMpegAudio = !_utils_browser_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].firefox;\n this._fillAudioTimestampGap = this._config.fixAudioTimestampGap;\n }\n\n var _proto = MP4Remuxer.prototype;\n\n _proto.destroy = function destroy() {\n this._dtsBase = -1;\n this._dtsBaseInited = false;\n this._audioMeta = null;\n this._videoMeta = null;\n\n this._audioSegmentInfoList.clear();\n\n this._audioSegmentInfoList = null;\n\n this._videoSegmentInfoList.clear();\n\n this._videoSegmentInfoList = null;\n this._onInitSegment = null;\n this._onMediaSegment = null;\n };\n\n _proto.bindDataSource = function bindDataSource(producer) {\n producer.onDataAvailable = this.remux.bind(this);\n producer.onTrackMetadata = this._onTrackMetadataReceived.bind(this);\n return this;\n }\n /* prototype: function onInitSegment(type: string, initSegment: ArrayBuffer): void\n InitSegment: {\n type: string,\n data: ArrayBuffer,\n codec: string,\n container: string\n }\n */\n ;\n\n _proto.insertDiscontinuity = function insertDiscontinuity() {\n this._audioNextDts = this._videoNextDts = undefined;\n };\n\n _proto.changeSpeed = function changeSpeed(speedValue) {\n this._adjustPts = speedValue; // console.log('ChangeSpeed: ' + speedValue);\n };\n\n _proto.seek = function seek(originalDts) {\n //console.log(\"MP4-Remuxer.js:: Reset...\");\n this._audioStashedLastSample = null;\n this._videoStashedLastSample = null;\n\n this._videoSegmentInfoList.clear();\n\n this._audioSegmentInfoList.clear();\n\n this._dtsBase = -1;\n this._dtsBaseInited = false; //gavin\n\n this._audioDtsBase = Infinity;\n this._videoDtsBase = Infinity;\n this._audioNextDts = undefined;\n this._videoNextDts = undefined;\n this._audioStashedLastSample = null;\n this._videoStashedLastSample = null;\n this._adjustPts = 0; //gavin\n\n this._lastAdjustVideoPts = 0;\n this._lastVideoPts = 0;\n };\n\n _proto.remux = function remux(audioTrack, videoTrack) {\n if (!this._onMediaSegment) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__[\"IllegalStateException\"]('MP4Remuxer: onMediaSegment callback must be specificed!');\n }\n\n if (!this._dtsBaseInited) {\n if (!this._calculateDtsBase(audioTrack, videoTrack)) {\n videoTrack.samples = [];\n audioTrack.samples = [];\n return;\n }\n } //console.log(\"Enter remux video...\");\n\n\n this._remuxVideo(videoTrack); //console.log(\" Leave remux video...\");\n\n\n this._remuxAudio(audioTrack);\n };\n\n _proto._onTrackMetadataReceived = function _onTrackMetadataReceived(type, metadata) {\n var metabox = null; // console.log('mp4-remuxer.js::_onTrackMetadataReceived... type[' + type + '] metadata:', metadata);\n\n var container = 'mp4';\n var codec = metadata.codec;\n\n if (type === 'audio') {\n this._audioMeta = metadata;\n\n if (metadata.codec === 'mp3' && this._mp3UseMpegAudio) {\n // 'audio/mpeg' for MP3 audio track\n container = 'mpeg';\n codec = '';\n metabox = new Uint8Array();\n } else {\n // 'audio/mp4, codecs=\"codec\"'\n metabox = _mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].generateInitSegment(metadata);\n }\n } else if (type === 'video') {\n this._videoMeta = metadata;\n metabox = _mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].generateInitSegment(metadata);\n } else {\n return;\n } // dispatch metabox (Initialization Segment)\n\n\n if (!this._onInitSegment) {\n throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__[\"IllegalStateException\"]('MP4Remuxer: onInitSegment callback must be specified!');\n }\n\n this._onInitSegment(type, {\n type: type,\n data: metabox.buffer,\n codec: codec,\n container: type + \"/\" + container,\n mediaDuration: metadata.duration // in timescale 1000 (milliseconds)\n\n });\n };\n\n _proto._calculateDtsBase = function _calculateDtsBase(audioTrack, videoTrack) {\n if (this._dtsBaseInited) {\n return;\n }\n\n if (audioTrack.samples && audioTrack.samples.length) {\n this._audioDtsBase = audioTrack.samples[0].dts;\n }\n\n if (videoTrack.samples && videoTrack.samples.length) {\n this._videoDtsBase = videoTrack.samples[0].dts;\n }\n\n this._dtsBase = Math.min(this._audioDtsBase, this._videoDtsBase);\n this._dtsBaseInited = true;\n if (this._dtsBase < 0) return false; //console.log(\"mp4-remuxer.js::set dtsbase: \" + this._dtsBase);\n\n return true;\n };\n\n _proto.flushStashedSamples = function flushStashedSamples() {\n var videoSample = this._videoStashedLastSample;\n var audioSample = this._audioStashedLastSample; //console.log(\"flushStashedSamples...\");\n\n var videoTrack = {\n type: 'video',\n id: 1,\n sequenceNumber: 0,\n samples: [],\n length: 0\n };\n\n if (videoSample != null) {\n videoTrack.samples.push(videoSample);\n videoTrack.length = videoSample.length;\n }\n\n var audioTrack = {\n type: 'audio',\n id: 2,\n sequenceNumber: 0,\n samples: [],\n length: 0\n };\n\n if (audioSample != null) {\n audioTrack.samples.push(audioSample);\n audioTrack.length = audioSample.length;\n }\n\n this._videoStashedLastSample = null;\n this._audioStashedLastSample = null;\n\n this._remuxVideo(videoTrack, true);\n\n this._remuxAudio(audioTrack, true);\n };\n\n _proto._remuxAudio = function _remuxAudio(audioTrack, force) {\n if (this._audioMeta == null) {\n return;\n }\n\n var track = audioTrack;\n var samples = track.samples;\n var dtsCorrection = undefined;\n var firstDts = -1,\n lastDts = -1,\n lastPts = -1;\n var refSampleDuration = this._audioMeta.refSampleDuration; //console.log(\"refSampleDuration:\", refSampleDuration);\n\n var mpegRawTrack = this._audioMeta.codec === 'mp3' && this._mp3UseMpegAudio;\n var firstSegmentAfterSeek = this._dtsBaseInited && this._audioNextDts === undefined;\n var insertPrefixSilentFrame = false;\n\n if (!samples || samples.length === 0) {\n return;\n }\n\n if (samples.length === 1 && !force) {\n // If [sample count in current batch] === 1 && (force != true)\n // Ignore and keep in demuxer's queue\n return;\n } // else if (force === true) do remux\n\n\n var offset = 0;\n var mdatbox = null;\n var mdatBytes = 0; // calculate initial mdat size\n\n if (mpegRawTrack) {\n // for raw mpeg buffer\n offset = 0;\n mdatBytes = track.length;\n } else {\n // for fmp4 mdat box\n offset = 8; // size + type\n\n mdatBytes = 8 + track.length;\n }\n\n var lastSample = null; // Pop the lastSample and waiting for stash\n\n if (samples.length > 1) {\n lastSample = samples.pop();\n mdatBytes -= lastSample.length;\n } // Insert [stashed lastSample in the previous batch] to the front\n\n\n if (this._audioStashedLastSample != null) {\n var sample = this._audioStashedLastSample;\n this._audioStashedLastSample = null;\n samples.unshift(sample);\n mdatBytes += sample.length;\n } // Stash the lastSample of current batch, waiting for next batch\n\n\n if (lastSample != null) {\n this._audioStashedLastSample = lastSample;\n }\n\n var firstSampleOriginalDts = samples[0].dts - this._dtsBase; // calculate dtsCorrection\n\n if (this._audioNextDts) {\n dtsCorrection = firstSampleOriginalDts - this._audioNextDts;\n } else {\n // this._audioNextDts == undefined\n if (this._audioSegmentInfoList.isEmpty()) {\n dtsCorrection = 0;\n\n if (this._fillSilentAfterSeek && !this._videoSegmentInfoList.isEmpty()) {\n if (this._audioMeta.originalCodec !== 'mp3') {\n insertPrefixSilentFrame = true;\n }\n }\n } else {\n var _lastSample = this._audioSegmentInfoList.getLastSampleBefore(firstSampleOriginalDts);\n\n if (_lastSample != null) {\n var distance = firstSampleOriginalDts - (_lastSample.originalDts + _lastSample.duration);\n\n if (distance <= 3) {\n distance = 0;\n }\n\n var expectedDts = _lastSample.dts + _lastSample.duration + distance;\n dtsCorrection = firstSampleOriginalDts - expectedDts;\n } else {\n // lastSample == null, cannot found\n dtsCorrection = 0;\n }\n }\n }\n\n if (insertPrefixSilentFrame) {\n // align audio segment beginDts to match with current video segment's beginDts\n var firstSampleDts = firstSampleOriginalDts - dtsCorrection;\n\n var videoSegment = this._videoSegmentInfoList.getLastSegmentBefore(firstSampleOriginalDts);\n\n if (videoSegment != null && videoSegment.beginDts < firstSampleDts) {\n var silentUnit = _aac_silent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getSilentFrame(this._audioMeta.originalCodec, this._audioMeta.channelCount);\n\n if (silentUnit) {\n var dts = videoSegment.beginDts;\n var silentFrameDuration = firstSampleDts - videoSegment.beginDts;\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].v(this.TAG, \"InsertPrefixSilentAudio: dts: \" + dts + \", duration: \" + silentFrameDuration);\n samples.unshift({\n unit: silentUnit,\n dts: dts,\n pts: dts\n });\n mdatBytes += silentUnit.byteLength;\n } // silentUnit == null: Cannot generate, skip\n\n } else {\n insertPrefixSilentFrame = false;\n }\n }\n\n var mp4Samples = []; // Correct dts for each sample, and calculate sample duration. Then output to mp4Samples\n\n for (var i = 0; i < samples.length; i++) {\n var _sample = samples[i];\n var unit = _sample.unit;\n var originalDts = _sample.dts - this._dtsBase;\n\n var _dts = originalDts - dtsCorrection;\n\n if (firstDts === -1) {\n firstDts = _dts;\n }\n\n var sampleDuration = 0;\n\n if (i !== samples.length - 1) {\n var nextDts = samples[i + 1].dts - this._dtsBase - dtsCorrection;\n sampleDuration = nextDts - _dts;\n } else {\n // the last sample\n if (lastSample != null) {\n // use stashed sample's dts to calculate sample duration\n var _nextDts = lastSample.dts - this._dtsBase - dtsCorrection;\n\n sampleDuration = _nextDts - _dts;\n } else if (mp4Samples.length >= 1) {\n // use second last sample duration\n sampleDuration = mp4Samples[mp4Samples.length - 1].duration;\n } else {\n // the only one sample, use reference sample duration\n sampleDuration = Math.floor(refSampleDuration);\n }\n }\n\n var needFillSilentFrames = false;\n var silentFrames = null; // Silent frame generation, if large timestamp gap detected && config.fixAudioTimestampGap\n\n if (sampleDuration > refSampleDuration * 1.5 && this._audioMeta.codec !== 'mp3' && this._fillAudioTimestampGap && !_utils_browser_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].safari) {\n // We need to insert silent frames to fill timestamp gap\n needFillSilentFrames = true;\n var delta = Math.abs(sampleDuration - refSampleDuration);\n var frameCount = Math.ceil(delta / refSampleDuration);\n var currentDts = _dts + refSampleDuration; // Notice: in float\n\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Large audio timestamp gap detected, may cause AV sync to drift. ' + 'Silent frames will be generated to avoid unsync.\\n' + (\"dts: \" + (_dts + sampleDuration) + \" ms, expected: \" + (_dts + Math.round(refSampleDuration)) + \" ms, \") + (\"delta: \" + Math.round(delta) + \" ms, generate: \" + frameCount + \" frames\") + (\"sampleDuration: \" + sampleDuration + \" ms, refSampleDuration: \" + refSampleDuration));\n\n var _silentUnit = _aac_silent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getSilentFrame(this._audioMeta.originalCodec, this._audioMeta.channelCount);\n\n if (_silentUnit == null) {\n _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].w(this.TAG, 'Unable to generate silent frame for ' + (this._audioMeta.originalCodec + \" with \" + this._audioMeta.channelCount + \" channels, repeat last frame\")); // Repeat last frame\n\n _silentUnit = unit;\n }\n\n silentFrames = [];\n\n for (var j = 0; j < frameCount; j++) {\n var intDts = Math.round(currentDts); // round to integer\n\n if (silentFrames.length > 0) {\n // Set previous frame sample duration\n var previousFrame = silentFrames[silentFrames.length - 1];\n previousFrame.duration = intDts - previousFrame.dts;\n }\n\n var frame = {\n dts: intDts,\n pts: intDts,\n cts: 0,\n unit: _silentUnit,\n size: _silentUnit.byteLength,\n duration: 0,\n // wait for next sample\n originalDts: originalDts,\n flags: {\n isLeading: 0,\n dependsOn: 1,\n isDependedOn: 0,\n hasRedundancy: 0\n }\n };\n silentFrames.push(frame);\n mdatBytes += frame.size;\n currentDts += refSampleDuration;\n } // last frame: align end time to next frame dts\n\n\n var lastFrame = silentFrames[silentFrames.length - 1];\n lastFrame.duration = _dts + sampleDuration - lastFrame.dts; // silentFrames.forEach((frame) => {\n // Log.w(this.TAG, `SilentAudio: dts: ${frame.dts}, duration: ${frame.duration}`);\n // });\n // Set correct sample duration for current frame\n\n sampleDuration = Math.round(refSampleDuration);\n } //console.log(\"mp4-remuxer.js:: audio length: \" + sample.unit.byteLength + \" sampleDuration:\" + sampleDuration + \" sample.pts[\" + dts + \"]\");\n\n\n mp4Samples.push({\n dts: _dts,\n pts: _dts,\n cts: 0,\n unit: _sample.unit,\n size: _sample.unit.byteLength,\n duration: sampleDuration,\n originalDts: originalDts,\n flags: {\n isLeading: 0,\n dependsOn: 1,\n isDependedOn: 0,\n hasRedundancy: 0\n }\n });\n\n if (needFillSilentFrames) {\n // Silent frames should be inserted after wrong-duration frame\n mp4Samples.push.apply(mp4Samples, silentFrames);\n }\n } // allocate mdatbox\n\n\n if (mpegRawTrack) {\n // allocate for raw mpeg buffer\n mdatbox = new Uint8Array(mdatBytes);\n } else {\n // allocate for fmp4 mdat box\n mdatbox = new Uint8Array(mdatBytes); // size field\n\n mdatbox[0] = mdatBytes >>> 24 & 0xFF;\n mdatbox[1] = mdatBytes >>> 16 & 0xFF;\n mdatbox[2] = mdatBytes >>> 8 & 0xFF;\n mdatbox[3] = mdatBytes & 0xFF; // type field (fourCC)\n\n mdatbox.set(_mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].types.mdat, 4);\n } // Write samples into mdatbox\n\n\n for (var _i = 0; _i < mp4Samples.length; _i++) {\n var _unit = mp4Samples[_i].unit;\n mdatbox.set(_unit, offset);\n offset += _unit.byteLength;\n }\n\n var latest = mp4Samples[mp4Samples.length - 1];\n lastDts = latest.dts + latest.duration;\n this._audioNextDts = lastDts; // fill media segment info & add to info list\n\n var info = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__[\"MediaSegmentInfo\"]();\n info.beginDts = firstDts;\n info.endDts = lastDts;\n info.beginPts = firstDts;\n info.endPts = lastDts;\n info.originalBeginDts = mp4Samples[0].originalDts;\n info.originalEndDts = latest.originalDts + latest.duration;\n info.firstSample = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__[\"SampleInfo\"](mp4Samples[0].dts, mp4Samples[0].pts, mp4Samples[0].duration, mp4Samples[0].originalDts, false);\n info.lastSample = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__[\"SampleInfo\"](latest.dts, latest.pts, latest.duration, latest.originalDts, false);\n\n if (!this._isLive) {\n this._audioSegmentInfoList.append(info);\n }\n\n track.samples = mp4Samples;\n track.sequenceNumber++;\n var moofbox = null;\n\n if (mpegRawTrack) {\n // Generate empty buffer, because useless for raw mpeg\n moofbox = new Uint8Array();\n } else {\n // Generate moof for fmp4 segment\n moofbox = _mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].moof(track, firstDts);\n }\n\n track.samples = [];\n track.length = 0;\n var segment = {\n type: 'audio',\n data: this._mergeBoxes(moofbox, mdatbox).buffer,\n sampleCount: mp4Samples.length,\n info: info\n };\n\n if (mpegRawTrack && firstSegmentAfterSeek) {\n // For MPEG audio stream in MSE, if seeking occurred, before appending new buffer\n // We need explicitly set timestampOffset to the desired point in timeline for mpeg SourceBuffer.\n segment.timestampOffset = firstDts;\n }\n\n this._onMediaSegment('audio', segment);\n };\n\n _proto._remuxVideo = function _remuxVideo(videoTrack, force) {\n if (this._videoMeta == null) {\n return;\n }\n\n var track = videoTrack;\n var samples = track.samples;\n var dtsCorrection = undefined;\n var firstDts = -1,\n lastDts = -1;\n var firstPts = -1,\n lastPts = -1;\n\n if (!samples || samples.length === 0) {\n return;\n } //console.log(\"mp4-remuxer.js::remuxVideo: \" + samples.length);\n\n\n if (samples.length === 1 && !force) {// If [sample count in current batch] === 1 && (force != true)\n // Ignore and keep in demuxer's queue\n //return; //Gavin 2021.11.16 ע����, ��Ϊrtsp�������������ǵ�֡��������, �粻ע��, ��Chrome�������ֿ���\n } // else if (force === true) do remux\n\n\n var offset = 8;\n var mdatbox = null;\n var mdatBytes = 8 + videoTrack.length; //console.log(\"mdatBytes: videoTrack.length: 8+\" + videoTrack.length + \" = \" + mdatBytes);\n\n var lastSample = null; // Pop the lastSample and waiting for stash\n //if (samples.length > 1) {\n\n if (samples.length > 0) {\n //Gavin 2021.11.16\n lastSample = samples.pop();\n mdatBytes -= lastSample.length; //console.log(\" mdatBytes-: \" + lastSample.length + \" = \" + mdatBytes);\n } // Insert [stashed lastSample in the previous batch] to the front\n\n\n if (this._videoStashedLastSample != null) {\n var sample = this._videoStashedLastSample;\n this._videoStashedLastSample = null;\n samples.unshift(sample);\n mdatBytes += sample.length; //console.log(\" mdatBytes+ \" + sample.length + \" = \" + mdatBytes);\n } // Stash the lastSample of current batch, waiting for next batch\n\n\n if (lastSample != null) {\n this._videoStashedLastSample = lastSample;\n }\n\n if (samples.length < 1) {\n //console.log(\"samples.length < 1\");\n return;\n }\n\n var firstSampleOriginalDts = samples[0].dts - this._dtsBase; // calculate dtsCorrection\n\n if (this._videoNextDts) {\n dtsCorrection = firstSampleOriginalDts - this._videoNextDts;\n } else {\n // this._videoNextDts == undefined\n if (this._videoSegmentInfoList.isEmpty()) {\n dtsCorrection = 0;\n } else {\n var _lastSample2 = this._videoSegmentInfoList.getLastSampleBefore(firstSampleOriginalDts);\n\n if (_lastSample2 != null) {\n var distance = firstSampleOriginalDts - (_lastSample2.originalDts + _lastSample2.duration);\n\n if (distance <= 3) {\n distance = 0;\n }\n\n var expectedDts = _lastSample2.dts + _lastSample2.duration + distance;\n dtsCorrection = firstSampleOriginalDts - expectedDts;\n } else {\n // lastSample == null, cannot found\n dtsCorrection = 0;\n }\n }\n }\n\n var fastPlay = false;\n\n if (this._adjustPts > 0) {\n console.log('dtsCorrection: ' + dtsCorrection);\n dtsCorrection = 10;\n fastPlay = true;\n }\n\n var info = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__[\"MediaSegmentInfo\"]();\n var mp4Samples = []; //console.log(\"samples.length: \" + samples.length);\n // Correct dts for each sample, and calculate sample duration. Then output to mp4Samples\n\n for (var i = 0; i < samples.length; i++) {\n var _sample2 = samples[i];\n var originalDts = _sample2.dts - this._dtsBase;\n\n if (originalDts < 0) {//console.log(\"ERROR: originalDts<0: \" + originalDts);\n }\n\n var isKeyframe = _sample2.isKeyframe;\n var dts = originalDts - dtsCorrection;\n var cts = _sample2.cts;\n var pts = dts + cts;\n\n if (firstDts === -1) {\n firstDts = dts;\n firstPts = pts;\n }\n\n var sampleDuration = 0;\n\n if (i !== samples.length - 1) {\n var nextDts = samples[i + 1].dts - this._dtsBase - dtsCorrection;\n sampleDuration = nextDts - dts;\n } else {\n // the last sample\n if (lastSample != null) {\n // use stashed sample's dts to calculate sample duration\n var _nextDts2 = lastSample.dts - this._dtsBase - dtsCorrection;\n\n sampleDuration = _nextDts2 - dts;\n } else if (mp4Samples.length >= 1) {\n // use second last sample duration\n sampleDuration = mp4Samples[mp4Samples.length - 1].duration;\n } else {\n // the only one sample, use reference sample duration\n sampleDuration = Math.floor(this._videoMeta.refSampleDuration);\n }\n }\n\n if (isKeyframe) {\n var syncPoint = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__[\"SampleInfo\"](dts, pts, sampleDuration, _sample2.dts, true);\n syncPoint.fileposition = _sample2.fileposition;\n info.appendSyncPoint(syncPoint);\n } //if (sample.units.length > 0) {\n // let idx = 0;\n // for (idx = 0; idx < sample.units.length; idx++) {\n // console.log(\"mp4-remuxer.js:: video sampleDuration[\" + sampleDuration + \"] fileposition[\" + sample.fileposition + \"]\");\n // console.log(\"mp4-remuxer.js:: \" + (idx + 1) + \"/\" + sample.units.length + \" sample.length[\" + sample.units[idx].data.length + \"/\" + sample.length + \"] pts[\" + pts + \"] cts[\" + cts + \"]\");//: \" + sample.units[idx].data);\n // //console.log(\"mp4-remuxer.js:: \" + (idx + 1) + \"/\" + sample.units.length + \" sample.length[\" + sample.units[idx].data.length + \"/\" + sample.length + \"] pts[\" + pts + \"] cts[\" + cts + \"]: \" + sample.units[idx].data);\n // }\n //}\n\n\n if (fastPlay) {\n sampleDuration = Math.floor(sampleDuration * 0.8);\n }\n /*\n //�ȼ�¼������pts\n let currentPts = pts;\n if (currentPts < this._lastVideoPts) {\n console.log(\"pts error... currentPts[\" + currentPts + \"] --> [\" + this._lastVideoPts + \"]\");\n }\n let bAdjustSpeed = false;\n if (this._adjustPts > 0) {\n if (this._lastAdjustVideoPts < 1) {\n let n = currentPts - this._lastVideoPts;\n n *= 0.8;\n this._lastAdjustVideoPts = Math.floor(this._lastVideoPts + n);\n bAdjustSpeed = true;\n sampleDuration = Math.floor(sampleDuration * 0.8);\n pts = Math.floor(this._lastAdjustVideoPts);\n }\n console.log(\"raw pts[\" + currentPts + \"] --> [\" + pts + \"]\");\n }\n if (this._lastAdjustVideoPts > 0 && !bAdjustSpeed) {\n let n = currentPts - this._lastVideoPts;\n if (n < 1) {\n console.log(\"ERROR.\");\n }\n if (this._adjustPts > 0) {\n n *= 0.8;\n sampleDuration = Math.floor(sampleDuration * 0.8);\n //n *= 0.2;\n }\n this._lastAdjustVideoPts += Math.floor(n);\n pts = Math.floor(this._lastAdjustVideoPts);\n //console.log(\"Video pts: \" + currentPts + \" --> \" + (pts) + \" dts:\" + dts + \" cts:\" + cts);\n console.log(\"raw pts[\" + currentPts + \"] --> [\" + pts + \"] lastPts[\" + this._lastVideoPts + \"]\");\n }\n dts = pts;\n this._lastVideoPts = currentPts;\n */\n\n\n mp4Samples.push({\n dts: dts,\n pts: pts,\n cts: cts,\n units: _sample2.units,\n size: _sample2.length,\n isKeyframe: isKeyframe,\n duration: sampleDuration,\n originalDts: originalDts,\n flags: {\n isLeading: 0,\n dependsOn: isKeyframe ? 2 : 1,\n isDependedOn: isKeyframe ? 1 : 0,\n hasRedundancy: 0,\n isNonSync: isKeyframe ? 0 : 1\n }\n });\n } //console.log(\"new mdatbox size: \" + mdatBytes);\n //let newMdatBytes = 8;\n //for (let i = 0; i < mp4Samples.length; i++) {\n // let units = mp4Samples[i].units;\n // for (let j = 0; j < units.length; j++) {\n // let unit = units[j];\n // let data = unit.data;\n // newMdatBytes += data.byteLength;\n // }\n //}\n //console.log(\"newMdatBytes: \" + newMdatBytes);\n // allocate mdatbox\n\n\n mdatbox = new Uint8Array(mdatBytes); //mdatbox = new Uint8Array(newMdatBytes);\n\n mdatbox[0] = mdatBytes >>> 24 & 0xFF;\n mdatbox[1] = mdatBytes >>> 16 & 0xFF;\n mdatbox[2] = mdatBytes >>> 8 & 0xFF;\n mdatbox[3] = mdatBytes & 0xFF;\n mdatbox.set(_mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].types.mdat, 4); // Write samples into mdatbox\n\n for (var _i2 = 0; _i2 < mp4Samples.length; _i2++) {\n var units = mp4Samples[_i2].units;\n\n while (units.length) {\n var unit = units.shift();\n var data = unit.data; //console.log(\"mdatbox.set offset: \" + offset + \" data size:\" + data.byteLength);\n\n mdatbox.set(data, offset);\n offset += data.byteLength;\n }\n }\n\n var latest = mp4Samples[mp4Samples.length - 1];\n lastDts = latest.dts + latest.duration;\n lastPts = latest.pts + latest.duration;\n this._videoNextDts = lastDts; // fill media segment info & add to info list\n\n info.beginDts = firstDts;\n info.endDts = lastDts;\n info.beginPts = firstPts;\n info.endPts = lastPts;\n info.originalBeginDts = mp4Samples[0].originalDts;\n info.originalEndDts = latest.originalDts + latest.duration;\n info.firstSample = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__[\"SampleInfo\"](mp4Samples[0].dts, mp4Samples[0].pts, mp4Samples[0].duration, mp4Samples[0].originalDts, mp4Samples[0].isKeyframe);\n info.lastSample = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__[\"SampleInfo\"](latest.dts, latest.pts, latest.duration, latest.originalDts, latest.isKeyframe);\n\n if (!this._isLive) {\n this._videoSegmentInfoList.append(info);\n }\n\n track.samples = mp4Samples;\n track.sequenceNumber++; // workaround for chrome < 50: force first sample as a random access point\n // see https://bugs.chromium.org/p/chromium/issues/detail?id=229412\n\n if (this._forceFirstIDR) {\n var flags = mp4Samples[0].flags;\n flags.dependsOn = 2;\n flags.isNonSync = 0;\n }\n\n var moofbox = _mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].moof(track, firstDts);\n track.samples = [];\n track.length = 0;\n\n this._onMediaSegment('video', {\n type: 'video',\n data: this._mergeBoxes(moofbox, mdatbox).buffer,\n sampleCount: mp4Samples.length,\n info: info\n });\n };\n\n _proto._mergeBoxes = function _mergeBoxes(moof, mdat) {\n var result = new Uint8Array(moof.byteLength + mdat.byteLength);\n result.set(moof, 0);\n result.set(mdat, moof.byteLength);\n return result;\n };\n\n _createClass(MP4Remuxer, [{\n key: \"onInitSegment\",\n get: function get() {\n return this._onInitSegment;\n },\n set: function set(callback) {\n this._onInitSegment = callback;\n }\n /* prototype: function onMediaSegment(type: string, mediaSegment: MediaSegment): void\n MediaSegment: {\n type: string,\n data: ArrayBuffer,\n sampleCount: int32\n info: MediaSegmentInfo\n }\n */\n\n }, {\n key: \"onMediaSegment\",\n get: function get() {\n return this._onMediaSegment;\n },\n set: function set(callback) {\n this._onMediaSegment = callback;\n }\n }]);\n\n return MP4Remuxer;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (MP4Remuxer);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/remux/mp4-remuxer.js?"); | |
| 3485 | - | |
| 3486 | -/***/ }), | |
| 3487 | - | |
| 3488 | -/***/ "./src/FlvPlayer/flv.js/utils/browser.js": | |
| 3489 | -/*!***********************************************!*\ | |
| 3490 | - !*** ./src/FlvPlayer/flv.js/utils/browser.js ***! | |
| 3491 | - \***********************************************/ | |
| 3492 | -/*! exports provided: default */ | |
| 3493 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3494 | - | |
| 3495 | -"use strict"; | |
| 3496 | -eval("__webpack_require__.r(__webpack_exports__);\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar Browser = {}; //import * as Object from '../../../../node_modules/es6-object-assign/dist/object-assign.js';\n//import assign from 'core-js/modules/es.object.assign';\n//import assign from 'object-assign';\n//assign({}, {});\n\nfunction detect() {\n // modified from jquery-browser-plugin\n var ua = self.navigator.userAgent.toLowerCase();\n var match = /(edge)\\/([\\w.]+)/.exec(ua) || /(opr)[\\/]([\\w.]+)/.exec(ua) || /(chrome)[ \\/]([\\w.]+)/.exec(ua) || /(iemobile)[\\/]([\\w.]+)/.exec(ua) || /(version)(applewebkit)[ \\/]([\\w.]+).*(safari)[ \\/]([\\w.]+)/.exec(ua) || /(webkit)[ \\/]([\\w.]+).*(version)[ \\/]([\\w.]+).*(safari)[ \\/]([\\w.]+)/.exec(ua) || /(webkit)[ \\/]([\\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec(ua) || /(msie) ([\\w.]+)/.exec(ua) || ua.indexOf('trident') >= 0 && /(rv)(?::| )([\\w.]+)/.exec(ua) || ua.indexOf('compatible') < 0 && /(firefox)[ \\/]([\\w.]+)/.exec(ua) || [];\n var platform_match = /(ipad)/.exec(ua) || /(ipod)/.exec(ua) || /(windows phone)/.exec(ua) || /(iphone)/.exec(ua) || /(kindle)/.exec(ua) || /(android)/.exec(ua) || /(windows)/.exec(ua) || /(mac)/.exec(ua) || /(linux)/.exec(ua) || /(cros)/.exec(ua) || [];\n var matched = {\n browser: match[5] || match[3] || match[1] || '',\n version: match[2] || match[4] || '0',\n majorVersion: match[4] || match[2] || '0',\n platform: platform_match[0] || ''\n };\n var browser = {};\n\n if (matched.browser) {\n browser[matched.browser] = true;\n var versionArray = matched.majorVersion.split('.');\n browser.version = {\n major: parseInt(matched.majorVersion, 10),\n string: matched.version\n };\n\n if (versionArray.length > 1) {\n browser.version.minor = parseInt(versionArray[1], 10);\n }\n\n if (versionArray.length > 2) {\n browser.version.build = parseInt(versionArray[2], 10);\n }\n }\n\n if (matched.platform) {\n browser[matched.platform] = true;\n }\n\n if (browser.chrome || browser.opr || browser.safari) {\n browser.webkit = true;\n } // MSIE. IE11 has 'rv' identifer\n\n\n if (browser.rv || browser.iemobile) {\n if (browser.rv) {\n delete browser.rv;\n }\n\n var msie = 'msie';\n matched.browser = msie;\n browser[msie] = true;\n } // Microsoft Edge\n\n\n if (browser.edge) {\n delete browser.edge;\n var msedge = 'msedge';\n matched.browser = msedge;\n browser[msedge] = true;\n } // Opera 15+\n\n\n if (browser.opr) {\n var opera = 'opera';\n matched.browser = opera;\n browser[opera] = true;\n } // Stock android browsers are marked as Safari\n\n\n if (browser.safari && browser.android) {\n var android = 'android';\n matched.browser = android;\n browser[android] = true;\n }\n\n browser.name = matched.browser;\n browser.platform = matched.platform;\n\n for (var key in Browser) {\n if (Browser.hasOwnProperty(key)) {\n delete Browser[key];\n }\n }\n /*\n if (typeof Object.assign != 'function') {\n Object.assign = function (target) {\n 'use strict';\n if (target == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n target = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source != null) {\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n };\n }\n */\n\n\n Object.assign(Browser, browser);\n}\n\ndetect();\n/* harmony default export */ __webpack_exports__[\"default\"] = (Browser);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/utils/browser.js?"); | |
| 3497 | - | |
| 3498 | -/***/ }), | |
| 3499 | - | |
| 3500 | -/***/ "./src/FlvPlayer/flv.js/utils/exception.js": | |
| 3501 | -/*!*************************************************!*\ | |
| 3502 | - !*** ./src/FlvPlayer/flv.js/utils/exception.js ***! | |
| 3503 | - \*************************************************/ | |
| 3504 | -/*! exports provided: RuntimeException, IllegalStateException, InvalidArgumentException, NotImplementedException */ | |
| 3505 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3506 | - | |
| 3507 | -"use strict"; | |
| 3508 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RuntimeException\", function() { return RuntimeException; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IllegalStateException\", function() { return IllegalStateException; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InvalidArgumentException\", function() { return InvalidArgumentException; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NotImplementedException\", function() { return NotImplementedException; });\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar RuntimeException = /*#__PURE__*/function () {\n function RuntimeException(message) {\n this._message = message;\n }\n\n var _proto = RuntimeException.prototype;\n\n _proto.toString = function toString() {\n return this.name + ': ' + this.message;\n };\n\n _createClass(RuntimeException, [{\n key: \"name\",\n get: function get() {\n return 'RuntimeException';\n }\n }, {\n key: \"message\",\n get: function get() {\n return this._message;\n }\n }]);\n\n return RuntimeException;\n}();\nvar IllegalStateException = /*#__PURE__*/function (_RuntimeException) {\n _inheritsLoose(IllegalStateException, _RuntimeException);\n\n function IllegalStateException(message) {\n return _RuntimeException.call(this, message) || this;\n }\n\n _createClass(IllegalStateException, [{\n key: \"name\",\n get: function get() {\n return 'IllegalStateException';\n }\n }]);\n\n return IllegalStateException;\n}(RuntimeException);\nvar InvalidArgumentException = /*#__PURE__*/function (_RuntimeException2) {\n _inheritsLoose(InvalidArgumentException, _RuntimeException2);\n\n function InvalidArgumentException(message) {\n return _RuntimeException2.call(this, message) || this;\n }\n\n _createClass(InvalidArgumentException, [{\n key: \"name\",\n get: function get() {\n return 'InvalidArgumentException';\n }\n }]);\n\n return InvalidArgumentException;\n}(RuntimeException);\nvar NotImplementedException = /*#__PURE__*/function (_RuntimeException3) {\n _inheritsLoose(NotImplementedException, _RuntimeException3);\n\n function NotImplementedException(message) {\n return _RuntimeException3.call(this, message) || this;\n }\n\n _createClass(NotImplementedException, [{\n key: \"name\",\n get: function get() {\n return 'NotImplementedException';\n }\n }]);\n\n return NotImplementedException;\n}(RuntimeException);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/utils/exception.js?"); | |
| 3509 | - | |
| 3510 | -/***/ }), | |
| 3511 | - | |
| 3512 | -/***/ "./src/FlvPlayer/flv.js/utils/logger.js": | |
| 3513 | -/*!**********************************************!*\ | |
| 3514 | - !*** ./src/FlvPlayer/flv.js/utils/logger.js ***! | |
| 3515 | - \**********************************************/ | |
| 3516 | -/*! exports provided: default */ | |
| 3517 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3518 | - | |
| 3519 | -"use strict"; | |
| 3520 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ \"./node_modules/node-libs-browser/node_modules/events/events.js\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nvar Log = /*#__PURE__*/function () {\n function Log() {}\n\n Log.e = function e(tag, msg) {\n if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;\n var str = \"[\" + tag + \"] > \" + msg;\n\n if (Log.ENABLE_CALLBACK) {\n Log.emitter.emit('log', 'error', str);\n }\n\n if (!Log.ENABLE_ERROR) {\n return;\n }\n\n if (console.error) {\n console.error(str);\n } else if (console.warn) {\n console.warn(str);\n } else {\n console.log(str);\n }\n };\n\n Log.i = function i(tag, msg) {\n if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;\n var str = \"[\" + tag + \"] > \" + msg;\n\n if (Log.ENABLE_CALLBACK) {\n Log.emitter.emit('log', 'info', str);\n }\n\n if (!Log.ENABLE_INFO) {\n return;\n }\n\n if (console.info) {\n console.info(str);\n } else {\n console.log(str);\n }\n };\n\n Log.w = function w(tag, msg) {\n if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;\n var str = \"[\" + tag + \"] > \" + msg;\n\n if (Log.ENABLE_CALLBACK) {\n Log.emitter.emit('log', 'warn', str);\n }\n\n if (!Log.ENABLE_WARN) {\n return;\n }\n\n if (console.warn) {\n console.warn(str);\n } else {\n console.log(str);\n }\n };\n\n Log.d = function d(tag, msg) {\n if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;\n var str = \"[\" + tag + \"] > \" + msg;\n\n if (Log.ENABLE_CALLBACK) {\n Log.emitter.emit('log', 'debug', str);\n }\n\n if (!Log.ENABLE_DEBUG) {\n return;\n }\n\n if (console.debug) {\n console.debug(str);\n } else {\n console.log(str);\n }\n };\n\n Log.v = function v(tag, msg) {\n if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;\n var str = \"[\" + tag + \"] > \" + msg;\n\n if (Log.ENABLE_CALLBACK) {\n Log.emitter.emit('log', 'verbose', str);\n }\n\n if (!Log.ENABLE_VERBOSE) {\n return;\n }\n\n console.log(str);\n };\n\n return Log;\n}();\n\nLog.GLOBAL_TAG = 'SyncPlayer.js';\nLog.FORCE_GLOBAL_TAG = false;\nLog.ENABLE_ERROR = true;\nLog.ENABLE_INFO = true;\nLog.ENABLE_WARN = true;\nLog.ENABLE_DEBUG = true;\nLog.ENABLE_VERBOSE = true;\nLog.ENABLE_CALLBACK = false;\nLog.emitter = new events__WEBPACK_IMPORTED_MODULE_0___default.a();\n/* harmony default export */ __webpack_exports__[\"default\"] = (Log);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/utils/logger.js?"); | |
| 3521 | - | |
| 3522 | -/***/ }), | |
| 3523 | - | |
| 3524 | -/***/ "./src/FlvPlayer/flv.js/utils/logging-control.js": | |
| 3525 | -/*!*******************************************************!*\ | |
| 3526 | - !*** ./src/FlvPlayer/flv.js/utils/logging-control.js ***! | |
| 3527 | - \*******************************************************/ | |
| 3528 | -/*! exports provided: default */ | |
| 3529 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3530 | - | |
| 3531 | -"use strict"; | |
| 3532 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ \"./node_modules/node-libs-browser/node_modules/events/events.js\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger.js */ \"./src/FlvPlayer/flv.js/utils/logger.js\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n\nvar LoggingControl = /*#__PURE__*/function () {\n function LoggingControl() {}\n\n LoggingControl.getConfig = function getConfig() {\n return {\n globalTag: _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].GLOBAL_TAG,\n forceGlobalTag: _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].FORCE_GLOBAL_TAG,\n enableVerbose: _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_VERBOSE,\n enableDebug: _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_DEBUG,\n enableInfo: _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_INFO,\n enableWarn: _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_WARN,\n enableError: _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_ERROR,\n enableCallback: _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_CALLBACK\n };\n };\n\n LoggingControl.applyConfig = function applyConfig(config) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].GLOBAL_TAG = config.globalTag;\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].FORCE_GLOBAL_TAG = config.forceGlobalTag;\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_VERBOSE = config.enableVerbose;\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_DEBUG = config.enableDebug;\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_INFO = config.enableInfo;\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_WARN = config.enableWarn;\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_ERROR = config.enableError;\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_CALLBACK = config.enableCallback;\n };\n\n LoggingControl._notifyChange = function _notifyChange() {\n var emitter = LoggingControl.emitter;\n\n if (emitter.listenerCount('change') > 0) {\n var config = LoggingControl.getConfig();\n emitter.emit('change', config);\n }\n };\n\n LoggingControl.registerListener = function registerListener(listener) {\n LoggingControl.emitter.addListener('change', listener);\n };\n\n LoggingControl.removeListener = function removeListener(listener) {\n LoggingControl.emitter.removeListener('change', listener);\n };\n\n LoggingControl.addLogListener = function addLogListener(listener) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].emitter.addListener('log', listener);\n\n if (_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].emitter.listenerCount('log') > 0) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_CALLBACK = true;\n\n LoggingControl._notifyChange();\n }\n };\n\n LoggingControl.removeLogListener = function removeLogListener(listener) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].emitter.removeListener('log', listener);\n\n if (_logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].emitter.listenerCount('log') === 0) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_CALLBACK = false;\n\n LoggingControl._notifyChange();\n }\n };\n\n _createClass(LoggingControl, null, [{\n key: \"forceGlobalTag\",\n get: function get() {\n return _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].FORCE_GLOBAL_TAG;\n },\n set: function set(enable) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].FORCE_GLOBAL_TAG = enable;\n\n LoggingControl._notifyChange();\n }\n }, {\n key: \"globalTag\",\n get: function get() {\n return _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].GLOBAL_TAG;\n },\n set: function set(tag) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].GLOBAL_TAG = tag;\n\n LoggingControl._notifyChange();\n }\n }, {\n key: \"enableAll\",\n get: function get() {\n return _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_VERBOSE && _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_DEBUG && _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_INFO && _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_WARN && _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_ERROR;\n },\n set: function set(enable) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_VERBOSE = enable;\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_DEBUG = enable;\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_INFO = enable;\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_WARN = enable;\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_ERROR = enable;\n\n LoggingControl._notifyChange();\n }\n }, {\n key: \"enableDebug\",\n get: function get() {\n return _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_DEBUG;\n },\n set: function set(enable) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_DEBUG = enable;\n\n LoggingControl._notifyChange();\n }\n }, {\n key: \"enableVerbose\",\n get: function get() {\n return _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_VERBOSE;\n },\n set: function set(enable) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_VERBOSE = enable;\n\n LoggingControl._notifyChange();\n }\n }, {\n key: \"enableInfo\",\n get: function get() {\n return _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_INFO;\n },\n set: function set(enable) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_INFO = enable;\n\n LoggingControl._notifyChange();\n }\n }, {\n key: \"enableWarn\",\n get: function get() {\n return _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_WARN;\n },\n set: function set(enable) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_WARN = enable;\n\n LoggingControl._notifyChange();\n }\n }, {\n key: \"enableError\",\n get: function get() {\n return _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_ERROR;\n },\n set: function set(enable) {\n _logger_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ENABLE_ERROR = enable;\n\n LoggingControl._notifyChange();\n }\n }]);\n\n return LoggingControl;\n}();\n\nLoggingControl.emitter = new events__WEBPACK_IMPORTED_MODULE_0___default.a();\n/* harmony default export */ __webpack_exports__[\"default\"] = (LoggingControl);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/utils/logging-control.js?"); | |
| 3533 | - | |
| 3534 | -/***/ }), | |
| 3535 | - | |
| 3536 | -/***/ "./src/FlvPlayer/flv.js/utils/polyfill.js": | |
| 3537 | -/*!************************************************!*\ | |
| 3538 | - !*** ./src/FlvPlayer/flv.js/utils/polyfill.js ***! | |
| 3539 | - \************************************************/ | |
| 3540 | -/*! exports provided: default */ | |
| 3541 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3542 | - | |
| 3543 | -"use strict"; | |
| 3544 | -eval("__webpack_require__.r(__webpack_exports__);\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar Polyfill = /*#__PURE__*/function () {\n function Polyfill() {}\n\n Polyfill.install = function install() {\n // ES6 Object.setPrototypeOf\n Object.setPrototypeOf = Object.setPrototypeOf || function (obj, proto) {\n obj.__proto__ = proto;\n return obj;\n }; // ES6 Object.assign\n\n\n Object.assign = Object.assign || function (target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n if (source !== undefined && source !== null) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n output[key] = source[key];\n }\n }\n }\n }\n\n return output;\n }; // ES6 Promise (missing support in IE11)\n\n\n if (typeof self.Promise !== 'function') {\n __webpack_require__(/*! es6-promise */ \"./node_modules/es6-promise/dist/es6-promise.js\").polyfill();\n }\n };\n\n return Polyfill;\n}();\n\nPolyfill.install();\n/* harmony default export */ __webpack_exports__[\"default\"] = (Polyfill);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/utils/polyfill.js?"); | |
| 3545 | - | |
| 3546 | -/***/ }), | |
| 3547 | - | |
| 3548 | -/***/ "./src/FlvPlayer/flv.js/utils/utf8-conv.js": | |
| 3549 | -/*!*************************************************!*\ | |
| 3550 | - !*** ./src/FlvPlayer/flv.js/utils/utf8-conv.js ***! | |
| 3551 | - \*************************************************/ | |
| 3552 | -/*! exports provided: default */ | |
| 3553 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3554 | - | |
| 3555 | -"use strict"; | |
| 3556 | -eval("__webpack_require__.r(__webpack_exports__);\n/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * This file is derived from C++ project libWinTF8 (https://github.com/m13253/libWinTF8)\n * @author zheng qian <xqq@xqq.im>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction checkContinuation(uint8array, start, checkLength) {\n var array = uint8array;\n\n if (start + checkLength < array.length) {\n while (checkLength--) {\n if ((array[++start] & 0xC0) !== 0x80) return false;\n }\n\n return true;\n } else {\n return false;\n }\n}\n\nfunction decodeUTF8(uint8array) {\n var out = [];\n var input = uint8array;\n var i = 0;\n var length = uint8array.length;\n\n while (i < length) {\n if (input[i] < 0x80) {\n out.push(String.fromCharCode(input[i]));\n ++i;\n continue;\n } else if (input[i] < 0xC0) {// fallthrough\n } else if (input[i] < 0xE0) {\n if (checkContinuation(input, i, 1)) {\n var ucs4 = (input[i] & 0x1F) << 6 | input[i + 1] & 0x3F;\n\n if (ucs4 >= 0x80) {\n out.push(String.fromCharCode(ucs4 & 0xFFFF));\n i += 2;\n continue;\n }\n }\n } else if (input[i] < 0xF0) {\n if (checkContinuation(input, i, 2)) {\n var _ucs = (input[i] & 0xF) << 12 | (input[i + 1] & 0x3F) << 6 | input[i + 2] & 0x3F;\n\n if (_ucs >= 0x800 && (_ucs & 0xF800) !== 0xD800) {\n out.push(String.fromCharCode(_ucs & 0xFFFF));\n i += 3;\n continue;\n }\n }\n } else if (input[i] < 0xF8) {\n if (checkContinuation(input, i, 3)) {\n var _ucs2 = (input[i] & 0x7) << 18 | (input[i + 1] & 0x3F) << 12 | (input[i + 2] & 0x3F) << 6 | input[i + 3] & 0x3F;\n\n if (_ucs2 > 0x10000 && _ucs2 < 0x110000) {\n _ucs2 -= 0x10000;\n out.push(String.fromCharCode(_ucs2 >>> 10 | 0xD800));\n out.push(String.fromCharCode(_ucs2 & 0x3FF | 0xDC00));\n i += 4;\n continue;\n }\n }\n }\n\n out.push(String.fromCharCode(0xFFFD));\n ++i;\n }\n\n return out.join('');\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (decodeUTF8);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/flv.js/utils/utf8-conv.js?"); | |
| 3557 | - | |
| 3558 | -/***/ }), | |
| 3559 | - | |
| 3560 | -/***/ "./src/FlvPlayer/m3u8parser/line-stream.js": | |
| 3561 | -/*!*************************************************!*\ | |
| 3562 | - !*** ./src/FlvPlayer/m3u8parser/line-stream.js ***! | |
| 3563 | - \*************************************************/ | |
| 3564 | -/*! exports provided: default */ | |
| 3565 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3566 | - | |
| 3567 | -"use strict"; | |
| 3568 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return LineStream; });\n/* harmony import */ var _videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @videojs/vhs-utils/dist/stream.js */ \"./node_modules/@videojs/vhs-utils/dist/stream.js\");\n/* harmony import */ var _videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0__);\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @file m3u8/line-stream.js\n */\n\n/**\n * A stream that buffers string input and generates a `data` event for each\n * line.\n *\n * @class LineStream\n * @extends Stream\n */\n\nvar LineStream = /*#__PURE__*/function (_Stream) {\n _inheritsLoose(LineStream, _Stream);\n\n function LineStream() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.buffer = '';\n return _this;\n }\n /**\n * Add new data to be parsed.\n *\n * @param {string} data the text to process\n */\n\n\n var _proto = LineStream.prototype;\n\n _proto.push = function push(data) {\n var nextNewline;\n this.buffer += data;\n nextNewline = this.buffer.indexOf('\\n');\n\n for (; nextNewline > -1; nextNewline = this.buffer.indexOf('\\n')) {\n this.trigger('data', this.buffer.substring(0, nextNewline));\n this.buffer = this.buffer.substring(nextNewline + 1);\n }\n };\n\n return LineStream;\n}(_videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0___default.a);\n\n\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/m3u8parser/line-stream.js?"); | |
| 3569 | - | |
| 3570 | -/***/ }), | |
| 3571 | - | |
| 3572 | -/***/ "./src/FlvPlayer/m3u8parser/parse-stream.js": | |
| 3573 | -/*!**************************************************!*\ | |
| 3574 | - !*** ./src/FlvPlayer/m3u8parser/parse-stream.js ***! | |
| 3575 | - \**************************************************/ | |
| 3576 | -/*! exports provided: default */ | |
| 3577 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3578 | - | |
| 3579 | -"use strict"; | |
| 3580 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ParseStream; });\n/* harmony import */ var _videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @videojs/vhs-utils/dist/stream.js */ \"./node_modules/@videojs/vhs-utils/dist/stream.js\");\n/* harmony import */ var _videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0__);\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @file m3u8/parse-stream.js\n */\n\n/**\n * \"forgiving\" attribute list psuedo-grammar:\n * attributes -> keyvalue (',' keyvalue)*\n * keyvalue -> key '=' value\n * key -> [^=]*\n * value -> '\"' [^\"]* '\"' | [^,]*\n */\n\nvar attributeSeparator = function attributeSeparator() {\n var key = '[^=]*';\n var value = '\"[^\"]*\"|[^,]*';\n var keyvalue = '(?:' + key + ')=(?:' + value + ')';\n return new RegExp('(?:^|,)(' + keyvalue + ')');\n};\n/**\n * Parse attributes from a line given the separator\n *\n * @param {string} attributes the attribute line to parse\n */\n\n\nvar parseAttributes = function parseAttributes(attributes) {\n // split the string using attributes as the separator\n var attrs = attributes.split(attributeSeparator());\n var result = {};\n var i = attrs.length;\n var attr;\n\n while (i--) {\n // filter out unmatched portions of the string\n if (attrs[i] === '') {\n continue;\n } // split the key and value\n\n\n attr = /([^=]*)=(.*)/.exec(attrs[i]).slice(1); // trim whitespace and remove optional quotes around the value\n\n attr[0] = attr[0].replace(/^\\s+|\\s+$/g, '');\n attr[1] = attr[1].replace(/^\\s+|\\s+$/g, '');\n attr[1] = attr[1].replace(/^['\"](.*)['\"]$/g, '$1');\n result[attr[0]] = attr[1];\n }\n\n return result;\n};\n/**\n * A line-level M3U8 parser event stream. It expects to receive input one\n * line at a time and performs a context-free parse of its contents. A stream\n * interpretation of a manifest can be useful if the manifest is expected to\n * be too large to fit comfortably into memory or the entirety of the input\n * is not immediately available. Otherwise, it's probably much easier to work\n * with a regular `Parser` object.\n *\n * Produces `data` events with an object that captures the parser's\n * interpretation of the input. That object has a property `tag` that is one\n * of `uri`, `comment`, or `tag`. URIs only have a single additional\n * property, `line`, which captures the entirety of the input without\n * interpretation. Comments similarly have a single additional property\n * `text` which is the input without the leading `#`.\n *\n * Tags always have a property `tagType` which is the lower-cased version of\n * the M3U8 directive without the `#EXT` or `#EXT-X-` prefix. For instance,\n * `#EXT-X-MEDIA-SEQUENCE` becomes `media-sequence` when parsed. Unrecognized\n * tags are given the tag type `unknown` and a single additional property\n * `data` with the remainder of the input.\n *\n * @class ParseStream\n * @extends Stream\n */\n\n\nvar ParseStream = /*#__PURE__*/function (_Stream) {\n _inheritsLoose(ParseStream, _Stream);\n\n function ParseStream() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.customParsers = [];\n _this.tagMappers = [];\n return _this;\n }\n /**\n * Parses an additional line of input.\n *\n * @param {string} line a single line of an M3U8 file to parse\n */\n\n\n var _proto = ParseStream.prototype;\n\n _proto.push = function push(line) {\n var _this2 = this;\n\n var match;\n var event; // strip whitespace\n\n line = line.trim();\n\n if (line.length === 0) {\n // ignore empty lines\n return;\n } // URIs\n\n\n if (line[0] !== '#') {\n this.trigger('data', {\n type: 'uri',\n uri: line\n });\n return;\n } // map tags\n\n\n var newLines = this.tagMappers.reduce(function (acc, mapper) {\n var mappedLine = mapper(line); // skip if unchanged\n\n if (mappedLine === line) {\n return acc;\n }\n\n return acc.concat([mappedLine]);\n }, [line]);\n newLines.forEach(function (newLine) {\n for (var i = 0; i < _this2.customParsers.length; i++) {\n if (_this2.customParsers[i].call(_this2, newLine)) {\n return;\n }\n } // Comments\n\n\n if (newLine.indexOf('#EXT') !== 0) {\n _this2.trigger('data', {\n type: 'comment',\n text: newLine.slice(1)\n });\n\n return;\n } // strip off any carriage returns here so the regex matching\n // doesn't have to account for them.\n\n\n newLine = newLine.replace('\\r', ''); // Tags\n\n match = /^#EXTM3U/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'm3u'\n });\n\n return;\n }\n\n match = /^#EXTINF:?([0-9\\.]*)?,?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'inf'\n };\n\n if (match[1]) {\n event.duration = parseFloat(match[1]);\n }\n\n if (match[2]) {\n event.title = match[2];\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-TARGETDURATION:?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'targetduration'\n };\n\n if (match[1]) {\n event.duration = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#ZEN-TOTAL-DURATION:?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'totalduration'\n };\n\n if (match[1]) {\n event.duration = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-VERSION:?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'version'\n };\n\n if (match[1]) {\n event.version = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MEDIA-SEQUENCE:?(\\-?[0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'media-sequence'\n };\n\n if (match[1]) {\n event.number = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-DISCONTINUITY-SEQUENCE:?(\\-?[0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'discontinuity-sequence'\n };\n\n if (match[1]) {\n event.number = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-PLAYLIST-TYPE:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'playlist-type'\n };\n\n if (match[1]) {\n event.playlistType = match[1];\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-BYTERANGE:?([0-9.]*)?@?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'byterange'\n };\n\n if (match[1]) {\n event.length = parseInt(match[1], 10);\n }\n\n if (match[2]) {\n event.offset = parseInt(match[2], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-ALLOW-CACHE:?(YES|NO)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'allow-cache'\n };\n\n if (match[1]) {\n event.allowed = !/NO/.test(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MAP:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'map'\n };\n\n if (match[1]) {\n var attributes = parseAttributes(match[1]);\n\n if (attributes.URI) {\n event.uri = attributes.URI;\n }\n\n if (attributes.BYTERANGE) {\n var _attributes$BYTERANGE = attributes.BYTERANGE.split('@'),\n length = _attributes$BYTERANGE[0],\n offset = _attributes$BYTERANGE[1];\n\n event.byterange = {};\n\n if (length) {\n event.byterange.length = parseInt(length, 10);\n }\n\n if (offset) {\n event.byterange.offset = parseInt(offset, 10);\n }\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-STREAM-INF:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'stream-inf'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n\n if (event.attributes.RESOLUTION) {\n var split = event.attributes.RESOLUTION.split('x');\n var resolution = {};\n\n if (split[0]) {\n resolution.width = parseInt(split[0], 10);\n }\n\n if (split[1]) {\n resolution.height = parseInt(split[1], 10);\n }\n\n event.attributes.RESOLUTION = resolution;\n }\n\n if (event.attributes.BANDWIDTH) {\n event.attributes.BANDWIDTH = parseInt(event.attributes.BANDWIDTH, 10);\n }\n\n if (event.attributes['PROGRAM-ID']) {\n event.attributes['PROGRAM-ID'] = parseInt(event.attributes['PROGRAM-ID'], 10);\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MEDIA:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'media'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-ENDLIST/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'endlist'\n });\n\n return;\n }\n\n match = /^#EXT-X-DISCONTINUITY/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'discontinuity'\n });\n\n return;\n }\n\n match = /^#EXT-X-PROGRAM-DATE-TIME:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'program-date-time'\n };\n\n if (match[1]) {\n event.dateTimeString = match[1];\n event.dateTimeObject = new Date(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-KEY:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'key'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]); // parse the IV string into a Uint32Array\n\n if (event.attributes.IV) {\n if (event.attributes.IV.substring(0, 2).toLowerCase() === '0x') {\n event.attributes.IV = event.attributes.IV.substring(2);\n }\n\n event.attributes.IV = event.attributes.IV.match(/.{8}/g);\n event.attributes.IV[0] = parseInt(event.attributes.IV[0], 16);\n event.attributes.IV[1] = parseInt(event.attributes.IV[1], 16);\n event.attributes.IV[2] = parseInt(event.attributes.IV[2], 16);\n event.attributes.IV[3] = parseInt(event.attributes.IV[3], 16);\n event.attributes.IV = new Uint32Array(event.attributes.IV);\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-START:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'start'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n event.attributes['TIME-OFFSET'] = parseFloat(event.attributes['TIME-OFFSET']);\n event.attributes.PRECISE = /YES/.test(event.attributes.PRECISE);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-OUT-CONT:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-out-cont'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-OUT:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-out'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-IN:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-in'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n } // unknown tag type\n\n\n _this2.trigger('data', {\n type: 'tag',\n data: newLine.slice(4)\n });\n });\n }\n /**\n * Add a parser for custom headers\n *\n * @param {Object} options a map of options for the added parser\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {string} options.customType the custom type to register to the output\n * @param {Function} [options.dataParser] function to parse the line into an object\n * @param {boolean} [options.segment] should tag data be attached to the segment object\n */\n ;\n\n _proto.addParser = function addParser(_ref) {\n var _this3 = this;\n\n var expression = _ref.expression,\n customType = _ref.customType,\n dataParser = _ref.dataParser,\n segment = _ref.segment;\n\n if (typeof dataParser !== 'function') {\n dataParser = function dataParser(line) {\n return line;\n };\n }\n\n this.customParsers.push(function (line) {\n var match = expression.exec(line);\n\n if (match) {\n _this3.trigger('data', {\n type: 'custom',\n data: dataParser(line),\n customType: customType,\n segment: segment\n });\n\n return true;\n }\n });\n }\n /**\n * Add a custom header mapper\n *\n * @param {Object} options\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {Function} options.map function to translate tag into a different tag\n */\n ;\n\n _proto.addTagMapper = function addTagMapper(_ref2) {\n var expression = _ref2.expression,\n map = _ref2.map;\n\n var mapFn = function mapFn(line) {\n if (expression.test(line)) {\n return map(line);\n }\n\n return line;\n };\n\n this.tagMappers.push(mapFn);\n };\n\n return ParseStream;\n}(_videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0___default.a);\n\n\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/m3u8parser/parse-stream.js?"); | |
| 3581 | - | |
| 3582 | -/***/ }), | |
| 3583 | - | |
| 3584 | -/***/ "./src/FlvPlayer/m3u8parser/parser.js": | |
| 3585 | -/*!********************************************!*\ | |
| 3586 | - !*** ./src/FlvPlayer/m3u8parser/parser.js ***! | |
| 3587 | - \********************************************/ | |
| 3588 | -/*! exports provided: default */ | |
| 3589 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3590 | - | |
| 3591 | -"use strict"; | |
| 3592 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Parser; });\n/* harmony import */ var _videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @videojs/vhs-utils/dist/stream.js */ \"./node_modules/@videojs/vhs-utils/dist/stream.js\");\n/* harmony import */ var _videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _videojs_vhs_utils_dist_decode_b64_to_uint8_array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @videojs/vhs-utils/dist/decode-b64-to-uint8-array.js */ \"./node_modules/@videojs/vhs-utils/dist/decode-b64-to-uint8-array.js\");\n/* harmony import */ var _videojs_vhs_utils_dist_decode_b64_to_uint8_array_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_videojs_vhs_utils_dist_decode_b64_to_uint8_array_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _line_stream__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./line-stream */ \"./src/FlvPlayer/m3u8parser/line-stream.js\");\n/* harmony import */ var _parse_stream__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./parse-stream */ \"./src/FlvPlayer/m3u8parser/parse-stream.js\");\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @file m3u8/parser.js\n */\n\n\n\n\n/**\n * A parser for M3U8 files. The current interpretation of the input is\n * exposed as a property `manifest` on parser objects. It's just two lines to\n * create and parse a manifest once you have the contents available as a string:\n *\n * ```js\n * var parser = new m3u8.Parser();\n * parser.push(xhr.responseText);\n * ```\n *\n * New input can later be applied to update the manifest object by calling\n * `push` again.\n *\n * The parser attempts to create a usable manifest object even if the\n * underlying input is somewhat nonsensical. It emits `info` and `warning`\n * events during the parse if it encounters input that seems invalid or\n * requires some property of the manifest object to be defaulted.\n *\n * @class Parser\n * @extends Stream\n */\n\nvar Parser = /*#__PURE__*/function (_Stream) {\n _inheritsLoose(Parser, _Stream);\n\n function Parser() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.lineStream = new _line_stream__WEBPACK_IMPORTED_MODULE_2__[\"default\"]();\n _this.parseStream = new _parse_stream__WEBPACK_IMPORTED_MODULE_3__[\"default\"]();\n\n _this.lineStream.pipe(_this.parseStream);\n /* eslint-disable consistent-this */\n\n\n var self = _assertThisInitialized(_this);\n /* eslint-enable consistent-this */\n\n\n var uris = [];\n var currentUri = {}; // if specified, the active EXT-X-MAP definition\n\n var currentMap; // if specified, the active decryption key\n\n var _key;\n\n var noop = function noop() {};\n\n var defaultMediaGroups = {\n 'AUDIO': {},\n 'VIDEO': {},\n 'CLOSED-CAPTIONS': {},\n 'SUBTITLES': {}\n }; // This is the Widevine UUID from DASH IF IOP. The same exact string is\n // used in MPDs with Widevine encrypted streams.\n\n var widevineUuid = 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed'; // group segments into numbered timelines delineated by discontinuities\n\n var currentTimeline = 0; // the manifest is empty until the parse stream begins delivering data\n\n _this.manifest = {\n allowCache: true,\n discontinuityStarts: [],\n segments: []\n }; // update the manifest with the m3u8 entry from the parse stream\n\n _this.parseStream.on('data', function (entry) {\n var mediaGroup;\n var rendition;\n ({\n tag: function tag() {\n // switch based on the tag type\n (({\n 'allow-cache': function allowCache() {\n this.manifest.allowCache = entry.allowed;\n\n if (!('allowed' in entry)) {\n this.trigger('info', {\n message: 'defaulting allowCache to YES'\n });\n this.manifest.allowCache = true;\n }\n },\n byterange: function byterange() {\n var byterange = {};\n\n if ('length' in entry) {\n currentUri.byterange = byterange;\n byterange.length = entry.length;\n\n if (!('offset' in entry)) {\n this.trigger('info', {\n message: 'defaulting offset to zero'\n });\n entry.offset = 0;\n }\n }\n\n if ('offset' in entry) {\n currentUri.byterange = byterange;\n byterange.offset = entry.offset;\n }\n },\n endlist: function endlist() {\n this.manifest.endList = true;\n },\n inf: function inf() {\n if (!('mediaSequence' in this.manifest)) {\n this.manifest.mediaSequence = 0;\n this.trigger('info', {\n message: 'defaulting media sequence to zero'\n });\n }\n\n if (!('discontinuitySequence' in this.manifest)) {\n this.manifest.discontinuitySequence = 0;\n this.trigger('info', {\n message: 'defaulting discontinuity sequence to zero'\n });\n }\n\n if (entry.duration > 0) {\n currentUri.duration = entry.duration;\n }\n\n if (entry.duration === 0) {\n currentUri.duration = 0.01;\n this.trigger('info', {\n message: 'updating zero segment duration to a small value'\n });\n }\n\n this.manifest.segments = uris;\n },\n key: function key() {\n if (!entry.attributes) {\n this.trigger('warn', {\n message: 'ignoring key declaration without attribute list'\n });\n return;\n } // clear the active encryption key\n\n\n if (entry.attributes.METHOD === 'NONE') {\n _key = null;\n return;\n }\n\n if (!entry.attributes.URI) {\n this.trigger('warn', {\n message: 'ignoring key declaration without URI'\n });\n return;\n } // check if the content is encrypted for Widevine\n // Widevine/HLS spec: https://storage.googleapis.com/wvdocs/Widevine_DRM_HLS.pdf\n\n\n if (entry.attributes.KEYFORMAT === widevineUuid) {\n var VALID_METHODS = ['SAMPLE-AES', 'SAMPLE-AES-CTR', 'SAMPLE-AES-CENC'];\n\n if (VALID_METHODS.indexOf(entry.attributes.METHOD) === -1) {\n this.trigger('warn', {\n message: 'invalid key method provided for Widevine'\n });\n return;\n }\n\n if (entry.attributes.METHOD === 'SAMPLE-AES-CENC') {\n this.trigger('warn', {\n message: 'SAMPLE-AES-CENC is deprecated, please use SAMPLE-AES-CTR instead'\n });\n }\n\n if (entry.attributes.URI.substring(0, 23) !== 'data:text/plain;base64,') {\n this.trigger('warn', {\n message: 'invalid key URI provided for Widevine'\n });\n return;\n }\n\n if (!(entry.attributes.KEYID && entry.attributes.KEYID.substring(0, 2) === '0x')) {\n this.trigger('warn', {\n message: 'invalid key ID provided for Widevine'\n });\n return;\n } // if Widevine key attributes are valid, store them as `contentProtection`\n // on the manifest to emulate Widevine tag structure in a DASH mpd\n\n\n this.manifest.contentProtection = {\n 'com.widevine.alpha': {\n attributes: {\n schemeIdUri: entry.attributes.KEYFORMAT,\n // remove '0x' from the key id string\n keyId: entry.attributes.KEYID.substring(2)\n },\n // decode the base64-encoded PSSH box\n pssh: _videojs_vhs_utils_dist_decode_b64_to_uint8_array_js__WEBPACK_IMPORTED_MODULE_1___default()(entry.attributes.URI.split(',')[1])\n }\n };\n return;\n }\n\n if (!entry.attributes.METHOD) {\n this.trigger('warn', {\n message: 'defaulting key method to AES-128'\n });\n } // setup an encryption key for upcoming segments\n\n\n _key = {\n method: entry.attributes.METHOD || 'AES-128',\n uri: entry.attributes.URI\n };\n\n if (typeof entry.attributes.IV !== 'undefined') {\n _key.iv = entry.attributes.IV;\n }\n },\n 'media-sequence': function mediaSequence() {\n if (!isFinite(entry.number)) {\n this.trigger('warn', {\n message: 'ignoring invalid media sequence: ' + entry.number\n });\n return;\n }\n\n this.manifest.mediaSequence = entry.number;\n },\n 'discontinuity-sequence': function discontinuitySequence() {\n if (!isFinite(entry.number)) {\n this.trigger('warn', {\n message: 'ignoring invalid discontinuity sequence: ' + entry.number\n });\n return;\n }\n\n this.manifest.discontinuitySequence = entry.number;\n currentTimeline = entry.number;\n },\n 'playlist-type': function playlistType() {\n if (!/VOD|EVENT/.test(entry.playlistType)) {\n this.trigger('warn', {\n message: 'ignoring unknown playlist type: ' + entry.playlist\n });\n return;\n }\n\n this.manifest.playlistType = entry.playlistType;\n },\n map: function map() {\n currentMap = {};\n\n if (entry.uri) {\n currentMap.uri = entry.uri;\n }\n\n if (entry.byterange) {\n currentMap.byterange = entry.byterange;\n }\n },\n 'stream-inf': function streamInf() {\n this.manifest.playlists = uris;\n this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups;\n\n if (!entry.attributes) {\n this.trigger('warn', {\n message: 'ignoring empty stream-inf attributes'\n });\n return;\n }\n\n if (!currentUri.attributes) {\n currentUri.attributes = {};\n }\n\n Object.assign(currentUri.attributes, entry.attributes);\n },\n media: function media() {\n this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups;\n\n if (!(entry.attributes && entry.attributes.TYPE && entry.attributes['GROUP-ID'] && entry.attributes.NAME)) {\n this.trigger('warn', {\n message: 'ignoring incomplete or missing media group'\n });\n return;\n } // find the media group, creating defaults as necessary\n\n\n var mediaGroupType = this.manifest.mediaGroups[entry.attributes.TYPE];\n mediaGroupType[entry.attributes['GROUP-ID']] = mediaGroupType[entry.attributes['GROUP-ID']] || {};\n mediaGroup = mediaGroupType[entry.attributes['GROUP-ID']]; // collect the rendition metadata\n\n rendition = {\n default: /yes/i.test(entry.attributes.DEFAULT)\n };\n\n if (rendition.default) {\n rendition.autoselect = true;\n } else {\n rendition.autoselect = /yes/i.test(entry.attributes.AUTOSELECT);\n }\n\n if (entry.attributes.LANGUAGE) {\n rendition.language = entry.attributes.LANGUAGE;\n }\n\n if (entry.attributes.URI) {\n rendition.uri = entry.attributes.URI;\n }\n\n if (entry.attributes['INSTREAM-ID']) {\n rendition.instreamId = entry.attributes['INSTREAM-ID'];\n }\n\n if (entry.attributes.CHARACTERISTICS) {\n rendition.characteristics = entry.attributes.CHARACTERISTICS;\n }\n\n if (entry.attributes.FORCED) {\n rendition.forced = /yes/i.test(entry.attributes.FORCED);\n } // insert the new rendition\n\n\n mediaGroup[entry.attributes.NAME] = rendition;\n },\n discontinuity: function discontinuity() {\n currentTimeline += 1;\n currentUri.discontinuity = true;\n this.manifest.discontinuityStarts.push(uris.length);\n },\n 'program-date-time': function programDateTime() {\n if (typeof this.manifest.dateTimeString === 'undefined') {\n // PROGRAM-DATE-TIME is a media-segment tag, but for backwards\n // compatibility, we add the first occurence of the PROGRAM-DATE-TIME tag\n // to the manifest object\n // TODO: Consider removing this in future major version\n this.manifest.dateTimeString = entry.dateTimeString;\n this.manifest.dateTimeObject = entry.dateTimeObject;\n }\n\n currentUri.dateTimeString = entry.dateTimeString;\n currentUri.dateTimeObject = entry.dateTimeObject;\n },\n targetduration: function targetduration() {\n if (!isFinite(entry.duration) || entry.duration < 0) {\n this.trigger('warn', {\n message: 'ignoring invalid target duration: ' + entry.duration\n });\n return;\n }\n\n this.manifest.targetDuration = entry.duration;\n },\n totalduration: function totalduration() {\n if (!isFinite(entry.duration) || entry.duration < 0) {\n this.trigger('warn', {\n message: 'ignoring invalid total duration: ' + entry.duration\n });\n return;\n }\n\n this.manifest.totalDuration = entry.duration;\n },\n start: function start() {\n if (!entry.attributes || isNaN(entry.attributes['TIME-OFFSET'])) {\n this.trigger('warn', {\n message: 'ignoring start declaration without appropriate attribute list'\n });\n return;\n }\n\n this.manifest.start = {\n timeOffset: entry.attributes['TIME-OFFSET'],\n precise: entry.attributes.PRECISE\n };\n },\n 'cue-out': function cueOut() {\n currentUri.cueOut = entry.data;\n },\n 'cue-out-cont': function cueOutCont() {\n currentUri.cueOutCont = entry.data;\n },\n 'cue-in': function cueIn() {\n currentUri.cueIn = entry.data;\n }\n })[entry.tagType] || noop).call(self);\n },\n uri: function uri() {\n currentUri.uri = entry.uri;\n uris.push(currentUri); // if no explicit duration was declared, use the target duration\n\n if (this.manifest.targetDuration && !('duration' in currentUri)) {\n this.trigger('warn', {\n message: 'defaulting segment duration to the target duration'\n });\n currentUri.duration = this.manifest.targetDuration;\n } // annotate with encryption information, if necessary\n\n\n if (_key) {\n currentUri.key = _key;\n }\n\n currentUri.timeline = currentTimeline; // annotate with initialization segment information, if necessary\n\n if (currentMap) {\n currentUri.map = currentMap;\n } // prepare for the next URI\n\n\n currentUri = {};\n },\n comment: function comment() {// comments are not important for playback\n },\n custom: function custom() {\n // if this is segment-level data attach the output to the segment\n if (entry.segment) {\n currentUri.custom = currentUri.custom || {};\n currentUri.custom[entry.customType] = entry.data; // if this is manifest-level data attach to the top level manifest object\n } else {\n this.manifest.custom = this.manifest.custom || {};\n this.manifest.custom[entry.customType] = entry.data;\n }\n }\n })[entry.type].call(self);\n });\n\n return _this;\n }\n /**\n * Parse the input string and update the manifest object.\n *\n * @param {string} chunk a potentially incomplete portion of the manifest\n */\n\n\n var _proto = Parser.prototype;\n\n _proto.push = function push(chunk) {\n this.lineStream.push(chunk);\n }\n /**\n * Flush any remaining input. This can be handy if the last line of an M3U8\n * manifest did not contain a trailing newline but the file has been\n * completely received.\n */\n ;\n\n _proto.end = function end() {\n // flush any buffered input\n this.lineStream.push('\\n');\n }\n /**\n * Add an additional parser for non-standard tags\n *\n * @param {Object} options a map of options for the added parser\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {string} options.type the type to register to the output\n * @param {Function} [options.dataParser] function to parse the line into an object\n * @param {boolean} [options.segment] should tag data be attached to the segment object\n */\n ;\n\n _proto.addParser = function addParser(options) {\n this.parseStream.addParser(options);\n }\n /**\n * Add a custom header mapper\n *\n * @param {Object} options\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {Function} options.map function to translate tag into a different tag\n */\n ;\n\n _proto.addTagMapper = function addTagMapper(options) {\n this.parseStream.addTagMapper(options);\n };\n\n return Parser;\n}(_videojs_vhs_utils_dist_stream_js__WEBPACK_IMPORTED_MODULE_0___default.a);\n\n\n\n//# sourceURL=webpack://WebMediaPlayer/./src/FlvPlayer/m3u8parser/parser.js?"); | |
| 3593 | - | |
| 3594 | -/***/ }), | |
| 3595 | - | |
| 3596 | -/***/ "./src/common/DecodeWorker.js": | |
| 3597 | -/*!************************************!*\ | |
| 3598 | - !*** ./src/common/DecodeWorker.js ***! | |
| 3599 | - \************************************/ | |
| 3600 | -/*! exports provided: default, VSSModule, VSSLoadWasmModule, VSSModuleInitialized */ | |
| 3601 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3602 | - | |
| 3603 | -"use strict"; | |
| 3604 | -eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(process, __dirname, module, Buffer) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VSSModule\", function() { return VSSModule; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VSSLoadWasmModule\", function() { return VSSLoadWasmModule; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VSSModuleInitialized\", function() { return VSSModuleInitialized; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common */ \"./src/common/common.js\");\n //import wasmWorker from 'wasm-worker';\n//import * as wasmjs from './wasm.js';\n\nvar ModuleInitialized = false;\nvar fullURL = '';\nvar Module = typeof Module !== 'undefined' ? Module : {}; //var moduleOverrides = {};\n\nvar noExitRuntime = true;\n\nfunction LoadWasmModule() {\n //console.log(\"LoadWasmModule\");\n //console.log(\"ModuleInitialized:\", ModuleInitialized);\n //if (window.wasmModule == undefined) {\n if (!ModuleInitialized) {\n var locateFile = function locateFile(path) {\n if (Module['locateFile']) {\n return Module['locateFile'](path, scriptDirectory);\n }\n\n return scriptDirectory + path;\n };\n\n var dynamicAlloc = function dynamicAlloc(size) {\n assert(DYNAMICTOP_PTR);\n var ret = HEAP32[DYNAMICTOP_PTR >> 2];\n var end = ret + size + 15 & -16;\n\n if (end > _emscripten_get_heap_size()) {\n abort('failure to dynamicAlloc - memory growth etc. is not supported there, call malloc/sbrk directly');\n }\n\n HEAP32[DYNAMICTOP_PTR >> 2] = end;\n return ret;\n };\n\n var getNativeTypeSize = function getNativeTypeSize(type) {\n switch (type) {\n case 'i1':\n case 'i8':\n return 1;\n\n case 'i16':\n return 2;\n\n case 'i32':\n return 4;\n\n case 'i64':\n return 8;\n\n case 'float':\n return 4;\n\n case 'double':\n return 8;\n\n default:\n {\n if (type[type.length - 1] === '*') {\n return 4;\n } else if (type[0] === 'i') {\n var bits = parseInt(type.substr(1));\n assert(bits % 8 === 0, 'getNativeTypeSize invalid bits ' + bits + ', type ' + type);\n return bits / 8;\n } else {\n return 0;\n }\n }\n }\n };\n\n var warnOnce = function warnOnce(text) {\n if (!warnOnce.shown) warnOnce.shown = {};\n\n if (!warnOnce.shown[text]) {\n warnOnce.shown[text] = 1;\n err(text);\n }\n };\n\n var convertJsFunctionToWasm = function convertJsFunctionToWasm(func, sig) {\n var typeSection = [1, 0, 1, 96];\n var sigRet = sig.slice(0, 1);\n var sigParam = sig.slice(1);\n var typeCodes = {\n 'i': 127,\n 'j': 126,\n 'f': 125,\n 'd': 124\n };\n typeSection.push(sigParam.length);\n\n for (var i = 0; i < sigParam.length; ++i) {\n typeSection.push(typeCodes[sigParam[i]]);\n }\n\n if (sigRet == 'v') {\n typeSection.push(0);\n } else {\n typeSection = typeSection.concat([1, typeCodes[sigRet]]);\n }\n\n typeSection[1] = typeSection.length - 2;\n var bytes = new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0].concat(typeSection, [2, 7, 1, 1, 101, 1, 102, 0, 0, 7, 5, 1, 1, 102, 0, 0]));\n var module = new WebAssembly.Module(bytes);\n var instance = new WebAssembly.Instance(module, {\n e: {\n f: func\n }\n });\n var wrappedFunc = instance.exports.f;\n return wrappedFunc;\n };\n\n var addFunctionWasm = function addFunctionWasm(func, sig) {\n var table = wasmTable;\n var ret = table.length;\n\n try {\n table.grow(1);\n } catch (err) {\n if (!err instanceof RangeError) {\n throw err;\n }\n\n throw 'Unable to grow wasm table. Use a higher value for RESERVED_FUNCTION_POINTERS or set ALLOW_TABLE_GROWTH.';\n }\n\n try {\n table.set(ret, func);\n } catch (err) {\n if (!err instanceof TypeError) {\n throw err;\n }\n\n assert(typeof sig !== 'undefined', 'Missing signature argument to addFunction');\n var wrapped = convertJsFunctionToWasm(func, sig);\n table.set(ret, wrapped);\n }\n\n return ret;\n };\n\n var addFunction = function addFunction(func, sig) {\n assert(typeof func !== 'undefined');\n return addFunctionWasm(func, sig);\n };\n\n var setValue = function setValue(ptr, value, type, noSafe) {\n type = type || 'i8';\n if (type.charAt(type.length - 1) === '*') type = 'i32';\n\n switch (type) {\n case 'i1':\n HEAP8[ptr >> 0] = value;\n break;\n\n case 'i8':\n HEAP8[ptr >> 0] = value;\n break;\n\n case 'i16':\n HEAP16[ptr >> 1] = value;\n break;\n\n case 'i32':\n HEAP32[ptr >> 2] = value;\n break;\n\n case 'i64':\n tempI64 = [value >>> 0, (tempDouble = value, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[ptr >> 2] = tempI64[0], HEAP32[ptr + 4 >> 2] = tempI64[1];\n break;\n\n case 'float':\n HEAPF32[ptr >> 2] = value;\n break;\n\n case 'double':\n HEAPF64[ptr >> 3] = value;\n break;\n\n default:\n abort('invalid type for setValue: ' + type);\n }\n };\n\n var assert = function assert(condition, text) {\n if (!condition) {\n abort('Assertion failed: ' + text);\n }\n };\n\n var getCFunc = function getCFunc(ident) {\n var func = Module['_' + ident];\n assert(func, 'Cannot call unknown function ' + ident + ', make sure it is exported');\n return func;\n };\n\n var ccall = function ccall(ident, returnType, argTypes, args, opts) {\n var toC = {\n 'string': function string(str) {\n var ret = 0;\n\n if (str !== null && str !== undefined && str !== 0) {\n var len = (str.length << 2) + 1;\n ret = stackAlloc(len);\n stringToUTF8(str, ret, len);\n }\n\n return ret;\n },\n 'array': function array(arr) {\n var ret = stackAlloc(arr.length);\n writeArrayToMemory(arr, ret);\n return ret;\n }\n };\n\n function convertReturnValue(ret) {\n if (returnType === 'string') return UTF8ToString(ret);\n if (returnType === 'boolean') return Boolean(ret);\n return ret;\n }\n\n var func = getCFunc(ident);\n var cArgs = [];\n var stack = 0;\n assert(returnType !== 'array', 'Return type should not be \"array\".');\n\n if (args) {\n for (var i = 0; i < args.length; i++) {\n var converter = toC[argTypes[i]];\n\n if (converter) {\n if (stack === 0) stack = stackSave();\n cArgs[i] = converter(args[i]);\n } else {\n cArgs[i] = args[i];\n }\n }\n }\n\n var ret = func.apply(null, cArgs);\n ret = convertReturnValue(ret);\n if (stack !== 0) stackRestore(stack);\n return ret;\n };\n\n var cwrap = function cwrap(ident, returnType, argTypes, opts) {\n return function () {\n return ccall(ident, returnType, argTypes, arguments, opts);\n };\n };\n\n var allocate = function allocate(slab, types, allocator, ptr) {\n var zeroinit, size;\n\n if (typeof slab === 'number') {\n zeroinit = true;\n size = slab;\n } else {\n zeroinit = false;\n size = slab.length;\n }\n\n var singleType = typeof types === 'string' ? types : null;\n var ret;\n\n if (allocator == ALLOC_NONE) {\n ret = ptr;\n } else {\n ret = [_malloc, stackAlloc, dynamicAlloc][allocator](Math.max(size, singleType ? 1 : types.length));\n }\n\n if (zeroinit) {\n var stop;\n ptr = ret;\n assert((ret & 3) == 0);\n stop = ret + (size & ~3);\n\n for (; ptr < stop; ptr += 4) {\n HEAP32[ptr >> 2] = 0;\n }\n\n stop = ret + size;\n\n while (ptr < stop) {\n HEAP8[ptr++ >> 0] = 0;\n }\n\n return ret;\n }\n\n if (singleType === 'i8') {\n if (slab.subarray || slab.slice) {\n HEAPU8.set(slab, ret);\n } else {\n HEAPU8.set(new Uint8Array(slab), ret);\n }\n\n return ret;\n }\n\n var i = 0,\n type,\n typeSize,\n previousType;\n\n while (i < size) {\n var curr = slab[i];\n type = singleType || types[i];\n\n if (type === 0) {\n i++;\n continue;\n }\n\n assert(type, 'Must know what type to store in allocate!');\n if (type == 'i64') type = 'i32';\n setValue(ret + i, curr, type);\n\n if (previousType !== type) {\n typeSize = getNativeTypeSize(type);\n previousType = type;\n }\n\n i += typeSize;\n }\n\n return ret;\n };\n\n var UTF8ArrayToString = function UTF8ArrayToString(u8Array, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n\n while (u8Array[endPtr] && !(endPtr >= endIdx)) {\n ++endPtr;\n }\n\n if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) {\n return UTF8Decoder.decode(u8Array.subarray(idx, endPtr));\n } else {\n var str = '';\n\n while (idx < endPtr) {\n var u0 = u8Array[idx++];\n\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n\n var u1 = u8Array[idx++] & 63;\n\n if ((u0 & 224) == 192) {\n str += String.fromCharCode((u0 & 31) << 6 | u1);\n continue;\n }\n\n var u2 = u8Array[idx++] & 63;\n\n if ((u0 & 240) == 224) {\n u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n } else {\n if ((u0 & 248) != 240) warnOnce('Invalid UTF-8 leading byte 0x' + u0.toString(16) + ' encountered when deserializing a UTF-8 string on the asm.js/wasm heap to a JS string!');\n u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u8Array[idx++] & 63;\n }\n\n if (u0 < 65536) {\n str += String.fromCharCode(u0);\n } else {\n var ch = u0 - 65536;\n str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n }\n }\n }\n\n return str;\n };\n\n var UTF8ToString = function UTF8ToString(ptr, maxBytesToRead) {\n return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : '';\n };\n\n var stringToUTF8Array = function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n outU8Array[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n outU8Array[outIdx++] = 192 | u >> 6;\n outU8Array[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n outU8Array[outIdx++] = 224 | u >> 12;\n outU8Array[outIdx++] = 128 | u >> 6 & 63;\n outU8Array[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n if (u >= 2097152) warnOnce('Invalid Unicode code point 0x' + u.toString(16) + ' encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF).');\n outU8Array[outIdx++] = 240 | u >> 18;\n outU8Array[outIdx++] = 128 | u >> 12 & 63;\n outU8Array[outIdx++] = 128 | u >> 6 & 63;\n outU8Array[outIdx++] = 128 | u & 63;\n }\n }\n\n outU8Array[outIdx] = 0;\n return outIdx - startIdx;\n };\n\n var stringToUTF8 = function stringToUTF8(str, outPtr, maxBytesToWrite) {\n assert(typeof maxBytesToWrite == 'number', 'stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!');\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n };\n\n var lengthBytesUTF8 = function lengthBytesUTF8(str) {\n var len = 0;\n\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;\n if (u <= 127) ++len;else if (u <= 2047) len += 2;else if (u <= 65535) len += 3;else len += 4;\n }\n\n return len;\n };\n\n var writeArrayToMemory = function writeArrayToMemory(array, buffer) {\n assert(array.length >= 0, 'writeArrayToMemory array must have a length (should be an array or typed array)');\n HEAP8.set(array, buffer);\n };\n\n var writeAsciiToMemory = function writeAsciiToMemory(str, buffer, dontAddNull) {\n for (var i = 0; i < str.length; ++i) {\n assert(str.charCodeAt(i) === str.charCodeAt(i) & 255);\n HEAP8[buffer++ >> 0] = str.charCodeAt(i);\n }\n\n if (!dontAddNull) HEAP8[buffer >> 0] = 0;\n };\n\n var alignUp = function alignUp(x, multiple) {\n if (x % multiple > 0) {\n x += multiple - x % multiple;\n }\n\n return x;\n };\n\n var updateGlobalBufferAndViews = function updateGlobalBufferAndViews(buf) {\n buffer = buf;\n Module['HEAP8'] = HEAP8 = new Int8Array(buf);\n Module['HEAP16'] = HEAP16 = new Int16Array(buf);\n Module['HEAP32'] = HEAP32 = new Int32Array(buf);\n Module['HEAPU8'] = HEAPU8 = new Uint8Array(buf);\n Module['HEAPU16'] = HEAPU16 = new Uint16Array(buf);\n Module['HEAPU32'] = HEAPU32 = new Uint32Array(buf);\n Module['HEAPF32'] = HEAPF32 = new Float32Array(buf);\n Module['HEAPF64'] = HEAPF64 = new Float64Array(buf);\n };\n\n var writeStackCookie = function writeStackCookie() {\n assert((STACK_MAX & 3) == 0);\n HEAPU32[(STACK_MAX >> 2) + 1] = 34821223;\n HEAPU32[(STACK_MAX >> 2) + 2] = 2310721022;\n HEAP32[0] = 1668509029;\n };\n\n var checkStackCookie = function checkStackCookie() {\n var cookie1 = HEAPU32[(STACK_MAX >> 2) + 1];\n var cookie2 = HEAPU32[(STACK_MAX >> 2) + 2];\n\n if (cookie1 != 34821223 || cookie2 != 2310721022) {\n abort('Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x' + cookie2.toString(16) + ' ' + cookie1.toString(16));\n }\n\n if (HEAP32[0] !== 1668509029) abort('Runtime error: The application has corrupted its heap memory area (address zero)!');\n };\n\n var abortStackOverflow = function abortStackOverflow(allocSize) {\n abort('Stack overflow! Attempted to allocate ' + allocSize + ' bytes on the stack, but stack has only ' + (STACK_MAX - stackSave() + allocSize) + ' bytes available!');\n };\n\n var callRuntimeCallbacks = function callRuntimeCallbacks(callbacks) {\n while (callbacks.length > 0) {\n var callback = callbacks.shift();\n\n if (typeof callback == 'function') {\n callback();\n continue;\n }\n\n var func = callback.func;\n\n if (typeof func === 'number') {\n if (callback.arg === undefined) {\n Module['dynCall_v'](func);\n } else {\n Module['dynCall_vi'](func, callback.arg);\n }\n } else {\n func(callback.arg === undefined ? null : callback.arg);\n }\n }\n };\n\n var preRun = function preRun() {\n if (Module['preRun']) {\n if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']];\n\n while (Module['preRun'].length) {\n addOnPreRun(Module['preRun'].shift());\n }\n }\n\n callRuntimeCallbacks(__ATPRERUN__);\n };\n\n var initRuntime = function initRuntime() {\n checkStackCookie();\n assert(!runtimeInitialized);\n runtimeInitialized = true;\n if (!Module['noFSInit'] && !FS.init.initialized) FS.init();\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n };\n\n var preMain = function preMain() {\n checkStackCookie();\n FS.ignorePermissions = false;\n callRuntimeCallbacks(__ATMAIN__);\n };\n\n var exitRuntime = function exitRuntime() {\n checkStackCookie();\n runtimeExited = true;\n };\n\n var postRun = function postRun() {\n checkStackCookie();\n\n if (Module['postRun']) {\n if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']];\n\n while (Module['postRun'].length) {\n addOnPostRun(Module['postRun'].shift());\n }\n }\n\n callRuntimeCallbacks(__ATPOSTRUN__);\n };\n\n var addOnPreRun = function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n };\n\n var addOnPostRun = function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n };\n\n var getUniqueRunDependency = function getUniqueRunDependency(id) {\n var orig = id;\n\n while (1) {\n if (!runDependencyTracking[id]) return id;\n id = orig + Math.random();\n }\n\n return id;\n };\n\n var addRunDependency = function addRunDependency(id) {\n runDependencies++;\n\n if (Module['monitorRunDependencies']) {\n Module['monitorRunDependencies'](runDependencies);\n }\n\n if (id) {\n assert(!runDependencyTracking[id]);\n runDependencyTracking[id] = 1;\n\n if (runDependencyWatcher === null && typeof setInterval !== 'undefined') {\n runDependencyWatcher = setInterval(function () {\n if (ABORT) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n return;\n }\n\n var shown = false;\n\n for (var dep in runDependencyTracking) {\n if (!shown) {\n shown = true;\n err('still waiting on run dependencies:');\n }\n\n err('dependency: ' + dep);\n }\n\n if (shown) {\n err('(end of list)');\n }\n }, 1e4);\n }\n } else {\n err('warning: run dependency added without ID');\n }\n };\n\n var removeRunDependency = function removeRunDependency(id) {\n runDependencies--;\n\n if (Module['monitorRunDependencies']) {\n Module['monitorRunDependencies'](runDependencies);\n }\n\n if (id) {\n assert(runDependencyTracking[id]);\n delete runDependencyTracking[id];\n } else {\n err('warning: run dependency removed without ID');\n }\n\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n };\n\n var abort = function abort(what) {\n if (Module['onAbort']) {\n Module['onAbort'](what);\n }\n\n what += '';\n out(what);\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n var output = 'abort(' + what + ') at ' + stackTrace();\n what = output;\n throw new WebAssembly.RuntimeError(what);\n };\n\n var isDataURI = function isDataURI(filename) {\n return String.prototype.startsWith ? filename.startsWith(dataURIPrefix) : filename.indexOf(dataURIPrefix) === 0;\n };\n\n var getBinary = function getBinary() {\n try {\n if (wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n\n if (readBinary) {\n return readBinary(wasmBinaryFile);\n } else {\n throw 'both async and sync fetching of the wasm failed';\n }\n } catch (err) {\n abort(err);\n }\n };\n\n var getBinaryPromise = function getBinaryPromise() {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && typeof fetch === 'function') {\n return fetch(wasmBinaryFile, {\n credentials: 'same-origin'\n }).then(function (response) {\n if (!response['ok']) {\n throw 'failed to load wasm binary file at \\'' + wasmBinaryFile + '\\'';\n }\n\n return response['arrayBuffer']();\n }).catch(function () {\n return getBinary();\n });\n }\n\n return new Promise(function (resolve, reject) {\n resolve(getBinary());\n });\n };\n\n var createWasm = function createWasm() {\n var info = {\n 'env': asmLibraryArg,\n 'wasi_unstable': asmLibraryArg\n };\n\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n Module['asm'] = exports;\n removeRunDependency('wasm-instantiate');\n }\n\n addRunDependency('wasm-instantiate');\n var trueModule = Module;\n\n function receiveInstantiatedSource(output) {\n assert(Module === trueModule, 'the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?');\n trueModule = null;\n receiveInstance(output['instance']);\n }\n\n function instantiateArrayBuffer(receiver) {\n return getBinaryPromise().then(function (binary) {\n return WebAssembly.instantiate(binary, info);\n }).then(receiver, function (reason) {\n err('failed to asynchronously prepare wasm: ' + reason);\n abort(reason);\n });\n }\n\n function instantiateAsync() {\n if (!wasmBinary && typeof WebAssembly.instantiateStreaming === 'function' && !isDataURI(wasmBinaryFile) && typeof fetch === 'function') {\n fetch(wasmBinaryFile, {\n credentials: 'same-origin'\n }).then(function (response) {\n var result = WebAssembly.instantiateStreaming(response, info);\n return result.then(receiveInstantiatedSource, function (reason) {\n err('wasm streaming compile failed: ' + reason);\n err('falling back to ArrayBuffer instantiation');\n instantiateArrayBuffer(receiveInstantiatedSource);\n });\n });\n } else {\n return instantiateArrayBuffer(receiveInstantiatedSource);\n }\n }\n\n if (Module['instantiateWasm']) {\n try {\n var exports = Module['instantiateWasm'](info, receiveInstance);\n return exports;\n } catch (e) {\n err('Module.instantiateWasm callback failed with error: ' + e);\n return false;\n }\n }\n\n instantiateAsync();\n return {};\n };\n\n var demangle = function demangle(func) {\n warnOnce('warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling');\n return func;\n };\n\n var demangleAll = function demangleAll(text) {\n var regex = /\\b_Z[\\w\\d_]+/g;\n return text.replace(regex, function (x) {\n var y = demangle(x);\n return x === y ? x : y + ' [' + x + ']';\n });\n };\n\n var jsStackTrace = function jsStackTrace() {\n var err = new Error();\n\n if (!err.stack) {\n try {\n throw new Error(0);\n } catch (e) {\n err = e;\n }\n\n if (!err.stack) {\n return '(no stack trace available)';\n }\n }\n\n return err.stack.toString();\n };\n\n var stackTrace = function stackTrace() {\n var js = jsStackTrace();\n if (Module['extraStackTrace']) js += '\\n' + Module['extraStackTrace']();\n return demangleAll(js);\n };\n\n var ___cxa_allocate_exception = function ___cxa_allocate_exception(size) {\n return _malloc(size);\n };\n\n var ___cxa_throw = function ___cxa_throw(ptr, type, destructor) {\n ___exception_infos[ptr] = {\n ptr: ptr,\n adjusted: [ptr],\n type: type,\n destructor: destructor,\n refcount: 0,\n caught: false,\n rethrown: false\n };\n ___exception_last = ptr;\n\n if (!('uncaught_exception' in __ZSt18uncaught_exceptionv)) {\n __ZSt18uncaught_exceptionv.uncaught_exceptions = 1;\n } else {\n __ZSt18uncaught_exceptionv.uncaught_exceptions++;\n }\n\n throw ptr + ' - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.';\n };\n\n var ___lock = function ___lock() {};\n\n var ___setErrNo = function ___setErrNo(value) {\n if (Module['___errno_location']) HEAP32[Module['___errno_location']() >> 2] = value;else err('failed to set errno from JS');\n return value;\n };\n\n var ___syscall221 = function ___syscall221(which, varargs) {\n SYSCALLS.varargs = varargs;\n\n try {\n var stream = SYSCALLS.getStreamFromFD(),\n cmd = SYSCALLS.get();\n\n switch (cmd) {\n case 0:\n {\n var arg = SYSCALLS.get();\n\n if (arg < 0) {\n return -28;\n }\n\n var newStream;\n newStream = FS.open(stream.path, stream.flags, 0, arg);\n return newStream.fd;\n }\n\n case 1:\n case 2:\n return 0;\n\n case 3:\n return stream.flags;\n\n case 4:\n {\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n }\n\n case 12:\n {\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n }\n\n case 13:\n case 14:\n return 0;\n\n case 16:\n case 8:\n return -28;\n\n case 9:\n ___setErrNo(28);\n\n return -1;\n\n default:\n {\n return -28;\n }\n }\n } catch (e) {\n if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n };\n\n var ___syscall3 = function ___syscall3(which, varargs) {\n SYSCALLS.varargs = varargs;\n\n try {\n var stream = SYSCALLS.getStreamFromFD(),\n buf = SYSCALLS.get(),\n count = SYSCALLS.get();\n return FS.read(stream, HEAP8, buf, count);\n } catch (e) {\n if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n };\n\n var ___syscall5 = function ___syscall5(which, varargs) {\n SYSCALLS.varargs = varargs;\n\n try {\n var pathname = SYSCALLS.getStr(),\n flags = SYSCALLS.get(),\n mode = SYSCALLS.get();\n var stream = FS.open(pathname, flags, mode);\n return stream.fd;\n } catch (e) {\n if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n };\n\n var ___unlock = function ___unlock() {};\n\n var _abort = function _abort() {\n abort();\n };\n\n var _clock = function _clock() {\n if (_clock.start === undefined) _clock.start = Date.now();\n return (Date.now() - _clock.start) * (1e6 / 1e3) | 0;\n };\n\n var _emscripten_get_heap_size = function _emscripten_get_heap_size() {\n return HEAP8.length;\n };\n\n var _emscripten_memcpy_big = function _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.set(HEAPU8.subarray(src, src + num), dest);\n };\n\n var emscripten_realloc_buffer = function emscripten_realloc_buffer(size) {\n try {\n wasmMemory.grow(size - buffer.byteLength + 65535 >> 16);\n updateGlobalBufferAndViews(wasmMemory.buffer);\n return 1;\n } catch (e) {\n console.error('emscripten_realloc_buffer: Attempted to grow heap from ' + buffer.byteLength + ' bytes to ' + size + ' bytes, but got error: ' + e);\n }\n };\n\n var _emscripten_resize_heap = function _emscripten_resize_heap(requestedSize) {\n var oldSize = _emscripten_get_heap_size();\n\n assert(requestedSize > oldSize);\n var PAGE_MULTIPLE = 65536;\n var LIMIT = 2147483648 - PAGE_MULTIPLE;\n\n if (requestedSize > LIMIT) {\n err('Cannot enlarge memory, asked to go up to ' + requestedSize + ' bytes, but the limit is ' + LIMIT + ' bytes!');\n return false;\n }\n\n var MIN_TOTAL_MEMORY = 16777216;\n var newSize = Math.max(oldSize, MIN_TOTAL_MEMORY);\n\n while (newSize < requestedSize) {\n if (newSize <= 536870912) {\n newSize = alignUp(2 * newSize, PAGE_MULTIPLE);\n } else {\n newSize = Math.min(alignUp((3 * newSize + 2147483648) / 4, PAGE_MULTIPLE), LIMIT);\n }\n\n if (newSize === oldSize) {\n warnOnce('Cannot ask for more memory since we reached the practical limit in browsers (which is just below 2GB), so the request would have failed. Requesting only ' + HEAP8.length);\n }\n }\n\n var replacement = emscripten_realloc_buffer(newSize);\n\n if (!replacement) {\n err('Failed to grow the heap from ' + oldSize + ' bytes to ' + newSize + ' bytes, not enough memory!');\n return false;\n }\n\n return true;\n };\n\n var _emscripten_get_environ = function _emscripten_get_environ() {\n if (!_emscripten_get_environ.strings) {\n var env = {\n 'USER': 'web_user',\n 'LOGNAME': 'web_user',\n 'PATH': '/',\n 'PWD': '/',\n 'HOME': '/home/web_user',\n 'LANG': (typeof navigator === 'object' && navigator.languages && navigator.languages[0] || 'C').replace('-', '_') + '.UTF-8',\n '_': thisProgram\n };\n\n for (var x in ENV) {\n env[x] = ENV[x];\n }\n\n var strings = [];\n\n for (var x in env) {\n strings.push(x + '=' + env[x]);\n }\n\n _emscripten_get_environ.strings = strings;\n }\n\n return _emscripten_get_environ.strings;\n };\n\n var _environ_get = function _environ_get(__environ, environ_buf) {\n var strings = _emscripten_get_environ();\n\n var bufSize = 0;\n strings.forEach(function (string, i) {\n var ptr = environ_buf + bufSize;\n HEAP32[__environ + i * 4 >> 2] = ptr;\n writeAsciiToMemory(string, ptr);\n bufSize += string.length + 1;\n });\n return 0;\n };\n\n var _environ_sizes_get = function _environ_sizes_get(penviron_count, penviron_buf_size) {\n var strings = _emscripten_get_environ();\n\n HEAP32[penviron_count >> 2] = strings.length;\n var bufSize = 0;\n strings.forEach(function (string) {\n bufSize += string.length + 1;\n });\n HEAP32[penviron_buf_size >> 2] = bufSize;\n return 0;\n };\n\n var _fd_close = function _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\n return e.errno;\n }\n };\n\n var _fd_fdstat_get = function _fd_fdstat_get(fd, pbuf) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var type = stream.tty ? 2 : FS.isDir(stream.mode) ? 3 : FS.isLink(stream.mode) ? 7 : 4;\n HEAP8[pbuf >> 0] = type;\n return 0;\n } catch (e) {\n if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\n return e.errno;\n }\n };\n\n var _fd_seek = function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var HIGH_OFFSET = 4294967296;\n var offset = offset_high * HIGH_OFFSET + (offset_low >>> 0);\n var DOUBLE_LIMIT = 9007199254740992;\n\n if (offset <= -DOUBLE_LIMIT || offset >= DOUBLE_LIMIT) {\n return -61;\n }\n\n FS.llseek(stream, offset, whence);\n tempI64 = [stream.position >>> 0, (tempDouble = stream.position, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\n return e.errno;\n }\n };\n\n var _fd_write = function _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = SYSCALLS.doWritev(stream, iov, iovcnt);\n HEAP32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\n return e.errno;\n }\n };\n\n var _gettimeofday = function _gettimeofday(ptr) {\n var now = Date.now();\n HEAP32[ptr >> 2] = now / 1e3 | 0;\n HEAP32[ptr + 4 >> 2] = now % 1e3 * 1e3 | 0;\n return 0;\n };\n\n var _round = function _round(d) {\n d = +d;\n return d >= +0 ? +Math_floor(d + +.5) : +Math_ceil(d - +.5);\n };\n\n var _setTempRet0 = function _setTempRet0($i) {\n setTempRet0($i | 0);\n };\n\n var _time = function _time(ptr) {\n var ret = Date.now() / 1e3 | 0;\n\n if (ptr) {\n HEAP32[ptr >> 2] = ret;\n }\n\n return ret;\n };\n\n var intArrayFromString = function intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n };\n\n var ExitStatus = function ExitStatus(status) {\n this.name = 'ExitStatus';\n this.message = 'Program terminated with exit(' + status + ')';\n this.status = status;\n };\n\n var callMain = function callMain(args) {\n assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on Module[\"onRuntimeInitialized\"])');\n assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called');\n var entryFunction = Module['_main'];\n var argc = 0;\n var argv = 0;\n\n try {\n var ret = entryFunction(argc, argv);\n exit(ret, true);\n } catch (e) {\n if (e instanceof ExitStatus) {\n return;\n } else if (e == 'SimulateInfiniteLoop') {\n noExitRuntime = true;\n return;\n } else {\n var toLog = e;\n\n if (e && typeof e === 'object' && e.stack) {\n toLog = [e, e.stack];\n }\n\n err('exception thrown: ' + toLog);\n quit_(1, e);\n }\n } finally {\n calledMain = true;\n }\n };\n\n var run = function run(args) {\n args = args || arguments_;\n\n if (runDependencies > 0) {\n return;\n }\n\n writeStackCookie();\n preRun();\n if (runDependencies > 0) return;\n\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized']();\n if (shouldRunNow) callMain(args);\n postRun();\n }\n\n if (Module['setStatus']) {\n Module['setStatus']('Running...');\n setTimeout(function () {\n setTimeout(function () {\n Module['setStatus']('');\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n\n checkStackCookie();\n };\n\n var checkUnflushedContent = function checkUnflushedContent() {\n var print = out;\n var printErr = err;\n var has = false;\n\n out = err = function err(x) {\n has = true;\n };\n\n try {\n var flush = Module['_fflush'];\n if (flush) flush(0);\n ['stdout', 'stderr'].forEach(function (name) {\n var info = FS.analyzePath('/dev/' + name);\n if (!info) return;\n var stream = info.object;\n var rdev = stream.rdev;\n var tty = TTY.ttys[rdev];\n\n if (tty && tty.output && tty.output.length) {\n has = true;\n }\n });\n } catch (e) {}\n\n out = print;\n err = printErr;\n\n if (has) {\n warnOnce('stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.');\n }\n };\n\n var exit = function exit(status, implicit) {\n checkUnflushedContent();\n\n if (implicit && noExitRuntime && status === 0) {\n return;\n }\n\n if (noExitRuntime) {\n if (!implicit) {\n err('program exited (with status: ' + status + '), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)');\n }\n } else {\n ABORT = true;\n EXITSTATUS = status;\n exitRuntime();\n if (Module['onExit']) Module['onExit'](status);\n }\n\n quit_(status, new ExitStatus(status));\n };\n\n var moduleOverrides = {};\n var key;\n\n for (key in Module) {\n if (Module.hasOwnProperty(key)) {\n moduleOverrides[key] = Module[key];\n }\n }\n\n var arguments_ = [];\n var thisProgram = './this.program';\n\n var quit_ = function quit_(status, toThrow) {\n throw toThrow;\n };\n\n var ENVIRONMENT_IS_WEB = false;\n var ENVIRONMENT_IS_WORKER = false;\n var ENVIRONMENT_IS_NODE = false;\n var ENVIRONMENT_HAS_NODE = false;\n var ENVIRONMENT_IS_SHELL = false;\n ENVIRONMENT_IS_WEB = typeof window === 'object';\n ENVIRONMENT_IS_WORKER = typeof importScripts === 'function';\n ENVIRONMENT_HAS_NODE = typeof process === 'object' && typeof process.versions === 'object' && typeof process.versions.node === 'string';\n ENVIRONMENT_IS_NODE = ENVIRONMENT_HAS_NODE && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER;\n ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;\n\n if (Module['ENVIRONMENT']) {\n throw new Error('Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)');\n }\n\n var scriptDirectory = '';\n var read_, readAsync, readBinary, setWindowTitle;\n\n if (ENVIRONMENT_IS_NODE) {\n scriptDirectory = __dirname + '/';\n var nodeFS;\n var nodePath;\n\n read_ = function shell_read(filename, binary) {\n var ret;\n if (!nodeFS) nodeFS = __webpack_require__(/*! fs */ \"./node_modules/node-libs-browser/mock/empty.js\");\n if (!nodePath) nodePath = __webpack_require__(/*! path */ \"./node_modules/path-browserify/index.js\");\n filename = nodePath['normalize'](filename);\n ret = nodeFS['readFileSync'](filename);\n return binary ? ret : ret.toString();\n };\n\n readBinary = function readBinary(filename) {\n var ret = read_(filename, true);\n\n if (!ret.buffer) {\n ret = new Uint8Array(ret);\n }\n\n assert(ret.buffer);\n return ret;\n };\n\n if (process['argv'].length > 1) {\n thisProgram = process['argv'][1].replace(/\\\\/g, '/');\n }\n\n arguments_ = process['argv'].slice(2);\n\n if (true) {\n module['exports'] = Module;\n }\n\n process['on']('uncaughtException', function (ex) {\n if (!(ex instanceof ExitStatus)) {\n throw ex;\n }\n });\n process['on']('unhandledRejection', abort);\n\n quit_ = function quit_(status) {\n process['exit'](status);\n };\n\n Module['inspect'] = function () {\n return '[Emscripten Module object]';\n };\n } else if (ENVIRONMENT_IS_SHELL) {\n if (typeof read != 'undefined') {\n read_ = function shell_read(f) {\n return read(f);\n };\n }\n\n readBinary = function readBinary(f) {\n var data;\n\n if (typeof readbuffer === 'function') {\n return new Uint8Array(readbuffer(f));\n }\n\n data = read(f, 'binary');\n assert(typeof data === 'object');\n return data;\n };\n\n if (typeof scriptArgs != 'undefined') {\n arguments_ = scriptArgs;\n } else if (typeof arguments != 'undefined') {\n arguments_ = arguments;\n }\n\n if (typeof quit === 'function') {\n quit_ = function quit_(status) {\n quit(status);\n };\n }\n\n if (typeof print !== 'undefined') {\n if (typeof console === 'undefined') console = {};\n console.log = print;\n console.warn = console.error = typeof printErr !== 'undefined' ? printErr : print;\n }\n } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href;\n } else if (document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n\n if (scriptDirectory.indexOf('blob:') !== 0) {\n scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf('/') + 1);\n } else {\n scriptDirectory = '';\n }\n\n read_ = function shell_read(url) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = function readBinary(url) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, false);\n xhr.responseType = 'arraybuffer';\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n }\n\n readAsync = function readAsync(url, onload, onerror) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.responseType = 'arraybuffer';\n\n xhr.onload = function xhr_onload() {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n\n onerror();\n };\n\n xhr.onerror = onerror;\n xhr.send(null);\n };\n\n setWindowTitle = function setWindowTitle(title) {\n document.title = title;\n };\n } else {\n throw new Error('environment detection error');\n }\n\n var out = Module['print'] || console.log.bind(console);\n var err = Module['printErr'] || console.warn.bind(console);\n\n for (key in moduleOverrides) {\n if (moduleOverrides.hasOwnProperty(key)) {\n Module[key] = moduleOverrides[key];\n }\n }\n\n moduleOverrides = null;\n if (Module['arguments']) arguments_ = Module['arguments'];\n if (!Object.getOwnPropertyDescriptor(Module, 'arguments')) Object.defineProperty(Module, 'arguments', {\n configurable: true,\n get: function get() {\n abort('Module.arguments has been replaced with plain arguments_');\n }\n });\n if (Module['thisProgram']) thisProgram = Module['thisProgram'];\n if (!Object.getOwnPropertyDescriptor(Module, 'thisProgram')) Object.defineProperty(Module, 'thisProgram', {\n configurable: true,\n get: function get() {\n abort('Module.thisProgram has been replaced with plain thisProgram');\n }\n });\n if (Module['quit']) quit_ = Module['quit'];\n if (!Object.getOwnPropertyDescriptor(Module, 'quit')) Object.defineProperty(Module, 'quit', {\n configurable: true,\n get: function get() {\n abort('Module.quit has been replaced with plain quit_');\n }\n });\n assert(typeof Module['memoryInitializerPrefixURL'] === 'undefined', 'Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead');\n assert(typeof Module['pthreadMainPrefixURL'] === 'undefined', 'Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead');\n assert(typeof Module['cdInitializerPrefixURL'] === 'undefined', 'Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead');\n assert(typeof Module['filePackagePrefixURL'] === 'undefined', 'Module.filePackagePrefixURL option was removed, use Module.locateFile instead');\n assert(typeof Module['read'] === 'undefined', 'Module.read option was removed (modify read_ in JS)');\n assert(typeof Module['readAsync'] === 'undefined', 'Module.readAsync option was removed (modify readAsync in JS)');\n assert(typeof Module['readBinary'] === 'undefined', 'Module.readBinary option was removed (modify readBinary in JS)');\n assert(typeof Module['setWindowTitle'] === 'undefined', 'Module.setWindowTitle option was removed (modify setWindowTitle in JS)');\n if (!Object.getOwnPropertyDescriptor(Module, 'read')) Object.defineProperty(Module, 'read', {\n configurable: true,\n get: function get() {\n abort('Module.read has been replaced with plain read_');\n }\n });\n if (!Object.getOwnPropertyDescriptor(Module, 'readAsync')) Object.defineProperty(Module, 'readAsync', {\n configurable: true,\n get: function get() {\n abort('Module.readAsync has been replaced with plain readAsync');\n }\n });\n if (!Object.getOwnPropertyDescriptor(Module, 'readBinary')) Object.defineProperty(Module, 'readBinary', {\n configurable: true,\n get: function get() {\n abort('Module.readBinary has been replaced with plain readBinary');\n }\n });\n\n stackSave = stackRestore = stackAlloc = function stackAlloc() {\n abort('cannot use the stack before compiled code is ready to run, and has provided stack access');\n };\n\n var tempRet0 = 0;\n\n var setTempRet0 = function setTempRet0(value) {\n tempRet0 = value;\n };\n\n var wasmBinary;\n if (Module['wasmBinary']) wasmBinary = Module['wasmBinary'];\n if (!Object.getOwnPropertyDescriptor(Module, 'wasmBinary')) Object.defineProperty(Module, 'wasmBinary', {\n configurable: true,\n get: function get() {\n abort('Module.wasmBinary has been replaced with plain wasmBinary');\n }\n });\n var noExitRuntime;\n if (Module['noExitRuntime']) noExitRuntime = Module['noExitRuntime'];\n if (!Object.getOwnPropertyDescriptor(Module, 'noExitRuntime')) Object.defineProperty(Module, 'noExitRuntime', {\n configurable: true,\n get: function get() {\n abort('Module.noExitRuntime has been replaced with plain noExitRuntime');\n }\n });\n\n if (typeof WebAssembly !== 'object') {\n abort('No WebAssembly support found. Build with -s WASM=0 to target JavaScript instead.');\n }\n\n var wasmMemory;\n var wasmTable = new WebAssembly.Table({\n 'initial': 2542,\n 'maximum': 2542 + 10,\n 'element': 'anyfunc'\n });\n var ABORT = false;\n var EXITSTATUS = 0;\n var ALLOC_NONE = 3;\n var UTF8Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined;\n var UTF16Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-16le') : undefined;\n var WASM_PAGE_SIZE = 65536;\n var buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n var STACK_BASE = 6584080,\n STACK_MAX = 1341200,\n DYNAMIC_BASE = 6584080,\n DYNAMICTOP_PTR = 1341040;\n assert(STACK_BASE % 16 === 0, 'stack must start aligned');\n assert(DYNAMIC_BASE % 16 === 0, 'heap must start aligned');\n var TOTAL_STACK = 5242880;\n if (Module['TOTAL_STACK']) assert(TOTAL_STACK === Module['TOTAL_STACK'], 'the stack size can no longer be determined at runtime');\n var INITIAL_TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 67108864;\n if (!Object.getOwnPropertyDescriptor(Module, 'TOTAL_MEMORY')) Object.defineProperty(Module, 'TOTAL_MEMORY', {\n configurable: true,\n get: function get() {\n abort('Module.TOTAL_MEMORY has been replaced with plain INITIAL_TOTAL_MEMORY');\n }\n });\n assert(INITIAL_TOTAL_MEMORY >= TOTAL_STACK, 'TOTAL_MEMORY should be larger than TOTAL_STACK, was ' + INITIAL_TOTAL_MEMORY + '! (TOTAL_STACK=' + TOTAL_STACK + ')');\n assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && Int32Array.prototype.subarray !== undefined && Int32Array.prototype.set !== undefined, 'JS engine does not provide full typed array support');\n\n if (Module['wasmMemory']) {\n wasmMemory = Module['wasmMemory'];\n } else {\n wasmMemory = new WebAssembly.Memory({\n 'initial': INITIAL_TOTAL_MEMORY / WASM_PAGE_SIZE\n });\n }\n\n if (wasmMemory) {\n buffer = wasmMemory.buffer;\n }\n\n INITIAL_TOTAL_MEMORY = buffer.byteLength;\n assert(INITIAL_TOTAL_MEMORY % WASM_PAGE_SIZE === 0);\n updateGlobalBufferAndViews(buffer);\n HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE;\n\n (function () {\n var h16 = new Int16Array(1);\n var h8 = new Int8Array(h16.buffer);\n h16[0] = 25459;\n if (h8[0] !== 115 || h8[1] !== 99) throw 'Runtime error: expected the system to be little-endian!';\n })();\n\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATMAIN__ = [];\n var __ATPOSTRUN__ = [];\n var runtimeInitialized = false;\n var runtimeExited = false;\n assert(Math.imul, 'This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill');\n assert(Math.fround, 'This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill');\n assert(Math.clz32, 'This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill');\n assert(Math.trunc, 'This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill');\n var Math_abs = Math.abs;\n var Math_ceil = Math.ceil;\n var Math_floor = Math.floor;\n var Math_min = Math.min;\n var runDependencies = 0;\n var runDependencyWatcher = null;\n var dependenciesFulfilled = null;\n var runDependencyTracking = {};\n Module['preloadedImages'] = {};\n Module['preloadedAudios'] = {};\n var dataURIPrefix = 'data:application/octet-stream;base64,';\n var wasmBinaryFile = fullURL + \"libVSS.wasm\"; // var wasmBinaryFile = fullURL + 'SkeyeWebPlayerSourceCode/demo/libVSS.wasm';\n\n if (!isDataURI(wasmBinaryFile)) {\n wasmBinaryFile = locateFile(wasmBinaryFile);\n }\n\n var tempDouble;\n var tempI64;\n\n __ATINIT__.push({\n func: function func() {\n ___wasm_call_ctors();\n }\n });\n\n var ___exception_infos = {};\n var ___exception_last = 0;\n var PATH = {\n splitPath: function splitPath(filename) {\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: function normalizeArray(parts, allowAboveRoot) {\n var up = 0;\n\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n if (allowAboveRoot) {\n for (; up; up--) {\n parts.unshift('..');\n }\n }\n\n return parts;\n },\n normalize: function normalize(path) {\n var isAbsolute = path.charAt(0) === '/',\n trailingSlash = path.substr(-1) === '/';\n path = PATH.normalizeArray(path.split('/').filter(function (p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n },\n dirname: function dirname(path) {\n var result = PATH.splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n return '.';\n }\n\n if (dir) {\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n },\n basename: function basename(path) {\n if (path === '/') return '/';\n var lastSlash = path.lastIndexOf('/');\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n extname: function extname(path) {\n return PATH.splitPath(path)[3];\n },\n join: function join() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return PATH.normalize(paths.join('/'));\n },\n join2: function join2(l, r) {\n return PATH.normalize(l + '/' + r);\n }\n };\n var PATH_FS = {\n resolve: function resolve() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : FS.cwd();\n\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n return '';\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function (p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n return (resolvedAbsolute ? '/' : '') + resolvedPath || '.';\n },\n relative: function relative(from, to) {\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join('/');\n }\n };\n var TTY = {\n ttys: [],\n init: function init() {},\n shutdown: function shutdown() {},\n register: function register(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function open(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n\n if (!tty) {\n throw new FS.ErrnoError(43);\n }\n\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function close(stream) {\n stream.tty.ops.flush(stream.tty);\n },\n flush: function flush(stream) {\n stream.tty.ops.flush(stream.tty);\n },\n read: function read(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) {\n throw new FS.ErrnoError(60);\n }\n\n var bytesRead = 0;\n\n for (var i = 0; i < length; i++) {\n var result;\n\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n\n return bytesRead;\n },\n write: function write(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) {\n throw new FS.ErrnoError(60);\n }\n\n try {\n for (var i = 0; i < length; i++) {\n stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n }\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n\n if (length) {\n stream.node.timestamp = Date.now();\n }\n\n return i;\n }\n },\n default_tty_ops: {\n get_char: function get_char(tty) {\n if (!tty.input.length) {\n var result = null;\n\n if (ENVIRONMENT_IS_NODE) {\n var BUFSIZE = 256;\n var buf = Buffer.alloc ? Buffer.alloc(BUFSIZE) : new Buffer(BUFSIZE);\n var bytesRead = 0;\n\n try {\n bytesRead = nodeFS.readSync(process.stdin.fd, buf, 0, BUFSIZE, null);\n } catch (e) {\n if (e.toString().indexOf('EOF') != -1) bytesRead = 0;else throw e;\n }\n\n if (bytesRead > 0) {\n result = buf.slice(0, bytesRead).toString('utf-8');\n } else {\n result = null;\n }\n } else if (typeof window != 'undefined' && typeof window.prompt == 'function') {\n result = window.prompt('Input: ');\n\n if (result !== null) {\n result += '\\n';\n }\n } else if (typeof readline == 'function') {\n result = readline();\n\n if (result !== null) {\n result += '\\n';\n }\n }\n\n if (!result) {\n return null;\n }\n\n tty.input = intArrayFromString(result, true);\n }\n\n return tty.input.shift();\n },\n put_char: function put_char(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n flush: function flush(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function put_char(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n flush: function flush(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n };\n var MEMFS = {\n ops_table: null,\n mount: function mount(_mount) {\n return MEMFS.createNode(null, '/', 16384 | 511, 0);\n },\n createNode: function createNode(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\n throw new FS.ErrnoError(63);\n }\n\n if (!MEMFS.ops_table) {\n MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n }\n\n var node = FS.createNode(parent, name, mode, dev);\n\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n\n node.timestamp = Date.now();\n\n if (parent) {\n parent.contents[name] = node;\n }\n\n return node;\n },\n getFileDataAsRegularArray: function getFileDataAsRegularArray(node) {\n if (node.contents && node.contents.subarray) {\n var arr = [];\n\n for (var i = 0; i < node.usedBytes; ++i) {\n arr.push(node.contents[i]);\n }\n\n return arr;\n }\n\n return node.contents;\n },\n getFileDataAsTypedArray: function getFileDataAsTypedArray(node) {\n if (!node.contents) return new Uint8Array();\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function expandFileStorage(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) | 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n return;\n },\n resizeFileStorage: function resizeFileStorage(node, newSize) {\n if (node.usedBytes == newSize) return;\n\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n return;\n }\n\n if (!node.contents || node.contents.subarray) {\n var oldContents = node.contents;\n node.contents = new Uint8Array(new ArrayBuffer(newSize));\n\n if (oldContents) {\n node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n }\n\n node.usedBytes = newSize;\n return;\n }\n\n if (!node.contents) node.contents = [];\n if (node.contents.length > newSize) node.contents.length = newSize;else while (node.contents.length < newSize) {\n node.contents.push(0);\n }\n node.usedBytes = newSize;\n },\n node_ops: {\n getattr: function getattr(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n\n if (FS.isDir(node.mode)) {\n attr.size = 4096;\n } else if (FS.isFile(node.mode)) {\n attr.size = node.usedBytes;\n } else if (FS.isLink(node.mode)) {\n attr.size = node.link.length;\n } else {\n attr.size = 0;\n }\n\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function setattr(node, attr) {\n if (attr.mode !== undefined) {\n node.mode = attr.mode;\n }\n\n if (attr.timestamp !== undefined) {\n node.timestamp = attr.timestamp;\n }\n\n if (attr.size !== undefined) {\n MEMFS.resizeFileStorage(node, attr.size);\n }\n },\n lookup: function lookup(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function mknod(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function rename(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n\n if (new_node) {\n for (var i in new_node.contents) {\n throw new FS.ErrnoError(55);\n }\n }\n }\n\n delete old_node.parent.contents[old_node.name];\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n old_node.parent = new_dir;\n },\n unlink: function unlink(parent, name) {\n delete parent.contents[name];\n },\n rmdir: function rmdir(parent, name) {\n var node = FS.lookupNode(parent, name);\n\n for (var i in node.contents) {\n throw new FS.ErrnoError(55);\n }\n\n delete parent.contents[name];\n },\n readdir: function readdir(node) {\n var entries = ['.', '..'];\n\n for (var key in node.contents) {\n if (!node.contents.hasOwnProperty(key)) {\n continue;\n }\n\n entries.push(key);\n }\n\n return entries;\n },\n symlink: function symlink(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function readlink(node) {\n if (!FS.isLink(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n\n return node.link;\n }\n },\n stream_ops: {\n read: function read(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n assert(size >= 0);\n\n if (size > 8 && contents.subarray) {\n buffer.set(contents.subarray(position, position + size), offset);\n } else {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents[position + i];\n }\n }\n\n return size;\n },\n write: function write(stream, buffer, offset, length, position, canOwn) {\n if (canOwn) {\n warnOnce('file packager has copied file data into memory, but in memory growth we are forced to copy it again (see --no-heap-copy)');\n }\n\n canOwn = false;\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n assert(position === 0, 'canOwn must imply no weird position inside the file');\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = new Uint8Array(buffer.subarray(offset, offset + length));\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position);else {\n for (var i = 0; i < length; i++) {\n node.contents[position + i] = buffer[offset + i];\n }\n }\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function llseek(stream, offset, whence) {\n var position = offset;\n\n if (whence === 1) {\n position += stream.position;\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n position += stream.node.usedBytes;\n }\n }\n\n if (position < 0) {\n throw new FS.ErrnoError(28);\n }\n\n return position;\n },\n allocate: function allocate(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function mmap(stream, buffer, offset, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n\n if (!(flags & 2) && (contents.buffer === buffer || contents.buffer === buffer.buffer)) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < stream.node.usedBytes) {\n if (contents.subarray) {\n contents = contents.subarray(position, position + length);\n } else {\n contents = Array.prototype.slice.call(contents, position, position + length);\n }\n }\n\n allocated = true;\n var fromHeap = buffer.buffer == HEAP8.buffer;\n ptr = _malloc(length);\n\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n\n (fromHeap ? HEAP8 : buffer).set(contents, ptr);\n }\n\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function msync(stream, buffer, offset, length, mmapFlags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n\n if (mmapFlags & 2) {\n return 0;\n }\n\n var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n };\n var ERRNO_MESSAGES = {\n 0: 'Success',\n 1: 'Arg list too long',\n 2: 'Permission denied',\n 3: 'Address already in use',\n 4: 'Address not available',\n 5: 'Address family not supported by protocol family',\n 6: 'No more processes',\n 7: 'Socket already connected',\n 8: 'Bad file number',\n 9: 'Trying to read unreadable message',\n 10: 'Mount device busy',\n 11: 'Operation canceled',\n 12: 'No children',\n 13: 'Connection aborted',\n 14: 'Connection refused',\n 15: 'Connection reset by peer',\n 16: 'File locking deadlock error',\n 17: 'Destination address required',\n 18: 'Math arg out of domain of func',\n 19: 'Quota exceeded',\n 20: 'File exists',\n 21: 'Bad address',\n 22: 'File too large',\n 23: 'Host is unreachable',\n 24: 'Identifier removed',\n 25: 'Illegal byte sequence',\n 26: 'Connection already in progress',\n 27: 'Interrupted system call',\n 28: 'Invalid argument',\n 29: 'I/O error',\n 30: 'Socket is already connected',\n 31: 'Is a directory',\n 32: 'Too many symbolic links',\n 33: 'Too many open files',\n 34: 'Too many links',\n 35: 'Message too long',\n 36: 'Multihop attempted',\n 37: 'File or path name too long',\n 38: 'Network interface is not configured',\n 39: 'Connection reset by network',\n 40: 'Network is unreachable',\n 41: 'Too many open files in system',\n 42: 'No buffer space available',\n 43: 'No such device',\n 44: 'No such file or directory',\n 45: 'Exec format error',\n 46: 'No record locks available',\n 47: 'The link has been severed',\n 48: 'Not enough core',\n 49: 'No message of desired type',\n 50: 'Protocol not available',\n 51: 'No space left on device',\n 52: 'Function not implemented',\n 53: 'Socket is not connected',\n 54: 'Not a directory',\n 55: 'Directory not empty',\n 56: 'State not recoverable',\n 57: 'Socket operation on non-socket',\n 59: 'Not a typewriter',\n 60: 'No such device or address',\n 61: 'Value too large for defined data type',\n 62: 'Previous owner died',\n 63: 'Not super-user',\n 64: 'Broken pipe',\n 65: 'Protocol error',\n 66: 'Unknown protocol',\n 67: 'Protocol wrong type for socket',\n 68: 'Math result not representable',\n 69: 'Read only file system',\n 70: 'Illegal seek',\n 71: 'No such process',\n 72: 'Stale file handle',\n 73: 'Connection timed out',\n 74: 'Text file busy',\n 75: 'Cross-device link',\n 100: 'Device not a stream',\n 101: 'Bad font file fmt',\n 102: 'Invalid slot',\n 103: 'Invalid request code',\n 104: 'No anode',\n 105: 'Block device required',\n 106: 'Channel number out of range',\n 107: 'Level 3 halted',\n 108: 'Level 3 reset',\n 109: 'Link number out of range',\n 110: 'Protocol driver not attached',\n 111: 'No CSI structure available',\n 112: 'Level 2 halted',\n 113: 'Invalid exchange',\n 114: 'Invalid request descriptor',\n 115: 'Exchange full',\n 116: 'No data (for no delay io)',\n 117: 'Timer expired',\n 118: 'Out of streams resources',\n 119: 'Machine is not on the network',\n 120: 'Package not installed',\n 121: 'The object is remote',\n 122: 'Advertise error',\n 123: 'Srmount error',\n 124: 'Communication error on send',\n 125: 'Cross mount point (not really error)',\n 126: 'Given log. name not unique',\n 127: 'f.d. invalid for this operation',\n 128: 'Remote address changed',\n 129: 'Can access a needed shared lib',\n 130: 'Accessing a corrupted shared lib',\n 131: '.lib section in a.out corrupted',\n 132: 'Attempting to link in too many libs',\n 133: 'Attempting to exec a shared library',\n 135: 'Streams pipe error',\n 136: 'Too many users',\n 137: 'Socket type not supported',\n 138: 'Not supported',\n 139: 'Protocol family not supported',\n 140: 'Can\\'t send after socket shutdown',\n 141: 'Too many references',\n 142: 'Host is down',\n 148: 'No medium (in tape drive)',\n 156: 'Level 2 not synchronized'\n };\n var ERRNO_CODES = {\n EPERM: 63,\n ENOENT: 44,\n ESRCH: 71,\n EINTR: 27,\n EIO: 29,\n ENXIO: 60,\n E2BIG: 1,\n ENOEXEC: 45,\n EBADF: 8,\n ECHILD: 12,\n EAGAIN: 6,\n EWOULDBLOCK: 6,\n ENOMEM: 48,\n EACCES: 2,\n EFAULT: 21,\n ENOTBLK: 105,\n EBUSY: 10,\n EEXIST: 20,\n EXDEV: 75,\n ENODEV: 43,\n ENOTDIR: 54,\n EISDIR: 31,\n EINVAL: 28,\n ENFILE: 41,\n EMFILE: 33,\n ENOTTY: 59,\n ETXTBSY: 74,\n EFBIG: 22,\n ENOSPC: 51,\n ESPIPE: 70,\n EROFS: 69,\n EMLINK: 34,\n EPIPE: 64,\n EDOM: 18,\n ERANGE: 68,\n ENOMSG: 49,\n EIDRM: 24,\n ECHRNG: 106,\n EL2NSYNC: 156,\n EL3HLT: 107,\n EL3RST: 108,\n ELNRNG: 109,\n EUNATCH: 110,\n ENOCSI: 111,\n EL2HLT: 112,\n EDEADLK: 16,\n ENOLCK: 46,\n EBADE: 113,\n EBADR: 114,\n EXFULL: 115,\n ENOANO: 104,\n EBADRQC: 103,\n EBADSLT: 102,\n EDEADLOCK: 16,\n EBFONT: 101,\n ENOSTR: 100,\n ENODATA: 116,\n ETIME: 117,\n ENOSR: 118,\n ENONET: 119,\n ENOPKG: 120,\n EREMOTE: 121,\n ENOLINK: 47,\n EADV: 122,\n ESRMNT: 123,\n ECOMM: 124,\n EPROTO: 65,\n EMULTIHOP: 36,\n EDOTDOT: 125,\n EBADMSG: 9,\n ENOTUNIQ: 126,\n EBADFD: 127,\n EREMCHG: 128,\n ELIBACC: 129,\n ELIBBAD: 130,\n ELIBSCN: 131,\n ELIBMAX: 132,\n ELIBEXEC: 133,\n ENOSYS: 52,\n ENOTEMPTY: 55,\n ENAMETOOLONG: 37,\n ELOOP: 32,\n EOPNOTSUPP: 138,\n EPFNOSUPPORT: 139,\n ECONNRESET: 15,\n ENOBUFS: 42,\n EAFNOSUPPORT: 5,\n EPROTOTYPE: 67,\n ENOTSOCK: 57,\n ENOPROTOOPT: 50,\n ESHUTDOWN: 140,\n ECONNREFUSED: 14,\n EADDRINUSE: 3,\n ECONNABORTED: 13,\n ENETUNREACH: 40,\n ENETDOWN: 38,\n ETIMEDOUT: 73,\n EHOSTDOWN: 142,\n EHOSTUNREACH: 23,\n EINPROGRESS: 26,\n EALREADY: 7,\n EDESTADDRREQ: 17,\n EMSGSIZE: 35,\n EPROTONOSUPPORT: 66,\n ESOCKTNOSUPPORT: 137,\n EADDRNOTAVAIL: 4,\n ENETRESET: 39,\n EISCONN: 30,\n ENOTCONN: 53,\n ETOOMANYREFS: 141,\n EUSERS: 136,\n EDQUOT: 19,\n ESTALE: 72,\n ENOTSUP: 138,\n ENOMEDIUM: 148,\n EILSEQ: 25,\n EOVERFLOW: 61,\n ECANCELED: 11,\n ENOTRECOVERABLE: 56,\n EOWNERDEAD: 62,\n ESTRPIPE: 135\n };\n var FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: '/',\n initialized: false,\n ignorePermissions: true,\n trackingDelegate: {},\n tracking: {\n openFlags: {\n READ: 1,\n WRITE: 2\n }\n },\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n handleFSError: function handleFSError(e) {\n if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace();\n return ___setErrNo(e.errno);\n },\n lookupPath: function lookupPath(path, opts) {\n path = PATH_FS.resolve(FS.cwd(), path);\n opts = opts || {};\n if (!path) return {\n path: '',\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n\n for (var key in defaults) {\n if (opts[key] === undefined) {\n opts[key] = defaults[key];\n }\n }\n\n if (opts.recurse_count > 8) {\n throw new FS.ErrnoError(32);\n }\n\n var parts = PATH.normalizeArray(path.split('/').filter(function (p) {\n return !!p;\n }), false);\n var current = FS.root;\n var current_path = '/';\n\n for (var i = 0; i < parts.length; i++) {\n var islast = i === parts.length - 1;\n\n if (islast && opts.parent) {\n break;\n }\n\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) {\n current = current.mounted.root;\n }\n }\n\n if (!islast || opts.follow) {\n var count = 0;\n\n while (FS.isLink(current.mode)) {\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count\n });\n current = lookup.node;\n\n if (count++ > 40) {\n throw new FS.ErrnoError(32);\n }\n }\n }\n }\n\n return {\n path: current_path,\n node: current\n };\n },\n getPath: function getPath(node) {\n var path;\n\n while (true) {\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== '/' ? mount + '/' + path : mount + path;\n }\n\n path = path ? node.name + '/' + path : node.name;\n node = node.parent;\n }\n },\n hashName: function hashName(parentid, name) {\n var hash = 0;\n\n for (var i = 0; i < name.length; i++) {\n hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n }\n\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: function hashAddNode(node) {\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: function hashRemoveNode(node) {\n var hash = FS.hashName(node.parent.id, node.name);\n\n if (FS.nameTable[hash] === node) {\n FS.nameTable[hash] = node.name_next;\n } else {\n var current = FS.nameTable[hash];\n\n while (current) {\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n\n current = current.name_next;\n }\n }\n },\n lookupNode: function lookupNode(parent, name) {\n var err = FS.mayLookup(parent);\n\n if (err) {\n throw new FS.ErrnoError(err, parent);\n }\n\n var hash = FS.hashName(parent.id, name);\n\n for (var node = FS.nameTable[hash]; node; node = node.name_next) {\n var nodeName = node.name;\n\n if (node.parent.id === parent.id && nodeName === name) {\n return node;\n }\n }\n\n return FS.lookup(parent, name);\n },\n createNode: function createNode(parent, name, mode, rdev) {\n if (!FS.FSNode) {\n FS.FSNode = function (parent, name, mode, rdev) {\n if (!parent) {\n parent = this;\n }\n\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n };\n\n FS.FSNode.prototype = {};\n var readMode = 292 | 73;\n var writeMode = 146;\n Object.defineProperties(FS.FSNode.prototype, {\n read: {\n get: function get() {\n return (this.mode & readMode) === readMode;\n },\n set: function set(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function get() {\n return (this.mode & writeMode) === writeMode;\n },\n set: function set(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function get() {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function get() {\n return FS.isChrdev(this.mode);\n }\n }\n });\n }\n\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: function destroyNode(node) {\n FS.hashRemoveNode(node);\n },\n isRoot: function isRoot(node) {\n return node === node.parent;\n },\n isMountpoint: function isMountpoint(node) {\n return !!node.mounted;\n },\n isFile: function isFile(mode) {\n return (mode & 61440) === 32768;\n },\n isDir: function isDir(mode) {\n return (mode & 61440) === 16384;\n },\n isLink: function isLink(mode) {\n return (mode & 61440) === 40960;\n },\n isChrdev: function isChrdev(mode) {\n return (mode & 61440) === 8192;\n },\n isBlkdev: function isBlkdev(mode) {\n return (mode & 61440) === 24576;\n },\n isFIFO: function isFIFO(mode) {\n return (mode & 61440) === 4096;\n },\n isSocket: function isSocket(mode) {\n return (mode & 49152) === 49152;\n },\n flagModes: {\n 'r': 0,\n 'rs': 1052672,\n 'r+': 2,\n 'w': 577,\n 'wx': 705,\n 'xw': 705,\n 'w+': 578,\n 'wx+': 706,\n 'xw+': 706,\n 'a': 1089,\n 'ax': 1217,\n 'xa': 1217,\n 'a+': 1090,\n 'ax+': 1218,\n 'xa+': 1218\n },\n modeStringToFlags: function modeStringToFlags(str) {\n var flags = FS.flagModes[str];\n\n if (typeof flags === 'undefined') {\n throw new Error('Unknown file open mode: ' + str);\n }\n\n return flags;\n },\n flagsToPermissionString: function flagsToPermissionString(flag) {\n var perms = ['r', 'w', 'rw'][flag & 3];\n\n if (flag & 512) {\n perms += 'w';\n }\n\n return perms;\n },\n nodePermissions: function nodePermissions(node, perms) {\n if (FS.ignorePermissions) {\n return 0;\n }\n\n if (perms.indexOf('r') !== -1 && !(node.mode & 292)) {\n return 2;\n } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) {\n return 2;\n } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) {\n return 2;\n }\n\n return 0;\n },\n mayLookup: function mayLookup(dir) {\n var err = FS.nodePermissions(dir, 'x');\n if (err) return err;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: function mayCreate(dir, name) {\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n\n return FS.nodePermissions(dir, 'wx');\n },\n mayDelete: function mayDelete(dir, name, isdir) {\n var node;\n\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n\n var err = FS.nodePermissions(dir, 'wx');\n\n if (err) {\n return err;\n }\n\n if (isdir) {\n if (!FS.isDir(node.mode)) {\n return 54;\n }\n\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {\n return 10;\n }\n } else {\n if (FS.isDir(node.mode)) {\n return 31;\n }\n }\n\n return 0;\n },\n mayOpen: function mayOpen(node, flags) {\n if (!node) {\n return 44;\n }\n\n if (FS.isLink(node.mode)) {\n return 32;\n } else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== 'r' || flags & 512) {\n return 31;\n }\n }\n\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: function nextfd(fd_start, fd_end) {\n fd_start = fd_start || 0;\n fd_end = fd_end || FS.MAX_OPEN_FDS;\n\n for (var fd = fd_start; fd <= fd_end; fd++) {\n if (!FS.streams[fd]) {\n return fd;\n }\n }\n\n throw new FS.ErrnoError(33);\n },\n getStream: function getStream(fd) {\n return FS.streams[fd];\n },\n createStream: function createStream(stream, fd_start, fd_end) {\n if (!FS.FSStream) {\n FS.FSStream = function () {};\n\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function get() {\n return this.node;\n },\n set: function set(val) {\n this.node = val;\n }\n },\n isRead: {\n get: function get() {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function get() {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function get() {\n return this.flags & 1024;\n }\n }\n });\n }\n\n var newStream = new FS.FSStream();\n\n for (var p in stream) {\n newStream[p] = stream[p];\n }\n\n stream = newStream;\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: function closeStream(fd) {\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: function open(stream) {\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n },\n llseek: function llseek() {\n throw new FS.ErrnoError(70);\n }\n },\n major: function major(dev) {\n return dev >> 8;\n },\n minor: function minor(dev) {\n return dev & 255;\n },\n makedev: function makedev(ma, mi) {\n return ma << 8 | mi;\n },\n registerDevice: function registerDevice(dev, ops) {\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: function getDevice(dev) {\n return FS.devices[dev];\n },\n getMounts: function getMounts(mount) {\n var mounts = [];\n var check = [mount];\n\n while (check.length) {\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n\n return mounts;\n },\n syncfs: function syncfs(populate, callback) {\n if (typeof populate === 'function') {\n callback = populate;\n populate = false;\n }\n\n FS.syncFSRequests++;\n\n if (FS.syncFSRequests > 1) {\n console.log('warning: ' + FS.syncFSRequests + ' FS.syncfs operations in flight at once, probably just doing extra work');\n }\n\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n\n function doCallback(err) {\n assert(FS.syncFSRequests > 0);\n FS.syncFSRequests--;\n return callback(err);\n }\n\n function done(err) {\n if (err) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(err);\n }\n\n return;\n }\n\n if (++completed >= mounts.length) {\n doCallback(null);\n }\n }\n\n mounts.forEach(function (mount) {\n if (!mount.type.syncfs) {\n return done(null);\n }\n\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: function mount(type, opts, mountpoint) {\n if (typeof type === 'string') {\n throw type;\n }\n\n var root = mountpoint === '/';\n var pseudo = !mountpoint;\n var node;\n\n if (root && FS.root) {\n throw new FS.ErrnoError(10);\n } else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n\n if (!FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n }\n\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n\n if (root) {\n FS.root = mountRoot;\n } else if (node) {\n node.mounted = mount;\n\n if (node.mount) {\n node.mount.mounts.push(mount);\n }\n }\n\n return mountRoot;\n },\n unmount: function unmount(mountpoint) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n\n if (!FS.isMountpoint(lookup.node)) {\n throw new FS.ErrnoError(28);\n }\n\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach(function (hash) {\n var current = FS.nameTable[hash];\n\n while (current) {\n var next = current.name_next;\n\n if (mounts.indexOf(current.mount) !== -1) {\n FS.destroyNode(current);\n }\n\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n assert(idx !== -1);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: function lookup(parent, name) {\n return parent.node_ops.lookup(parent, name);\n },\n mknod: function mknod(path, mode, dev) {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n\n if (!name || name === '.' || name === '..') {\n throw new FS.ErrnoError(28);\n }\n\n var err = FS.mayCreate(parent, name);\n\n if (err) {\n throw new FS.ErrnoError(err);\n }\n\n if (!parent.node_ops.mknod) {\n throw new FS.ErrnoError(63);\n }\n\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: function create(path, mode) {\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: function mkdir(path, mode) {\n mode = mode !== undefined ? mode : 511;\n mode &= 511 | 512;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: function mkdirTree(path, mode) {\n var dirs = path.split('/');\n var d = '';\n\n for (var i = 0; i < dirs.length; ++i) {\n if (!dirs[i]) continue;\n d += '/' + dirs[i];\n\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: function mkdev(path, mode, dev) {\n if (typeof dev === 'undefined') {\n dev = mode;\n mode = 438;\n }\n\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: function symlink(oldpath, newpath) {\n if (!PATH_FS.resolve(oldpath)) {\n throw new FS.ErrnoError(44);\n }\n\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n\n var newname = PATH.basename(newpath);\n var err = FS.mayCreate(parent, newname);\n\n if (err) {\n throw new FS.ErrnoError(err);\n }\n\n if (!parent.node_ops.symlink) {\n throw new FS.ErrnoError(63);\n }\n\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: function rename(old_path, new_path) {\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n\n try {\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n } catch (e) {\n throw new FS.ErrnoError(10);\n }\n\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n\n if (old_dir.mount !== new_dir.mount) {\n throw new FS.ErrnoError(75);\n }\n\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n\n if (relative.charAt(0) !== '.') {\n throw new FS.ErrnoError(28);\n }\n\n relative = PATH_FS.relative(new_path, old_dirname);\n\n if (relative.charAt(0) !== '.') {\n throw new FS.ErrnoError(55);\n }\n\n var new_node;\n\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n\n if (old_node === new_node) {\n return;\n }\n\n var isdir = FS.isDir(old_node.mode);\n var err = FS.mayDelete(old_dir, old_name, isdir);\n\n if (err) {\n throw new FS.ErrnoError(err);\n }\n\n err = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n\n if (err) {\n throw new FS.ErrnoError(err);\n }\n\n if (!old_dir.node_ops.rename) {\n throw new FS.ErrnoError(63);\n }\n\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {\n throw new FS.ErrnoError(10);\n }\n\n if (new_dir !== old_dir) {\n err = FS.nodePermissions(old_dir, 'w');\n\n if (err) {\n throw new FS.ErrnoError(err);\n }\n }\n\n try {\n if (FS.trackingDelegate['willMovePath']) {\n FS.trackingDelegate['willMovePath'](old_path, new_path);\n }\n } catch (e) {\n console.log('FS.trackingDelegate[\\'willMovePath\\'](\\'' + old_path + '\\', \\'' + new_path + '\\') threw an exception: ' + e.message);\n }\n\n FS.hashRemoveNode(old_node);\n\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally {\n FS.hashAddNode(old_node);\n }\n\n try {\n if (FS.trackingDelegate['onMovePath']) FS.trackingDelegate['onMovePath'](old_path, new_path);\n } catch (e) {\n console.log('FS.trackingDelegate[\\'onMovePath\\'](\\'' + old_path + '\\', \\'' + new_path + '\\') threw an exception: ' + e.message);\n }\n },\n rmdir: function rmdir(path) {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var err = FS.mayDelete(parent, name, true);\n\n if (err) {\n throw new FS.ErrnoError(err);\n }\n\n if (!parent.node_ops.rmdir) {\n throw new FS.ErrnoError(63);\n }\n\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n\n try {\n if (FS.trackingDelegate['willDeletePath']) {\n FS.trackingDelegate['willDeletePath'](path);\n }\n } catch (e) {\n console.log('FS.trackingDelegate[\\'willDeletePath\\'](\\'' + path + '\\') threw an exception: ' + e.message);\n }\n\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n\n try {\n if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path);\n } catch (e) {\n console.log('FS.trackingDelegate[\\'onDeletePath\\'](\\'' + path + '\\') threw an exception: ' + e.message);\n }\n },\n readdir: function readdir(path) {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n\n if (!node.node_ops.readdir) {\n throw new FS.ErrnoError(54);\n }\n\n return node.node_ops.readdir(node);\n },\n unlink: function unlink(path) {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var err = FS.mayDelete(parent, name, false);\n\n if (err) {\n throw new FS.ErrnoError(err);\n }\n\n if (!parent.node_ops.unlink) {\n throw new FS.ErrnoError(63);\n }\n\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n\n try {\n if (FS.trackingDelegate['willDeletePath']) {\n FS.trackingDelegate['willDeletePath'](path);\n }\n } catch (e) {\n console.log('FS.trackingDelegate[\\'willDeletePath\\'](\\'' + path + '\\') threw an exception: ' + e.message);\n }\n\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n\n try {\n if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path);\n } catch (e) {\n console.log('FS.trackingDelegate[\\'onDeletePath\\'](\\'' + path + '\\') threw an exception: ' + e.message);\n }\n },\n readlink: function readlink(path) {\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n\n if (!link) {\n throw new FS.ErrnoError(44);\n }\n\n if (!link.node_ops.readlink) {\n throw new FS.ErrnoError(28);\n }\n\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: function stat(path, dontFollow) {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n\n if (!node.node_ops.getattr) {\n throw new FS.ErrnoError(63);\n }\n\n return node.node_ops.getattr(node);\n },\n lstat: function lstat(path) {\n return FS.stat(path, true);\n },\n chmod: function chmod(path, mode, dontFollow) {\n var node;\n\n if (typeof path === 'string') {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & ~4095,\n timestamp: Date.now()\n });\n },\n lchmod: function lchmod(path, mode) {\n FS.chmod(path, mode, true);\n },\n fchmod: function fchmod(fd, mode) {\n var stream = FS.getStream(fd);\n\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n\n FS.chmod(stream.node, mode);\n },\n chown: function chown(path, uid, gid, dontFollow) {\n var node;\n\n if (typeof path === 'string') {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: function lchown(path, uid, gid) {\n FS.chown(path, uid, gid, true);\n },\n fchown: function fchown(fd, uid, gid) {\n var stream = FS.getStream(fd);\n\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n\n FS.chown(stream.node, uid, gid);\n },\n truncate: function truncate(path, len) {\n if (len < 0) {\n throw new FS.ErrnoError(28);\n }\n\n var node;\n\n if (typeof path === 'string') {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else {\n node = path;\n }\n\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n\n if (FS.isDir(node.mode)) {\n throw new FS.ErrnoError(31);\n }\n\n if (!FS.isFile(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n\n var err = FS.nodePermissions(node, 'w');\n\n if (err) {\n throw new FS.ErrnoError(err);\n }\n\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: function ftruncate(fd, len) {\n var stream = FS.getStream(fd);\n\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(28);\n }\n\n FS.truncate(stream.node, len);\n },\n utime: function utime(path, atime, mtime) {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: function open(path, flags, mode, fd_start, fd_end) {\n if (path === '') {\n throw new FS.ErrnoError(44);\n }\n\n flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode === 'undefined' ? 438 : mode;\n\n if (flags & 64) {\n mode = mode & 4095 | 32768;\n } else {\n mode = 0;\n }\n\n var node;\n\n if (typeof path === 'object') {\n node = path;\n } else {\n path = PATH.normalize(path);\n\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n\n var created = false;\n\n if (flags & 64) {\n if (node) {\n if (flags & 128) {\n throw new FS.ErrnoError(20);\n }\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n\n if (FS.isChrdev(node.mode)) {\n flags &= ~512;\n }\n\n if (flags & 65536 && !FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n\n if (!created) {\n var err = FS.mayOpen(node, flags);\n\n if (err) {\n throw new FS.ErrnoError(err);\n }\n }\n\n if (flags & 512) {\n FS.truncate(node, 0);\n }\n\n flags &= ~(128 | 512);\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n }, fd_start, fd_end);\n\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n\n if (Module['logReadFiles'] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n\n if (!(path in FS.readFiles)) {\n FS.readFiles[path] = 1;\n console.log('FS.trackingDelegate error on read file: ' + path);\n }\n }\n\n try {\n if (FS.trackingDelegate['onOpenFile']) {\n var trackingFlags = 0;\n\n if ((flags & 2097155) !== 1) {\n trackingFlags |= FS.tracking.openFlags.READ;\n }\n\n if ((flags & 2097155) !== 0) {\n trackingFlags |= FS.tracking.openFlags.WRITE;\n }\n\n FS.trackingDelegate['onOpenFile'](path, trackingFlags);\n }\n } catch (e) {\n console.log('FS.trackingDelegate[\\'onOpenFile\\'](\\'' + path + '\\', flags) threw an exception: ' + e.message);\n }\n\n return stream;\n },\n close: function close(stream) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n\n if (stream.getdents) stream.getdents = null;\n\n try {\n if (stream.stream_ops.close) {\n stream.stream_ops.close(stream);\n }\n } catch (e) {\n throw e;\n } finally {\n FS.closeStream(stream.fd);\n }\n\n stream.fd = null;\n },\n isClosed: function isClosed(stream) {\n return stream.fd === null;\n },\n llseek: function llseek(stream, offset, whence) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n\n if (!stream.seekable || !stream.stream_ops.llseek) {\n throw new FS.ErrnoError(70);\n }\n\n if (whence != 0 && whence != 1 && whence != 2) {\n throw new FS.ErrnoError(28);\n }\n\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: function read(stream, buffer, offset, length, position) {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(8);\n }\n\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n\n if (!stream.stream_ops.read) {\n throw new FS.ErrnoError(28);\n }\n\n var seeking = typeof position !== 'undefined';\n\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: function write(stream, buffer, offset, length, position, canOwn) {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n\n if (!stream.stream_ops.write) {\n throw new FS.ErrnoError(28);\n }\n\n if (stream.flags & 1024) {\n FS.llseek(stream, 0, 2);\n }\n\n var seeking = typeof position !== 'undefined';\n\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n\n try {\n if (stream.path && FS.trackingDelegate['onWriteToFile']) FS.trackingDelegate['onWriteToFile'](stream.path);\n } catch (e) {\n console.log('FS.trackingDelegate[\\'onWriteToFile\\'](\\'' + stream.path + '\\') threw an exception: ' + e.message);\n }\n\n return bytesWritten;\n },\n allocate: function allocate(stream, offset, length) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n\n if (offset < 0 || length <= 0) {\n throw new FS.ErrnoError(28);\n }\n\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n\n if (!stream.stream_ops.allocate) {\n throw new FS.ErrnoError(138);\n }\n\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: function mmap(stream, buffer, offset, length, position, prot, flags) {\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {\n throw new FS.ErrnoError(2);\n }\n\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(2);\n }\n\n if (!stream.stream_ops.mmap) {\n throw new FS.ErrnoError(43);\n }\n\n return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags);\n },\n msync: function msync(stream, buffer, offset, length, mmapFlags) {\n if (!stream || !stream.stream_ops.msync) {\n return 0;\n }\n\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: function munmap(stream) {\n return 0;\n },\n ioctl: function ioctl(stream, cmd, arg) {\n if (!stream.stream_ops.ioctl) {\n throw new FS.ErrnoError(59);\n }\n\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: function readFile(path, opts) {\n opts = opts || {};\n opts.flags = opts.flags || 'r';\n opts.encoding = opts.encoding || 'binary';\n\n if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') {\n throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n }\n\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n\n if (opts.encoding === 'utf8') {\n ret = UTF8ArrayToString(buf, 0);\n } else if (opts.encoding === 'binary') {\n ret = buf;\n }\n\n FS.close(stream);\n return ret;\n },\n writeFile: function writeFile(path, data, opts) {\n opts = opts || {};\n opts.flags = opts.flags || 'w';\n var stream = FS.open(path, opts.flags, opts.mode);\n\n if (typeof data === 'string') {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) {\n FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n } else {\n throw new Error('Unsupported data type');\n }\n\n FS.close(stream);\n },\n cwd: function cwd() {\n return FS.currentPath;\n },\n chdir: function chdir(path) {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n\n if (lookup.node === null) {\n throw new FS.ErrnoError(44);\n }\n\n if (!FS.isDir(lookup.node.mode)) {\n throw new FS.ErrnoError(54);\n }\n\n var err = FS.nodePermissions(lookup.node, 'x');\n\n if (err) {\n throw new FS.ErrnoError(err);\n }\n\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: function createDefaultDirectories() {\n FS.mkdir('/tmp');\n FS.mkdir('/home');\n FS.mkdir('/home/web_user');\n },\n createDefaultDevices: function createDefaultDevices() {\n FS.mkdir('/dev');\n FS.registerDevice(FS.makedev(1, 3), {\n read: function read() {\n return 0;\n },\n write: function write(stream, buffer, offset, length, pos) {\n return length;\n }\n });\n FS.mkdev('/dev/null', FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev('/dev/tty', FS.makedev(5, 0));\n FS.mkdev('/dev/tty1', FS.makedev(6, 0));\n var random_device;\n\n if (typeof crypto === 'object' && typeof crypto['getRandomValues'] === 'function') {\n var randomBuffer = new Uint8Array(1);\n\n random_device = function random_device() {\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else if (ENVIRONMENT_IS_NODE) {\n try {\n var crypto_module = __webpack_require__(/*! crypto */ \"./node_modules/crypto-browserify/index.js\");\n\n random_device = function random_device() {\n return crypto_module['randomBytes'](1)[0];\n };\n } catch (e) {}\n } else {}\n\n if (!random_device) {\n random_device = function random_device() {\n abort('no cryptographic support found for random_device. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };');\n };\n }\n\n FS.createDevice('/dev', 'random', random_device);\n FS.createDevice('/dev', 'urandom', random_device);\n FS.mkdir('/dev/shm');\n FS.mkdir('/dev/shm/tmp');\n },\n createSpecialDirectories: function createSpecialDirectories() {\n FS.mkdir('/proc');\n FS.mkdir('/proc/self');\n FS.mkdir('/proc/self/fd');\n FS.mount({\n mount: function mount() {\n var node = FS.createNode('/proc/self', 'fd', 16384 | 511, 73);\n node.node_ops = {\n lookup: function lookup(parent, name) {\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: 'fake'\n },\n node_ops: {\n readlink: function readlink() {\n return stream.path;\n }\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, '/proc/self/fd');\n },\n createStandardStreams: function createStandardStreams() {\n if (Module['stdin']) {\n FS.createDevice('/dev', 'stdin', Module['stdin']);\n } else {\n FS.symlink('/dev/tty', '/dev/stdin');\n }\n\n if (Module['stdout']) {\n FS.createDevice('/dev', 'stdout', null, Module['stdout']);\n } else {\n FS.symlink('/dev/tty', '/dev/stdout');\n }\n\n if (Module['stderr']) {\n FS.createDevice('/dev', 'stderr', null, Module['stderr']);\n } else {\n FS.symlink('/dev/tty1', '/dev/stderr');\n }\n\n var stdin = FS.open('/dev/stdin', 'r');\n var stdout = FS.open('/dev/stdout', 'w');\n var stderr = FS.open('/dev/stderr', 'w');\n assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')');\n assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')');\n assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')');\n },\n ensureErrnoError: function ensureErrnoError() {\n if (FS.ErrnoError) return;\n\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.node = node;\n\n this.setErrno = function (errno) {\n this.errno = errno;\n\n for (var key in ERRNO_CODES) {\n if (ERRNO_CODES[key] === errno) {\n this.code = key;\n break;\n }\n }\n };\n\n this.setErrno(errno);\n this.message = ERRNO_MESSAGES[errno];\n\n if (this.stack) {\n Object.defineProperty(this, 'stack', {\n value: new Error().stack,\n writable: true\n });\n this.stack = demangleAll(this.stack);\n }\n };\n\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [44].forEach(function (code) {\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = '<generic error, no stack>';\n });\n },\n staticInit: function staticInit() {\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, '/');\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n 'MEMFS': MEMFS\n };\n },\n init: function init(input, output, error) {\n assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)');\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module['stdin'] = input || Module['stdin'];\n Module['stdout'] = output || Module['stdout'];\n Module['stderr'] = error || Module['stderr'];\n FS.createStandardStreams();\n },\n quit: function quit() {\n FS.init.initialized = false;\n var fflush = Module['_fflush'];\n if (fflush) fflush(0);\n\n for (var i = 0; i < FS.streams.length; i++) {\n var stream = FS.streams[i];\n\n if (!stream) {\n continue;\n }\n\n FS.close(stream);\n }\n },\n getMode: function getMode(canRead, canWrite) {\n var mode = 0;\n if (canRead) mode |= 292 | 73;\n if (canWrite) mode |= 146;\n return mode;\n },\n joinPath: function joinPath(parts, forceRelative) {\n var path = PATH.join.apply(null, parts);\n if (forceRelative && path[0] == '/') path = path.substr(1);\n return path;\n },\n absolutePath: function absolutePath(relative, base) {\n return PATH_FS.resolve(base, relative);\n },\n standardizePath: function standardizePath(path) {\n return PATH.normalize(path);\n },\n findObject: function findObject(path, dontResolveLastLink) {\n var ret = FS.analyzePath(path, dontResolveLastLink);\n\n if (ret.exists) {\n return ret.object;\n } else {\n ___setErrNo(ret.error);\n\n return null;\n }\n },\n analyzePath: function analyzePath(path, dontResolveLastLink) {\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === '/';\n } catch (e) {\n ret.error = e.errno;\n }\n\n return ret;\n },\n createFolder: function createFolder(parent, name, canRead, canWrite) {\n var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.mkdir(path, mode);\n },\n createPath: function createPath(parent, path, canRead, canWrite) {\n parent = typeof parent === 'string' ? parent : FS.getPath(parent);\n var parts = path.split('/').reverse();\n\n while (parts.length) {\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n\n try {\n FS.mkdir(current);\n } catch (e) {}\n\n parent = current;\n }\n\n return current;\n },\n createFile: function createFile(parent, name, properties, canRead, canWrite) {\n var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: function createDataFile(parent, name, data, canRead, canWrite, canOwn) {\n var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent;\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n\n if (data) {\n if (typeof data === 'string') {\n var arr = new Array(data.length);\n\n for (var i = 0, len = data.length; i < len; ++i) {\n arr[i] = data.charCodeAt(i);\n }\n\n data = arr;\n }\n\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 'w');\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n\n return node;\n },\n createDevice: function createDevice(parent, name, input, output) {\n var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: function open(stream) {\n stream.seekable = false;\n },\n close: function close(stream) {\n if (output && output.buffer && output.buffer.length) {\n output(10);\n }\n },\n read: function read(stream, buffer, offset, length, pos) {\n var bytesRead = 0;\n\n for (var i = 0; i < length; i++) {\n var result;\n\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n\n return bytesRead;\n },\n write: function write(stream, buffer, offset, length, pos) {\n for (var i = 0; i < length; i++) {\n try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n }\n\n if (length) {\n stream.node.timestamp = Date.now();\n }\n\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n createLink: function createLink(parent, name, target, canRead, canWrite) {\n var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);\n return FS.symlink(target, path);\n },\n forceLoadFile: function forceLoadFile(obj) {\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n var success = true;\n\n if (typeof XMLHttpRequest !== 'undefined') {\n throw new Error('Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.');\n } else if (read_) {\n try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n success = false;\n }\n } else {\n throw new Error('Cannot load without read() or XMLHttpRequest.');\n }\n\n if (!success) ___setErrNo(29);\n return success;\n },\n createLazyFile: function createLazyFile(parent, name, url, canRead, canWrite) {\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) {\n return undefined;\n }\n\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open('HEAD', url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error('Couldn\\'t load ' + url + '. Status: ' + xhr.status);\n var datalength = Number(xhr.getResponseHeader('Content-length'));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader('Accept-Ranges')) && header === 'bytes';\n var usesGzip = (header = xhr.getResponseHeader('Content-Encoding')) && header === 'gzip';\n var chunkSize = 1024 * 1024;\n if (!hasByteServing) chunkSize = datalength;\n\n var doXHR = function doXHR(from, to) {\n if (from > to) throw new Error('invalid range (' + from + ', ' + to + ') or no bytes requested!');\n if (to > datalength - 1) throw new Error('only ' + datalength + ' bytes available! programmer error!');\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader('Range', 'bytes=' + from + '-' + to);\n if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer';\n\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType('text/plain; charset=x-user-defined');\n }\n\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error('Couldn\\'t load ' + url + '. Status: ' + xhr.status);\n\n if (xhr.response !== undefined) {\n return new Uint8Array(xhr.response || []);\n } else {\n return intArrayFromString(xhr.responseText || '', true);\n }\n };\n\n var lazyArray = this;\n lazyArray.setDataGetter(function (chunkNum) {\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n\n if (typeof lazyArray.chunks[chunkNum] === 'undefined') {\n lazyArray.chunks[chunkNum] = doXHR(start, end);\n }\n\n if (typeof lazyArray.chunks[chunkNum] === 'undefined') throw new Error('doXHR failed!');\n return lazyArray.chunks[chunkNum];\n });\n\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n console.log('LazyFiles on gzip forces download of the whole file when length is accessed');\n }\n\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n\n if (typeof XMLHttpRequest !== 'undefined') {\n if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc';\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function get() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n\n return this._length;\n }\n },\n chunkSize: {\n get: function get() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else {\n var properties = {\n isDevice: false,\n url: url\n };\n }\n\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n\n if (properties.contents) {\n node.contents = properties.contents;\n } else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n\n Object.defineProperties(node, {\n usedBytes: {\n get: function get() {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach(function (key) {\n var fn = node.stream_ops[key];\n\n stream_ops[key] = function forceLoadLazyFile() {\n if (!FS.forceLoadFile(node)) {\n throw new FS.ErrnoError(29);\n }\n\n return fn.apply(null, arguments);\n };\n });\n\n stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) {\n if (!FS.forceLoadFile(node)) {\n throw new FS.ErrnoError(29);\n }\n\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n assert(size >= 0);\n\n if (contents.slice) {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents[position + i];\n }\n } else {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents.get(position + i);\n }\n }\n\n return size;\n };\n\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: function createPreloadedFile(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) {\n Browser.init();\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency('cp ' + fullname);\n\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n\n if (!dontCreateFile) {\n FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n }\n\n if (onload) onload();\n removeRunDependency(dep);\n }\n\n var handled = false;\n Module['preloadPlugins'].forEach(function (plugin) {\n if (handled) return;\n\n if (plugin['canHandle'](fullname)) {\n plugin['handle'](byteArray, fullname, finish, function () {\n if (onerror) onerror();\n removeRunDependency(dep);\n });\n handled = true;\n }\n });\n if (!handled) finish(byteArray);\n }\n\n addRunDependency(dep);\n\n if (typeof url == 'string') {\n Browser.asyncLoad(url, function (byteArray) {\n processData(byteArray);\n }, onerror);\n } else {\n processData(url);\n }\n },\n indexedDB: function indexedDB() {\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: function DB_NAME() {\n return 'EM_FS_' + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: 'FILE_DATA',\n saveFilesToDB: function saveFilesToDB(paths, onload, onerror) {\n onload = onload || function () {};\n\n onerror = onerror || function () {};\n\n var indexedDB = FS.indexedDB();\n\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n\n openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {\n console.log('creating db');\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n\n openRequest.onsuccess = function openRequest_onsuccess() {\n var db = openRequest.result;\n var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite');\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0,\n fail = 0,\n total = paths.length;\n\n function finish() {\n if (fail == 0) onload();else onerror();\n }\n\n paths.forEach(function (path) {\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n\n putRequest.onsuccess = function putRequest_onsuccess() {\n ok++;\n if (ok + fail == total) finish();\n };\n\n putRequest.onerror = function putRequest_onerror() {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: function loadFilesFromDB(paths, onload, onerror) {\n onload = onload || function () {};\n\n onerror = onerror || function () {};\n\n var indexedDB = FS.indexedDB();\n\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n\n openRequest.onupgradeneeded = onerror;\n\n openRequest.onsuccess = function openRequest_onsuccess() {\n var db = openRequest.result;\n\n try {\n var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly');\n } catch (e) {\n onerror(e);\n return;\n }\n\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0,\n fail = 0,\n total = paths.length;\n\n function finish() {\n if (fail == 0) onload();else onerror();\n }\n\n paths.forEach(function (path) {\n var getRequest = files.get(path);\n\n getRequest.onsuccess = function getRequest_onsuccess() {\n if (FS.analyzePath(path).exists) {\n FS.unlink(path);\n }\n\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n\n getRequest.onerror = function getRequest_onerror() {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n\n openRequest.onerror = onerror;\n }\n };\n var SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n mappings: {},\n umask: 511,\n calculateAt: function calculateAt(dirfd, path) {\n if (path[0] !== '/') {\n var dir;\n\n if (dirfd === -100) {\n dir = FS.cwd();\n } else {\n var dirstream = FS.getStream(dirfd);\n if (!dirstream) throw new FS.ErrnoError(8);\n dir = dirstream.path;\n }\n\n path = PATH.join2(dir, path);\n }\n\n return path;\n },\n doStat: function doStat(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {\n return -54;\n }\n\n throw e;\n }\n\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 4 >> 2] = 0;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAP32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n HEAP32[buf + 32 >> 2] = 0;\n tempI64 = [stat.size >>> 0, (tempDouble = stat.size, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n HEAP32[buf + 56 >> 2] = stat.atime.getTime() / 1e3 | 0;\n HEAP32[buf + 60 >> 2] = 0;\n HEAP32[buf + 64 >> 2] = stat.mtime.getTime() / 1e3 | 0;\n HEAP32[buf + 68 >> 2] = 0;\n HEAP32[buf + 72 >> 2] = stat.ctime.getTime() / 1e3 | 0;\n HEAP32[buf + 76 >> 2] = 0;\n tempI64 = [stat.ino >>> 0, (tempDouble = stat.ino, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 80 >> 2] = tempI64[0], HEAP32[buf + 84 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function doMsync(addr, stream, len, flags) {\n var buffer = new Uint8Array(HEAPU8.subarray(addr, addr + len));\n FS.msync(stream, buffer, 0, len, flags);\n },\n doMkdir: function doMkdir(path, mode) {\n path = PATH.normalize(path);\n if (path[path.length - 1] === '/') path = path.substr(0, path.length - 1);\n FS.mkdir(path, mode, 0);\n return 0;\n },\n doMknod: function doMknod(path, mode, dev) {\n switch (mode & 61440) {\n case 32768:\n case 8192:\n case 24576:\n case 4096:\n case 49152:\n break;\n\n default:\n return -28;\n }\n\n FS.mknod(path, mode, dev);\n return 0;\n },\n doReadlink: function doReadlink(path, buf, bufsize) {\n if (bufsize <= 0) return -28;\n var ret = FS.readlink(path);\n var len = Math.min(bufsize, lengthBytesUTF8(ret));\n var endChar = HEAP8[buf + len];\n stringToUTF8(ret, buf, bufsize + 1);\n HEAP8[buf + len] = endChar;\n return len;\n },\n doAccess: function doAccess(path, amode) {\n if (amode & ~7) {\n return -28;\n }\n\n var node;\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n\n if (!node) {\n return -44;\n }\n\n var perms = '';\n if (amode & 4) perms += 'r';\n if (amode & 2) perms += 'w';\n if (amode & 1) perms += 'x';\n\n if (perms && FS.nodePermissions(node, perms)) {\n return -2;\n }\n\n return 0;\n },\n doDup: function doDup(path, flags, suggestFD) {\n var suggest = FS.getStream(suggestFD);\n if (suggest) FS.close(suggest);\n return FS.open(path, flags, 0, suggestFD, suggestFD).fd;\n },\n doReadv: function doReadv(stream, iov, iovcnt, offset) {\n var ret = 0;\n\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAP32[iov + i * 8 >> 2];\n var len = HEAP32[iov + (i * 8 + 4) >> 2];\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n }\n\n return ret;\n },\n doWritev: function doWritev(stream, iov, iovcnt, offset) {\n var ret = 0;\n\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAP32[iov + i * 8 >> 2];\n var len = HEAP32[iov + (i * 8 + 4) >> 2];\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n }\n\n return ret;\n },\n varargs: 0,\n get: function get(varargs) {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function getStr() {\n var ret = UTF8ToString(SYSCALLS.get());\n return ret;\n },\n getStreamFromFD: function getStreamFromFD(fd) {\n if (fd === undefined) fd = SYSCALLS.get();\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n },\n get64: function get64() {\n var low = SYSCALLS.get(),\n high = SYSCALLS.get();\n if (low >= 0) assert(high === 0);else assert(high === -1);\n return low;\n },\n getZero: function getZero() {\n assert(SYSCALLS.get() === 0);\n }\n };\n var ENV = {};\n\n var ___tm_timezone = (stringToUTF8('GMT', 1341104, 4), 1341104);\n\n FS.staticInit();\n var asmLibraryArg = {\n '__cxa_allocate_exception': ___cxa_allocate_exception,\n '__cxa_throw': ___cxa_throw,\n '__lock': ___lock,\n '__syscall221': ___syscall221,\n '__syscall3': ___syscall3,\n '__syscall5': ___syscall5,\n '__unlock': ___unlock,\n 'abort': _abort,\n 'clock': _clock,\n 'emscripten_memcpy_big': _emscripten_memcpy_big,\n 'emscripten_resize_heap': _emscripten_resize_heap,\n 'environ_get': _environ_get,\n 'environ_sizes_get': _environ_sizes_get,\n 'fd_close': _fd_close,\n 'fd_fdstat_get': _fd_fdstat_get,\n 'fd_seek': _fd_seek,\n 'fd_write': _fd_write,\n 'gettimeofday': _gettimeofday,\n 'memory': wasmMemory,\n 'round': _round,\n 'setTempRet0': _setTempRet0,\n 'table': wasmTable,\n 'time': _time\n };\n var asm = createWasm();\n var real____wasm_call_ctors = asm['__wasm_call_ctors'];\n\n asm['__wasm_call_ctors'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real____wasm_call_ctors.apply(null, arguments);\n };\n\n var real__VSSDecoder_Check = asm['VSSDecoder_Check'];\n\n asm['VSSDecoder_Check'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real__VSSDecoder_Check.apply(null, arguments);\n };\n\n var real__VSSDecoder_Init = asm['VSSDecoder_Init'];\n\n asm['VSSDecoder_Init'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real__VSSDecoder_Init.apply(null, arguments);\n };\n\n var real__VSSDecoder_Deinit = asm['VSSDecoder_Deinit'];\n\n asm['VSSDecoder_Deinit'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real__VSSDecoder_Deinit.apply(null, arguments);\n };\n\n var real__VSSDecoder_OpenChannel = asm['VSSDecoder_OpenChannel'];\n\n asm['VSSDecoder_OpenChannel'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real__VSSDecoder_OpenChannel.apply(null, arguments);\n };\n\n var real__VSSDecoder_OpenVideoDecoder = asm['VSSDecoder_OpenVideoDecoder'];\n\n asm['VSSDecoder_OpenVideoDecoder'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real__VSSDecoder_OpenVideoDecoder.apply(null, arguments);\n };\n\n var real__VSSDecoder_OpenAudioDecoder = asm['VSSDecoder_OpenAudioDecoder'];\n\n asm['VSSDecoder_OpenAudioDecoder'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real__VSSDecoder_OpenAudioDecoder.apply(null, arguments);\n };\n\n var real__VSSDecoder_DecodeVideoFrame = asm['VSSDecoder_DecodeVideoFrame'];\n\n asm['VSSDecoder_DecodeVideoFrame'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real__VSSDecoder_DecodeVideoFrame.apply(null, arguments);\n };\n\n var real__VSSDecoder_DecodeAudioFrame = asm['VSSDecoder_DecodeAudioFrame'];\n\n asm['VSSDecoder_DecodeAudioFrame'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real__VSSDecoder_DecodeAudioFrame.apply(null, arguments);\n };\n\n var real__VSSDecoder_CloseChannel = asm['VSSDecoder_CloseChannel'];\n\n asm['VSSDecoder_CloseChannel'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real__VSSDecoder_CloseChannel.apply(null, arguments);\n };\n\n var real__VSSDecoder_ConvertFrame2Image = asm['VSSDecoder_ConvertFrame2Image'];\n\n asm['VSSDecoder_ConvertFrame2Image'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real__VSSDecoder_ConvertFrame2Image.apply(null, arguments);\n };\n\n var real__VSSDecoder_ReleaseImageData = asm['VSSDecoder_ReleaseImageData'];\n\n asm['VSSDecoder_ReleaseImageData'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real__VSSDecoder_ReleaseImageData.apply(null, arguments);\n };\n\n var real__VSSDecoder_CreateMP4File = asm['VSSDecoder_CreateMP4File'];\n\n asm['VSSDecoder_CreateMP4File'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real__VSSDecoder_CreateMP4File.apply(null, arguments);\n };\n\n var real__VSSDecoder_WriteData = asm['VSSDecoder_WriteData'];\n\n asm['VSSDecoder_WriteData'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real__VSSDecoder_WriteData.apply(null, arguments);\n };\n\n var real__VSSDecoder_ReleaseMP4File = asm['VSSDecoder_ReleaseMP4File'];\n\n asm['VSSDecoder_ReleaseMP4File'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real__VSSDecoder_ReleaseMP4File.apply(null, arguments);\n };\n\n var real__main = asm['main'];\n\n asm['main'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real__main.apply(null, arguments);\n };\n\n var real__free = asm['free'];\n\n asm['free'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real__free.apply(null, arguments);\n };\n\n var real__malloc = asm['malloc'];\n\n asm['malloc'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real__malloc.apply(null, arguments);\n };\n\n var real____errno_location = asm['__errno_location'];\n\n asm['__errno_location'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real____errno_location.apply(null, arguments);\n };\n\n var real__fflush = asm['fflush'];\n\n asm['fflush'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real__fflush.apply(null, arguments);\n };\n\n var real___get_tzname = asm['_get_tzname'];\n\n asm['_get_tzname'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real___get_tzname.apply(null, arguments);\n };\n\n var real___get_daylight = asm['_get_daylight'];\n\n asm['_get_daylight'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real___get_daylight.apply(null, arguments);\n };\n\n var real___get_timezone = asm['_get_timezone'];\n\n asm['_get_timezone'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real___get_timezone.apply(null, arguments);\n };\n\n var real__setThrew = asm['setThrew'];\n\n asm['setThrew'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real__setThrew.apply(null, arguments);\n };\n\n var real___ZSt18uncaught_exceptionv = asm['_ZSt18uncaught_exceptionv'];\n\n asm['_ZSt18uncaught_exceptionv'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real___ZSt18uncaught_exceptionv.apply(null, arguments);\n };\n\n var real_stackSave = asm['stackSave'];\n\n asm['stackSave'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_stackSave.apply(null, arguments);\n };\n\n var real_stackAlloc = asm['stackAlloc'];\n\n asm['stackAlloc'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_stackAlloc.apply(null, arguments);\n };\n\n var real_stackRestore = asm['stackRestore'];\n\n asm['stackRestore'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_stackRestore.apply(null, arguments);\n };\n\n var real___growWasmMemory = asm['__growWasmMemory'];\n\n asm['__growWasmMemory'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real___growWasmMemory.apply(null, arguments);\n };\n\n var real_dynCall_ii = asm['dynCall_ii'];\n\n asm['dynCall_ii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_ii.apply(null, arguments);\n };\n\n var real_dynCall_viiiii = asm['dynCall_viiiii'];\n\n asm['dynCall_viiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_viiiii.apply(null, arguments);\n };\n\n var real_dynCall_viiiiiifi = asm['dynCall_viiiiiifi'];\n\n asm['dynCall_viiiiiifi'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_viiiiiifi.apply(null, arguments);\n };\n\n var real_dynCall_viiii = asm['dynCall_viiii'];\n\n asm['dynCall_viiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_viiii.apply(null, arguments);\n };\n\n var real_dynCall_viii = asm['dynCall_viii'];\n\n asm['dynCall_viii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_viii.apply(null, arguments);\n };\n\n var real_dynCall_iiiiiii = asm['dynCall_iiiiiii'];\n\n asm['dynCall_iiiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_iiiiiii.apply(null, arguments);\n };\n\n var real_dynCall_iiiiii = asm['dynCall_iiiiii'];\n\n asm['dynCall_iiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_iiiiii.apply(null, arguments);\n };\n\n var real_dynCall_vii = asm['dynCall_vii'];\n\n asm['dynCall_vii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_vii.apply(null, arguments);\n };\n\n var real_dynCall_iii = asm['dynCall_iii'];\n\n asm['dynCall_iii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_iii.apply(null, arguments);\n };\n\n var real_dynCall_iiii = asm['dynCall_iiii'];\n\n asm['dynCall_iiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_iiii.apply(null, arguments);\n };\n\n var real_dynCall_viiiiii = asm['dynCall_viiiiii'];\n\n asm['dynCall_viiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_viiiiii.apply(null, arguments);\n };\n\n var real_dynCall_viiiiiiiii = asm['dynCall_viiiiiiiii'];\n\n asm['dynCall_viiiiiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_viiiiiiiii.apply(null, arguments);\n };\n\n var real_dynCall_viiiiiiii = asm['dynCall_viiiiiiii'];\n\n asm['dynCall_viiiiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_viiiiiiii.apply(null, arguments);\n };\n\n var real_dynCall_iiiii = asm['dynCall_iiiii'];\n\n asm['dynCall_iiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_iiiii.apply(null, arguments);\n };\n\n var real_dynCall_viiiiiiiiiiiiii = asm['dynCall_viiiiiiiiiiiiii'];\n\n asm['dynCall_viiiiiiiiiiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_viiiiiiiiiiiiii.apply(null, arguments);\n };\n\n var real_dynCall_viiiiiiiiiii = asm['dynCall_viiiiiiiiiii'];\n\n asm['dynCall_viiiiiiiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_viiiiiiiiiii.apply(null, arguments);\n };\n\n var real_dynCall_viiiiiii = asm['dynCall_viiiiiii'];\n\n asm['dynCall_viiiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_viiiiiii.apply(null, arguments);\n };\n\n var real_dynCall_viiiiiiiiiiii = asm['dynCall_viiiiiiiiiiii'];\n\n asm['dynCall_viiiiiiiiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_viiiiiiiiiiii.apply(null, arguments);\n };\n\n var real_dynCall_vi = asm['dynCall_vi'];\n\n asm['dynCall_vi'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_vi.apply(null, arguments);\n };\n\n var real_dynCall_iiiiiiiii = asm['dynCall_iiiiiiiii'];\n\n asm['dynCall_iiiiiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_iiiiiiiii.apply(null, arguments);\n };\n\n var real_dynCall_viiiifii = asm['dynCall_viiiifii'];\n\n asm['dynCall_viiiifii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_viiiifii.apply(null, arguments);\n };\n\n var real_dynCall_fii = asm['dynCall_fii'];\n\n asm['dynCall_fii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_fii.apply(null, arguments);\n };\n\n var real_dynCall_viiiiiiiiii = asm['dynCall_viiiiiiiiii'];\n\n asm['dynCall_viiiiiiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_viiiiiiiiii.apply(null, arguments);\n };\n\n var real_dynCall_dd = asm['dynCall_dd'];\n\n asm['dynCall_dd'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_dd.apply(null, arguments);\n };\n\n var real_dynCall_viifi = asm['dynCall_viifi'];\n\n asm['dynCall_viifi'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_viifi.apply(null, arguments);\n };\n\n var real_dynCall_fiii = asm['dynCall_fiii'];\n\n asm['dynCall_fiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_fiii.apply(null, arguments);\n };\n\n var real_dynCall_viidi = asm['dynCall_viidi'];\n\n asm['dynCall_viidi'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_viidi.apply(null, arguments);\n };\n\n var real_dynCall_iiiiiiii = asm['dynCall_iiiiiiii'];\n\n asm['dynCall_iiiiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_iiiiiiii.apply(null, arguments);\n };\n\n var real_dynCall_did = asm['dynCall_did'];\n\n asm['dynCall_did'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_did.apply(null, arguments);\n };\n\n var real_dynCall_v = asm['dynCall_v'];\n\n asm['dynCall_v'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_v.apply(null, arguments);\n };\n\n var real_dynCall_viiijj = asm['dynCall_viiijj'];\n\n asm['dynCall_viiijj'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_viiijj.apply(null, arguments);\n };\n\n var real_dynCall_iiiiiiidiiddii = asm['dynCall_iiiiiiidiiddii'];\n\n asm['dynCall_iiiiiiidiiddii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_iiiiiiidiiddii.apply(null, arguments);\n };\n\n var real_dynCall_jij = asm['dynCall_jij'];\n\n asm['dynCall_jij'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_jij.apply(null, arguments);\n };\n\n var real_dynCall_jii = asm['dynCall_jii'];\n\n asm['dynCall_jii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_jii.apply(null, arguments);\n };\n\n var real_dynCall_iidiiii = asm['dynCall_iidiiii'];\n\n asm['dynCall_iidiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_iidiiii.apply(null, arguments);\n };\n\n var real_dynCall_jiji = asm['dynCall_jiji'];\n\n asm['dynCall_jiji'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return real_dynCall_jiji.apply(null, arguments);\n };\n\n Module['asm'] = asm;\n\n var ___wasm_call_ctors = Module['___wasm_call_ctors'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['__wasm_call_ctors'].apply(null, arguments);\n };\n\n var _VSSDecoder_Check = Module['_VSSDecoder_Check'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['VSSDecoder_Check'].apply(null, arguments);\n };\n\n var _VSSDecoder_Init = Module['_VSSDecoder_Init'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['VSSDecoder_Init'].apply(null, arguments);\n };\n\n var _VSSDecoder_Deinit = Module['_VSSDecoder_Deinit'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['VSSDecoder_Deinit'].apply(null, arguments);\n };\n\n var _VSSDecoder_OpenChannel = Module['_VSSDecoder_OpenChannel'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['VSSDecoder_OpenChannel'].apply(null, arguments);\n };\n\n var _VSSDecoder_OpenVideoDecoder = Module['_VSSDecoder_OpenVideoDecoder'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['VSSDecoder_OpenVideoDecoder'].apply(null, arguments);\n };\n\n var _VSSDecoder_OpenAudioDecoder = Module['_VSSDecoder_OpenAudioDecoder'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['VSSDecoder_OpenAudioDecoder'].apply(null, arguments);\n };\n\n var _VSSDecoder_DecodeVideoFrame = Module['_VSSDecoder_DecodeVideoFrame'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['VSSDecoder_DecodeVideoFrame'].apply(null, arguments);\n };\n\n var _VSSDecoder_DecodeAudioFrame = Module['_VSSDecoder_DecodeAudioFrame'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['VSSDecoder_DecodeAudioFrame'].apply(null, arguments);\n };\n\n var _VSSDecoder_CloseChannel = Module['_VSSDecoder_CloseChannel'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['VSSDecoder_CloseChannel'].apply(null, arguments);\n };\n\n var _VSSDecoder_ConvertFrame2Image = Module['_VSSDecoder_ConvertFrame2Image'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['VSSDecoder_ConvertFrame2Image'].apply(null, arguments);\n };\n\n var _VSSDecoder_ReleaseImageData = Module['_VSSDecoder_ReleaseImageData'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['VSSDecoder_ReleaseImageData'].apply(null, arguments);\n };\n\n var _VSSDecoder_CreateMP4File = Module['_VSSDecoder_CreateMP4File'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['VSSDecoder_CreateMP4File'].apply(null, arguments);\n };\n\n var _VSSDecoder_WriteData = Module['_VSSDecoder_WriteData'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['VSSDecoder_WriteData'].apply(null, arguments);\n };\n\n var _VSSDecoder_ReleaseMP4File = Module['_VSSDecoder_ReleaseMP4File'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['VSSDecoder_ReleaseMP4File'].apply(null, arguments);\n };\n\n var _main = Module['_main'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['main'].apply(null, arguments);\n };\n\n var _free = Module['_free'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['free'].apply(null, arguments);\n };\n\n var _malloc = Module['_malloc'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['malloc'].apply(null, arguments);\n };\n\n var ___errno_location = Module['___errno_location'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['__errno_location'].apply(null, arguments);\n };\n\n var _fflush = Module['_fflush'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['fflush'].apply(null, arguments);\n };\n\n var __get_tzname = Module['__get_tzname'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['_get_tzname'].apply(null, arguments);\n };\n\n var __get_daylight = Module['__get_daylight'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['_get_daylight'].apply(null, arguments);\n };\n\n var __get_timezone = Module['__get_timezone'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['_get_timezone'].apply(null, arguments);\n };\n\n var _setThrew = Module['_setThrew'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['setThrew'].apply(null, arguments);\n };\n\n var __ZSt18uncaught_exceptionv = Module['__ZSt18uncaught_exceptionv'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['_ZSt18uncaught_exceptionv'].apply(null, arguments);\n };\n\n var stackSave = Module['stackSave'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['stackSave'].apply(null, arguments);\n };\n\n var stackAlloc = Module['stackAlloc'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['stackAlloc'].apply(null, arguments);\n };\n\n var stackRestore = Module['stackRestore'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['stackRestore'].apply(null, arguments);\n };\n\n var __growWasmMemory = Module['__growWasmMemory'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['__growWasmMemory'].apply(null, arguments);\n };\n\n var dynCall_ii = Module['dynCall_ii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_ii'].apply(null, arguments);\n };\n\n var dynCall_viiiii = Module['dynCall_viiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_viiiii'].apply(null, arguments);\n };\n\n var dynCall_viiiiiifi = Module['dynCall_viiiiiifi'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_viiiiiifi'].apply(null, arguments);\n };\n\n var dynCall_viiii = Module['dynCall_viiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_viiii'].apply(null, arguments);\n };\n\n var dynCall_viii = Module['dynCall_viii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_viii'].apply(null, arguments);\n };\n\n var dynCall_iiiiiii = Module['dynCall_iiiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_iiiiiii'].apply(null, arguments);\n };\n\n var dynCall_iiiiii = Module['dynCall_iiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_iiiiii'].apply(null, arguments);\n };\n\n var dynCall_vii = Module['dynCall_vii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_vii'].apply(null, arguments);\n };\n\n var dynCall_iii = Module['dynCall_iii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_iii'].apply(null, arguments);\n };\n\n var dynCall_iiii = Module['dynCall_iiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_iiii'].apply(null, arguments);\n };\n\n var dynCall_viiiiii = Module['dynCall_viiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_viiiiii'].apply(null, arguments);\n };\n\n var dynCall_viiiiiiiii = Module['dynCall_viiiiiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_viiiiiiiii'].apply(null, arguments);\n };\n\n var dynCall_viiiiiiii = Module['dynCall_viiiiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_viiiiiiii'].apply(null, arguments);\n };\n\n var dynCall_iiiii = Module['dynCall_iiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_iiiii'].apply(null, arguments);\n };\n\n var dynCall_viiiiiiiiiiiiii = Module['dynCall_viiiiiiiiiiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_viiiiiiiiiiiiii'].apply(null, arguments);\n };\n\n var dynCall_viiiiiiiiiii = Module['dynCall_viiiiiiiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_viiiiiiiiiii'].apply(null, arguments);\n };\n\n var dynCall_viiiiiii = Module['dynCall_viiiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_viiiiiii'].apply(null, arguments);\n };\n\n var dynCall_viiiiiiiiiiii = Module['dynCall_viiiiiiiiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_viiiiiiiiiiii'].apply(null, arguments);\n };\n\n var dynCall_vi = Module['dynCall_vi'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_vi'].apply(null, arguments);\n };\n\n var dynCall_iiiiiiiii = Module['dynCall_iiiiiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_iiiiiiiii'].apply(null, arguments);\n };\n\n var dynCall_viiiifii = Module['dynCall_viiiifii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_viiiifii'].apply(null, arguments);\n };\n\n var dynCall_fii = Module['dynCall_fii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_fii'].apply(null, arguments);\n };\n\n var dynCall_viiiiiiiiii = Module['dynCall_viiiiiiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_viiiiiiiiii'].apply(null, arguments);\n };\n\n var dynCall_dd = Module['dynCall_dd'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_dd'].apply(null, arguments);\n };\n\n var dynCall_viifi = Module['dynCall_viifi'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_viifi'].apply(null, arguments);\n };\n\n var dynCall_fiii = Module['dynCall_fiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_fiii'].apply(null, arguments);\n };\n\n var dynCall_viidi = Module['dynCall_viidi'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_viidi'].apply(null, arguments);\n };\n\n var dynCall_iiiiiiii = Module['dynCall_iiiiiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_iiiiiiii'].apply(null, arguments);\n };\n\n var dynCall_did = Module['dynCall_did'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_did'].apply(null, arguments);\n };\n\n var dynCall_v = Module['dynCall_v'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_v'].apply(null, arguments);\n };\n\n var dynCall_viiijj = Module['dynCall_viiijj'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_viiijj'].apply(null, arguments);\n };\n\n var dynCall_iiiiiiidiiddii = Module['dynCall_iiiiiiidiiddii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_iiiiiiidiiddii'].apply(null, arguments);\n };\n\n var dynCall_jij = Module['dynCall_jij'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_jij'].apply(null, arguments);\n };\n\n var dynCall_jii = Module['dynCall_jii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_jii'].apply(null, arguments);\n };\n\n var dynCall_iidiiii = Module['dynCall_iidiiii'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_iidiiii'].apply(null, arguments);\n };\n\n var dynCall_jiji = Module['dynCall_jiji'] = function () {\n assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\n assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\n return Module['asm']['dynCall_jiji'].apply(null, arguments);\n };\n\n Module['asm'] = asm;\n if (!Object.getOwnPropertyDescriptor(Module, 'intArrayFromString')) Module['intArrayFromString'] = function () {\n abort('\\'intArrayFromString\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'intArrayToString')) Module['intArrayToString'] = function () {\n abort('\\'intArrayToString\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n Module['ccall'] = ccall;\n Module['cwrap'] = cwrap;\n if (!Object.getOwnPropertyDescriptor(Module, 'setValue')) Module['setValue'] = function () {\n abort('\\'setValue\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'getValue')) Module['getValue'] = function () {\n abort('\\'getValue\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'allocate')) Module['allocate'] = function () {\n abort('\\'allocate\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'getMemory')) Module['getMemory'] = function () {\n abort('\\'getMemory\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'AsciiToString')) Module['AsciiToString'] = function () {\n abort('\\'AsciiToString\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'stringToAscii')) Module['stringToAscii'] = function () {\n abort('\\'stringToAscii\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'UTF8ArrayToString')) Module['UTF8ArrayToString'] = function () {\n abort('\\'UTF8ArrayToString\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'UTF8ToString')) Module['UTF8ToString'] = function () {\n abort('\\'UTF8ToString\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'stringToUTF8Array')) Module['stringToUTF8Array'] = function () {\n abort('\\'stringToUTF8Array\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'stringToUTF8')) Module['stringToUTF8'] = function () {\n abort('\\'stringToUTF8\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'lengthBytesUTF8')) Module['lengthBytesUTF8'] = function () {\n abort('\\'lengthBytesUTF8\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'UTF16ToString')) Module['UTF16ToString'] = function () {\n abort('\\'UTF16ToString\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'stringToUTF16')) Module['stringToUTF16'] = function () {\n abort('\\'stringToUTF16\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'lengthBytesUTF16')) Module['lengthBytesUTF16'] = function () {\n abort('\\'lengthBytesUTF16\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'UTF32ToString')) Module['UTF32ToString'] = function () {\n abort('\\'UTF32ToString\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'stringToUTF32')) Module['stringToUTF32'] = function () {\n abort('\\'stringToUTF32\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'lengthBytesUTF32')) Module['lengthBytesUTF32'] = function () {\n abort('\\'lengthBytesUTF32\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'allocateUTF8')) Module['allocateUTF8'] = function () {\n abort('\\'allocateUTF8\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'stackTrace')) Module['stackTrace'] = function () {\n abort('\\'stackTrace\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'addOnPreRun')) Module['addOnPreRun'] = function () {\n abort('\\'addOnPreRun\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'addOnInit')) Module['addOnInit'] = function () {\n abort('\\'addOnInit\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'addOnPreMain')) Module['addOnPreMain'] = function () {\n abort('\\'addOnPreMain\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'addOnExit')) Module['addOnExit'] = function () {\n abort('\\'addOnExit\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'addOnPostRun')) Module['addOnPostRun'] = function () {\n abort('\\'addOnPostRun\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'writeStringToMemory')) Module['writeStringToMemory'] = function () {\n abort('\\'writeStringToMemory\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'writeArrayToMemory')) Module['writeArrayToMemory'] = function () {\n abort('\\'writeArrayToMemory\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'writeAsciiToMemory')) Module['writeAsciiToMemory'] = function () {\n abort('\\'writeAsciiToMemory\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'addRunDependency')) Module['addRunDependency'] = function () {\n abort('\\'addRunDependency\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'removeRunDependency')) Module['removeRunDependency'] = function () {\n abort('\\'removeRunDependency\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'ENV')) Module['ENV'] = function () {\n abort('\\'ENV\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'FS')) Module['FS'] = function () {\n abort('\\'FS\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'FS_createFolder')) Module['FS_createFolder'] = function () {\n abort('\\'FS_createFolder\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'FS_createPath')) Module['FS_createPath'] = function () {\n abort('\\'FS_createPath\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'FS_createDataFile')) Module['FS_createDataFile'] = function () {\n abort('\\'FS_createDataFile\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'FS_createPreloadedFile')) Module['FS_createPreloadedFile'] = function () {\n abort('\\'FS_createPreloadedFile\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'FS_createLazyFile')) Module['FS_createLazyFile'] = function () {\n abort('\\'FS_createLazyFile\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'FS_createLink')) Module['FS_createLink'] = function () {\n abort('\\'FS_createLink\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'FS_createDevice')) Module['FS_createDevice'] = function () {\n abort('\\'FS_createDevice\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'FS_unlink')) Module['FS_unlink'] = function () {\n abort('\\'FS_unlink\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'GL')) Module['GL'] = function () {\n abort('\\'GL\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'dynamicAlloc')) Module['dynamicAlloc'] = function () {\n abort('\\'dynamicAlloc\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'loadDynamicLibrary')) Module['loadDynamicLibrary'] = function () {\n abort('\\'loadDynamicLibrary\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'loadWebAssemblyModule')) Module['loadWebAssemblyModule'] = function () {\n abort('\\'loadWebAssemblyModule\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'getLEB')) Module['getLEB'] = function () {\n abort('\\'getLEB\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'getFunctionTables')) Module['getFunctionTables'] = function () {\n abort('\\'getFunctionTables\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'alignFunctionTables')) Module['alignFunctionTables'] = function () {\n abort('\\'alignFunctionTables\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'registerFunctions')) Module['registerFunctions'] = function () {\n abort('\\'registerFunctions\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n Module['addFunction'] = addFunction;\n if (!Object.getOwnPropertyDescriptor(Module, 'removeFunction')) Module['removeFunction'] = function () {\n abort('\\'removeFunction\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'getFuncWrapper')) Module['getFuncWrapper'] = function () {\n abort('\\'getFuncWrapper\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'prettyPrint')) Module['prettyPrint'] = function () {\n abort('\\'prettyPrint\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'makeBigInt')) Module['makeBigInt'] = function () {\n abort('\\'makeBigInt\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'dynCall')) Module['dynCall'] = function () {\n abort('\\'dynCall\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'getCompilerSetting')) Module['getCompilerSetting'] = function () {\n abort('\\'getCompilerSetting\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'stackSave')) Module['stackSave'] = function () {\n abort('\\'stackSave\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'stackRestore')) Module['stackRestore'] = function () {\n abort('\\'stackRestore\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'stackAlloc')) Module['stackAlloc'] = function () {\n abort('\\'stackAlloc\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'establishStackSpace')) Module['establishStackSpace'] = function () {\n abort('\\'establishStackSpace\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'print')) Module['print'] = function () {\n abort('\\'print\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'printErr')) Module['printErr'] = function () {\n abort('\\'printErr\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'getTempRet0')) Module['getTempRet0'] = function () {\n abort('\\'getTempRet0\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'setTempRet0')) Module['setTempRet0'] = function () {\n abort('\\'setTempRet0\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n Module['callMain'] = callMain;\n if (!Object.getOwnPropertyDescriptor(Module, 'abort')) Module['abort'] = function () {\n abort('\\'abort\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'Pointer_stringify')) Module['Pointer_stringify'] = function () {\n abort('\\'Pointer_stringify\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n if (!Object.getOwnPropertyDescriptor(Module, 'warnOnce')) Module['warnOnce'] = function () {\n abort('\\'warnOnce\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n };\n Module['writeStackCookie'] = writeStackCookie;\n Module['checkStackCookie'] = checkStackCookie;\n Module['abortStackOverflow'] = abortStackOverflow;\n if (!Object.getOwnPropertyDescriptor(Module, 'ALLOC_NORMAL')) Object.defineProperty(Module, 'ALLOC_NORMAL', {\n configurable: true,\n get: function get() {\n abort('\\'ALLOC_NORMAL\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n }\n });\n if (!Object.getOwnPropertyDescriptor(Module, 'ALLOC_STACK')) Object.defineProperty(Module, 'ALLOC_STACK', {\n configurable: true,\n get: function get() {\n abort('\\'ALLOC_STACK\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n }\n });\n if (!Object.getOwnPropertyDescriptor(Module, 'ALLOC_DYNAMIC')) Object.defineProperty(Module, 'ALLOC_DYNAMIC', {\n configurable: true,\n get: function get() {\n abort('\\'ALLOC_DYNAMIC\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n }\n });\n if (!Object.getOwnPropertyDescriptor(Module, 'ALLOC_NONE')) Object.defineProperty(Module, 'ALLOC_NONE', {\n configurable: true,\n get: function get() {\n abort('\\'ALLOC_NONE\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)');\n }\n });\n if (!Object.getOwnPropertyDescriptor(Module, 'calledRun')) Object.defineProperty(Module, 'calledRun', {\n configurable: true,\n get: function get() {\n abort('\\'calledRun\\' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you');\n }\n });\n var calledRun;\n var calledMain = false;\n\n dependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n };\n\n Module['run'] = run;\n\n if (Module['preInit']) {\n if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']];\n\n while (Module['preInit'].length > 0) {\n Module['preInit'].pop()();\n }\n }\n\n var shouldRunNow = true;\n if (Module['noInitialRun']) shouldRunNow = false;\n noExitRuntime = true;\n run();\n } //}\n\n} //LoadWasmModule();\n\n\nvar _VideoWorker = function VideoWorker(self) {\n //console.log(\"new VideoWorker.js\");\n self.isFlvStream = true;\n self.enableAudio = false;\n self.pause = false; //HLS���õ���ͣ,��Ϊ���������DecodeWorker��\n\n self.exitFlag = false;\n self.needMoreData = false;\n self.wasmDecoderId = -1;\n self.wasmInitVideoDecoder = false;\n self.wasmInitAudioDecoder = false;\n self.videoQueue = [];\n self.audioQueue = [];\n self.videoFrameNum = 0;\n self.videoRawData = null;\n self.audioRawData = null;\n self.videoPacketData = null;\n self.audioPacketData = null;\n self.findKeyFrame = true;\n self.videoIntervalHandle = -1;\n self.videoIntervalValue = 40;\n self.audioIntervalHandle = -1;\n self.audioIntervalValue = 21;\n self.lastPTS = 0;\n self.ptsCount = 0;\n self.maxCacheFrameNum = 0;\n self.calcDelayFlag = true;\n self.procVideoFlag = false;\n self.procAudioFlag = false;\n\n var createBuf = function createBuf() {\n if (self.videoRawData == null) {\n self.videoRawData = Module._malloc(1920 * 1080 * 4); //self.videoRawData = Module._malloc(4000 * 3000 * 2);\n }\n\n if (self.audioRawData == null) {\n self.audioRawData = Module._malloc(1024 * 16);\n }\n\n if (self.videoPacketData == null) {\n self.videoPacketData = Module._malloc(1024 * 1024);\n }\n\n if (self.audioPacketData == null) {\n self.audioPacketData = Module._malloc(1024 * 2);\n }\n\n if (self.wasmDecoderId < 0) {\n self.wasmDecoderId = Module._VSSDecoder_OpenChannel(); //console.log(\"openChannel: \" + self.wasmDecoderId);\n }\n };\n\n var deleteBuf = function deleteBuf() {\n if (self.wasmDecoderId > 0) {\n //console.log(\"closeChannel: \" + self.wasmDecoderId);\n Module._VSSDecoder_CloseChannel(self.wasmDecoderId);\n\n self.wasmDecoderId = -1;\n }\n\n if (self.videoRawData != null) {\n Module._free(self.videoRawData);\n\n self.videoRawData = null;\n }\n\n if (self.audioRawData != null) {\n Module._free(self.audioRawData);\n\n self.audioRawData = null;\n }\n\n if (self.videoPacketData != null) {\n Module._free(self.videoPacketData);\n\n self.videoPacketData = null;\n }\n\n if (self.audioPacketData != null) {\n Module._free(self.audioPacketData);\n\n self.audioPacketData = null;\n }\n };\n\n var onProcStreamData = function onProcStreamData(mediaType, codecId, frameType, playTimeSecs, samplerate, channelNum, bitPerSample, pbuf, bufsize) {\n //console.log(\"DecodeWorker: onProcStreamData:\" + bufsize);\n //console.log(\"frame data: \" + pbuf);\n if (self.procVideoFlag) return -1;\n self.procVideoFlag = true;\n Module.HEAPU8.set(pbuf, self.videoPacketData);\n var videoRenderFormat = _common__WEBPACK_IMPORTED_MODULE_0__[\"tVideoRenderYV12\"];\n var outputFormat = 0;\n if (videoRenderFormat == _common__WEBPACK_IMPORTED_MODULE_0__[\"tVideoRenderYV12\"]) outputFormat = 0;else if (videoRenderFormat == _common__WEBPACK_IMPORTED_MODULE_0__[\"tVideoRenderRGB\"]) outputFormat = 2;else if (videoRenderFormat == _common__WEBPACK_IMPORTED_MODULE_0__[\"tVideoRenderRGBA\"]) outputFormat = 26; //Decoder\n //mediaType, codecId, samplerate, channelNum, bitPerSample, pbuf, bufsize\n\n if (mediaType == 1) {\n if (self.videoFrameNum > 0) self.videoFrameNum -= 1;\n }\n\n if (mediaType == 1 && !self.wasmInitVideoDecoder && frameType) {\n //open video decoder..\n var ret = Module._VSSDecoder_OpenVideoDecoder(self.wasmDecoderId, codecId, 0, 0, outputFormat);\n\n if (ret == 0) self.wasmInitVideoDecoder = true;\n } else if (mediaType == 2 && !self.wasmInitAudioDecoder) {\n //open audio decoder\n var ret = Module._VSSDecoder_OpenAudioDecoder(self.wasmDecoderId, codecId, samplerate, bitPerSample, channelNum);\n\n if (ret == 0) self.wasmInitAudioDecoder = true;\n }\n\n var ptr = null;\n\n if (mediaType == 1 && self.wasmInitVideoDecoder) {\n ptr = Module._VSSDecoder_DecodeVideoFrame(self.wasmDecoderId, self.videoPacketData, bufsize, 0, 0, self.videoRawData, 0);\n } else if (mediaType == 2 && self.wasmInitAudioDecoder && self.enableAudio) {\n ptr = Module._VSSDecoder_DecodeAudioFrame(self.wasmDecoderId, self.videoPacketData, bufsize, self.audioRawData, 0);\n }\n\n if (ptr != 0 && ptr != null) {\n var _mediaType = Module.HEAPU32[ptr / 4],\n mediaCodec = Module.HEAPU32[ptr / 4 + 1],\n frameLength = Module.HEAPU32[ptr / 4 + 2],\n vidFrameType = Module.HEAPU32[ptr / 4 + 3],\n vidWidth = Module.HEAPU32[ptr / 4 + 4],\n vidHeight = Module.HEAPU32[ptr / 4 + 5],\n vidBitrate = Module.HEAPU32[ptr / 4 + 6],\n vidFps = Module.HEAPU32[ptr / 4 + 7],\n vidInterval = Module.HEAPU32[ptr / 4 + 8],\n audChannel = Module.HEAPU32[ptr / 4 + 9],\n audSampleRate = Module.HEAPU32[ptr / 4 + 10],\n audBitPerSample = Module.HEAPU32[ptr / 4 + 11],\n audBitrate = Module.HEAPU32[ptr / 4 + 12],\n timestamp = Module.HEAPU32[ptr / 4 + 13];\n\n if (frameLength < 1) {\n //console.log(\"framelength<1: \" + frameLength);\n self.procVideoFlag = false;\n return;\n }\n\n if (_mediaType == 1) {\n //Video\n //procVideoFrame++;\n var outputDataSize = 0;\n if (outputFormat == 0) outputDataSize = vidWidth * vidHeight * 3 / 2;else if (outputFormat == 2) outputDataSize = vidWidth * vidHeight * 3;else if (outputFormat == 25) outputDataSize = vidWidth * vidHeight * 4;else if (outputFormat == 26) outputDataSize = vidWidth * vidHeight * 4;\n var outArray = Module.HEAPU8.subarray(self.videoRawData, self.videoRawData + outputDataSize);\n var data = new Uint8Array(outArray);\n var objData = {\n cmd: _common__WEBPACK_IMPORTED_MODULE_0__[\"tFrameData\"],\n workerId: _common__WEBPACK_IMPORTED_MODULE_0__[\"DECODE_WORKER_ID\"],\n mediaType: 1,\n ts: timestamp,\n width: vidWidth,\n height: vidHeight,\n framesize: bufsize,\n rawsize: outputDataSize,\n fps: vidFps,\n interval: vidInterval,\n playTimeSec: playTimeSecs,\n frameNum: self.videoFrameNum,\n dat: data\n };\n self.postMessage(objData, [objData.dat.buffer]);\n\n if (vidWidth >= 1920 && vidHeight >= 720) {\n self.procVideoFlag = false;\n return 1;\n }\n } else if (_mediaType == 2) {\n var outArray = Module.HEAPU8.subarray(self.audioRawData, self.audioRawData + frameLength);\n var data = new Uint8Array(outArray);\n var sampleFmt = 0; //default: 8bits\n\n if (audBitPerSample == 8) sampleFmt = 0;else if (audBitPerSample == 16) sampleFmt = 1;else if (audBitPerSample == 32) sampleFmt = 2;\n var objData = {\n cmd: _common__WEBPACK_IMPORTED_MODULE_0__[\"tFrameData\"],\n workerId: _common__WEBPACK_IMPORTED_MODULE_0__[\"DECODE_WORKER_ID\"],\n mediaType: 2,\n fmt: sampleFmt,\n ch: audChannel,\n samplerate: audSampleRate,\n ts: timestamp,\n framesize: frameLength,\n dat: data\n };\n self.postMessage(objData, [objData.dat.buffer]);\n }\n }\n\n self.procVideoFlag = false;\n return 0;\n };\n\n var onProcAudioStreamData = function onProcAudioStreamData(codecId, samplerate, channelNum, bitPerSample, pbuf, bufsize) {\n Module.HEAPU8.set(pbuf, self.audioPacketData);\n {\n //Decoder\n if (!self.wasmInitAudioDecoder) {\n //channelNum = 2;\n //console.log(\"Audio samplerate[\" + samplerate + \"] bitPerSample[\" + bitPerSample + \"] ChannelNum: \" + channelNum);\n var ret = Module._VSSDecoder_OpenAudioDecoder(self.wasmDecoderId, codecId, samplerate, bitPerSample, channelNum);\n\n if (ret == 0) self.wasmInitAudioDecoder = true;\n }\n\n var ptr = null;\n\n if (self.wasmInitAudioDecoder && self.enableAudio) {\n ptr = Module._VSSDecoder_DecodeAudioFrame(self.wasmDecoderId, self.audioPacketData, bufsize, self.audioRawData, 0);\n }\n\n if (ptr != 0 && ptr != null) {\n var mediaType = Module.HEAPU32[ptr / 4],\n mediaCodec = Module.HEAPU32[ptr / 4 + 1],\n frameLength = Module.HEAPU32[ptr / 4 + 2],\n vidFrameType = Module.HEAPU32[ptr / 4 + 3],\n vidWidth = Module.HEAPU32[ptr / 4 + 4],\n vidHeight = Module.HEAPU32[ptr / 4 + 5],\n vidBitrate = Module.HEAPU32[ptr / 4 + 6],\n vidFps = Module.HEAPU32[ptr / 4 + 7],\n vidInterval = Module.HEAPU32[ptr / 4 + 8],\n audChannel = Module.HEAPU32[ptr / 4 + 9],\n audSampleRate = Module.HEAPU32[ptr / 4 + 10],\n audBitPerSample = Module.HEAPU32[ptr / 4 + 11],\n audBitrate = Module.HEAPU32[ptr / 4 + 12],\n timestamp = Module.HEAPU32[ptr / 4 + 13];\n\n if (frameLength < 1) {\n //console.log(\"framelength<1: \" + frameLength);\n return;\n }\n\n var outArray = Module.HEAPU8.subarray(self.audioRawData, self.audioRawData + frameLength);\n var data = new Uint8Array(outArray);\n var sampleFmt = 0; //default: 8bits\n\n if (audBitPerSample == 8) sampleFmt = 0;else if (audBitPerSample == 16) sampleFmt = 1;else if (audBitPerSample == 32) sampleFmt = 2;\n audChannel = 2; //console.log(\"Audio: sampleFmt[\" + sampleFmt + \"] + ch[\" + audChannel + \"]\");\n //console.log(\"pbuf:\", pbuf);\n //unsigned short usTmp = GetU16((unsigned char *)pbuf + offset); offset += 2;\n //unsigned char audioObjectType = (usTmp >> 11) & 0x1F;\t\t//1:AAC MAIN 2:AAC LC 3:AAC SSR\n //unsigned char sampleingFrequencyIndex = (usTmp >> 7) & 0x0F;\n //unsigned char channelConfiguration = (usTmp >> 3) & 0x0F;\n //unsigned char frameLengthFlag = (usTmp >> 2) & 0x03;\n //unsigned char dependsOnCoreCoder = (usTmp >> 1) & 0x01;\n //unsigned char extensionFlag = usTmp & 0x01;\n\n var objData = {\n cmd: _common__WEBPACK_IMPORTED_MODULE_0__[\"tFrameData\"],\n workerId: _common__WEBPACK_IMPORTED_MODULE_0__[\"DECODE_WORKER_ID\"],\n mediaType: 2,\n fmt: sampleFmt,\n ch: audChannel,\n samplerate: audSampleRate,\n ts: timestamp,\n framesize: frameLength,\n dat: data\n };\n self.postMessage(objData, [objData.dat.buffer]);\n }\n }\n };\n\n var VideoDecodeLoop = function VideoDecodeLoop() {\n if (self.wasmDecoderId < 0) {\n createBuf(); //����buf\n //console.log(\"wasm already loaded... Create buff...\");\n }\n\n if (self.wasmDecoderId > 0) {\n if (self.videoQueue.length > 0) {\n //console.log(\"videoQueue.length: \" + self.videoQueue.length);\n //if (self.calcDelayFlag && self.maxCacheFrameNum < self.videoQueue.length) {\n // self.maxCacheFrameNum = self.videoQueue.length;\n //}\n //else if (self.calcDelayFlag){\n // self.calcDelayFlag = false;\n // console.log(\"videoQueue.length: \" + self.maxCacheFrameNum + \" interval:\" + self.videoIntervalValue);\n //}\n //����ͣ״̬\n if (!self.pause) {\n var frame = null;\n var ret = -1;\n\n if (self.isFlvStream) {\n //FLV ����֡��̫��������ǰGOP\n //���ҹؼ�֡\n if (self.findKeyFrame) {\n while (self.videoQueue.length > 0) {\n frame = self.videoQueue[0]; //console.log(\"frameCount\" + self.videoQueue.length + \" drop frame: \" + frame.dat.length);\n\n if (frame.frameType && self.videoQueue.length < 60) {\n self.findKeyFrame = false;\n break;\n }\n\n self.videoQueue.shift();\n }\n } else {\n if (self.videoQueue.length > 60) {\n self.findKeyFrame = true;\n }\n }\n\n if (self.videoQueue.length > 0) {\n if (frame == null) {\n frame = self.videoQueue[0];\n } //if (frame.frameType) {\n // console.log(\"videoQueue.length: \" + self.videoQueue.length);\n //}\n\n\n ret = onProcStreamData(frame.mediaType, frame.codecId, frame.frameType, frame.playTimeSec, frame.samplerate, frame.channelNum, frame.bitPerSample, frame.dat, frame.dat.length);\n }\n } else {\n frame = self.videoQueue[0];\n ret = onProcStreamData(frame.mediaType, frame.codecId, frame.frameType, frame.playTimeSec, frame.samplerate, frame.channelNum, frame.bitPerSample, frame.dat, frame.dat.length);\n }\n\n if (ret >= 0) {\n self.videoQueue.shift();\n } //if (ret === 1 && self.videoQueue.length > self.maxCacheFrameNum && (self.videoQueue.length % 10 == 0)) {\n\n\n if (self.videoQueue.length > self.maxCacheFrameNum && self.videoQueue.length % 20 == 0) {//console.log(\"videoQueue.length: \" + self.videoQueue.length + \" maxCacheFrameNum:\" + self.maxCacheFrameNum);\n //if (self.videoIntervalValue > 5) {\n //updateIntervalTime(self.videoIntervalValue - 5);\n //}\n //updateIntervalTime(20);\n }\n }\n }\n }\n\n return;\n };\n\n var HlsAudioDecodeLoop = function HlsAudioDecodeLoop() {\n if (self.wasmDecoderId < 0) {\n return;\n }\n\n if (self.wasmDecoderId > 0) {\n while (self.audioQueue.length > 0 && !self.pause) {\n //if (self.audioQueue.length > 0) {\n //console.log(\"audioQueue.length: \" + self.audioQueue.length);\n //����ͣ״̬\n if (!self.pause) {\n var frame = self.audioQueue[0];\n\n if (self.enableAudio) {\n onProcAudioStreamData(frame.codecId, frame.samplerate, frame.channelNum, frame.bitPerSample, frame.dat, frame.dat.length);\n }\n\n self.audioQueue.shift();\n }\n }\n }\n\n return;\n }; //����ģ��\n\n\n Module.onRuntimeInitialized = function () {\n //console.log('WASM initialized done!');\n //������Ƶ����\n if (self.videoIntervalHandle < 0) {\n self.videoIntervalHandle = setInterval(VideoDecodeLoop, self.videoIntervalValue);\n } //if (self.isFlvStream) {\n //������Ƶ����\n\n\n if (self.audioIntervalHandle < 0) {\n //console.log(\"create audio decoder... \");\n self.audioIntervalHandle = setInterval(HlsAudioDecodeLoop, self.audioIntervalValue);\n } //}\n\n\n var objData = {\n cmd: _common__WEBPACK_IMPORTED_MODULE_0__[\"tDecoderWorkerStartup\"]\n };\n self.postMessage(objData);\n ModuleInitialized = true;\n };\n\n Module.onExit = function () {//console.log(\"Module exit...\");\n };\n\n var updateIntervalTime = function updateIntervalTime(interval) {\n if (ModuleInitialized) {\n var iVal = interval;\n\n if (iVal < 5 || iVal > 500) {\n iVal = 40;\n }\n\n if (iVal != self.videoIntervalValue) {\n if (self.videoIntervalHandle >= 0) {\n clearInterval(self.videoIntervalHandle);\n self.videoIntervalHandle = -1;\n }\n\n self.videoIntervalValue = Math.floor(iVal); //self.videoIntervalHandle = setInterval(VideoDecodeLoop, iVal > 15 ? iVal - 15 : self.videoIntervalValue);\n\n self.videoIntervalHandle = setInterval(VideoDecodeLoop, self.videoIntervalValue); //console.log(\"SetInterval: \" + self.videoIntervalValue);\n }\n }\n };\n\n var calcIntervalTime = function calcIntervalTime(pts) {\n if (pts > self.lastPTS) {\n if (self.lastPTS > 0) {\n if (self.videoQueue.length % 5 == 0) {\n var interval = self.ptsCount / 5;\n\n if (self.videoQueue.length <= self.maxCacheFrameNum) {\n updateIntervalTime(interval); //console.log(\"Update interval: \" + interval);\n }\n\n self.ptsCount = pts - self.lastPTS;\n } else {\n self.ptsCount += pts - self.lastPTS;\n }\n\n self.lastPTS = pts;\n } else {\n self.lastPTS = pts;\n self.ptsCount = 40;\n }\n } else {\n self.lastPTS = pts;\n self.ptsCount = 40;\n }\n };\n\n self.addEventListener('message', function (ev) {\n var data = ev.data; //console.log(\"videoWorker: recv data.\");\n //console.log('render-worker.js demuxer cmd:' + data.cmd);\n\n switch (data.cmd) {\n case _common__WEBPACK_IMPORTED_MODULE_0__[\"tOpenStream\"]:\n //console.log(\"init decoder worker...\");\n fullURL = data.url; //fullURL = + \"/\";\n //console.log(\"fullURL:\", fullURL);\n\n self.isFlvStream = data.isFlv; //console.log(\"wasm path: \" + data.url);\n //����wasm module\n\n if (!ModuleInitialized) {\n LoadWasmModule();\n } else {\n var objData = {\n cmd: _common__WEBPACK_IMPORTED_MODULE_0__[\"tDecoderWorkerStartup\"]\n };\n self.postMessage(objData);\n }\n\n break;\n\n case _common__WEBPACK_IMPORTED_MODULE_0__[\"tCloseStream\"]:\n self.exitFlag = true;\n _VideoWorker = null; //HLS������Ὺ����ʱִ�к���, �˴���ر�\n\n if (self.videoIntervalHandle >= 0) {\n clearInterval(self.videoIntervalHandle);\n self.videoIntervalHandle = -1;\n }\n\n if (self.audioIntervalHandle >= 0) {\n clearInterval(self.audioIntervalHandle);\n self.audioIntervalHandle = -1;\n }\n\n deleteBuf(); //�ͷ�buf\n\n self.videoQueue.clear;\n self.videoQueue = [];\n self.videoQueue.length = 0;\n self.videoFrameNum = 0;\n self.audioQueue.clear;\n self.audioQueue = [];\n self.audioQueue.length = 0; //console.log(\"Module=null\");\n //console.log(\"Module:\", Module);\n //moduleOverrides = null;\n //Module[\"exit\"](0, true);\n //Module.exit(0, true);\n\n /*\r\n Module._free(Module.HEAP8); Module.HEAP8 = null;\r\n Module._free(Module.HEAP16); Module.HEAP16 = null;\r\n Module._free(Module.HEAP32); Module.HEAP32 = null;\r\n Module._free(Module.HEAPF32); Module.HEAPF32 = null;\r\n Module._free(Module.HEAPF64); Module.HEAPF64 = null;\r\n Module._free(Module.HEAPU8); Module.HEAPU8 = null;\r\n Module._free(Module.HEAPU16); Module.HEAPU16 = null;\r\n Module._free(Module.HEAPU32); Module.HEAPU32 = null;\r\n */\n\n if (Module && Module != undefined) {\n delete Module.HEAP8;\n delete Module.HEAP16;\n delete Module.HEAP32;\n delete Module.HEAPF32;\n delete Module.HEAPF64;\n delete Module.HEAPU8;\n delete Module.HEAPU16;\n delete Module.HEAPU32;\n delete Module.buffer;\n Module.HEAP8 = null;\n Module.HEAP16 = null;\n Module.HEAP32 = null;\n Module.HEAPF32 = null;\n Module.HEAPF64 = null;\n Module.HEAPU8 = null;\n Module.HEAPU16 = null;\n Module.HEAPU32 = null;\n Module.buffer = null;\n noExitRuntime = false;\n Module.callMain('exit');\n }\n\n Module = null;\n var objData = {\n cmd: _common__WEBPACK_IMPORTED_MODULE_0__[\"tCloseStream\"],\n workerId: _common__WEBPACK_IMPORTED_MODULE_0__[\"DECODE_WORKER_ID\"]\n };\n self.postMessage(objData);\n close();\n break;\n\n case _common__WEBPACK_IMPORTED_MODULE_0__[\"tOpenAudio\"]:\n self.enableAudio = true;\n break;\n\n case _common__WEBPACK_IMPORTED_MODULE_0__[\"tCloseAudio\"]:\n self.enableAudio = false;\n break;\n\n case _common__WEBPACK_IMPORTED_MODULE_0__[\"tPauseStream\"]:\n //��ͣ\n self.pause = true;\n break;\n\n case _common__WEBPACK_IMPORTED_MODULE_0__[\"tResumeStream\"]:\n //�ָ�\n self.pause = false;\n break;\n\n case _common__WEBPACK_IMPORTED_MODULE_0__[\"tSeekStream\"]:\n self.videoQueue.clear;\n self.videoQueue = [];\n self.videoQueue.length = 0;\n self.videoFrameNum = 0;\n self.audioQueue.clear;\n self.audioQueue = [];\n self.audioQueue.length = 0;\n break;\n\n case _common__WEBPACK_IMPORTED_MODULE_0__[\"tVidInterval\"]:\n //�������ý�����ʱ��\n self.updateIntervalTime(data.interval);\n break;\n\n case _common__WEBPACK_IMPORTED_MODULE_0__[\"tFrameData\"]:\n //�Ѽ������\n if (self.exitFlag) {\n //console.log(\"exit...\");\n break;\n }\n\n if (ModuleInitialized) {\n if (self.isFlvStream) {\n //FLV Stream\n if (self.wasmDecoderId < 0) {\n createBuf(); //����buf\n //console.log(\"wasm already loaded... Create buff...\");\n }\n\n if (self.wasmDecoderId > 0) {\n if (data.mediaType == 1) {\n if (self.videoIntervalHandle >= 0) {\n self.videoQueue.push(data); //�������ƽ�����\n //let p = new Uint8Array(data);\n //console.log(\"push data to queue: \" + p);\n\n self.maxCacheFrameNum = 5; //calcIntervalTime(data.samplerate); //mediaTypeΪ1ʱ, �˴���samplerateʵ������pts\n }\n } else if (data.mediaType == 2) {\n //������Ƶ����Ž������Ƶ�����\n if (self.audioIntervalHandle >= 0 && !self.findKeyFrame) {\n self.audioQueue.push(data);\n }\n }\n /*\r\n onProcStreamData(data.mediaType, data.codecId, data.frameType,\r\n data.playTimeSec,\r\n data.samplerate, data.channelNum, data.bitPerSample,\r\n data.dat, data.dat.length);\r\n */\n\n } else if (self.videoQueue.length < 100) {\n //���Wasm��ʼ�����, ����������δ��, ��ؼ�֡\n if (data.mediaType == 1 && data.frameType) {\n if (self.videoIntervalHandle >= 0) {\n self.videoQueue.push(data);\n\n if (self.videoQueue.length >= 5) {\n self.videoQueue.shift();\n }\n }\n }\n }\n } else {\n //HLS stream, ֱ����ӵ�����\n //console.log(\"HLS Stream... add to queue... queueLength: \" + self.videoQueue.length);\n if (data.mediaType == 1) {\n if (self.videoIntervalHandle >= 0) {\n self.videoQueue.push(data);\n calcIntervalTime(data.samplerate); //mediaTypeΪ1ʱ, �˴���samplerateʵ������pts\n //console.log(\"decode pts2:\" + data.playTimeSec);\n\n self.videoFrameNum += 1;\n\n if (self.calcDelayFlag && self.maxCacheFrameNum < self.videoQueue.length) {\n self.maxCacheFrameNum = self.videoQueue.length;\n } else if (self.calcDelayFlag) {\n self.calcDelayFlag = false; //console.log(\"videoQueue.length2: \" + self.maxCacheFrameNum + \" interval:\" + self.videoIntervalValue);\n }\n }\n } else if (data.mediaType == 2) {\n //������Ƶ����Ž������Ƶ�����\n if (self.audioIntervalHandle >= 0) {\n self.audioQueue.push(data);\n }\n }\n\n self.needMoreData = false;\n }\n } else {\n //δ�������\n //Flv: ������ؼ�֡\n if (self.isFlvStream && self.videoQueue.length < 5) {\n if (data.mediaType == 1 && data.frameType) {\n if (self.videoIntervalHandle >= 0) {\n self.videoQueue.push(data);\n\n if (self.videoQueue.length >= 5) {\n self.videoQueue.shift();\n }\n }\n }\n } else if (!self.isFlvStream && self.videoQueue.length < 1000) {\n if (data.mediaType == 1) {\n if (self.videoIntervalHandle >= 0) {\n self.videoQueue.push(data);\n calcIntervalTime(data.samplerate); //mediaTypeΪ1ʱ, �˴���samplerateʵ������pts\n\n self.videoFrameNum += 1;\n\n if (self.calcDelayFlag && self.maxCacheFrameNum < self.videoQueue.length) {\n self.maxCacheFrameNum = self.videoQueue.length;\n } else if (self.calcDelayFlag) {\n self.calcDelayFlag = false; //console.log(\"videoQueue.length: \" + self.maxCacheFrameNum + \" interval:\" + self.videoIntervalValue);\n }\n } //console.log(\"decode pts:\" + data.playTimeSec);\n\n } else if (data.mediaType == 2) {\n if (self.audioIntervalHandle >= 0) {\n self.audioQueue.push(data);\n }\n } //console.log(\"HLS Stream[wasm loading...]... add to queue... queueLength: \" + self.videoQueue.length);\n\n } //console.log(\"wasm not load... videoQueue.length: \" + self.videoQueue.length);\n\n }\n\n break;\n\n default:\n break;\n }\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_VideoWorker);\nvar VSSModule = Module;\nvar VSSLoadWasmModule = LoadWasmModule;\nvar VSSModuleInitialized = ModuleInitialized;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/process/browser.js */ \"./node_modules/process/browser.js\"), \"/\", __webpack_require__(/*! ./../../node_modules/webpack/buildin/harmony-module.js */ \"./node_modules/webpack/buildin/harmony-module.js\")(module), __webpack_require__(/*! ./../../node_modules/node-libs-browser/node_modules/buffer/index.js */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer))\n\n//# sourceURL=webpack://WebMediaPlayer/./src/common/DecodeWorker.js?"); | |
| 3605 | - | |
| 3606 | -/***/ }), | |
| 3607 | - | |
| 3608 | -/***/ "./src/common/common.js": | |
| 3609 | -/*!******************************!*\ | |
| 3610 | - !*** ./src/common/common.js ***! | |
| 3611 | - \******************************/ | |
| 3612 | -/*! exports provided: tVideoRenderYV12, tVideoRenderRGB, tVideoRenderRGBA, tOpenStream, tCloseStream, tFrameData, tReOpenStream, tConnecting, tOpenAudio, tCloseAudio, tOutputStatInfo, tGetTsStream, tGetTsStreamRsp, tDecode, tVidInterval, tPauseStream, tResumeStream, tSeekStream, tMediaInfo, tGetTsComplete, tError, tExcept, tDisconnect, tResetMSE, tDecoderWorkerStartup, DOWNLOAD_WORKER_ID, DECODE_WORKER_ID, RENDER_WORKER_ID, setLiveStreamType, GetLiveStreamType, setCodecTypeStr, setVideoWidth, setVideoHeight, setVideoBitrate, GetCodecTypeStr, GetVideoWidth, GetVideoHeight, GetVideoBitrate, SetEnableAudio, GetEnableAudio, ClearAppendBufferError, SetAppendBufferError, GetAppendBufferError, sleep, MediaWorkerLog, getFullURL, getMessage, setMessage */ | |
| 3613 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3614 | - | |
| 3615 | -"use strict"; | |
| 3616 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tVideoRenderYV12\", function() { return tVideoRenderYV12; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tVideoRenderRGB\", function() { return tVideoRenderRGB; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tVideoRenderRGBA\", function() { return tVideoRenderRGBA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tOpenStream\", function() { return tOpenStream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tCloseStream\", function() { return tCloseStream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tFrameData\", function() { return tFrameData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tReOpenStream\", function() { return tReOpenStream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tConnecting\", function() { return tConnecting; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tOpenAudio\", function() { return tOpenAudio; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tCloseAudio\", function() { return tCloseAudio; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tOutputStatInfo\", function() { return tOutputStatInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tGetTsStream\", function() { return tGetTsStream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tGetTsStreamRsp\", function() { return tGetTsStreamRsp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tDecode\", function() { return tDecode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tVidInterval\", function() { return tVidInterval; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tPauseStream\", function() { return tPauseStream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tResumeStream\", function() { return tResumeStream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tSeekStream\", function() { return tSeekStream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tMediaInfo\", function() { return tMediaInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tGetTsComplete\", function() { return tGetTsComplete; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tError\", function() { return tError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tExcept\", function() { return tExcept; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tDisconnect\", function() { return tDisconnect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tResetMSE\", function() { return tResetMSE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tDecoderWorkerStartup\", function() { return tDecoderWorkerStartup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DOWNLOAD_WORKER_ID\", function() { return DOWNLOAD_WORKER_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DECODE_WORKER_ID\", function() { return DECODE_WORKER_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RENDER_WORKER_ID\", function() { return RENDER_WORKER_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setLiveStreamType\", function() { return setLiveStreamType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GetLiveStreamType\", function() { return GetLiveStreamType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setCodecTypeStr\", function() { return setCodecTypeStr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setVideoWidth\", function() { return setVideoWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setVideoHeight\", function() { return setVideoHeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setVideoBitrate\", function() { return setVideoBitrate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GetCodecTypeStr\", function() { return GetCodecTypeStr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GetVideoWidth\", function() { return GetVideoWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GetVideoHeight\", function() { return GetVideoHeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GetVideoBitrate\", function() { return GetVideoBitrate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SetEnableAudio\", function() { return SetEnableAudio; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GetEnableAudio\", function() { return GetEnableAudio; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ClearAppendBufferError\", function() { return ClearAppendBufferError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SetAppendBufferError\", function() { return SetAppendBufferError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GetAppendBufferError\", function() { return GetAppendBufferError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sleep\", function() { return sleep; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MediaWorkerLog\", function() { return MediaWorkerLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFullURL\", function() { return getFullURL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMessage\", function() { return getMessage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setMessage\", function() { return setMessage; });\nvar _0x316051=_0xc432;(function(_0x2068dc,_0x4ff2e8){var _0x38fe17=_0xc432,_0x5372e5=_0x2068dc();while(!![]){try{var _0x3bf20a=-parseInt(_0x38fe17(0xd5,'Jlf)'))/0x1+parseInt(_0x38fe17(0xec,'ugSe'))/0x2+parseInt(_0x38fe17(0xd0,'X^[k'))/0x3+parseInt(_0x38fe17(0xd6,'s50$'))/0x4*(-parseInt(_0x38fe17(0xf1,'!@b7'))/0x5)+-parseInt(_0x38fe17(0xe2,'v9%s'))/0x6+-parseInt(_0x38fe17(0xd1,'b9U@'))/0x7+-parseInt(_0x38fe17(0xea,'VW*&'))/0x8*(parseInt(_0x38fe17(0xda,'qK0*'))/0x9);if(_0x3bf20a===_0x4ff2e8)break;else _0x5372e5['push'](_0x5372e5['shift']());}catch(_0x108a62){_0x5372e5['push'](_0x5372e5['shift']());}}}(_0x559e,0x76f51));var tVideoRenderYV12=0x1;var tVideoRenderRGB=0x2;var tVideoRenderRGBA=0x3;var tOpenStream=0x1;var tCloseStream=0x2;var tFrameData=0x3;var tReOpenStream=0x4;function _0x559e(){var _0x3db05d=['eCo+emkl','WR5WfSoCFtnsgCkubg8','yCo5AmokWOFcNCkkEW','qMJdO2hdMZVcPhrvCZOsW4S','a8oRWQNdJmk+g0JcSCksFa4','AGldLryRgsVdPa','ymkvnSoqWPBcLSkHW6RdIbldISkXeG','x8kSWPVcH8oAW7K','WQ1nWRTCo8kBw8oMW7xcLmoqoG','W6uprSoed8okW7KZWRLmWRm','CwWtW5JcJCoUzaSxWOS','CwtdU8oHW5C','W4mKi8oq','WOWhwSoKjmk9W4K','gWaTW6y','WO9is8kZAL3cP8kkW6Loga','pq3cR8ozW7P5qmknzSkt','msxcOSk+WPS8W5nqegnFzq','W7NdS8k+fZZdRwG','dmkiW6tcQtG','wgNcIWFcG2JcICkXB8oeqW','ve9wzSoPWP7dGCk2WOZdVCoBrq','AGldLrmRaI3dVW','WOfdefTW','uJtdK2ldL03cUG','awxdO8kF','EComW7ZcJCoT','W5BcUSkabSk9','yezBW7lcPmo6WPCrW4ddTSkIxCkO','W4jOW7FcO38Cqu/dRe18W5rR','qSouW47cUtLoqSkH','WQdcMaBcRSoSWPH3WQ/dT8kwBKOX','btFcTJdcGG','Amo7eSkiW5hdOmoFBCkxtCobW7y3'];_0x559e=function(){return _0x3db05d;};return _0x559e();}var tConnecting=0x5;function _0xc432(_0x4a4cde,_0x536b1a){var _0x559e91=_0x559e();return _0xc432=function(_0x354995,_0x573baf){_0x354995=_0x354995-0xd0;var _0xcc0c2e=_0x559e91[_0x354995];if(_0xc432['NuLCib']===undefined){var _0x15247d=function(_0x2a0f95){var _0x9eb1c9='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x13ed0e='',_0x5188a2='';for(var _0x55a103=0x0,_0x2eec1b,_0x51ae73,_0x376e88=0x0;_0x51ae73=_0x2a0f95['charAt'](_0x376e88++);~_0x51ae73&&(_0x2eec1b=_0x55a103%0x4?_0x2eec1b*0x40+_0x51ae73:_0x51ae73,_0x55a103++%0x4)?_0x13ed0e+=String['fromCharCode'](0xff&_0x2eec1b>>(-0x2*_0x55a103&0x6)):0x0){_0x51ae73=_0x9eb1c9['indexOf'](_0x51ae73);}for(var _0x5c6e1e=0x0,_0x6bfffb=_0x13ed0e['length'];_0x5c6e1e<_0x6bfffb;_0x5c6e1e++){_0x5188a2+='%'+('00'+_0x13ed0e['charCodeAt'](_0x5c6e1e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5188a2);};var _0xc73627=function(_0x133c6d,_0x3c4280){var _0x3c074f=[],_0x3d032d=0x0,_0x3e0333,_0x491746='';_0x133c6d=_0x15247d(_0x133c6d);var _0x5639cb;for(_0x5639cb=0x0;_0x5639cb<0x100;_0x5639cb++){_0x3c074f[_0x5639cb]=_0x5639cb;}for(_0x5639cb=0x0;_0x5639cb<0x100;_0x5639cb++){_0x3d032d=(_0x3d032d+_0x3c074f[_0x5639cb]+_0x3c4280['charCodeAt'](_0x5639cb%_0x3c4280['length']))%0x100,_0x3e0333=_0x3c074f[_0x5639cb],_0x3c074f[_0x5639cb]=_0x3c074f[_0x3d032d],_0x3c074f[_0x3d032d]=_0x3e0333;}_0x5639cb=0x0,_0x3d032d=0x0;for(var _0x5e9067=0x0;_0x5e9067<_0x133c6d['length'];_0x5e9067++){_0x5639cb=(_0x5639cb+0x1)%0x100,_0x3d032d=(_0x3d032d+_0x3c074f[_0x5639cb])%0x100,_0x3e0333=_0x3c074f[_0x5639cb],_0x3c074f[_0x5639cb]=_0x3c074f[_0x3d032d],_0x3c074f[_0x3d032d]=_0x3e0333,_0x491746+=String['fromCharCode'](_0x133c6d['charCodeAt'](_0x5e9067)^_0x3c074f[(_0x3c074f[_0x5639cb]+_0x3c074f[_0x3d032d])%0x100]);}return _0x491746;};_0xc432['zPRftj']=_0xc73627,_0x4a4cde=arguments,_0xc432['NuLCib']=!![];}var _0xe399e5=_0x559e91[0x0],_0x43bf2d=_0x354995+_0xe399e5,_0x381560=_0x4a4cde[_0x43bf2d];return!_0x381560?(_0xc432['bBhJZy']===undefined&&(_0xc432['bBhJZy']=!![]),_0xcc0c2e=_0xc432['zPRftj'](_0xcc0c2e,_0x573baf),_0x4a4cde[_0x43bf2d]=_0xcc0c2e):_0xcc0c2e=_0x381560,_0xcc0c2e;},_0xc432(_0x4a4cde,_0x536b1a);}var tOpenAudio=0x6;var tCloseAudio=0x7;var tOutputStatInfo=0x8;var tGetTsStream=0xa;var tGetTsStreamRsp=0xb;var tDecode=0xc;var tVidInterval=0xd;var tPauseStream=0xe;var tResumeStream=0xf;var tSeekStream=0x10;var tMediaInfo=0x14;var tGetTsComplete=0x15;var tError=0x64;var tExcept=0x65;var tDisconnect=0x66;var tResetMSE=0x67;var tDecoderWorkerStartup=0xc8;var DOWNLOAD_WORKER_ID=0x1;var DECODE_WORKER_ID=0x2;var RENDER_WORKER_ID=0x3;var _0xc73627=!![],_0x2a0f95=_0x316051(0xef,'!@b7'),_0x9eb1c9=0x780,_0x13ed0e=0x438,_0x5188a2=0x0,_0x55a103=!![],_0x2eec1b={};_0x2eec1b[_0x316051(0xe4,'E1LD')]=![],_0x2eec1b[_0x316051(0xed,'X^[k')]=![];var _0x51ae73=_0x2eec1b,_0x376e88=[];function setLiveStreamType(_0x5c6e1e){_0xc73627=_0x5c6e1e;}function GetLiveStreamType(){return _0xc73627;}function setCodecTypeStr(_0x6bfffb){_0x2a0f95=_0x6bfffb;}function setVideoWidth(_0x133c6d){_0x9eb1c9=_0x133c6d;}function setVideoHeight(_0x3c4280){_0x13ed0e=_0x3c4280;}function setVideoBitrate(_0x3c074f){_0x5188a2=_0x3c074f;}function GetCodecTypeStr(){return _0x2a0f95;}function GetVideoWidth(){return _0x9eb1c9;}function GetVideoHeight(){return _0x13ed0e;}function GetVideoBitrate(){return _0x5188a2;}function SetEnableAudio(_0x3d032d){_0x55a103=_0x3d032d;}function GetEnableAudio(){return _0x55a103;}function ClearAppendBufferError(){var _0x3fb06d=_0x316051;_0x51ae73[_0x3fb06d(0xed,'X^[k')]=![],_0x51ae73['audio']=![];}function SetAppendBufferError(_0x3e0333){var _0x52c11e=_0x316051;if(_0x3e0333==='video')_0x51ae73[_0x52c11e(0xe0,'xfgI')]=!![];else _0x3e0333===_0x52c11e(0xe7,'$iW1')&&(_0x51ae73[_0x52c11e(0xe8,'[(#U')]=!![]);}function GetAppendBufferError(){return _0x51ae73;}function sleep(_0x491746){return new Promise(function(_0x5639cb){return setTimeout(_0x5639cb,_0x491746);});}function MediaWorkerLog(_0x5e9067){var _0x32fd4a=_0x316051,_0x28d837=new Date(),_0x2f5c83=_0x28d837[_0x32fd4a(0xf0,'TGQT')](),_0x6ace68=_0x28d837[_0x32fd4a(0xe3,'2bvx')]()+0x1,_0x5a0868=_0x28d837[_0x32fd4a(0xdf,'uhGr')](),_0x2f2250=_0x28d837[_0x32fd4a(0xd4,'qYl(')](),_0x816b53=_0x28d837[_0x32fd4a(0xd2,'2bvx')](),_0x2a059f=_0x28d837[_0x32fd4a(0xd7,'PAB)')](),_0x51a5e5=_0x28d837[_0x32fd4a(0xdd,'!uLe')](),_0x24d2c6='';_0x24d2c6=_0x2f5c83+'-'+_0x6ace68+'-'+_0x5a0868+'\\x20'+_0x816b53+':'+_0x2a059f+':'+_0x51a5e5,console['log']('['+_0x24d2c6+_0x32fd4a(0xd9,'v@bD')+_0x5e9067);}function getFullURL(){var _0x19ea33=_0x316051,_0x4948f6=window['location'][_0x19ea33(0xe6,'N4q&')],_0x5d5772=_0x4948f6[_0x19ea33(0xd8,'1KC(')]('/'),_0x6799ad='';for(var _0x33bc1f=0x0;_0x33bc1f<0x3;_0x33bc1f++){_0x6799ad+=_0x5d5772[_0x33bc1f],_0x6799ad+='/';}return _0x6799ad;}function getMessage(_0x43740b){return _0x376e88;}function setMessage(_0x2db491){var _0x5b75db=_0x316051;_0x376e88[_0x5b75db(0xdb,'vg@i')](_0x2db491);}\n\n//# sourceURL=webpack://WebMediaPlayer/./src/common/common.js?"); | |
| 3617 | - | |
| 3618 | -/***/ }), | |
| 3619 | - | |
| 3620 | -/***/ "./src/common/soundPlayer.js": | |
| 3621 | -/*!***********************************!*\ | |
| 3622 | - !*** ./src/common/soundPlayer.js ***! | |
| 3623 | - \***********************************/ | |
| 3624 | -/*! exports provided: default */ | |
| 3625 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3626 | - | |
| 3627 | -"use strict"; | |
| 3628 | -eval("__webpack_require__.r(__webpack_exports__);\nvar WebSoundPlayer = /*#__PURE__*/function () {\n function WebSoundPlayer() {\n this.stopFlag = false;\n this.bufferSourcePtr = null;\n }\n\n var _proto = WebSoundPlayer.prototype;\n\n _proto.destroy = function destroy() {\n if (this.interval) {\n clearInterval(this.interval);\n }\n\n this.samples = null;\n this.audioCtx.close();\n this.audioCtx = null;\n };\n\n _proto.init = function init(option) {\n var defaults = {\n encoding: '16bitInt',\n channels: 1,\n sampleRate: 8000,\n flushingTime: 1000\n };\n this.option = Object.assign({}, defaults, option);\n this.samples = new Float32Array();\n this.flush = this.flush.bind(this);\n this.interval = setInterval(this.flush, this.option.flushingTime);\n this.maxValue = this.getMaxValue();\n this.typedArray = this.getTypedArray();\n this.createContext();\n };\n\n _proto.getMaxValue = function getMaxValue() {\n var encodings = {\n '8bitInt': 128,\n '16bitInt': 32768,\n '32bitInt': 2147483648,\n '32bitFloat': 1\n };\n return encodings[this.option.encoding] ? encodings[this.option.encoding] : encodings['16bitInt'];\n };\n\n _proto.getTypedArray = function getTypedArray() {\n var typedArrays = {\n '8bitInt': Int8Array,\n '16bitInt': Int16Array,\n '32bitInt': Int32Array,\n '32bitFloat': Float32Array\n };\n return typedArrays[this.option.encoding] ? typedArrays[this.option.encoding] : typedArrays['16bitInt'];\n };\n\n _proto.createContext = function createContext() {\n //window.AudioContext || window.webkitAudioContext || window.mozAudioContext || window.msAudioContext || window.oAudioContext;\n this.audioCtx = new (window.AudioContext || window.webkitAudioContext)();\n this.gainNode = this.audioCtx.createGain();\n this.gainNode.gain.value = 1;\n this.gainNode.connect(this.audioCtx.destination);\n this.startTime = this.audioCtx.currentTime; //this.audioCtx.play();\n //alert(\"status: \" + this.audioCtx.state);\n };\n\n _proto.isTypedArray = function isTypedArray(data) {\n return data.byteLength && data.buffer && data.buffer.constructor == ArrayBuffer;\n };\n\n _proto.feed = function feed(data) {\n if (!this.isTypedArray(data)) return;\n data = this.getFormatedValue(data);\n var tmp = new Float32Array(this.samples.length + data.length);\n tmp.set(this.samples, 0);\n tmp.set(data, this.samples.length);\n this.samples = tmp;\n };\n\n _proto.getFormatedValue = function getFormatedValue(data) {\n var data = new this.typedArray(data.buffer),\n float32 = new Float32Array(data.length),\n i;\n\n for (i = 0; i < data.length; i++) {\n float32[i] = data[i] / this.maxValue;\n }\n\n return float32;\n };\n\n _proto.volume = function volume(_volume) {\n this.gainNode.gain.value = _volume;\n };\n\n _proto.flush = function flush() {\n if (this.samples == null) return;\n if (!this.samples.length) return;\n console.log('flush audio data...');\n var bufferSource = this.audioCtx.createBufferSource(),\n length = this.samples.length / this.option.channels,\n audioBuffer = this.audioCtx.createBuffer(this.option.channels, length, this.option.sampleRate),\n audioData,\n channel,\n offset,\n i,\n decrement;\n\n for (channel = 0; channel < this.option.channels; channel++) {\n audioData = audioBuffer.getChannelData(channel);\n offset = channel;\n decrement = 50;\n\n for (i = 0; i < length; i++) {\n audioData[i] = this.samples[offset];\n /* fadein */\n\n if (i < 50) {\n audioData[i] = audioData[i] * i / 50;\n }\n /* fadeout*/\n\n\n if (i >= length - 51) {\n audioData[i] = audioData[i] * decrement-- / 50;\n }\n\n offset += this.option.channels;\n }\n }\n\n if (this.startTime < this.audioCtx.currentTime) {\n this.startTime = this.audioCtx.currentTime;\n } //console.log('start vs current '+this.startTime+' vs '+this.audioCtx.currentTime+' duration: '+audioBuffer.duration);\n\n\n bufferSource.buffer = audioBuffer;\n bufferSource.connect(this.gainNode);\n bufferSource.start(this.startTime);\n this.startTime += audioBuffer.duration;\n this.samples = new Float32Array();\n };\n\n _proto.getTimestamp = function getTimestamp() {\n if (this.audioCtx) {\n return this.audioCtx.currentTime;\n } else {\n return 0;\n }\n };\n\n _proto.play = function play(data) {\n if (this.audioCtx == null) return;\n\n if (this.audioCtx.state !== 'running') {\n this.audioCtx.resume();\n return;\n }\n\n if (!this.isTypedArray(data)) {\n return;\n }\n\n data = this.getFormatedValue(data);\n\n if (!data.length) {\n return;\n }\n\n this.stopFlag = false;\n var bufferSource = this.audioCtx.createBufferSource(); //console.log(\"data.length:\" + data.length + \" channel:\" + this.option.channels);\n\n var length = data.length / this.option.channels; //createBuffer�����try{}����, ������iOS��iPad��, ��Ƶ�����ʲ�֧��8Khz,16Khz,���Դ����ᱨ��\n\n var audioBuffer; // = this.audioCtx.createBuffer(this.option.channels, length, this.option.sampleRate);\n\n try {\n audioBuffer = this.audioCtx.createBuffer(this.option.channels, length, this.option.sampleRate);\n } catch (e) {//alert(e);\n }\n\n var audioData, channel, offset, i, decrement;\n\n for (channel = 0; channel < this.option.channels; channel++) {\n audioData = audioBuffer.getChannelData(channel);\n offset = channel;\n decrement = 50;\n\n for (i = 0; i < length; i++) {\n audioData[i] = data[offset];\n /* fadein */\n\n if (i < 50) {\n audioData[i] = audioData[i] * i / 50;\n }\n /* fadeout*/\n\n\n if (i >= length - 51) {\n audioData[i] = audioData[i] * decrement-- / 50;\n }\n\n offset += this.option.channels;\n }\n }\n\n if (this.startTime < this.audioCtx.currentTime) {\n this.startTime = this.audioCtx.currentTime;\n }\n\n bufferSource.buffer = audioBuffer;\n bufferSource.connect(this.gainNode);\n bufferSource.start(this.startTime);\n this.startTime += audioBuffer.duration;\n this.bufferSourcePtr = bufferSource;\n };\n\n _proto.clearAudioBuffer = function clearAudioBuffer() {\n this.stopFlag = true; //this.samples = null;\n\n if (this.bufferSourcePtr) {\n this.bufferSourcePtr.stop(0);\n }\n };\n\n _proto.pause = function pause() {\n if (this.audioCtx == null) return;\n\n if (this.audioCtx.state === 'running') {\n this.audioCtx.suspend();\n }\n };\n\n _proto.resume = function resume() {\n if (this.audioCtx == null) return;\n\n if (this.audioCtx.state === 'suspended') {\n this.audioCtx.resume();\n }\n };\n\n return WebSoundPlayer;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (WebSoundPlayer);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/common/soundPlayer.js?"); | |
| 3629 | - | |
| 3630 | -/***/ }), | |
| 3631 | - | |
| 3632 | -/***/ "./src/common/webgl.js": | |
| 3633 | -/*!*****************************!*\ | |
| 3634 | - !*** ./src/common/webgl.js ***! | |
| 3635 | - \*****************************/ | |
| 3636 | -/*! exports provided: default */ | |
| 3637 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3638 | - | |
| 3639 | -"use strict"; | |
| 3640 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var yuv_buffer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! yuv-buffer */ \"./node_modules/yuv-buffer/yuv-buffer.js\");\n/* harmony import */ var yuv_buffer__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(yuv_buffer__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var yuv_canvas__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! yuv-canvas */ \"./node_modules/yuv-canvas/src/yuv-canvas.js\");\n/* harmony import */ var yuv_canvas__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(yuv_canvas__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nvar WebGLPlayer = /*#__PURE__*/function () {\n function WebGLPlayer(canvas) {\n this.enableTextTexture = 0;\n this.canvas = canvas; // let DPR = window.devicePixelRatio;// 设备像素比\n // let w = canvas.clientWidth;\n // let h = canvas.clientHeight;\n // if (DPR) {\n // canvas.width = w * DPR;\n // canvas.height = h * DPR;\n // canvas.style.width = w + 'px';\n // canvas.style.height = h + 'px';\n // let ctx = canvas.getContext('2d');\n // if (ctx) {\n // ctx.scale(DPR, DPR);\n // }\n // }\n\n console.log(canvas);\n this.yuv = yuv_canvas__WEBPACK_IMPORTED_MODULE_1___default.a.attach(canvas, {\n webGL: false\n });\n this.format = null;\n }\n\n var _proto = WebGLPlayer.prototype;\n\n _proto.destroy = function destroy() {};\n\n _proto.renderFrame = function renderFrame(videoFrame, width, height, uOffset, vOffset) {\n if (!this.format) {\n this.format = yuv_buffer__WEBPACK_IMPORTED_MODULE_0___default.a.format({\n width: width,\n height: height,\n chromaWidth: width / 2,\n chromaHeight: height / 2\n });\n }\n\n var y = yuv_buffer__WEBPACK_IMPORTED_MODULE_0___default.a.lumaPlane(this.format, new Uint8Array(videoFrame.subarray(0, uOffset)));\n var u = yuv_buffer__WEBPACK_IMPORTED_MODULE_0___default.a.chromaPlane(this.format, new Uint8Array(videoFrame.subarray(uOffset, uOffset + vOffset)));\n var v = yuv_buffer__WEBPACK_IMPORTED_MODULE_0___default.a.chromaPlane(this.format, new Uint8Array(videoFrame.subarray(uOffset + vOffset, videoFrame.length)));\n var frame = yuv_buffer__WEBPACK_IMPORTED_MODULE_0___default.a.frame(this.format, y, u, v);\n this.yuv.drawFrame(frame);\n };\n\n _proto.renderVideoFrame = function renderVideoFrame(data, width, height) {\n if (data) {\n //YV12\n var yLength = width * height;\n var uvLength = width / 2 * (height / 2);\n this.renderFrame(data, width, height, yLength, uvLength);\n }\n };\n\n return WebGLPlayer;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (WebGLPlayer);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/common/webgl.js?"); | |
| 3641 | - | |
| 3642 | -/***/ }), | |
| 3643 | - | |
| 3644 | -/***/ "./src/components/big-play-button/index.js": | |
| 3645 | -/*!*************************************************!*\ | |
| 3646 | - !*** ./src/components/big-play-button/index.js ***! | |
| 3647 | - \*************************************************/ | |
| 3648 | -/*! exports provided: default */ | |
| 3649 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3650 | - | |
| 3651 | -"use strict"; | |
| 3652 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/dom */ \"./src/utils/dom.js\");\n/* harmony import */ var _utils_obj__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/obj */ \"./src/utils/obj.js\");\n\n\n/**\n * big-play-button\n */\n\nvar bigPlayButton = /*#__PURE__*/function () {\n function bigPlayButton(self, dom, isBigButton) {\n var _this = this;\n\n this.isBigButton = isBigButton;\n\n if (isBigButton) {\n this.bigPlayBox = this.createEl('div');\n dom.appendChild(this.bigPlayBox);\n\n this.bigPlayBox.onclick = function () {\n self.play('', true);\n\n _this.hide();\n };\n\n return this.bigPlayBox;\n } else {\n return null;\n }\n }\n\n var _proto = bigPlayButton.prototype;\n\n _proto.createEl = function createEl(tag, props, attributes) {\n if (props === void 0) {\n props = {};\n }\n\n if (attributes === void 0) {\n attributes = {};\n }\n\n tag = 'div';\n props = Object(_utils_obj__WEBPACK_IMPORTED_MODULE_1__[\"assign\"])({\n className: 'vss-big-play-button vss-pointer'\n }, props); // 为元素添加属性\n\n attributes = Object(_utils_obj__WEBPACK_IMPORTED_MODULE_1__[\"assign\"])({\n type: 'button'\n }, attributes);\n\n var el = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])(tag, props, attributes);\n\n this.iconEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('span', {\n className: 'vss-big-play-icon vssfont vss-play'\n });\n el.appendChild(this.iconEl);\n return el;\n };\n\n _proto.show = function show() {\n if (this.isBigButton) {\n this.bigPlayBox.classList.remove('vss-hide');\n this.bigPlayBox.classList.add('vss-show');\n }\n };\n\n _proto.hide = function hide() {\n if (this.isBigButton) {\n this.bigPlayBox.classList.remove('vss-show');\n this.bigPlayBox.classList.add('vss-hide');\n }\n };\n\n return bigPlayButton;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (bigPlayButton);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/components/big-play-button/index.js?"); | |
| 3653 | - | |
| 3654 | -/***/ }), | |
| 3655 | - | |
| 3656 | -/***/ "./src/components/context-menu/index.js": | |
| 3657 | -/*!**********************************************!*\ | |
| 3658 | - !*** ./src/components/context-menu/index.js ***! | |
| 3659 | - \**********************************************/ | |
| 3660 | -/*! exports provided: default */ | |
| 3661 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3662 | - | |
| 3663 | -"use strict"; | |
| 3664 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/dom */ \"./src/utils/dom.js\");\n/**\n * 动态logo动画\n * context-menu\n */\n\n\nvar ContextMenu = /*#__PURE__*/function () {\n function ContextMenu(self, dom) {\n this.boxDom = dom;\n this.contextMenuDom = this.createEl();\n }\n\n var _proto = ContextMenu.prototype;\n\n _proto.createEl = function createEl() {\n var el = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('ul', {\n className: \"vss-contextm-menu\"\n });\n\n var contextmMenuLis = [{\n name: '关于我们'\n }, {\n name: '复制视频地址'\n }, {\n name: '播放器版本信息'\n }];\n contextmMenuLis.forEach(function (item, index) {\n el.appendChild(Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('li', {\n className: 'vss-contextm-menu-li'\n }, {\n 'data-index': index\n }, item.name));\n });\n return el;\n };\n\n _proto.show = function show(x, y) {\n var _this = this;\n\n if (x === void 0) {\n x = 0;\n }\n\n if (y === void 0) {\n y = 0;\n }\n\n this.contextMenuDom.style.top = y + 'px';\n this.contextMenuDom.style.left = x + 'px';\n this.contextMenuDom.classList.add('vss-contextm-menu-show');\n document.body.appendChild(this.contextMenuDom);\n /**\n * 给右键菜单绑定事件\n * @type {HTMLCollectionOf<Element>}\n */\n\n var contextmMenuLists = document.getElementsByClassName('vss-contextm-menu-li');\n\n for (var i = 0; i < contextmMenuLists.length; i++) {\n // 鼠标按下\n contextmMenuLists[i].onmousedown = function (e) {\n e = e || window.event; // 屏蔽样式\n\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n document.onmousedown = null;\n document.onmouseup = null;\n }; // 阻止右键\n\n\n contextmMenuLists[i].oncontextmenu = function (e) {\n e = e || window.event; // 屏蔽样式\n\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n\n document.onmousedown = function () {\n _this.hide();\n };\n\n document.onmouseup = function () {\n document.onmousedown = null;\n document.onmouseup = null;\n };\n\n return false;\n }; // 点击事件\n\n\n contextmMenuLists[i].onclick = this.onContextmMenuItem.bind(this);\n }\n };\n\n _proto.hide = function hide() {\n document.body.removeChild(this.contextMenuDom);\n this.contextMenuDom.classList.remove('vss-contextm-menu-show');\n };\n\n _proto.onContextmMenuItem = function onContextmMenuItem(e) {\n this.hide();\n var menuIndex = parseFloat(e.target.dataset.index);\n console.log('menuIndex', menuIndex);\n };\n\n return ContextMenu;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ContextMenu);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/components/context-menu/index.js?"); | |
| 3665 | - | |
| 3666 | -/***/ }), | |
| 3667 | - | |
| 3668 | -/***/ "./src/components/control-bar/audio-btn.js": | |
| 3669 | -/*!*************************************************!*\ | |
| 3670 | - !*** ./src/components/control-bar/audio-btn.js ***! | |
| 3671 | - \*************************************************/ | |
| 3672 | -/*! exports provided: default */ | |
| 3673 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3674 | - | |
| 3675 | -"use strict"; | |
| 3676 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/dom */ \"./src/utils/dom.js\");\n/**\n * fullscreen-toggle.js\n */\n\n\nvar Snapshot = /*#__PURE__*/function () {\n function Snapshot(self, dom) {\n var _this = this;\n\n this.boxDom = self.boxDom;\n this.isFill = false;\n this.isPlaying = false;\n this.fillModeBtnEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: 'vss-control-btn vss-control-audio-btn vss-pointer'\n }, {});\n this.fillModeIconEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('span', {\n className: \"vssfont \" + (self.enableAudio ? 'vss-open-voice' : 'vss-mute')\n }, {\n title: \"\" + (self.enableAudio ? '静音' : '声音')\n });\n this.fillModeBtnEl.appendChild(this.fillModeIconEl);\n dom.appendChild(this.fillModeBtnEl);\n\n this.fillModeBtnEl.onclick = function (e) {\n if (self.enableAudio) {\n _this.fillModeIconEl.title = '声音';\n\n _this.fillModeIconEl.classList.remove('vss-open-voice');\n\n _this.fillModeIconEl.classList.add('vss-mute');\n\n _this.closeAudio(self);\n } else {\n _this.fillModeIconEl.title = '静音';\n\n _this.fillModeIconEl.classList.remove('vss-mute');\n\n _this.fillModeIconEl.classList.add('vss-open-voice');\n\n _this.openAudio(self);\n }\n };\n\n self.on('audio', function (val) {\n if (val) {\n _this.fillModeIconEl.title = '静音';\n\n _this.fillModeIconEl.classList.remove('vss-mute');\n\n _this.fillModeIconEl.classList.add('vss-open-voice');\n } else {\n _this.fillModeIconEl.title = '声音';\n\n _this.fillModeIconEl.classList.remove('vss-open-voice');\n\n _this.fillModeIconEl.classList.add('vss-mute');\n }\n });\n } //\n\n\n var _proto = Snapshot.prototype;\n\n _proto.openAudio = function openAudio(self) {\n self.openAudio();\n } // 暂停\n ;\n\n _proto.closeAudio = function closeAudio(self) {\n self.closeAudio();\n };\n\n return Snapshot;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Snapshot);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/components/control-bar/audio-btn.js?"); | |
| 3677 | - | |
| 3678 | -/***/ }), | |
| 3679 | - | |
| 3680 | -/***/ "./src/components/control-bar/control-bar.js": | |
| 3681 | -/*!***************************************************!*\ | |
| 3682 | - !*** ./src/components/control-bar/control-bar.js ***! | |
| 3683 | - \***************************************************/ | |
| 3684 | -/*! exports provided: default */ | |
| 3685 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3686 | - | |
| 3687 | -"use strict"; | |
| 3688 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/dom */ \"./src/utils/dom.js\");\n/* harmony import */ var _utils_obj__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/obj */ \"./src/utils/obj.js\");\n/* harmony import */ var _fill_mode__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fill-mode */ \"./src/components/control-bar/fill-mode.js\");\n/* harmony import */ var _snapshot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./snapshot */ \"./src/components/control-bar/snapshot.js\");\n/* harmony import */ var _fullscreen_toggle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./fullscreen-toggle */ \"./src/components/control-bar/fullscreen-toggle.js\");\n/* harmony import */ var _play_btn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./play-btn */ \"./src/components/control-bar/play-btn.js\");\n/* harmony import */ var _stop_btn__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./stop-btn */ \"./src/components/control-bar/stop-btn.js\");\n/* harmony import */ var _audio_btn__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./audio-btn */ \"./src/components/control-bar/audio-btn.js\");\n/* harmony import */ var _resolution_ratio__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./resolution-ratio */ \"./src/components/control-bar/resolution-ratio.js\");\n/* harmony import */ var _time_schedule__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./time-schedule */ \"./src/components/control-bar/time-schedule.js\");\n/**\n * control-bar.js\n */\n\n\n\n\n\n\n\n\n\n\n\nvar ControlBar = /*#__PURE__*/function () {\n function ControlBar(self, dom, is) {\n var _this = this;\n\n var controlBarEl = this.createEl('div', {\n className: 'vss-control-bar'\n });\n var controlBarLeftEl = this.createEl('div', {\n className: 'vss-control-bar-left'\n });\n var controlBarConterEl = this.createEl('div', {\n className: 'vss-control-bar-conter'\n });\n var controlBarrRightEl = this.createEl('div', {\n className: 'vss-control-bar-right'\n });\n controlBarEl.appendChild(controlBarLeftEl);\n controlBarEl.appendChild(controlBarConterEl);\n controlBarEl.appendChild(controlBarrRightEl);\n dom.appendChild(controlBarEl); // left\n\n new _play_btn__WEBPACK_IMPORTED_MODULE_5__[\"default\"](self, controlBarLeftEl);\n new _stop_btn__WEBPACK_IMPORTED_MODULE_6__[\"default\"](self, controlBarLeftEl);\n new _audio_btn__WEBPACK_IMPORTED_MODULE_7__[\"default\"](self, controlBarLeftEl);\n new _resolution_ratio__WEBPACK_IMPORTED_MODULE_8__[\"default\"](self, controlBarLeftEl); // center\n\n new _time_schedule__WEBPACK_IMPORTED_MODULE_9__[\"default\"](self, controlBarConterEl); // right\n\n new _fill_mode__WEBPACK_IMPORTED_MODULE_2__[\"default\"](self, controlBarrRightEl);\n new _snapshot__WEBPACK_IMPORTED_MODULE_3__[\"default\"](self, controlBarrRightEl);\n new _fullscreen_toggle__WEBPACK_IMPORTED_MODULE_4__[\"default\"](self, controlBarrRightEl); // 鼠标进入移出事件\n\n this.Timer = null;\n\n dom.onmousemove = function () {\n clearTimeout(_this.Timer); // 显示\n\n dom.classList.add('vss-control-show');\n };\n\n dom.onmouseout = function () {\n clearTimeout(_this.Timer);\n _this.Timer = setTimeout(function () {\n // 隐藏\n dom.classList.remove('vss-control-show');\n clearTimeout(_this.Timer);\n }, 2000);\n };\n }\n\n var _proto = ControlBar.prototype;\n\n _proto.createEl = function createEl(tag, props, attributes) {\n if (props === void 0) {\n props = {};\n }\n\n if (attributes === void 0) {\n attributes = {};\n }\n\n tag = 'div';\n props = Object(_utils_obj__WEBPACK_IMPORTED_MODULE_1__[\"assign\"])({}, props);\n return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])(tag, props, attributes);\n };\n\n return ControlBar;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ControlBar);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/components/control-bar/control-bar.js?"); | |
| 3689 | - | |
| 3690 | -/***/ }), | |
| 3691 | - | |
| 3692 | -/***/ "./src/components/control-bar/fill-mode.js": | |
| 3693 | -/*!*************************************************!*\ | |
| 3694 | - !*** ./src/components/control-bar/fill-mode.js ***! | |
| 3695 | - \*************************************************/ | |
| 3696 | -/*! exports provided: default */ | |
| 3697 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3698 | - | |
| 3699 | -"use strict"; | |
| 3700 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/dom */ \"./src/utils/dom.js\");\n/* harmony import */ var _utils_obj__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/obj */ \"./src/utils/obj.js\");\n/**\n * fullscreen-toggle.js\n */\n\n\n\nvar FullscreenToggle = function FullscreenToggle(self, dom) {\n var _this = this;\n\n this.boxDom = self.boxDom;\n this.isFill = self.showMode;\n this.fillModeBtnEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: 'vss-control-btn vss-control-fill-btn vss-pointer'\n }, {});\n this.fillModeIconEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('span', {\n className: \"vssfont \" + (self.showMode ? 'vss-video-ratio' : 'vss-video-fill')\n }, {\n title: self.showMode ? '按比例显示' : '铺满窗口'\n });\n this.fillModeBtnEl.appendChild(this.fillModeIconEl);\n dom.appendChild(this.fillModeBtnEl);\n\n this.fillModeBtnEl.onclick = function (e) {\n if (_this.isFill) {\n // 按比例显示\n _this.isFill = false;\n self.callbackFunc('ratio');\n _this.fillModeIconEl.title = '铺满窗口';\n\n _this.fillModeIconEl.classList.remove('vss-video-ratio');\n\n _this.fillModeIconEl.classList.add('vss-video-fill');\n\n self.videoEl.style.objectFit = '';\n } else {\n // 铺满窗口\n _this.isFill = true;\n self.callbackFunc('fill');\n _this.fillModeIconEl.title = '按比例显示';\n\n _this.fillModeIconEl.classList.remove('vss-video-fill');\n\n _this.fillModeIconEl.classList.add('vss-video-ratio');\n\n self.videoEl.style.objectFit = 'fill';\n }\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FullscreenToggle);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/components/control-bar/fill-mode.js?"); | |
| 3701 | - | |
| 3702 | -/***/ }), | |
| 3703 | - | |
| 3704 | -/***/ "./src/components/control-bar/fullscreen-toggle.js": | |
| 3705 | -/*!*********************************************************!*\ | |
| 3706 | - !*** ./src/components/control-bar/fullscreen-toggle.js ***! | |
| 3707 | - \*********************************************************/ | |
| 3708 | -/*! exports provided: default */ | |
| 3709 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3710 | - | |
| 3711 | -"use strict"; | |
| 3712 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var screenfull__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! screenfull */ \"./node_modules/screenfull/index.js\");\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/dom */ \"./src/utils/dom.js\");\n/**\n * fullscreen-toggle.js\n */\n\n\n\nvar FullscreenToggle = /*#__PURE__*/function () {\n function FullscreenToggle(self, dom) {\n var _this = this;\n\n this.boxDom = self.boxDom;\n this.isFullScreen = false;\n this.fullScreenBtnEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__[\"createEl\"])('div', {\n className: 'vss-control-btn vss-control-full-btn vss-pointer'\n }, {});\n this.fullScreenIconEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__[\"createEl\"])('span', {\n className: 'vssfont vss-fullscreen'\n }, {\n title: '全屏'\n });\n this.fullScreenBtnEl.appendChild(this.fullScreenIconEl);\n dom.appendChild(this.fullScreenBtnEl);\n\n this.fullScreenBtnEl.onclick = function (e) {\n if (_this.isFullScreen) {\n // 取消全屏\n // self.callbackFunc('unFull');\n _this.exitFullScreen();\n } else {\n // 全屏\n // self.callbackFunc('full');\n _this.requestFullscreen();\n }\n }; // 监听播放器是否为全屏状态\n\n\n if (screenfull__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isEnabled) {\n screenfull__WEBPACK_IMPORTED_MODULE_0__[\"default\"].on('change', this.screenfullChange.bind(this));\n }\n } // 全屏\n\n\n var _proto = FullscreenToggle.prototype;\n\n _proto.requestFullscreen = function requestFullscreen() {\n if (!screenfull__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isEnabled) {\n console.log('您的浏览器不能工作!');\n return false;\n }\n\n screenfull__WEBPACK_IMPORTED_MODULE_0__[\"default\"].request(this.boxDom);\n } // 取消全屏\n ;\n\n _proto.exitFullScreen = function exitFullScreen() {\n screenfull__WEBPACK_IMPORTED_MODULE_0__[\"default\"].toggle();\n };\n\n _proto.screenfullChange = function screenfullChange() {\n this.isFullScreen = screenfull__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFullscreen;\n\n if (this.isFullScreen) {\n // self.callbackFunc('full');\n this.fullScreenIconEl.title = '取消全屏';\n this.fullScreenIconEl.classList.remove('vss-fullscreen');\n this.fullScreenIconEl.classList.add('vss-cancel-fullscreen');\n } else {\n // 全屏\n // self.callbackFunc('unFull');\n this.fullScreenIconEl.title = '全屏';\n this.fullScreenIconEl.classList.remove('vss-cancel-fullscreen');\n this.fullScreenIconEl.classList.add('vss-fullscreen');\n }\n };\n\n return FullscreenToggle;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FullscreenToggle);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/components/control-bar/fullscreen-toggle.js?"); | |
| 3713 | - | |
| 3714 | -/***/ }), | |
| 3715 | - | |
| 3716 | -/***/ "./src/components/control-bar/icon/loading.svg": | |
| 3717 | -/*!*****************************************************!*\ | |
| 3718 | - !*** ./src/components/control-bar/icon/loading.svg ***! | |
| 3719 | - \*****************************************************/ | |
| 3720 | -/*! exports provided: default */ | |
| 3721 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3722 | - | |
| 3723 | -"use strict"; | |
| 3724 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIKICAgICBjbGFzcz0idWlsLWRlZmF1bHQiPgogICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9Im5vbmUiIGNsYXNzPSJiayIvPgogICAgPHJlY3QgeD0iNDciIHk9IjQwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyMCIgcng9IjUiIHJ5PSI1IiBmaWxsPSIjZmZmZmZmIiB0cmFuc2Zvcm09InJvdGF0ZSgwIDUwIDUwKSB0cmFuc2xhdGUoMCAtMzApIj4KICAgICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJvcGFjaXR5IiBmcm9tPSIxIiB0bz0iMCIgZHVyPSIxcyIgYmVnaW49Ii0xcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiLz4KICAgIDwvcmVjdD4KICAgIDxyZWN0IHg9IjQ3IiB5PSI0MCIgd2lkdGg9IjYiIGhlaWdodD0iMjAiIHJ4PSI1IiByeT0iNSIgZmlsbD0iI2ZmZmZmZiIKICAgICAgICAgIHRyYW5zZm9ybT0icm90YXRlKDMwIDUwIDUwKSB0cmFuc2xhdGUoMCAtMzApIj4KICAgICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJvcGFjaXR5IiBmcm9tPSIxIiB0bz0iMCIgZHVyPSIxcyIgYmVnaW49Ii0wLjkxNjY2NjY2NjY2NjY2NjZzIgogICAgICAgICAgICAgICAgIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIi8+CiAgICA8L3JlY3Q+CiAgICA8cmVjdCB4PSI0NyIgeT0iNDAiIHdpZHRoPSI2IiBoZWlnaHQ9IjIwIiByeD0iNSIgcnk9IjUiIGZpbGw9IiNmZmZmZmYiCiAgICAgICAgICB0cmFuc2Zvcm09InJvdGF0ZSg2MCA1MCA1MCkgdHJhbnNsYXRlKDAgLTMwKSI+CiAgICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgZnJvbT0iMSIgdG89IjAiIGR1cj0iMXMiIGJlZ2luPSItMC44MzMzMzMzMzMzMzMzMzM0cyIKICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIvPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0iNDciIHk9IjQwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyMCIgcng9IjUiIHJ5PSI1IiBmaWxsPSIjZmZmZmZmIgogICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoOTAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCkiPgogICAgICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9Im9wYWNpdHkiIGZyb209IjEiIHRvPSIwIiBkdXI9IjFzIiBiZWdpbj0iLTAuNzVzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIvPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0iNDciIHk9IjQwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyMCIgcng9IjUiIHJ5PSI1IiBmaWxsPSIjZmZmZmZmIgogICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDUwIDUwKSB0cmFuc2xhdGUoMCAtMzApIj4KICAgICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJvcGFjaXR5IiBmcm9tPSIxIiB0bz0iMCIgZHVyPSIxcyIgYmVnaW49Ii0wLjY2NjY2NjY2NjY2NjY2NjZzIgogICAgICAgICAgICAgICAgIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIi8+CiAgICA8L3JlY3Q+CiAgICA8cmVjdCB4PSI0NyIgeT0iNDAiIHdpZHRoPSI2IiBoZWlnaHQ9IjIwIiByeD0iNSIgcnk9IjUiIGZpbGw9IiNmZmZmZmYiCiAgICAgICAgICB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCkiPgogICAgICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9Im9wYWNpdHkiIGZyb209IjEiIHRvPSIwIiBkdXI9IjFzIiBiZWdpbj0iLTAuNTgzMzMzMzMzMzMzMzMzNHMiCiAgICAgICAgICAgICAgICAgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiLz4KICAgIDwvcmVjdD4KICAgIDxyZWN0IHg9IjQ3IiB5PSI0MCIgd2lkdGg9IjYiIGhlaWdodD0iMjAiIHJ4PSI1IiByeT0iNSIgZmlsbD0iI2ZmZmZmZiIKICAgICAgICAgIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA1MCkgdHJhbnNsYXRlKDAgLTMwKSI+CiAgICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgZnJvbT0iMSIgdG89IjAiIGR1cj0iMXMiIGJlZ2luPSItMC41cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiLz4KICAgIDwvcmVjdD4KICAgIDxyZWN0IHg9IjQ3IiB5PSI0MCIgd2lkdGg9IjYiIGhlaWdodD0iMjAiIHJ4PSI1IiByeT0iNSIgZmlsbD0iI2ZmZmZmZiIKICAgICAgICAgIHRyYW5zZm9ybT0icm90YXRlKDIxMCA1MCA1MCkgdHJhbnNsYXRlKDAgLTMwKSI+CiAgICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgZnJvbT0iMSIgdG89IjAiIGR1cj0iMXMiIGJlZ2luPSItMC40MTY2NjY2NjY2NjY2NjY3cyIKICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIvPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0iNDciIHk9IjQwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyMCIgcng9IjUiIHJ5PSI1IiBmaWxsPSIjZmZmZmZmIgogICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoMjQwIDUwIDUwKSB0cmFuc2xhdGUoMCAtMzApIj4KICAgICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJvcGFjaXR5IiBmcm9tPSIxIiB0bz0iMCIgZHVyPSIxcyIgYmVnaW49Ii0wLjMzMzMzMzMzMzMzMzMzMzNzIgogICAgICAgICAgICAgICAgIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIi8+CiAgICA8L3JlY3Q+CiAgICA8cmVjdCB4PSI0NyIgeT0iNDAiIHdpZHRoPSI2IiBoZWlnaHQ9IjIwIiByeD0iNSIgcnk9IjUiIGZpbGw9IiNmZmZmZmYiCiAgICAgICAgICB0cmFuc2Zvcm09InJvdGF0ZSgyNzAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCkiPgogICAgICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9Im9wYWNpdHkiIGZyb209IjEiIHRvPSIwIiBkdXI9IjFzIiBiZWdpbj0iLTAuMjVzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIvPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0iNDciIHk9IjQwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyMCIgcng9IjUiIHJ5PSI1IiBmaWxsPSIjZmZmZmZmIgogICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoMzAwIDUwIDUwKSB0cmFuc2xhdGUoMCAtMzApIj4KICAgICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJvcGFjaXR5IiBmcm9tPSIxIiB0bz0iMCIgZHVyPSIxcyIgYmVnaW49Ii0wLjE2NjY2NjY2NjY2NjY2NjY2cyIKICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIvPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0iNDciIHk9IjQwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyMCIgcng9IjUiIHJ5PSI1IiBmaWxsPSIjZmZmZmZmIgogICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoMzMwIDUwIDUwKSB0cmFuc2xhdGUoMCAtMzApIj4KICAgICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJvcGFjaXR5IiBmcm9tPSIxIiB0bz0iMCIgZHVyPSIxcyIgYmVnaW49Ii0wLjA4MzMzMzMzMzMzMzMzMzMzcyIKICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIvPgogICAgPC9yZWN0Pgo8L3N2Zz4K\");\n\n//# sourceURL=webpack://WebMediaPlayer/./src/components/control-bar/icon/loading.svg?"); | |
| 3725 | - | |
| 3726 | -/***/ }), | |
| 3727 | - | |
| 3728 | -/***/ "./src/components/control-bar/play-btn.js": | |
| 3729 | -/*!************************************************!*\ | |
| 3730 | - !*** ./src/components/control-bar/play-btn.js ***! | |
| 3731 | - \************************************************/ | |
| 3732 | -/*! exports provided: default */ | |
| 3733 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3734 | - | |
| 3735 | -"use strict"; | |
| 3736 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/dom */ \"./src/utils/dom.js\");\n/**\n * fullscreen-toggle.js\n */\n\n\nvar Snapshot = /*#__PURE__*/function () {\n function Snapshot(self, dom) {\n var _this = this;\n\n this.boxDom = self.boxDom;\n this.isFill = false;\n this.isPlaying = false;\n this.fillModeBtnEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: 'vss-control-btn vss-control-play-btn vss-pointer'\n }, {});\n this.fillModeIconEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('span', {\n className: 'vssfont vss-play'\n }, {\n title: '播放'\n });\n this.fillModeBtnEl.appendChild(this.fillModeIconEl);\n dom.appendChild(this.fillModeBtnEl);\n\n this.fillModeBtnEl.onclick = function (e) {\n console.log(_this.isPlaying);\n\n if (self.url) {\n if (_this.isPlaying) {\n console.log('暂停');\n _this.isPlaying = false;\n _this.fillModeIconEl.title = '播放';\n\n _this.fillModeIconEl.classList.remove('vss-pause');\n\n _this.fillModeIconEl.classList.add('vss-play');\n\n _this.pause(self);\n } else {\n console.log('播放');\n _this.isPlaying = true;\n _this.fillModeIconEl.title = '暂停';\n\n _this.fillModeIconEl.classList.remove('vss-play');\n\n _this.fillModeIconEl.classList.add('vss-pause');\n\n var ext = self.url.substr(self.url.lastIndexOf('.') + 1);\n\n if (ext) {\n var extLowerCase = ext.toLowerCase();\n\n if (extLowerCase.indexOf('ts') > -1) {\n self.h5Video.play();\n return;\n }\n }\n\n _this.play(self);\n }\n } else {\n console.log('url is empty');\n }\n };\n\n self.on('status', function (status) {\n if (status === 100) {\n _this.isPlaying = true;\n _this.fillModeIconEl.title = '暂停';\n\n _this.fillModeIconEl.classList.remove('vss-play');\n\n _this.fillModeIconEl.classList.add('vss-pause');\n }\n });\n } // 播放\n\n\n var _proto = Snapshot.prototype;\n\n _proto.play = function play(self) {\n self.play(self.url, 1, self.seekTimeSecs);\n } // 暂停\n ;\n\n _proto.pause = function pause(self) {\n self.pause();\n };\n\n return Snapshot;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Snapshot);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/components/control-bar/play-btn.js?"); | |
| 3737 | - | |
| 3738 | -/***/ }), | |
| 3739 | - | |
| 3740 | -/***/ "./src/components/control-bar/resolution-ratio.js": | |
| 3741 | -/*!********************************************************!*\ | |
| 3742 | - !*** ./src/components/control-bar/resolution-ratio.js ***! | |
| 3743 | - \********************************************************/ | |
| 3744 | -/*! exports provided: default */ | |
| 3745 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3746 | - | |
| 3747 | -"use strict"; | |
| 3748 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/dom */ \"./src/utils/dom.js\");\n/**\n * resolution-ratio.js\n */\n\n\nvar Snapshot = function Snapshot(self, dom) {\n var _this = this;\n\n this.boxDom = self.boxDom;\n this.isFill = false;\n this.isPlaying = false;\n this.fillModeBtnEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: 'vss-item-box'\n }, {});\n this.fillModeIconEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('span', {\n className: ''\n }, {}, '');\n this.fillModeBtnEl.appendChild(this.fillModeIconEl);\n dom.appendChild(this.fillModeBtnEl);\n self.on('resolutionRatio', function (data) {\n if (data.code && data.width && data.height) {\n _this.fillModeIconEl.innerText = \"LIVE [\" + data.code + \":\" + data.width + \"\\xD7\" + data.height + \"]\";\n } else {\n _this.fillModeIconEl.innerText = '';\n }\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Snapshot);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/components/control-bar/resolution-ratio.js?"); | |
| 3749 | - | |
| 3750 | -/***/ }), | |
| 3751 | - | |
| 3752 | -/***/ "./src/components/control-bar/snapshot.js": | |
| 3753 | -/*!************************************************!*\ | |
| 3754 | - !*** ./src/components/control-bar/snapshot.js ***! | |
| 3755 | - \************************************************/ | |
| 3756 | -/*! exports provided: default */ | |
| 3757 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3758 | - | |
| 3759 | -"use strict"; | |
| 3760 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/dom */ \"./src/utils/dom.js\");\n/**\n * fullscreen-toggle.js\n */\n\n\nvar Snapshot = /*#__PURE__*/function () {\n function Snapshot(self, dom) {\n var _this = this;\n\n this.boxDom = self.boxDom;\n this.h5Video = self.h5Video;\n this.canvasVideo = self.screenCanvas.canvas;\n this.isFill = false;\n this.fillModeBtnEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: 'vss-control-btn vss-control-snap-btn vss-pointer'\n }, {});\n this.fillModeIconEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('span', {\n className: 'vssfont vss-snapshot'\n }, {\n title: '快照'\n });\n this.fillModeBtnEl.appendChild(this.fillModeIconEl);\n dom.appendChild(this.fillModeBtnEl);\n\n this.fillModeBtnEl.onclick = function (e) {\n _this.snapshotDown(self);\n };\n } // 快照下载\n\n\n var _proto = Snapshot.prototype;\n\n _proto.snapshotDown = function snapshotDown(self) {\n // if (window.VssPlayerWasmKits) {\n // if (self.playerInstance) {\n // self.playerInstance.snapshot();\n // }\n // } else {\n // self.InitWasmModule();\n // this.snapshotDown(self);\n // }\n var newCanvas = null;\n var img = document.createElement('img');\n var dataURL = null;\n\n if (this.h5Video) {\n newCanvas = document.createElement('canvas'); //canvas.getContext(\"2d\").scale(ratio, ratio);\n\n newCanvas.width = this.h5Video.videoWidth; //offsetWidth * ratio;\n\n newCanvas.height = this.h5Video.videoHeight; //offsetHeight * ratio;\n\n newCanvas.getContext('2d').drawImage(this.h5Video, 0, 0, newCanvas.width, newCanvas.height); //截\n\n dataURL = newCanvas.toDataURL('image/png'); //将图片转成base64格式\n\n img.src = dataURL;\n img.width = this.h5Video.clientWidth; //控制截出来的图片宽的大小\n\n img.height = this.h5Video.clientHeight; //控制截出来的图片高的大小\n }\n\n if (dataURL === 'data:,') {\n dataURL = this.canvasVideo.toDataURL('image/png'); //将图片转成base64格式\n\n img.src = dataURL;\n img.width = this.canvasVideo.width; //控制截出来的图片宽的大小\n\n img.height = this.canvasVideo.height; //控制截出来的图片高的大小\n\n img.style.border = '1px solid #333333'; //控制截出来的图片边框的样式\n }\n\n if (!dataURL) {\n return false;\n }\n\n var downloadFileA = document.createElement('a');\n downloadFileA.href = dataURL;\n downloadFileA.download = 'snapshot.jpg';\n downloadFileA.rel = 'noopener noreferrer';\n downloadFileA.click();\n };\n\n return Snapshot;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Snapshot);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/components/control-bar/snapshot.js?"); | |
| 3761 | - | |
| 3762 | -/***/ }), | |
| 3763 | - | |
| 3764 | -/***/ "./src/components/control-bar/stop-btn.js": | |
| 3765 | -/*!************************************************!*\ | |
| 3766 | - !*** ./src/components/control-bar/stop-btn.js ***! | |
| 3767 | - \************************************************/ | |
| 3768 | -/*! exports provided: default */ | |
| 3769 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3770 | - | |
| 3771 | -"use strict"; | |
| 3772 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/dom */ \"./src/utils/dom.js\");\n/* harmony import */ var _utils_obj__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/obj */ \"./src/utils/obj.js\");\n/**\n * fullscreen-toggle.js\n */\n\n\n\nvar FullscreenToggle = function FullscreenToggle(self, dom) {\n var _this = this;\n\n this.boxDom = self.boxDom;\n this.isFill = false;\n this.isPlaying = false;\n this.fillModeBtnEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: 'vss-control-btn vss-control-stop-btn vss-pointer'\n }, {});\n this.fillModeIconEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('span', {\n className: 'vssfont vss-stop'\n }, {\n title: '停止'\n });\n this.fillModeBtnEl.appendChild(this.fillModeIconEl);\n dom.appendChild(this.fillModeBtnEl);\n\n this.fillModeBtnEl.onclick = function (e) {\n if (_this.isPlaying) {\n // 按比例显示\n _this.isPlaying = false;\n self.callbackFunc('stop');\n self.stop(); // 改变播放按钮的状态\n // ...\n } else {}\n };\n\n self.on('status', function (status) {\n if (status === 100) {\n _this.isPlaying = true;\n } else {\n _this.isPlaying = false;\n }\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FullscreenToggle);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/components/control-bar/stop-btn.js?"); | |
| 3773 | - | |
| 3774 | -/***/ }), | |
| 3775 | - | |
| 3776 | -/***/ "./src/components/control-bar/time-schedule.js": | |
| 3777 | -/*!*****************************************************!*\ | |
| 3778 | - !*** ./src/components/control-bar/time-schedule.js ***! | |
| 3779 | - \*****************************************************/ | |
| 3780 | -/*! exports provided: default */ | |
| 3781 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3782 | - | |
| 3783 | -"use strict"; | |
| 3784 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/dom */ \"./src/utils/dom.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils */ \"./src/utils/index.js\");\n/**\n * 时间进度条\n * time-schedule.js\n */\n\n\n\nvar TimeSchedule = /*#__PURE__*/function () {\n function TimeSchedule(self, dom) {\n var _this = this;\n\n this.boxDom = self.boxDom;\n this.isFill = false;\n this.isPlaying = false;\n this.duration = 0;\n this.isMousedown = false;\n this.isMousemove = false;\n this.mousedownCursor = 0;\n this.show = false;\n this.timeBoxEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: 'vss-item-box vss-time-box vss-hide'\n }, {});\n this.timeScheduleEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: 'vss-time-schedule'\n }, {});\n this.leftTimeEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: 'vss-time-left-text'\n }, {}, '00:00:00');\n this.rightTimeEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: 'vss-time-right-text'\n }, {}, '00:00:00');\n this.timeBoxEl.appendChild(this.leftTimeEl);\n this.timeBoxEl.appendChild(this.timeScheduleEl);\n this.timeBoxEl.appendChild(this.rightTimeEl);\n this.timeTrackOutEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: 'vss-time-track-out'\n }, {});\n this.timeTrackEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: 'vss-time-track'\n }, {});\n this.timeProgressEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: 'vss-time-progress'\n }, {});\n this.timeProgressButtonBoxEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: 'vss-time-button-wrapper'\n }, {});\n this.timeProgressButtonEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: 'vss-time-button-wrapper_button'\n }, {});\n this.timeProgressTipEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('span', {\n className: 'vss-time-button-wrapper_tip vss-hide'\n }, {});\n this.timeProgressButtonBoxEl.appendChild(this.timeProgressButtonEl);\n this.timeProgressButtonBoxEl.appendChild(this.timeProgressTipEl);\n this.timeTrackEl.appendChild(this.timeProgressEl);\n this.timeTrackOutEl.appendChild(this.timeTrackEl);\n this.timeTrackOutEl.appendChild(this.timeProgressButtonBoxEl);\n this.timeScheduleEl.appendChild(this.timeTrackOutEl);\n dom.appendChild(this.timeBoxEl); // 点击时间轨道\n\n this.timeTrackEl.onmousedown = function (e) {\n console.log(99);\n e = e || window.event;\n e.stopPropagation();\n\n if (e.button !== 0) {\n return false;\n } // 先暂停\n // self.pause();\n\n\n if (_this.isPlaying) {\n var pos = e.layerX;\n var width = _this.timeTrackEl.offsetWidth;\n var left = pos / width * 100;\n\n if (left <= 0) {\n left = 0;\n } else if (left >= 100) {\n left = 100;\n }\n\n var currentTime = parseInt(_this.duration * (pos / width) * 1000) / 1000;\n _this.leftTimeEl.innerText = Object(_utils__WEBPACK_IMPORTED_MODULE_1__[\"ChangeHourMinutestr\"])(currentTime * 1000);\n _this.timeProgressTipEl.innerText = Object(_utils__WEBPACK_IMPORTED_MODULE_1__[\"ChangeHourMinutestr\"])(currentTime * 1000);\n\n if (!_this.isMousemove) {\n _this.timeProgressEl.style.width = left + \"%\";\n _this.timeProgressButtonBoxEl.style.left = left + \"%\";\n }\n\n document.onmouseup = function (e) {\n _this.seekToPre(self, left);\n\n e.stopPropagation(); // 继续播放\n // self.continuePlay();\n\n document.onmouseup = null;\n return false;\n };\n\n return false;\n }\n\n return false;\n };\n\n this.timeProgressButtonEl.onmousedown = function (e) {\n e = e || window.event;\n e.stopPropagation();\n\n if (e.button !== 0) {\n return false;\n } // 先暂停\n // self.pause();\n\n\n _this.isMousedown = true;\n _this.mousedownCursor = _this.getCursorPositionX(e);\n var timeTrackWidth = _this.timeTrackEl.offsetWidth;\n var left = 0;\n var buttonBoxLeft = parseFloat(_this.timeProgressButtonBoxEl.style.left || 0); // 鼠标移动事件\n\n document.onmousemove = Object(_utils__WEBPACK_IMPORTED_MODULE_1__[\"throttle\"])(function (e) {\n e.stopPropagation();\n _this.isMousemove = true;\n\n var posX = _this.getCursorPositionX(e);\n\n var diffX = posX - _this.mousedownCursor;\n var leftToPx = buttonBoxLeft / 100 * timeTrackWidth;\n leftToPx = leftToPx + diffX;\n\n if (leftToPx >= timeTrackWidth) {\n leftToPx = timeTrackWidth;\n } else if (leftToPx <= 0) {\n leftToPx = 0;\n }\n\n var pxToPer = leftToPx / timeTrackWidth;\n left = pxToPer * 100;\n var currentTime = parseInt(_this.duration * pxToPer * 1000) / 1000;\n _this.timeProgressEl.style.width = left + \"%\";\n _this.leftTimeEl.innerText = Object(_utils__WEBPACK_IMPORTED_MODULE_1__[\"ChangeHourMinutestr\"])(currentTime * 1000);\n _this.timeProgressButtonBoxEl.style.left = left + \"%\";\n _this.timeProgressTipEl.innerText = Object(_utils__WEBPACK_IMPORTED_MODULE_1__[\"ChangeHourMinutestr\"])(currentTime * 1000);\n\n _this.seekToPre(self, left);\n }, 25);\n\n document.onmouseup = function (e) {\n e.stopPropagation();\n _this.isMousedown = false;\n _this.isMousemove = false;\n var buttonBoxLeft = parseFloat(_this.timeProgressButtonBoxEl.style.left || 0);\n\n _this.seekToPre(self, buttonBoxLeft); // 继续播放\n // self.continuePlay();\n\n\n document.onmousemove = null;\n document.onmouseup = null;\n return false;\n };\n };\n\n self.on('timeSchedule', function (data) {\n if (!_this.show) {\n _this.timeBoxEl.classList.remove('vss-hide');\n }\n\n self.emit('status', 100);\n _this.isPlaying = true;\n _this.duration = data.duration;\n\n _this.timeProgressTipEl.classList.remove('vss-hide');\n\n _this.leftTimeEl.innerText = Object(_utils__WEBPACK_IMPORTED_MODULE_1__[\"ChangeHourMinutestr\"])(data.currentTime * 1000);\n _this.rightTimeEl.innerText = Object(_utils__WEBPACK_IMPORTED_MODULE_1__[\"ChangeHourMinutestr\"])(data.duration * 1000);\n _this.timeProgressTipEl.innerText = Object(_utils__WEBPACK_IMPORTED_MODULE_1__[\"ChangeHourMinutestr\"])(data.currentTime * 1000);\n\n if (!_this.isMousemove) {\n _this.timeProgressEl.style.width = data.currentTime * 1000 / (data.duration * 1000) * 100 + \"%\";\n _this.timeProgressButtonBoxEl.style.left = data.currentTime * 1000 / (data.duration * 1000) * 100 + \"%\";\n }\n });\n self.on('timeended', function (data) {\n _this.isPlaying = false;\n\n _this.timeProgressTipEl.classList.add('vss-hide');\n\n _this.leftTimeEl.innerText = Object(_utils__WEBPACK_IMPORTED_MODULE_1__[\"ChangeHourMinutestr\"])(data.currentTime * 1000);\n _this.rightTimeEl.innerText = Object(_utils__WEBPACK_IMPORTED_MODULE_1__[\"ChangeHourMinutestr\"])(data.duration * 1000);\n _this.timeProgressTipEl.innerText = Object(_utils__WEBPACK_IMPORTED_MODULE_1__[\"ChangeHourMinutestr\"])(data.currentTime * 1000);\n\n if (!_this.isMousemove) {\n _this.timeProgressEl.style.width = data.currentTime * 1000 / (data.duration * 1000) * 100 + \"%\";\n _this.timeProgressButtonBoxEl.style.left = data.currentTime * 1000 / (data.duration * 1000) * 100 + \"%\";\n }\n });\n }\n\n var _proto = TimeSchedule.prototype;\n\n _proto.getCursorPositionX = function getCursorPositionX(e) {\n var posx = 0;\n\n if (!e) {\n e = window.event;\n }\n\n if (e.pageX || e.pageY) {\n posx = e.pageX;\n } else if (e.clientX || e.clientY) {\n posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\n }\n\n return posx;\n }\n /**\n * 进度条跳转到百分比\n * @param self\n * @param percentage\n */\n ;\n\n _proto.seekToPre = function seekToPre(self, percentage) {\n self.seekToPercent(percentage);\n };\n\n return TimeSchedule;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (TimeSchedule);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/components/control-bar/time-schedule.js?"); | |
| 3785 | - | |
| 3786 | -/***/ }), | |
| 3787 | - | |
| 3788 | -/***/ "./src/components/export-message/index.js": | |
| 3789 | -/*!************************************************!*\ | |
| 3790 | - !*** ./src/components/export-message/index.js ***! | |
| 3791 | - \************************************************/ | |
| 3792 | -/*! exports provided: default */ | |
| 3793 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3794 | - | |
| 3795 | -"use strict"; | |
| 3796 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ExportMessage; });\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/dom */ \"./src/utils/dom.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/common */ \"./src/common/common.js\");\n/**\n * off-screen-canvas\n */\n\n\n\nvar ExportMessage = /*#__PURE__*/function () {\n function ExportMessage(self, dom) {\n var _this = this;\n\n this.Timer = null;\n this.exportMessageDom = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: \"vss-export-message-box\"\n });\n dom.appendChild(this.exportMessageDom);\n this.messageLists = [];\n this.index = 0;\n self.on('exportMessage', function (data) {\n _this.messageLists[_this.index] = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: \"vss-export-message-item\"\n }, {}, \"\" + data.message);\n\n _this.exportMessageDom.appendChild(_this.messageLists[_this.index]);\n\n if (data.duration > 0) {\n _this.removeChildDom(_this.index, data.duration);\n }\n\n data.callback(_this.index);\n _this.index++;\n });\n self.on('clearMessage', function (index) {\n if (index >= 0) {\n if (_this.messageLists[index]) {\n _this.exportMessageDom.removeChild(_this.messageLists[index]);\n\n _this.messageLists.splice(index, 1);\n }\n } else {\n _this.exportMessageDom.innerHTML = '';\n _this.messageLists = [];\n }\n });\n }\n\n var _proto = ExportMessage.prototype;\n\n _proto.removeChildDom = function removeChildDom(index, duration) {\n var _this2 = this;\n\n setTimeout(function () {\n if (_this2.messageLists[index]) {\n _this2.exportMessageDom.removeChild(_this2.messageLists[index]);\n\n _this2.messageLists.splice(index, 1);\n }\n }, duration);\n };\n\n return ExportMessage;\n}();\n\n\n\n//# sourceURL=webpack://WebMediaPlayer/./src/components/export-message/index.js?"); | |
| 3797 | - | |
| 3798 | -/***/ }), | |
| 3799 | - | |
| 3800 | -/***/ "./src/components/index.js": | |
| 3801 | -/*!*********************************!*\ | |
| 3802 | - !*** ./src/components/index.js ***! | |
| 3803 | - \*********************************/ | |
| 3804 | -/*! exports provided: default */ | |
| 3805 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3806 | - | |
| 3807 | -"use strict"; | |
| 3808 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return element; });\n/* harmony import */ var _context_menu__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./context-menu */ \"./src/components/context-menu/index.js\");\n/* harmony import */ var _init_message__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./init-message */ \"./src/components/init-message/index.js\");\n/* harmony import */ var _export_message__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./export-message */ \"./src/components/export-message/index.js\");\n/* harmony import */ var _osd_message__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./osd-message */ \"./src/components/osd-message/index.js\");\n\n\n\n\n\nvar element = /*#__PURE__*/function () {\n function element(self, dom, _ref) {\n var _this = this;\n\n var height = _ref.height,\n isFill = _ref.isFill;\n\n if (!dom) {\n return '';\n }\n\n if (height) {\n dom.style.position = 'relative';\n dom.style.backgroundColor = '#000000';\n dom.style.overflow = 'hidden';\n dom.style.paddingTop = '56.25%';\n } else {\n dom.style.position = 'relative';\n dom.style.backgroundColor = '#000000';\n dom.style.width = '100%';\n dom.style.height = '100%';\n dom.style.overflow = 'hidden';\n }\n\n dom.classList.add('vss-shade');\n dom.classList.add('vss-player');\n this.elDom = dom;\n this.isFill = isFill;\n this.videoEl = null;\n this.videoEl = document.createElement('video');\n this.videoEl.style.width = '100%';\n this.videoEl.style.height = '100%';\n this.videoEl.style.position = 'absolute';\n this.videoEl.style.top = '0';\n this.videoEl.style.left = '0';\n this.videoEl.style.background = '#000000';\n this.elDom.appendChild(this.videoEl);\n this.fill(); // this.videoEl.setAttribute('controls', 'controls');\n // this.videoEl.setAttribute('webkit-playsinline', 'true');\n // this.videoEl.setAttribute('playsinline', 'true');\n // this.videoEl.style.width = '100%';\n // this.videoEl.style.height = '100%';\n // this.videoBoxEl.appendChild(this.videoEl);\n\n this.InitMessage = new _init_message__WEBPACK_IMPORTED_MODULE_1__[\"default\"](self, dom);\n this.ExportMessage = new _export_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"](self, dom);\n this.OsdMessage = new _osd_message__WEBPACK_IMPORTED_MODULE_3__[\"default\"](self, dom); // // 创建右键菜单\n // this.ContextMenu = new ContextMenu(self, dom);\n //\n // this.elDom.oncontextmenu = (e) => {\n // e = e || window.event;\n // // 屏蔽样式\n // e.preventDefault ? e.preventDefault() : (e.returnValue = false);\n // // 获取坐标\n // let x = e.clientX; // 视口的位置\n // let y = e.clientY;\n //\n // // 显示菜单\n //\n // this.ContextMenu.show(x, y);\n //\n // document.onmousedown = () => {\n // this.ContextMenu.hide();\n // };\n // document.onmouseup = () => {\n // document.onmousedown = null;\n // document.onmouseup = null;\n // };\n //\n // return false;\n // };\n\n self.on('play', function () {});\n self.on('setfill', function () {\n _this.isFill = true;\n\n _this.fill();\n });\n }\n\n var _proto = element.prototype;\n\n _proto.fill = function fill() {\n if (this.videoEl && this.isFill) {\n this.videoEl.style.objectFit = 'fill';\n } else {\n this.videoEl.style.objectFit = '';\n }\n };\n\n return element;\n}();\n\n\n\n//# sourceURL=webpack://WebMediaPlayer/./src/components/index.js?"); | |
| 3809 | - | |
| 3810 | -/***/ }), | |
| 3811 | - | |
| 3812 | -/***/ "./src/components/init-message/index.js": | |
| 3813 | -/*!**********************************************!*\ | |
| 3814 | - !*** ./src/components/init-message/index.js ***! | |
| 3815 | - \**********************************************/ | |
| 3816 | -/*! exports provided: default */ | |
| 3817 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3818 | - | |
| 3819 | -"use strict"; | |
| 3820 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/dom */ \"./src/utils/dom.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/common */ \"./src/common/common.js\");\n/**\n * off-screen-canvas\n */\n\n\n\nvar offscreenCanvas = function offscreenCanvas(self, dom) {\n var _this = this;\n\n this.Timer = null;\n this.messageBoxDom = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: \"vss-message-box\"\n });\n dom.appendChild(this.messageBoxDom);\n self.on('message', function (data) {\n _common_common__WEBPACK_IMPORTED_MODULE_1__[\"setMessage\"](data);\n\n _this.messageBoxDom.appendChild(Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: \"vss-message-item\"\n }, {}, \"[\\u64AD\\u653E\\u5668]:\" + data.name));\n });\n self.on('play', function (data) {\n _this.Timer = setTimeout(function () {\n // 隐藏\n _this.messageBoxDom.classList.add('vss-message-hide');\n\n clearTimeout(_this.Timer);\n }, 5000);\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (offscreenCanvas);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/components/init-message/index.js?"); | |
| 3821 | - | |
| 3822 | -/***/ }), | |
| 3823 | - | |
| 3824 | -/***/ "./src/components/loading-logo/index.js": | |
| 3825 | -/*!**********************************************!*\ | |
| 3826 | - !*** ./src/components/loading-logo/index.js ***! | |
| 3827 | - \**********************************************/ | |
| 3828 | -/*! exports provided: default */ | |
| 3829 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3830 | - | |
| 3831 | -"use strict"; | |
| 3832 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/dom */ \"./src/utils/dom.js\");\n/* harmony import */ var _static_loading_logo_gif__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../static/loading-logo.gif */ \"./src/static/loading-logo.gif\");\n/* harmony import */ var _static_loading_logo_png__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../static/loading-logo.png */ \"./src/static/loading-logo.png\");\n/**\n * 动态logo动画\n * loading-logo\n */\n\n\n\n\nvar LoadingLogo = /*#__PURE__*/function () {\n function LoadingLogo(self, dom) {\n var _this = this;\n\n this.loadingLogoDom = this.createEl();\n dom.appendChild(this.loadingLogoDom);\n this.boxDom = dom;\n self.on('status', function (status) {\n _this.open(status);\n });\n }\n\n var _proto = LoadingLogo.prototype;\n\n _proto.createEl = function createEl() {\n var el = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: \"vss-mask vss-show\"\n });\n\n this.center = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: 'vss-mask-center'\n });\n this.loadingLogoImg = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('img', {\n className: 'vss-loading-logo-img'\n }, {\n src: _static_loading_logo_png__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n });\n this.loadingLogoText = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('span', {\n className: 'vss-loading-logo-text'\n }, {}, '成都视开信息科技');\n\n if (true) {\n this.center.appendChild(this.loadingLogoImg);\n this.center.appendChild(this.loadingLogoText);\n }\n\n el.appendChild(this.center);\n return el;\n };\n\n _proto.open = function open(status) {\n if (this.loadingLogoDom) {\n if (status === 99) {\n this.hide();\n }\n }\n };\n\n _proto.show = function show() {\n this.loadingLogoDom.classList.remove('vss-hide');\n this.loadingLogoDom.classList.add('vss-show');\n };\n\n _proto.hide = function hide() {\n this.loadingLogoDom.classList.remove('vss-show');\n this.loadingLogoDom.classList.add('vss-hide');\n };\n\n return LoadingLogo;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (LoadingLogo);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/components/loading-logo/index.js?"); | |
| 3833 | - | |
| 3834 | -/***/ }), | |
| 3835 | - | |
| 3836 | -/***/ "./src/components/loading/index.js": | |
| 3837 | -/*!*****************************************!*\ | |
| 3838 | - !*** ./src/components/loading/index.js ***! | |
| 3839 | - \*****************************************/ | |
| 3840 | -/*! exports provided: default */ | |
| 3841 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3842 | - | |
| 3843 | -"use strict"; | |
| 3844 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/dom */ \"./src/utils/dom.js\");\n/* harmony import */ var _utils_obj__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/obj */ \"./src/utils/obj.js\");\n/* harmony import */ var _control_bar_icon_loading_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../control-bar/icon/loading.svg */ \"./src/components/control-bar/icon/loading.svg\");\n/**\n * loading\n */\n\n\n\n\nvar Loading = /*#__PURE__*/function () {\n function Loading(self, dom) {\n var _this = this;\n\n this.loadingEl = this.createEl();\n dom.appendChild(this.loadingEl);\n self.on('status', function (status) {\n _this.open(status);\n });\n }\n\n var _proto = Loading.prototype;\n\n _proto.createEl = function createEl(tag, props, attributes) {\n if (props === void 0) {\n props = {};\n }\n\n if (attributes === void 0) {\n attributes = {};\n }\n\n tag = 'div';\n props = Object(_utils_obj__WEBPACK_IMPORTED_MODULE_1__[\"assign\"])({\n className: this.buildCSSClass()\n }, props); // 为元素添加属性\n\n attributes = Object(_utils_obj__WEBPACK_IMPORTED_MODULE_1__[\"assign\"])({\n type: 'loading'\n }, attributes);\n\n var el = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])(tag, props, attributes);\n\n this.center = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: 'vss-loading-center'\n }, {\n 'aria-type': 'center'\n });\n this.loading = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('img', {\n className: 'vss-loading-img'\n }, {\n src: _control_bar_icon_loading_svg__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n });\n this.loadingText = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('span', {\n className: 'vss-loading-text'\n }, {}, '视频加载中...');\n this.center.appendChild(this.loading); // this.center.appendChild(this.loadingText);\n\n el.appendChild(this.center);\n return el;\n };\n\n _proto.buildCSSClass = function buildCSSClass() {\n return \"vss-loading vss-hide\";\n };\n\n _proto.open = function open(status) {\n if (this.loadingEl) {\n if (status === 100) {\n this.loadingText.innerHTML = '播放中...';\n this.hide();\n } else if (status === 99) {\n this.hide();\n this.loadingText.innerHTML = '已停止';\n } else if (status === 0) {\n //连接中\n this.loadingText.innerHTML = '连接中...';\n this.show();\n } else if (status === 1) {\n //连接成功\n this.loadingText.innerHTML = '视频加载中...';\n this.hide();\n } else if (status === 2) {\n this.loadingText.innerHTML = '状态为2';\n this.show();\n } else {\n this.loadingText.innerHTML = '未知状态:' + status;\n this.show();\n }\n }\n };\n\n _proto.show = function show() {\n this.loadingEl.classList.remove('vss-hide');\n this.loadingEl.classList.add('vss-show');\n };\n\n _proto.hide = function hide() {\n this.loadingEl.classList.remove('vss-show');\n this.loadingEl.classList.add('vss-hide');\n };\n\n return Loading;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Loading);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/components/loading/index.js?"); | |
| 3845 | - | |
| 3846 | -/***/ }), | |
| 3847 | - | |
| 3848 | -/***/ "./src/components/off-screen-canvas/index.js": | |
| 3849 | -/*!***************************************************!*\ | |
| 3850 | - !*** ./src/components/off-screen-canvas/index.js ***! | |
| 3851 | - \***************************************************/ | |
| 3852 | -/*! exports provided: default */ | |
| 3853 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3854 | - | |
| 3855 | -"use strict"; | |
| 3856 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_obj__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/obj */ \"./src/utils/obj.js\");\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/dom */ \"./src/utils/dom.js\");\n\n\n/**\n * off-screen-canvas\n */\n\nvar offscreenCanvas = /*#__PURE__*/function () {\n function offscreenCanvas(self, dom) {\n this.canvas = this.createEl();\n dom.appendChild(this.canvas);\n }\n\n var _proto = offscreenCanvas.prototype;\n\n _proto.createEl = function createEl(tag, props, attributes) {\n if (props === void 0) {\n props = {};\n }\n\n if (attributes === void 0) {\n attributes = {};\n }\n\n tag = 'canvas';\n props = Object(_utils_obj__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])({\n className: \"vss-canvas\"\n }, props);\n return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__[\"createEl\"])(tag, props, attributes);\n };\n\n return offscreenCanvas;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (offscreenCanvas);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/components/off-screen-canvas/index.js?"); | |
| 3857 | - | |
| 3858 | -/***/ }), | |
| 3859 | - | |
| 3860 | -/***/ "./src/components/osd-message/index.js": | |
| 3861 | -/*!*********************************************!*\ | |
| 3862 | - !*** ./src/components/osd-message/index.js ***! | |
| 3863 | - \*********************************************/ | |
| 3864 | -/*! exports provided: default */ | |
| 3865 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3866 | - | |
| 3867 | -"use strict"; | |
| 3868 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return osdMessage; });\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/dom */ \"./src/utils/dom.js\");\n/**\n * off-screen-canvas\n */\n\n\nvar osdMessage = /*#__PURE__*/function () {\n function osdMessage(self, dom) {\n var _this = this;\n\n this.Timer = null;\n this.osdMessageDom = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: \"vss-osd-message-box vss-osd-message-hide\"\n });\n dom.appendChild(this.osdMessageDom);\n this.messageLists = [];\n this.index = 0;\n self.on('osdMessage', function (data, pos, duration) {\n if (!(data instanceof Array)) {\n return false;\n }\n\n if (!data.length) {\n return false;\n }\n\n pos = pos || 'lefttop'; // 先清空\n\n _this.osdMessageDom.innerHTML = '';\n\n _this.osdMessageDom.classList.remove('pos_lefttop');\n\n _this.osdMessageDom.classList.remove('pos_leftbottom');\n\n _this.osdMessageDom.classList.remove('pos_righttop');\n\n _this.osdMessageDom.classList.remove('pos_rightbottom');\n\n _this.osdMessageDom.classList.remove('pos_center');\n\n data.forEach(function (item, index) {\n // if (this.osdMessageDom.children.length >= 5) {\n // this.osdMessageDom.removeChild(this.osdMessageDom.children[0])\n // }\n _this.osdMessageDom.appendChild(Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"createEl\"])('div', {\n className: \"vss-osd-message-item\"\n }, {\n 'data-index': index\n }, item.name + \"\\uFF1A\" + item.value));\n });\n\n _this.osdMessageDom.classList.add(\"pos_\" + pos);\n\n _this.osdMessageDom.classList.remove('vss-osd-message-hide'); // if (duration) {\n // this.removeChildDom(duration)\n // }\n\n });\n }\n\n var _proto = osdMessage.prototype;\n\n _proto.removeChildDom = function removeChildDom(duration) {\n var _this2 = this;\n\n setTimeout(function () {\n _this2.osdMessageDom.classList.add(\"vss-osd-message-hide\");\n\n setTimeout(function () {\n _this2.osdMessageDom.innerHTML = '';\n }, 200);\n }, duration);\n };\n\n return osdMessage;\n}();\n\n\n\n//# sourceURL=webpack://WebMediaPlayer/./src/components/osd-message/index.js?"); | |
| 3869 | - | |
| 3870 | -/***/ }), | |
| 3871 | - | |
| 3872 | -/***/ "./src/components/poster-image/index.js": | |
| 3873 | -/*!**********************************************!*\ | |
| 3874 | - !*** ./src/components/poster-image/index.js ***! | |
| 3875 | - \**********************************************/ | |
| 3876 | -/*! exports provided: default */ | |
| 3877 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3878 | - | |
| 3879 | -"use strict"; | |
| 3880 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_obj__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/obj */ \"./src/utils/obj.js\");\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/dom */ \"./src/utils/dom.js\");\n\n\n/**\n * off-screen-canvas\n */\n\nvar offscreenCanvas = /*#__PURE__*/function () {\n function offscreenCanvas(self, dom) {\n var posterImageBoxEl = this.createEl();\n dom.appendChild(posterImageBoxEl);\n }\n\n var _proto = offscreenCanvas.prototype;\n\n _proto.createEl = function createEl(tag, props, attributes) {\n if (props === void 0) {\n props = {};\n }\n\n if (attributes === void 0) {\n attributes = {};\n }\n\n tag = 'div';\n props = Object(_utils_obj__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])({\n className: \"vss-poster-box\"\n }, props);\n this.posterImageBoxEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__[\"createEl\"])(tag, props, attributes);\n this.posterimageEl = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__[\"createEl\"])('img', {\n className: \"vss-poster-image\"\n }, {});\n this.posterImageBoxEl.appendChild(this.posterimageEl);\n return this.posterImageBoxEl;\n };\n\n _proto.setPosterImage = function setPosterImage(src) {\n this.posterimageEl.setAttribute('src', src);\n };\n\n return offscreenCanvas;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (offscreenCanvas);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/components/poster-image/index.js?"); | |
| 3881 | - | |
| 3882 | -/***/ }), | |
| 3883 | - | |
| 3884 | -/***/ "./src/font/iconfont.css": | |
| 3885 | -/*!*******************************!*\ | |
| 3886 | - !*** ./src/font/iconfont.css ***! | |
| 3887 | - \*******************************/ | |
| 3888 | -/*! no static exports found */ | |
| 3889 | -/***/ (function(module, exports, __webpack_require__) { | |
| 3890 | - | |
| 3891 | -eval("var api = __webpack_require__(/*! ../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = __webpack_require__(/*! !../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./iconfont.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/font/iconfont.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.i, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};\n\n//# sourceURL=webpack://WebMediaPlayer/./src/font/iconfont.css?"); | |
| 3892 | - | |
| 3893 | -/***/ }), | |
| 3894 | - | |
| 3895 | -/***/ "./src/font/iconfont.ttf?t=1650593394582": | |
| 3896 | -/*!***********************************************!*\ | |
| 3897 | - !*** ./src/font/iconfont.ttf?t=1650593394582 ***! | |
| 3898 | - \***********************************************/ | |
| 3899 | -/*! exports provided: default */ | |
| 3900 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3901 | - | |
| 3902 | -"use strict"; | |
| 3903 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:font/ttf;base64,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\");\n\n//# sourceURL=webpack://WebMediaPlayer/./src/font/iconfont.ttf?"); | |
| 3904 | - | |
| 3905 | -/***/ }), | |
| 3906 | - | |
| 3907 | -/***/ "./src/font/iconfont.woff?t=1650593394582": | |
| 3908 | -/*!************************************************!*\ | |
| 3909 | - !*** ./src/font/iconfont.woff?t=1650593394582 ***! | |
| 3910 | - \************************************************/ | |
| 3911 | -/*! exports provided: default */ | |
| 3912 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3913 | - | |
| 3914 | -"use strict"; | |
| 3915 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:font/woff;base64,d09GRgABAAAAAAo0AAsAAAAAELgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADsAAABUIIslek9TLzIAAAFEAAAARAAAAGA8FU1hY21hcAAAAYgAAADEAAACfh3D25tnbHlmAAACTAAABXcAAAjIHpOf3WhlYWQAAAfEAAAALwAAADYgQ8HeaGhlYQAAB/QAAAAeAAAAJAfzA/lobXR4AAAIFAAAABEAAAA8PGkAAGxvY2EAAAgoAAAAIAAAACAP/BHwbWF4cAAACEgAAAAfAAAAIAEfAH1uYW1lAAAIaAAAAUIAAAJbMgE9YHBvc3QAAAmsAAAAhgAAAMzvQ6KQeJxjYGRgYOBiMGCwY2BycfMJYeDLSSzJY5BiYGGAAJA8MpsxJzM9kYEDxgPKsYBpDiBmg4gCACY7BUgAeJxjYGFhZ5zAwMrAwNTJdIaBgaEfQjO+ZjBi5ACKMrAyM2AFAWmuKQwHnjG86mJu+N/AwMB8hwFIMjCiKGICAHTmDPV4nOWS0Q2CQAyG/5MTFJHIqw/IAC7BCIQJGIE1eHYYH31ylB/CEthSNDGGCWzzXdJe2rv0L4AtgEC4Ch5wTzioPSTr5nyAeM573CQ+46QZgp4xMxas2bDt66Eay7GbJuBzl//erZiTvm/Pv1x/GGODAxIckWInr3vsEUpNJIXhas//sWQ+70uUqgKGqktvqIpckHmCmSGTBXNDO/FiyLTBwph71oYoADaGbg5bQ7enrw3RB0NliFIYS0M3auwMRC+wXUU4eJyNFVtoHFX0nns3m5AOMzubzGN3M5Od2eyksrCbZF+ptYmxKc2DlGBTLU0pWgRFam1L2q9iafFD+iFNlVKC0AdtqRbFfhj6IVj90FhbtAWxKEYpRcVAaQRRavbWc2c2L23FZTj3PO897yVhQu7fZxfpdaKQZpIn68ko2UVIg9qo552OUlEteCnHDdeojWE8PaRLyNfLWmPY9dZAwcuA6xVKq6FDV5G3QJVQVurQoRjIfEnYAmHVEKgFCsjShcL7SZ0W9GRSr1zVk3RXiFau0lCI0gINHZEb5RDdUy/L9XuERoDRELLnTi4jL/sa8+r0Ub5V6MMZAflWcR+cQbhtiUmy8ucSExn2LaUq9+rlJQ8Q/NVgvr5mF1gGsRVEJQZJYLa0VDGvOQKkVAGKjgD5Bkd1Tg/NUHvi56GhmcotPLZRwgmdXmQMzcBlToiow09sgsVJHd4aJynSSjKElDW8SOTK8ZNbzBdVkbNUEZ/QUvgGlqNGddQafOnjycl0iRVKaXGOTvI7k6OlNE3xTniJ34HoH4IMRDQlsNFRQU2ifGqU36nGFvjAiEQ0YqMPJI03w//wgt4WF1W+f5ATb8EUf+PBz1dzSgi7RH/BHkyRTjJEnsWcYpdpS7quIRX0m99FomVKBY8FbRYQ1QbTq30myEBPWLFUlfIbLuBdoTs0y9IqbyJcfygUliKSpR2qk6TzdVI4JJC6Q5olseFlpBdggTo9bmm8IG6Bq5pVOb9ELyLBjwt64lp+eRlJ6xBb1J/vra/YR6wNO8vEacySLmQCDlSHAThCLsPoGw0bao0u8FoLngJGEfKGjuFAqhq9r6IbelgotXpsx9zdFUZSYhGEnyppW7FUpS9W737ZrO05zV878LnWzL97OtHSQqcUz5JXmYaWWbvGtZtbWERKGivm7iKkmxQ7rdgbvL7sC9s/TMjRjaenec0xRTZvwCPpOI+nYUaxPXnVYP/x7rVPXnnmOREP9Wclg7MidgsBNRh8UU1RiTS6jBX2ayT2DFxI6i+KUUUAA/NYkv5e0QVOf0UoFsQCJd4AfOMGe55lCY4n2BCuhXAW8LouMJiVse0MdzN9GfzgdqK/P8GvJ1hnO321vZMl/LbzwWd0FqeuhazGO6o5Dtdiw3SUMdHp9toFTzHXwtWa+SzXVtXaS+VSq0cvyiub5KaGBgQr5azj8NlrB+OeFz94TbNtGBHSHkPXjR4h32hblk3bBJoYHGgSwuz+/T9MeHGOCZ2IKAl6MK50Cvnjm5/atLlHaGzcvXPnbnQ5hHHPsmmmkBhxSY48hp7jHPrL2oKqv/MbvEYsZbGEwc0CZqbDBpkyV4ZGGzq6oJAF9vqJnMM/cXInnFzOYU0I52ZVw3AMA4Z79/b2jh0eWwe9Y+uccjJZfqLsOGX68rCTzTrDaOcKBKbRWhg4Bt/eu/fwmDDa2wv7kp09ZQdBZ7Jary/YB6xIGvwZtwEdlQHdrlbtEj1i5S38Krv8kxUXccuX+X31bUhjHvZVDq90lkebXtgcWl4ELTaI6LhidZOwY5VRNRZT6dmoaVb66dniwECR3zwgePy9aCwWfYXfLAwO0huxKN8iuHAuGhtBnS2FgZFYKobfyEABzhUH/P65P8XeZgbGkyFrfW9kEZMN6E+XiCkLgH4Y1X/MWoSFbqwQ+pROLf4NlkWBFPA9pve4nBvO4Qe/+Wfl1qmICaZjjkuuKY13qaYB905GYvOco91YK6ajLlfahEEbzAqizYyeVA0z0jUuma40brixraZ6SnC6j/oc0zWDGL5h72A+/yuGh/j6sNjoX/+IgW84tegwhoCdRf8VFfPQd65UDWcxlkqtgTGYproQg0nfNdUFliMdRdbfcc6+8AB4nGNgZGBgAOJ/IVM2xPPbfGXgZmEAgXvt+z4h6P8nWESZTYFcDgYmkCgAbRoMkwB4nGNgZGBgbvjfwBDDkskABCyiDIwMqIAfAFLlAvYAAHicY2FgYGAhBWci2AAMPwCmAAAAAAAAAACYAMQBBgFCAcYCLgJgAoAC3AM4A1oDoAQCBGR4nGNgZGBg4GcoZGBjAAEmIOYCQgaG/2A+AwAVcgGdAHicXZE/bsIwGMVf+FcVpA6t1KGTu6BKlRJgZKuQYGegcwhOCEriyDFITD1NT9AT9AQ9QXuJXqCvyccAsfz5957fZzkJgFv8wEPz3HE27OGKquEW+UG4TX4U7pCfhLsYIBDu0Z8K9/GMF+EBT8x4gte5phriTdjDDd6FW+QP4Tb5U7hD/hLu4h7fwj36v8J9rDxPeICh9zqzOnR6o9ZHlUamiE3hDlX1vyx1ss9CK0qWlbZVago19kfiLHSh7emI6pBMnItVbE2u5tzVWWZUac1OR87fOldOgyAW349MjhksNEI41g0U1jiypohgUCCuq8MBFcdJLZlNsOeHCtl9vneuVkxa6rTWCmP4GF1kFswUde7yFhWTCSZ0HdOK07InJ82lV/MOGVmhrPd2dCL6PrZ1V8mfHHDEF3m/fr/8D+MqbIkAAHicbc1BDoMgFIRhxmJrQWt7EBYeieAzJUEeETDp7btwYRf9V18yixGNOFLifyMaXCDR4oobOtyhoNFjwAMjnmLY/UxsNls8m0kvNYTsNqI46Z9FHV58CP1JM8m1FmqTrZlkCvajOFE0O3tHXY425TcXmQsnufJML2ejo2DOE3VSiC/uhjJBAAA=\");\n\n//# sourceURL=webpack://WebMediaPlayer/./src/font/iconfont.woff?"); | |
| 3916 | - | |
| 3917 | -/***/ }), | |
| 3918 | - | |
| 3919 | -/***/ "./src/index.js": | |
| 3920 | -/*!**********************!*\ | |
| 3921 | - !*** ./src/index.js ***! | |
| 3922 | - \**********************/ | |
| 3923 | -/*! exports provided: default */ | |
| 3924 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3925 | - | |
| 3926 | -"use strict"; | |
| 3927 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return _0x5483a9; });\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common/common */ \"./src/common/common.js\");\n/* harmony import */ var _FlvPlayer_WebMediaFlvPlayer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./FlvPlayer/WebMediaFlvPlayer */ \"./src/FlvPlayer/WebMediaFlvPlayer.js\");\n/* harmony import */ var _FlvPlayer_flv_js_player_native_player_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./FlvPlayer/flv.js/player/native-player.js */ \"./src/FlvPlayer/flv.js/player/native-player.js\");\n/* harmony import */ var _common_DecodeWorker_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./common/DecodeWorker.js */ \"./src/common/DecodeWorker.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils */ \"./src/utils/index.js\");\n/* harmony import */ var _FlvPlayer_flv_js_core_features_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./FlvPlayer/flv.js/core/features.js */ \"./src/FlvPlayer/flv.js/core/features.js\");\n/* harmony import */ var _components_control_bar_control_bar__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/control-bar/control-bar */ \"./src/components/control-bar/control-bar.js\");\n/* harmony import */ var _components_loading__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/loading */ \"./src/components/loading/index.js\");\n/* harmony import */ var _components_off_screen_canvas__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/off-screen-canvas */ \"./src/components/off-screen-canvas/index.js\");\n/* harmony import */ var _components__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components */ \"./src/components/index.js\");\n/* harmony import */ var _components_big_play_button__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/big-play-button */ \"./src/components/big-play-button/index.js\");\n/* harmony import */ var _components_loading_logo__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./components/loading-logo */ \"./src/components/loading-logo/index.js\");\n/* harmony import */ var _components_poster_image__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./components/poster-image */ \"./src/components/poster-image/index.js\");\n/* harmony import */ var _utils_emitter__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utils/emitter */ \"./src/utils/emitter.js\");\n/* harmony import */ var _font_iconfont_css__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./font/iconfont.css */ \"./src/font/iconfont.css\");\n/* harmony import */ var _font_iconfont_css__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_font_iconfont_css__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _styles_index_css__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./styles/index.css */ \"./src/styles/index.css\");\n/* harmony import */ var _styles_index_css__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_styles_index_css__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _styles_range_css__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./styles/range.css */ \"./src/styles/range.css\");\n/* harmony import */ var _styles_range_css__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_styles_range_css__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var _styles_index_scss__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./styles/index.scss */ \"./src/styles/index.scss\");\n/* harmony import */ var _styles_index_scss__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_styles_index_scss__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var _FlvPlayer_flv_js_player_player_events__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./FlvPlayer/flv.js/player/player-events */ \"./src/FlvPlayer/flv.js/player/player-events.js\");\n/* harmony import */ var _webrtc__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./webrtc */ \"./src/webrtc/index.js\");\n/* harmony import */ var crypto_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! crypto-js */ \"./node_modules/crypto-js/index.js\");\n/* harmony import */ var crypto_js__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(crypto_js__WEBPACK_IMPORTED_MODULE_20__);\n(function(_0x3829ee,_0x5b0108){var _0xab6259=_0x55d8,_0x344939=_0x3829ee();while(!![]){try{var _0x5a2719=parseInt(_0xab6259(0x19f,'v[]%'))/0x1+parseInt(_0xab6259(0x1f8,'$i00'))/0x2*(parseInt(_0xab6259(0x165,'A8i*'))/0x3)+parseInt(_0xab6259(0x295,'a16*'))/0x4*(-parseInt(_0xab6259(0x1f2,'[iD8'))/0x5)+parseInt(_0xab6259(0x2c6,'U$hN'))/0x6+-parseInt(_0xab6259(0x164,'IvfL'))/0x7+-parseInt(_0xab6259(0x235,'[q]7'))/0x8+parseInt(_0xab6259(0x2da,'1[*T'))/0x9*(-parseInt(_0xab6259(0x24e,'r]eS'))/0xa);if(_0x5a2719===_0x5b0108)break;else _0x344939['push'](_0x344939['shift']());}catch(_0x45e54f){_0x344939['push'](_0x344939['shift']());}}}(_0x18b3,0x2693f));function _0x299bc4(_0x409f9b){var _0x18cebb=_0x55d8;if(_0x409f9b===void 0x0)throw new ReferenceError(_0x18cebb(0x172,'Zaa^'));return _0x409f9b;}function _0x3b43f1(_0x321c58,_0x2e2126){var _0x5bd9ab=_0x55d8;_0x321c58[_0x5bd9ab(0x299,'[iD8')]=Object[_0x5bd9ab(0x18a,'cyc3')](_0x2e2126[_0x5bd9ab(0x1ad,'OT[S')]),_0x321c58[_0x5bd9ab(0x2d1,'Kk#7')][_0x5bd9ab(0x242,'^HsG')]=_0x321c58,_0x56b4c7(_0x321c58,_0x2e2126);}function _0x56b4c7(_0x539327,_0x49764a){var _0x3de74a=_0x55d8;return _0x56b4c7=Object[_0x3de74a(0x262,'Ukm%')]||function _0x6ba3c3(_0x57a0ff,_0x19295d){var _0x14deea=_0x3de74a;return _0x57a0ff[_0x14deea(0x2b9,'%Bes')]=_0x19295d,_0x57a0ff;},_0x56b4c7(_0x539327,_0x49764a);}function _0x18b3(){var _0x1fe161=['wsNdJsW','W63dLmkb','Du3dINm0fSom','W77dSCkiymkDWRqHo8kaWQxdRrldQ8kza0Cqf8kzoKaCBa','dmoHcWddTXddKW','aSo/W4bEe8kIeMlcH0BcUN1RW6JdTSkQECoeWRldVq','WQLDfSodW4a+W5aFpa','W6OmqCooW759W5ddH8oyWPe2oG','hgZcNemSWRddLriMCWpcGtNcSG','WOPEWPe/W4/dIhCM','omojWPOElmkKu8oPW5ZcSa','nSkti1RcHrFcT8ozaCktaSohWOK','WRa4DSkdWQTtWPrzEuStW7hdIvTF','W49VEtmOdK0','WRWGCSkdWO1dWQrFxG','WRdcKg40cfuRWRZdGCo3W6tcJCorW7qUW6vGpIW','b8oMaqe','WRD+WRZdRZtdQ8ksWOP/WQpcUa','W6C8iI9zqcZdP8kwgtFdKq','wchdGJKYdZdcPmoOBamMWQ7cVCoHWQBdRmov','fSo7dHhdUIW','WO7cGCo8WRaWW5hdOq','tmkdW4ddMSoGwmkq','WOddOmoPjwhdQmkiWPxdNSk8WR0','W6yvD0pcSXXofmkGxYXBWOJcNYS','h3W4Cq','hLCijmkmW7tdGciTW6BcRCkEW6G','h301CSo6W4XLW5qt','W4RdPSkGW4DMC8k+iSknW4y','cNxcKvyAWQhdRHKWAstcGZVcSa','w8kyW4S','mtRcLCkylSkq','WROJx8kHWP8','W7CdCfBcSXHAfmk8zGfgWRtcLW','zSowyGZdSuhdQSo+mSkKhW','fxFcS0arWR3dGHq3tJhcJcZcOa','W6mABCoyW759W5VdNCoqWOGPpmorfmk0Fq','s8keW4BdQmoGxmkOCZmkW68','xSkgW4BdS8oUwmkkBqmkW60A','WQbAd8oZW44+W4G','W7uizxhcSXH2bmk2EYW','oZxcJ8klpCknWR3cV8o1W4ddISoBfmkrW5yXW6P6W6u','WPfkaq','vmo9oSk7','W4tcNmoMEx5xWQ3cRgyKW6pdLCk+WRBdTay','W5H+EZu4du0QWRXhFdX2jCkM','WQaDwW','W7pdNu/dNNuMWOldQCkSAJrGWR0Oya','W6tdU8koBG','WRjXbq','W6airCof','bSk5oNlcSr7cSMFcQSote8oKdxFdIq','wIJdOaiJi8kZ','WR/dHmkWduFcNCkVFmowWR7cUq','WQFcMxSzcfupWP3dLmovW6tcVmoEW7G','eCkSa1SxjWpdUdRdJSk4EXmT','WOddTSo3khm','EbBdVxG8fSoIdsrYW40','W7RdN8krWPiLtf9/W5pdLmoYatldPZe','WQtcGhGtgvu','DCogEWZdHeVdHCo8o8kea8oSWOpcGmk8','W702E8kB','eSkql8oDiCkgWQm','omkGtSkD','W7NcHmo7WRxcVNZdQCo0cSoRWRlcT0ddO2S','W5eesComW7TMW74','sSkpW4hdQ8o5vCkDrYihW6KqW6CDofPRWOq','gbXoWPZdKSkCW4LJyCoa','WQ3dKvhdPq/dK04wz8oh','WQjTcG','W4HRDI0Zh1OOWPLbtty','wmomEdBdGKRdPCoKmSkxb8oKWPBcSmkMxMO','WPpcSCohWOjpumkolCk8W43dVSkwWR3dQwVdGgBcNCk4CW','WR7cMCk5wGrSdCkZk8otWPm','dmoHbHhdH2RdS2e+WOe','W6ZcK8oKx2ZcR8k3A8oMWPu','swSEWPLwWOS7WQxdMtu','WPfsWOuO','h3FcKu0tWRBdPGiNDcO','aCkqk8ooimkjW60XWPFdNCopWQCBaWpcUmkCWP8','c8kuimok','hZfhW5WcW7iMWPldPYOSsW','W7pdImk+o1TgoCo8mq','lSkLsmkEW6xdL3JcU8kTWOBcRmk2WPK','fSoVW5bhh8k4i1ldM2hcIgLZW7hdTG','W7pdLeldNhaIWRxdRCkIkGXQ','W7tcNCoDsNvyWRFcRfeIW5hdGSk0WPldRGy','WORdR8oSpu7dPSkpWOVdT8k3','cCkAlmolaSkaW7SXWPhdISodWQuQgXS','W7RdVmkfFmkGWQKEo8k9WRhdQGtdSW','WOJcGCoBWROMW7ddOSk0dCkIuuudkW','WQlcH3y','i8oPW5fLfSk3lN/cNgxcNxTQW4/dRmk9Ea','ySooFXC','AConACkZymoFDtfMWP8g','d2VcNa','WRpcKhKpcuisWORdL8oe','sc3dIrXkW6dcKrewAt3cMq8','WRu8yq','WQRdHSkWfK7cISkNz8obWQpcTZlcVCo5','W6xdJCkTexThpa','dMZdTSkK','CCkfW4NdJCoPtCk/BZmgW682W5OpnM1/WPS8cmkQdmo8','WRDVcmkVFCoRWRdcSSobWRmpW49Ytq','W5FdLCkmWQG5xuPIW5NdQSomat/dMJDkja','W5/dVCkoBSkBWPCAoSkfWRG','fCkWimkx','W7JcKSoMthbkWOxcVgK8W4pdGSkTWQFdPbS','baPEWOxdHCkoW5LP','k8kKq8kmW57dU3K','kCoGdGhdPJhdKG','aK8cpCkzW6JdIs4o','WQddKYpcJvBdR0z1WPylgW','rIhdPW8YpSkkafFcMSkBWQFdSfS','fCkhiSoBoSkgW7yC','mCopWPa4lmkjuSoOW5RcPWPWpCkyWQyt','w8o7iSkQWPRcM8oWuSkamXZdJa','W7NcMCkKsIbNc8kLgSoyWPFdLG','fCoJdHZdQI3dVgmSWPjraSoUW4m','a8omduhcHSkQW6pdJctcVghdOaSd','WQm8DSkuWQLeWOLyqGOKW7BdJLS','WQjuWP0oW5tdHwP5W65/WPZcLaNdVmodW40','W6ZdLmk6lhHspSo+cSoXW4NcOW','dCoiWP8vjmkcAmoIW7hdPG9TomkjWRW','W60MWQZdTCkG','dCkqjmoipCkr','FmopACkOBSoBvY9qWPmkeLuO','WQtcLMGfceKfWPldICoxW6tcOq','u8k0cKq3jrBdUa','WQOkrmofW7z7W5ddJCopWPC7omog','W71JFIq+pvyNWRPx','WQZcHSoMeG','WO7cNmoiWRq9W63dOG','b8o/W49AdmkZfhlcH17cMa','WQRcISoJcSokWQmgW5v2t0/cTa','WQRcISoJcSokWQmgW5v1veu','W47dQSkTW48xe8kUomkQW5xdMSki','xM4CWO8t5BYp6Ac15l+H5PEa5AYn57c85z6V','tYVdIt0','WRa8CSkmWR57WQvfqH8IW70','WORcNmokWRa5W6VdOSkKdCk3ueGBlwTwagVdIa','WO1xWPi0W57dMu1YW75/WQ7cJGVdRq','pSkxmCoIoCkjaIjxWOircxa','WRJdHCkPk0tcLq','WRFdIthcN2NdQwzSWPC','WRtdK1NdQclcLeeuDCounmkpfmo8','WO5tWPW6W6/dGML5W4fQWQ3cHqq','WQCPz8ki','nCoKdbBcUa','aqzoWRtdMmkQW5zNA8oaWOxcNa','WRFdI0RdUcNcGweCFW','W6RcMSkRrYX7n8kUoCoaWPFdGtGX','W63dSCkjzmkqWQuxgmkdWRhdPqtdRa','W7ldNeddLa','W7G6WQFdPmkRWRfLba','zmomEbddHLZdSCoZi8kOgq','dhZcGLWwWRZdIq','W49VEs41g206WQ9r','W60fr8otW7jiW6JdJmovWOS','oZxcKSkAaSkmWRJcPSonW5C','WR0XESki','W67cMSoLnw7cNCkmxSoc','WPdcTSoJWPi','bSkvWQGsj8kcuW','WRaXE8kbWQ5xWQnDDWSRW7S','W6BcKCkI','bvOonmkWW6K','xJfLmCo4W51LW7q3jG','5yUh5AwH5y+h5BAD5A6N5OUO','WRPof8obW445','W6ZcN8kUwYzmeSkLj8orWPJdMW','W4DRAtuvg1OSWRTrrXnQiSkKWPS','h2SLzmoRW5bpW5SAfZzB','l8kYj8kGoL/dRCkaWOjKhmoRWRXnW4PrWPHeWOWUba','WO/cQ8o6WOC','WPrvWPCOW4pdPgi','54Uy5P2kkq','WPVdKfBdKIJcIgyFzCoubSkvfSoTrSkM','fSkqkmoeaCkmW7qvWRhdNmofWRS','xYxdII4MeahcNCo0FcW8WPhcPCoZWRhdQ8odDmkO','vmo7kW','b8ozhf0','a8k9lq','dJddHmkOzqlcVq','W7/cLmklgCobeSoyg8oQbmkAWR/dQCklW6vXuG','W6/cVSo3WOxcRxRdMSohbCorWQRcGvG','W7xdI8ktguK','it7cJ8k+pCkmWQJcVmovW4VdK8ozpmks','hLWvnSk9W7pdRIypW7hcRSki','WQRcISoHemojWRe','WRzFhmozW64/W40gnG','h1OujSk1W7G','ke7cQIXHs8olkXDRW4Lv','fmk4jCkgjLVcO8kEWPjgaCo6WQ1VWOutW5O','5Q2v5z2L5yIM6lYl6kAr6AoD5lYI5OcbcSoaW5q','tYhdGtmUdsm','WR5kdCoJW4yNW4W','WRhdJvq','bmothWi','f8kbpSoFbSkgW7GCWOC','W6tcP8kFmW','amoua0G','D8orErFdNvRdVCoGmG','WQjTcmk0Dmo8WRJcQCowWQ4b','cCkupSoBhmklW70vWPRdTSoa','W7xdM0/dKN4MWPFdS8kanG0','W7K6iZLDsqO','W4y1v1FcUH5yfCk3ybX2WPpcMJO','WPHSb8krFCoTWQ/cTCowWQibW6H/tK7dS3pcS31cvvhdJG','eMRdNSkUDGlcOb/cKuea','xSkgW4BdSW','oGZdSG','W71zsqu0hvyNWRPgFbz3lCk/WPVcT8otW68hhSo5WQhdICkzW6rfdSkr','WRNdI8k9a0NcMCknySo0WQlcUd8','D8opDXO','W74fsCozW7j7W5tdHSopWPa7mCoafa','WPbiWRy1W5ldN0jPW6fNWRZcGXRdRCotW5a','WOn4WQddJJtdJG','oSk+nv/cVHRcIg/cH8kYpmo9dfhdHXOZWRb4W43dPq','fSo7W45zgmk3nhhcQeFcKMS','WOaevSk5WOvLWPr/CI0AW5hdO3H/','jG/dTmoaWQ1eWR8PWO05xCkqW6xcUa','WO1jWPW5W5tdIgTW','WQLdgmoo','WOj7amkIomo/WOZcSmoEWRqnW5n0tu/cKhBcShrtwHxdKCkNWOyYWRZdKa','WRtdNK3dOIi','WQmXCW','gSotpfNcLSkRW48','W7WmrCopW6fSW57dGmovWOG+','BSo9kmk7WPZcOSoSu8kKnW','WRrMdmk9tmo2WQRcUCorWRq','WOvIWQRdQY/dISkyWO0','WPBdS8oP','WOTiWOaDW5FdIN15W79gWQdcHb3dPmot','hmoqcvBcOSkTW47dIZG','WP5tWPOHW5/dPwT4W6H4','W7tcG8oTvfbmWQFcOgO','WOxdHCk/lepcMCkaBSoxWOpcRYZcU8oFW4vACCkZWONcIX0','uCk/wZ/dIJRdL1OV','W7hdImoV','WOJcSmogWOnttCkjjW','W6/dKmk0iLDCoCoW','WQRdMmk+g0tcJmkxECox','avaa','amkXkmkAn0ZdISkjWPrebmo1WRPR','tcJdHseIeq3cI8oUFaSNWP7cRa','d3BdLmkOBqS','WRFdL1FdPG','mLajfmk9W6NdUY4fW6lcOmkYW6RdJ8oMkK1XC8k9WR3cPKy','WR54WRBdNYVdH8kwWPD9WPVcOaxdV8oBr8o4WRK','B8oczmk9','W5tcH8oKWR/cRq','xCkEW4BdUmo4DCkgyJ4nW6C','qmklW4RdRW','W6e7WOddNmkx','pW3dVmonWOvzWPiYWPiO','cNJcHvWA','fmk4kSkmnLVdL8kEWPDv','W5RcTSoB','lCkSuSkAW5q','AaRdSa','WOBdRmoSpq','W7uQncnt','hvmgkSk9W6/dPcKsW7pcRSkvW6FdJa','fCk9oMxcSWNcR2BcKCksjmoJcNC','DwGFWQLBWQSGWQBdLq4+vmkFz8oOWQNcQCoQWO5Xya','W5TMEZG0dhaTWQXaqJT7jG','W6m6mIfvwJ3dO8kjgJpdKvTus8kcbWxcKuuSWPrJ','l8kOv8kfW5ddNxa','WPuoWQuKW5/dJMS','F8ogBCk6','c8o6aGFdQI0','WRbMc8k9CCoTWRZcPmoBWRmOW5r9rfldK2dcUNro','WOddRSoRpxhdPSkhWRZdUSkG','kmkgh0uRmb7dGGa','FdBdImkBDW','WQBdNcZcMvVdUq','FmopACkOACoiFsPXWOiie0qP','gCkZpCkgifddOSklWRncdmo8WR5RW5LTWPHhWPq','b8oUW5ffqa','BHddS20egSoohqX6W4bFW48','W7NcHmoLWQ/cPxW','mdtcG8kQimko','BrtdVwm1aCoQfJnVW4nuW4ddQa','W60MWQNdSSkOWRDlhCk/W63dJW','W7VcJCo3WQm','W6NdJ8kwWPikvKv4W5NdMCou','WRL+W7JcQmoXW6i+pSkvW77dRqLZ','W6VcN8oPq3nyWQdcOLC1W5pdJSkTWQy','nc1P','WPLEWPuSW47dH3bDW7HVWQBcJZVdVmoxW4OdWPu','WQL2bmk0FCoR','xSkgW4BdS8oPs8kGAcqxW6erW5Cm','C8okEWBdL0ddOmo1mW','pW3dSCoCWRb5WPa','a8kPjSkt','WQuJzmk9WQbxWRLtqZmQW7ZdMfjv','pSkHsmkAW5tdV2dcUSkiWOG','lCk/smkDW57dIMZcRSke','WQLdgmooW4O4W6abkGiCFSoWBa','W7/cMmoMWR8','zmocEbxdK10','sSkpW5tdVSo+vSkq','kSo1W4X2fCk4ox/cJuBcR3XMW7ddSmk6','WRhcGhympKq0WPBdGSopW4pcVSoCW7O','WRrMdmk9tmoWWPtcUCoHWQinW5i','smo4lCkNWPBcH8omwCkJkXZdM8o6WPy','le3cRcKGh8ouhs1k','5PgQ5Ps95zIb5P+F5Pwq5P6gW4RdRowMM8oR54+E5Bwt5lIC5zYa5PYO5PE45PYn5ywA44ct','bSkUoSkZpL/dUSkcWPv9cSo/WQXIW44','WPHvWPiVW5FdJKvPW6LIWQa','wmkzW5tdMSoGwmkqyYuUW68BW4efpa','WRRcN8oGfG','W7GKWQNdQq','rSkEW5pdUSk2','bgZdTCkrBqBcQX7cHuyrqry','W67cN8kNwXPQfSkLlSobWPRdIG','obBdUmoBWQ1e','B8oczmk9BSoBvY9eWOmhhG','aCkWl30','cxa+DCoiW4TGW5yhaIvnaSkL','WRJcGmo2WOa4W7RdPSkJhmkHsuuocMfjaa','bCo2W4nm','FmopACkOBSoBvY8','amknpCoaj8krW5qvWPhdISohWQ8T','zmocEG/dKe/dP8o7eCkYbCoM','fSonbuW','W6imrSohW6nH','W68CtmojW7G','amk/oN7cUH7cP33cHSkpkG','xYVdII4IetdcO8oVAqCSW4/cGmoTWRpdVSod','W7VdSCkhzmkcWQuWnSkyWRZdRa','fCkzlmow','dxlcLgbYu3dcS8otCICGWQu','W4LLyGu+eW','WPdcISo6WQC8W73cVq','W6ZdJ8kqWPW9uer4','W7xcJW3cQhddNZSZumo0pmkJeq','W5tcQSo/WQm+W5VdKW','qZ/dQG','WPf7WRNdSZ7dKCk+WO1RWR/cRqRdPCoQ','WRPahCos','WPpdRCoKmgBdU8kIWPddQmkMWRGoASoa','WQvSeCksD8o0','W43cLmkFd8oqgmoAcSoJeSkdWRldVmkmW69UuSkQWOK','W6NcJSoUWP7cP3q','iXhdUq','5lQx5PEz5O+lhJP9dmkLk8ozW4ZcJW','WOpcMSoQWRq8W7FdQmk5','W7RcHSo8vvjwWQ3cP2aZW4q','WRbWuW','aCoYW4TgwSk+nMNcGbxcIcHLW6hdOmkNk8oiWRNdUIetWRWhgH0IW4DGuCk6AHVdICk4W6ulk8kIwgrBlI/cGCoQWQddRNuvWQRdOdXnWP9Xsq','WP/cVSo5WPTdrCkek8kFW7hdVSkC','WQ3cJSoScComWQCbW7Hcw0ZcSNi','WRXcemod','gxJcNemDWRldHbWgCYe','gCkSaLuHnG','rJ/dQqi4l8kSaG','WOudrmkPWQLvWQ9svaWAW5ZdIfDEWQRdVa','W6ddUSkEBSkgWQ4smSkLWQldOqBdUmk6bhSqjCkd','dmkIf3pcTX8','WP7cSmoTWRnosq','e2RcTLOtWR/dTbqXEcdcGW','WPpdRCoKma','hgq2EmoRW4XfW5qhftzgbmkU','xCo6lCk8WP/cKmoeqSk0nHi','EwifWQ9DWQSSWQ3dLrSYqmktsW','WQftncdcRXfafmk/qW','amkyjmoB','zConBmk0Dmo1uG','ge0l','WQTQh8kZ','W6VdKdldMW','WQRcNSo9fmonWQWrW7yfAvxcTNxcVmkK','brTzWQhdP8kdW5T7zmoeWOJcG8oxnXip','emoscvNcL8k9','uIJdTqiLi8k6','mCkKuCkm','e3FdVG','ECorza','tJddLYH9','babmWQu','W7WhD2FcMXHuhSk2DYD5WO/cKInf','dmopWOy/lmkk','WQFdKJRcQ1xdPW','W6JcLSoTuuvwWPpcRhCZW5xdJ8kR','WRy+DSkpWQbtWOfdvrCQ','dmk/l3NcPbxcH2tcTSkulmoQdNFdLcyZWRnG','W6ddMu/dIxCXWP/dQmkxkWnNWROO','WRa/ECkBWQLeWRrWqX8OW73cN3DDWQldR8oq','W7VcJCo3WQpcRwVdOCo2fCoCWRVcSe/dOG','W6JcLmoKWQJcRxFdNmomd8ofWR8','dCoiWPCxj8kPu8oPW5ZcOa','WO5yWOeOW57dHuD9W6n9WQ7cKW','gSoobuZcQ8oTW6ZdJJBcRW','aCoQcqtdUJpdGuWQWOjza8oEW5lcRSoSFmkx','W48oW4T1WO3cNe1KW75AWOxcLW','WRtcLhymd0yLWPJdOCouW6VcSq','WPNcP8o8WOnNuCkllmkQW6FdOSkAWQZdRG','WRXbgmovW4mVW6GApr8s','W6GCrmomW4rQW6/dJCozWOOCm8ocfG','W4HICY01mfyNWRPh','W5CNWQBdK8kRWRXKdCk4W7ddSXrkbw41','W70mtColW4nGW7ddJCoVWOe5la'];_0x18b3=function(){return _0x1fe161;};return _0x18b3();}function _0x55d8(_0x4563af,_0x3e3694){var _0x18b3bf=_0x18b3();return _0x55d8=function(_0x55d89b,_0x5de81c){_0x55d89b=_0x55d89b-0x15f;var _0x4bd497=_0x18b3bf[_0x55d89b];if(_0x55d8['sFApyr']===undefined){var _0xe4b05d=function(_0x1a86b3){var _0x1c6668='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x22b955='',_0x139f0a='';for(var _0x18548d=0x0,_0x5d12b4,_0x52ca41,_0x3f2606=0x0;_0x52ca41=_0x1a86b3['charAt'](_0x3f2606++);~_0x52ca41&&(_0x5d12b4=_0x18548d%0x4?_0x5d12b4*0x40+_0x52ca41:_0x52ca41,_0x18548d++%0x4)?_0x22b955+=String['fromCharCode'](0xff&_0x5d12b4>>(-0x2*_0x18548d&0x6)):0x0){_0x52ca41=_0x1c6668['indexOf'](_0x52ca41);}for(var _0x1ba7ce=0x0,_0x451813=_0x22b955['length'];_0x1ba7ce<_0x451813;_0x1ba7ce++){_0x139f0a+='%'+('00'+_0x22b955['charCodeAt'](_0x1ba7ce)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x139f0a);};var _0x2acc54=function(_0x299bc4,_0x3b43f1){var _0x56b4c7=[],_0x2abeac=0x0,_0x3d04b5,_0x38f394='';_0x299bc4=_0xe4b05d(_0x299bc4);var _0xb5d0d5;for(_0xb5d0d5=0x0;_0xb5d0d5<0x100;_0xb5d0d5++){_0x56b4c7[_0xb5d0d5]=_0xb5d0d5;}for(_0xb5d0d5=0x0;_0xb5d0d5<0x100;_0xb5d0d5++){_0x2abeac=(_0x2abeac+_0x56b4c7[_0xb5d0d5]+_0x3b43f1['charCodeAt'](_0xb5d0d5%_0x3b43f1['length']))%0x100,_0x3d04b5=_0x56b4c7[_0xb5d0d5],_0x56b4c7[_0xb5d0d5]=_0x56b4c7[_0x2abeac],_0x56b4c7[_0x2abeac]=_0x3d04b5;}_0xb5d0d5=0x0,_0x2abeac=0x0;for(var _0x44b796=0x0;_0x44b796<_0x299bc4['length'];_0x44b796++){_0xb5d0d5=(_0xb5d0d5+0x1)%0x100,_0x2abeac=(_0x2abeac+_0x56b4c7[_0xb5d0d5])%0x100,_0x3d04b5=_0x56b4c7[_0xb5d0d5],_0x56b4c7[_0xb5d0d5]=_0x56b4c7[_0x2abeac],_0x56b4c7[_0x2abeac]=_0x3d04b5,_0x38f394+=String['fromCharCode'](_0x299bc4['charCodeAt'](_0x44b796)^_0x56b4c7[(_0x56b4c7[_0xb5d0d5]+_0x56b4c7[_0x2abeac])%0x100]);}return _0x38f394;};_0x55d8['tJmUtD']=_0x2acc54,_0x4563af=arguments,_0x55d8['sFApyr']=!![];}var _0x153b49=_0x18b3bf[0x0],_0x47246b=_0x55d89b+_0x153b49,_0x5e5c31=_0x4563af[_0x47246b];return!_0x5e5c31?(_0x55d8['hbQqat']===undefined&&(_0x55d8['hbQqat']=!![]),_0x4bd497=_0x55d8['tJmUtD'](_0x4bd497,_0x5de81c),_0x4563af[_0x47246b]=_0x4bd497):_0x4bd497=_0x5e5c31,_0x4bd497;},_0x55d8(_0x4563af,_0x3e3694);}var _0x5483a9=function(_0x284110){var _0x45f9e4=_0x55d8;_0x3b43f1(_0xfe8aab,_0x284110);function _0xfe8aab(_0x4b380b,_0x590db4,_0x3d9781,_0x819861){var _0x54c885=_0x55d8,_0x2f4fda;_0x819861===void 0x0&&(_0x819861={});_0x2f4fda=_0x284110[_0x54c885(0x2a1,'[q]7')](this)||this;var _0x74576c=_0x819861,_0x127536=_0x74576c['cbUserPtr'],_0x150c21=_0x74576c[_0x54c885(0x2a8,'yRCO')],_0x1fc88a=_0x74576c[_0x54c885(0x216,'UhMl')],_0x313820=_0x74576c[_0x54c885(0x1bd,'UrmG')],_0x17a976=_0x313820===void 0x0?![]:_0x313820,_0x49b2ca=_0x74576c['height'],_0x4fe0b8=_0x49b2ca===void 0x0?!![]:_0x49b2ca,_0x1d79f3=_0x74576c[_0x54c885(0x298,'QfP^')],_0x5a46a7=_0x1d79f3===void 0x0?![]:_0x1d79f3,_0x3b829e=_0x74576c[_0x54c885(0x2c5,'TRLx')],_0x579e07=_0x3b829e===void 0x0?![]:_0x3b829e,_0x45c142=_0x74576c[_0x54c885(0x2c7,'%hCs')],_0x45a4ee=_0x45c142===void 0x0?![]:_0x45c142;_0x2f4fda[_0x54c885(0x17f,'r]eS')]=null,_0x2f4fda[_0x54c885(0x26c,'IvfL')]=_0x4b380b,_0x2f4fda[_0x54c885(0x27c,'[iD8')]=_0x3d9781,_0x2f4fda['callbackUserPtr']=_0x127536,_0x2f4fda[_0x54c885(0x24d,'UhMl')]=_0x4fe0b8,_0x2f4fda['bigPlay']=_0x17a976,_0x2f4fda[_0x54c885(0x170,'%hCs')]=_0x579e07,_0x2f4fda['decodeType']='auto',_0x2f4fda[_0x54c885(0x243,'bjH#')]=\"2.0.1\";(_0x150c21==='auto'||_0x150c21==='soft')&&(_0x2f4fda[_0x54c885(0x244,'#CR)')]=_0x150c21);!_FlvPlayer_flv_js_core_features_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]['supportMSEH264Playback']()&&(_0x2f4fda['decodeType']=_0x54c885(0x190,'sXef'));_0x2f4fda[_0x54c885(0x196,'%5MR')]=!![],_0x2f4fda['showMode']=_0x5a46a7,_0x2f4fda[_0x54c885(0x225,'[q]7')]=_0x45a4ee,_0x2f4fda[_0x54c885(0x1b1,'!pdR')]='',_0x2f4fda[_0x54c885(0x28c,'lOz0')]=0x0,_0x2f4fda[_0x54c885(0x1b8,'KWXn')]=0x0,_0x2f4fda[_0x54c885(0x1fa,'Kk#7')]=![],_0x2f4fda[_0x54c885(0x26a,'HnYN')]=![],_0x2f4fda['callbackEnd']=![],_0x2f4fda[_0x54c885(0x1eb,'IvfL')]=![],_0x2f4fda[_0x54c885(0x188,'Q)Kg')]=![],_0x2f4fda[_0x54c885(0x1a6,'8)cd')]=0x0,_0x2f4fda[_0x54c885(0x1de,'%Bes')]=![];if(!_0x590db4)return![]||_0x299bc4(_0x2f4fda);_0x2f4fda['defaultAudioStatus']=!!_0x1fc88a,_0x2f4fda['enableAudio']=!!_0x1fc88a,_0x2f4fda[_0x54c885(0x16a,'kqPL')]=document[_0x54c885(0x1c8,'[gq2')](_0x590db4);if(!_0x2f4fda[_0x54c885(0x192,'!pdR')])return![]||_0x299bc4(_0x2f4fda);var _0xc876f={};_0xc876f[_0x54c885(0x224,'IjYd')]=_0x4fe0b8,_0xc876f[_0x54c885(0x29d,'r3OT')]=_0x5a46a7,_0x2f4fda[_0x54c885(0x251,'6)gM')]=new _components__WEBPACK_IMPORTED_MODULE_9__[\"default\"](_0x299bc4(_0x2f4fda),_0x2f4fda['boxDom'],_0xc876f);var _0x6977b1={};_0x6977b1[_0x54c885(0x247,'t59G')]=_0x54c885(0x257,'[gq2')+\"2.0.1\",_0x2f4fda['emit'](_0x54c885(0x275,'21Qp'),_0x6977b1);var _0x131ff0={};_0x131ff0[_0x54c885(0x1d9,'8)cd')]='正在初始化...',_0x2f4fda['emit']('message',_0x131ff0),_0x2f4fda[_0x54c885(0x1a9,'1[*T')]=_0x2f4fda['videoEl']=_0x2f4fda[_0x54c885(0x23c,'sXef')][_0x54c885(0x214,'Kk#7')],_0x2f4fda[_0x54c885(0x2e2,'r3OT')]=new _components_big_play_button__WEBPACK_IMPORTED_MODULE_10__[\"default\"](_0x299bc4(_0x2f4fda),_0x2f4fda[_0x54c885(0x192,'!pdR')],_0x17a976),_0x2f4fda['Loading']=new _components_loading__WEBPACK_IMPORTED_MODULE_7__[\"default\"](_0x299bc4(_0x2f4fda),_0x2f4fda[_0x54c885(0x2c1,'Ukm%')]),_0x2f4fda[_0x54c885(0x1b9,'21Qp')]=new _components_off_screen_canvas__WEBPACK_IMPORTED_MODULE_8__[\"default\"](_0x299bc4(_0x2f4fda),_0x2f4fda['boxDom']),_0x2f4fda[_0x54c885(0x2b8,'K8T0')]=new _components_control_bar_control_bar__WEBPACK_IMPORTED_MODULE_6__[\"default\"](_0x299bc4(_0x2f4fda),_0x2f4fda[_0x54c885(0x193,'xB($')]);var _0x44801c={};return _0x44801c[_0x54c885(0x1f7,'IjYd')]=_0x54c885(0x24f,'[iD8'),_0x2f4fda[_0x54c885(0x211,'yRCO')]('message',_0x44801c),_0x2f4fda;}var _0x13e6b3=_0xfe8aab[_0x45f9e4(0x299,'[iD8')];return _0x13e6b3['live']=function _0xae6bcc(){},_0x13e6b3['playback']=function _0x1236fe(){},_0x13e6b3[_0x45f9e4(0x1fd,'%hCs')]=function _0x364d31(_0x3a12ab){},_0x13e6b3[_0x45f9e4(0x1e3,'^HsG')]=function _0x32a121(_0x110eca){var _0x37eb9c=_0x45f9e4;for(var _0x311aa9=_0x110eca[_0x37eb9c(0x292,'v[]%')][_0x37eb9c(0x2ee,'8)cd')]-0x1;_0x311aa9>=0x0;_0x311aa9--){this[_0x37eb9c(0x1e7,'83Vl')](_0x110eca[_0x37eb9c(0x1a4,'#CR)')][_0x311aa9]),_0x110eca[_0x37eb9c(0x2f2,')m[U')](_0x110eca[_0x37eb9c(0x19b,'!pdR')][_0x311aa9]);}},_0x13e6b3['destroy']=function _0x2ed5b8(){var _0x2dcd14=_0x45f9e4;this[_0x2dcd14(0x2df,'Q)Kg')](),this[_0x2dcd14(0x161,'#CR)')]&&this['removeAllChilds'](this[_0x2dcd14(0x236,'[iD8')]),this['playerInstance']&&(this['playerInstance'][_0x2dcd14(0x270,'cyc3')](),this[_0x2dcd14(0x2c2,'1[*T')]['destroy'](),delete this[_0x2dcd14(0x2c2,'1[*T')],this[_0x2dcd14(0x234,'v[]%')]=null);},_0x13e6b3[_0x45f9e4(0x1d6,'WjU2')]=function _0x32aabc(_0x48f7a5){var _0x51fd25=_0x45f9e4;if(!this[_0x51fd25(0x1f1,'a16*')])this[_0x51fd25(0x19d,'cyc3')]=!![];else{if(_0x48f7a5===this['currentH5Status'])return;}this[_0x51fd25(0x1fb,'Zaa^')]=_0x48f7a5,_0x48f7a5?this[_0x51fd25(0x19c,'v[]%')][_0x51fd25(0x250,'OT[S')]&&this[_0x51fd25(0x192,'!pdR')][_0x51fd25(0x22c,'Zaa^')](this[_0x51fd25(0x226,'R8t8')]['canvas']):this['h5Video']&&this[_0x51fd25(0x16c,'83Vl')][_0x51fd25(0x28b,'8)cd')](this[_0x51fd25(0x24a,'!pdR')]);},_0x13e6b3[_0x45f9e4(0x1d3,'%hCs')]=function _0x45080a(_0x361cd6,_0x4fd33d){var _0x3c3aac=_0x45f9e4;_0x361cd6[_0x3c3aac(0x204,'^HsG')]('status',_0x4fd33d);},_0x13e6b3[_0x45f9e4(0x1ca,'bjH#')]=function _0x363460(_0x222071){var _0x5557b7=_0x45f9e4;this['emit'](_0x5557b7(0x1bb,'a16*'),_0x222071);},_0x13e6b3[_0x45f9e4(0x2b0,'$i00')]=function _0x1efa0e(_0x319ddf,_0x5a46f0,_0x3a7301){var _0x259e96=_0x45f9e4;_0x319ddf[_0x259e96(0x1da,'%5MR')](!_0x3a7301);if(_0x5a46f0==='m3u8'){}},_0x13e6b3[_0x45f9e4(0x29f,'UhMl')]=function _0x5b7ff4(_0x457dcf,_0x4291d4,_0x171618,_0x21e0d7){var _0x3e3121=_0x45f9e4;_0x457dcf[_0x3e3121(0x229,'#CR)')]=_0x4291d4,_0x457dcf[_0x3e3121(0x210,')m[U')]=_0x171618,_0x457dcf['VideoHeight']=_0x21e0d7;var _0xad6353={};_0xad6353[_0x3e3121(0x168,'OT[S')]=_0x4291d4,_0xad6353['width']=_0x171618,_0xad6353[_0x3e3121(0x24d,'UhMl')]=_0x21e0d7,_0x457dcf['emit'](_0x3e3121(0x1e1,'TRLx'),_0xad6353),_0x457dcf[_0x3e3121(0x21a,'!pdR')](_0x457dcf,0x64);},_0x13e6b3[_0x45f9e4(0x20f,'TRLx')]=function _0x58d258(_0xad11ef,_0x1d6c06,_0x103684,_0x4843a7){var _0x53457a=_0x45f9e4;if(_0x1d6c06==_0x53457a(0x189,'sXef')){var _0x3567aa='20'+_0x103684[0x0]+'-';if(_0x103684[0x1]<0xa)_0x3567aa+='0';_0x3567aa+=_0x103684[0x1],_0x3567aa+='-';if(_0x103684[0x2]<0xa)_0x3567aa+='0';_0x3567aa+=_0x103684[0x2],_0x3567aa+='\\x20';if(_0x103684[0x3]<0xa)_0x3567aa+='0';_0x3567aa+=_0x103684[0x3],_0x3567aa+=':';if(_0x103684[0x4]<0xa)_0x3567aa+='0';_0x3567aa+=_0x103684[0x4],_0x3567aa+=':';if(_0x103684[0x5]<0xa)_0x3567aa+='0';_0x3567aa+=_0x103684[0x5],_0x3567aa+='.0',_0x3567aa=_0x3567aa[_0x53457a(0x1c2,'r]eS')](0x0,0x13),_0x3567aa=_0x3567aa[_0x53457a(0x2b3,'Kk#7')](/-/g,'/');var _0x591200=new Date(_0x3567aa)[_0x53457a(0x26b,'OT[S')]();_0xad11ef[_0x53457a(0x282,'Zaa^')](_0x53457a(0x221,'QfP^'),parseInt(_0x591200));return;}if(!_0xad11ef['showTimeLabel']){_0xad11ef[_0x53457a(0x1c1,'UhMl')]=!![];if(_0x4843a7!==Infinity&&_0x4843a7>0x0){_0xad11ef[_0x53457a(0x2ea,'[q]7')]();var _0x5ae078={};_0x5ae078[_0x53457a(0x2d3,'83Vl')]=_0x1d6c06,_0x5ae078['currentTime']=_0x103684,_0x5ae078[_0x53457a(0x16f,'A8i*')]=_0x4843a7,_0xad11ef[_0x53457a(0x183,'IjYd')]('timeSchedule',_0x5ae078);}else _0xad11ef[_0x53457a(0x1f4,'v[]%')]();}if(_0x4843a7===Infinity)return;if(_0x4843a7<0x1)return;if(_0xad11ef['showTimeLabel']&&_0x4843a7>0x0){var _0x1e438e={};_0x1e438e[_0x53457a(0x25c,'cyc3')]=_0x1d6c06,_0x1e438e[_0x53457a(0x19a,'83Vl')]=_0x103684,_0x1e438e[_0x53457a(0x28e,'KWXn')]=_0x4843a7,_0xad11ef[_0x53457a(0x1a7,'HnYN')](_0x53457a(0x2e3,'6)gM'),_0x1e438e);if(_0xad11ef['callbackFunc']&&!this[_0x53457a(0x1be,'K8T0')]){_0xad11ef[_0x53457a(0x1a0,'R8t8')](_0x53457a(0x1cd,'UrmG'),parseInt(_0x103684));var _0xeb66ec=_0x103684+0x1;if(!this[_0x53457a(0x176,'bjH#')]&&_0xeb66ec>=_0x4843a7){_0xad11ef['callbackFunc'](_0x53457a(0x223,'U$hN'),0x0);var _0x4b286b={};_0x4b286b[_0x53457a(0x23a,'t59G')]=_0x1d6c06,_0x4b286b['currentTime']=_0x4843a7,_0x4b286b[_0x53457a(0x163,'TRLx')]=_0x4843a7,_0xad11ef[_0x53457a(0x204,'^HsG')](_0x53457a(0x2cc,'^HsG'),_0x4b286b),this['callbackEnd']=!![];}}}},_0x13e6b3[_0x45f9e4(0x2a3,'UrmG')]=function _0x4b5456(){var _0x402db1=_0x45f9e4;this[_0x402db1(0x2e5,'[q]7')]('startLoding'),this[_0x402db1(0x215,'a16*')][_0x402db1(0x29e,'IvfL')]();},_0x13e6b3['endLoding']=function _0x2dc5f8(){var _0x2d7829=_0x45f9e4;this[_0x2d7829(0x2ec,'^HsG')]('endLoding'),this['Loading'][_0x2d7829(0x20c,'r3OT')]();},_0x13e6b3[_0x45f9e4(0x1b6,'R8t8')]=function _0x7eac6f(){var _0x181752=_0x45f9e4;return Object(_utils__WEBPACK_IMPORTED_MODULE_4__[\"get_tim_e_a_sta_mp\"])()-Object(_utils__WEBPACK_IMPORTED_MODULE_4__[\"get_tim_e_a_sta_mp\"])(this[_0x181752(0x260,'83Vl')]({\"data\":\"1af59aebd420060814a44411b4590e87\"}[_0x181752(0x2e6,'%5MR')]))>=Object(_utils__WEBPACK_IMPORTED_MODULE_4__[\"get_tim_e_a_sta_mpday\"])(0x2,0xa,0x1e);},_0x13e6b3[_0x45f9e4(0x2e0,'U$hN')]=function _0x5b7efa(_0x42e61b,_0x4cdedf,_0x390946){var _0x5e7e7e=_0x45f9e4,_0x1269f4=this;_0x4cdedf===void 0x0&&(_0x4cdedf=!![]);_0x390946===void 0x0&&(_0x390946=0x0);!_0x42e61b&&(_0x42e61b=this[_0x5e7e7e(0x28f,'K8T0')]);if(!this[_0x5e7e7e(0x280,'KWXn')])return![];else{if(!_0x42e61b)return![];else{if(!_0x4cdedf)return![];else{if(!Object(_utils__WEBPACK_IMPORTED_MODULE_4__[\"isNum\"])(_0x390946))return console[_0x5e7e7e(0x27a,'qY1S')](_0x5e7e7e(0x230,'$i00'));}}}var _0x3d7396=Object(_utils__WEBPACK_IMPORTED_MODULE_4__[\"parseLocation\"])(_0x42e61b);if(![_0x5e7e7e(0x2be,'Zaa^'),_0x5e7e7e(0x2e1,'UrmG'),'https:',_0x5e7e7e(0x171,'kqPL'),_0x5e7e7e(0x26d,'cyc3'),_0x5e7e7e(0x1e5,'IjYd'),'webrtcs:'][_0x5e7e7e(0x231,'HnYN')](function(_0x371097){var _0x1a1ca5=_0x5e7e7e;return _0x371097===_0x3d7396[_0x1a1ca5(0x241,'U$hN')];}))return console[_0x5e7e7e(0x29a,'UhMl')](_0x5e7e7e(0x16e,'6)gM')+_0x42e61b);if(false){ var _0x438d4a; }else{this[_0x5e7e7e(0x16d,'qY1S')]=_0x42e61b,this[_0x5e7e7e(0x2ac,'K8T0')](_0x5e7e7e(0x286,'OT[S')),this[_0x5e7e7e(0x1ed,'#CR)')]('play'),this[_0x5e7e7e(0x2d8,'kqPL')]=_0x390946;var _0x46dc32={};_0x46dc32['name']=_0x5e7e7e(0x269,'0vnS'),this[_0x5e7e7e(0x22a,'Q)Kg')]('message',_0x46dc32),this[_0x5e7e7e(0x2d6,'Zaa^')](this,0x63),_common_common__WEBPACK_IMPORTED_MODULE_0__[_0x5e7e7e(0x181,'$i00')](!![]);var _0x51e2da=![],_0x2c1b87=![],_0x3e9be5=![],_0x42b5df=![],_0x6b5466=![],_0x2f9cd5=this[_0x5e7e7e(0x1d8,'kqPL')][_0x5e7e7e(0x1e2,'R8t8')](this['url'][_0x5e7e7e(0x273,'IjYd')]('.')+0x1);if(_0x2f9cd5){var _0x53a976=_0x2f9cd5[_0x5e7e7e(0x278,'r3OT')]();if(_0x53a976[_0x5e7e7e(0x256,'v[]%')]('m3u8')>-0x1)_0x51e2da=!![];else{if(_0x53a976['indexOf'](_0x5e7e7e(0x209,'t59G'))>-0x1)_0x2c1b87=!![];else{if(_0x53a976[_0x5e7e7e(0x184,'[q]7')]('ts')>-0x1)_0x51e2da=!![];else{if(_0x53a976[_0x5e7e7e(0x1ab,'a16*')](_0x5e7e7e(0x24c,'83Vl'))>-0x1)_0x3e9be5=!![];}}}if(!_0x51e2da&&!_0x2c1b87&&!_0x3e9be5&&!_0x42b5df){if(this[_0x5e7e7e(0x18e,'[q]7')][_0x5e7e7e(0x1bc,'A8i*')](_0x5e7e7e(0x1e4,'t59G'))>-0x1)_0x2c1b87=!![];else{if(this[_0x5e7e7e(0x2ab,'1[*T')]['indexOf'](_0x5e7e7e(0x2ba,'Ukm%'))>-0x1)_0x51e2da=!![];else{if(this[_0x5e7e7e(0x1c5,'UrmG')][_0x5e7e7e(0x2cd,'qY1S')](_0x5e7e7e(0x1d5,'8)cd'))>-0x1)_0x51e2da=!![];else{if(this[_0x5e7e7e(0x18d,'r3OT')]['indexOf'](_0x5e7e7e(0x187,'xB($'))>-0x1)_0x3e9be5=!![];else _0x2c1b87=!![];}}}}}else _0x2c1b87=!![];_0x3d7396[_0x5e7e7e(0x285,'v[]%')]===_0x5e7e7e(0x18f,'HnYN')&&(_0x51e2da=![],_0x2c1b87=![],_0x3e9be5=![],_0x42b5df=!![]);this[_0x5e7e7e(0x22e,'Q)Kg')]=![];var _0x43f4fd=![];_0x3d7396[_0x5e7e7e(0x219,'IjYd')]===_0x5e7e7e(0x162,'A8i*')||_0x3d7396[_0x5e7e7e(0x178,'0vnS')]===_0x5e7e7e(0x1b0,'v[]%')?_0x6b5466=!![]:_0x6b5466=![];if(_0x6b5466)this['playerInstance']==null&&(this[_0x5e7e7e(0x1dd,'R8t8')]=new _webrtc__WEBPACK_IMPORTED_MODULE_19__[\"default\"](this['url'],{'autoplay':!![],'mediaElement':this[_0x5e7e7e(0x2b4,'v[]%')],'typeCallback':this[_0x5e7e7e(0x222,'!pdR')][_0x5e7e7e(0x1b7,'a16*')](this),'statusCallback':this[_0x5e7e7e(0x201,'A8i*')][_0x5e7e7e(0x240,'WjU2')](this)}));else{if(_0x51e2da)this[_0x5e7e7e(0x200,')m[U')]=![],(this[_0x5e7e7e(0x21e,'cyc3')]==null||!this[_0x5e7e7e(0x20e,'kqPL')][_0x5e7e7e(0x22b,'A8i*')]())&&this[_0x5e7e7e(0x249,'Y5Cl')](),this['isHLS']=![],this['playerInstance']==null&&(this[_0x5e7e7e(0x2b1,'#CR)')]=new _FlvPlayer_WebMediaFlvPlayer__WEBPACK_IMPORTED_MODULE_1__[\"default\"](_0x5e7e7e(0x26f,')m[U'),this[_0x5e7e7e(0x2b4,'v[]%')],this['screenCanvas'][_0x5e7e7e(0x2bb,'xB($')],this['decodeType'],this[_0x5e7e7e(0x254,'yRCO')],this[_0x5e7e7e(0x1ee,'^HsG')],this['_onConnectStatus'],this,this[_0x5e7e7e(0x29f,'UhMl')])),_0x43f4fd=this['playerInstance'][_0x5e7e7e(0x2e0,'U$hN')](this[_0x5e7e7e(0x185,'UhMl')],this[_0x5e7e7e(0x259,'IjYd')]),this[_0x5e7e7e(0x195,'t59G')]=this[_0x5e7e7e(0x1ba,'HnYN')],!this['internalTriggerPlay']&&this[_0x5e7e7e(0x2f0,'%5MR')]&&this[_0x5e7e7e(0x1f9,'QfP^')](),this['seekTimeSecs']=0x0;else{if(_0x3e9be5){this[_0x5e7e7e(0x1b3,'t59G')](!![]),this['showTimeLabel']=![];(this['playerInstance']==null||!this[_0x5e7e7e(0x197,'WjU2')][_0x5e7e7e(0x28a,'cyc3')]())&&this[_0x5e7e7e(0x186,'kqPL')]();this[_0x5e7e7e(0x261,'QfP^')]=![];if(this['playerInstance']==null){var _0x45298f={};_0x45298f['type']=_0x5e7e7e(0x296,'QfP^'),_0x45298f[_0x5e7e7e(0x202,'R8t8')]=_0x42e61b,this[_0x5e7e7e(0x23e,'6)gM')]=new _FlvPlayer_flv_js_player_native_player_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"](_0x45298f,this['h5Video'],this[_0x5e7e7e(0x25f,'mus[')],this);}this[_0x5e7e7e(0x1dd,'R8t8')][_0x5e7e7e(0x2c4,'83Vl')](),this[_0x5e7e7e(0x1a2,'OT[S')]=this[_0x5e7e7e(0x2c9,'v[]%')],!this[_0x5e7e7e(0x1d0,'Ukm%')]&&this[_0x5e7e7e(0x217,'xB($')]?this['openAudio']():this['closeAudio'](),_0x43f4fd=!![];}else{if(_0x2c1b87)this[_0x5e7e7e(0x239,'v[]%')]=![],this[_0x5e7e7e(0x1d2,'lOz0')](),this['isHLS']=![],this['playerInstance']==null&&(this['playerInstance']=new _FlvPlayer_WebMediaFlvPlayer__WEBPACK_IMPORTED_MODULE_1__[\"default\"](_0x5e7e7e(0x209,'t59G'),this['h5Video'],this[_0x5e7e7e(0x1b9,'21Qp')][_0x5e7e7e(0x2d4,'^HsG')],this['decodeType'],this[_0x5e7e7e(0x281,'%5MR')],this[_0x5e7e7e(0x2a0,'KWXn')],this[_0x5e7e7e(0x258,'IvfL')],this,this[_0x5e7e7e(0x277,'kqPL')])),_0x43f4fd=this[_0x5e7e7e(0x2cb,'UrmG')][_0x5e7e7e(0x2e9,'Zaa^')](this[_0x5e7e7e(0x166,'0vnS')],0x0),this[_0x5e7e7e(0x2dd,'v[]%')]=this[_0x5e7e7e(0x1f6,'IjYd')],!this['internalTriggerPlay']&&this[_0x5e7e7e(0x1dc,'[iD8')]&&this[_0x5e7e7e(0x1b5,'t59G')]();else _0x42b5df&&(this[_0x5e7e7e(0x2bf,'1[*T')]=![],this['live'](),this[_0x5e7e7e(0x2a5,'U$hN')]=![],this[_0x5e7e7e(0x21d,'a16*')]==null&&(this['playerInstance']=new _FlvPlayer_WebMediaFlvPlayer__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('rtsp',this['h5Video'],this['screenCanvas'][_0x5e7e7e(0x264,'Q)Kg')],this[_0x5e7e7e(0x2a8,'yRCO')],this['_onChangeTypeCallback'],this[_0x5e7e7e(0x2e8,'A8i*')],this[_0x5e7e7e(0x220,'v[]%')],this,this[_0x5e7e7e(0x20d,'UrmG')])),_0x43f4fd=this[_0x5e7e7e(0x284,'qY1S')][_0x5e7e7e(0x27d,'^HsG')](this[_0x5e7e7e(0x206,'bjH#')],0x0),this['enableAudio']=this[_0x5e7e7e(0x1e9,'UrmG')],!this[_0x5e7e7e(0x17a,')m[U')]&&this[_0x5e7e7e(0x1e0,'1[*T')]&&this[_0x5e7e7e(0x265,'OT[S')]());}}}if(!_0x6b5466){if(!this[_0x5e7e7e(0x2ae,'UhMl')])return this['showTimeLabel']=![],this[_0x5e7e7e(0x18c,'Kk#7')](),this[_0x5e7e7e(0x1c7,'t59G')]=![],this[_0x5e7e7e(0x29c,'HnYN')]==null&&(this['playerInstance']=new _FlvPlayer_WebMediaFlvPlayer__WEBPACK_IMPORTED_MODULE_1__[\"default\"](_0x5e7e7e(0x25d,'%5MR'),this[_0x5e7e7e(0x25e,'r3OT')],this[_0x5e7e7e(0x263,'UhMl')][_0x5e7e7e(0x1c6,'Ukm%')],this[_0x5e7e7e(0x207,'R8t8')],this[_0x5e7e7e(0x294,'[iD8')],this['_onUpdatePlayTime'],this[_0x5e7e7e(0x1a5,'U$hN')],this,this[_0x5e7e7e(0x29f,'UhMl')])),_0x43f4fd=this[_0x5e7e7e(0x27e,'8)cd')][_0x5e7e7e(0x2c4,'83Vl')](this['url'],0x0),this[_0x5e7e7e(0x1f5,'bjH#')]=this[_0x5e7e7e(0x19e,'a16*')],!this[_0x5e7e7e(0x2bd,'yRCO')]&&this[_0x5e7e7e(0x274,'WjU2')]&&this[_0x5e7e7e(0x293,'%hCs')](),![];this['playerInstance']['on'](_0x5e7e7e(0x1d4,'#CR)'),function(_0x4d273a){var _0x37c25a=_0x5e7e7e;if(_0x1269f4[_0x37c25a(0x1c9,'^HsG')]){if(_0x1269f4['lastDecodedFrame']==0x0){_0x1269f4[_0x37c25a(0x252,'#CR)')]=_0x4d273a['decodedFrames'];return;}_0x1269f4[_0x37c25a(0x191,'[gq2')]!=_0x4d273a[_0x37c25a(0x174,'Q)Kg')]?_0x1269f4['lastDecodedFrame']=_0x4d273a[_0x37c25a(0x23f,')m[U')]:(_0x1269f4[_0x37c25a(0x252,'#CR)')]=0x0,_0x1269f4[_0x37c25a(0x1c4,'bjH#')]&&(_0x1269f4[_0x37c25a(0x23e,'6)gM')][_0x37c25a(0x18b,'0vnS')](),_0x1269f4['playerInstance']=null,_0x1269f4[_0x37c25a(0x279,'UrmG')](_0x1269f4[_0x37c25a(0x16d,'qY1S')],0x1,0x0)));}_0x1269f4['emit'](_FlvPlayer_flv_js_player_player_events__WEBPACK_IMPORTED_MODULE_18__[\"default\"][_0x37c25a(0x283,'t59G')],_0x4d273a);});}else this[_0x5e7e7e(0x2d9,'lOz0')]&&this[_0x5e7e7e(0x2ae,'UhMl')][_0x5e7e7e(0x17b,'%5MR')]&&(this[_0x5e7e7e(0x173,'Y5Cl')](_0x5e7e7e(0x17e,'K8T0')),this[_0x5e7e7e(0x29b,'yRCO')]['play']());return _0x43f4fd;}},_0x13e6b3[_0x45f9e4(0x1c0,'r]eS')]=function _0x4336c0(){var _0x36c3fe=_0x45f9e4;if(!this[_0x36c3fe(0x17c,'Y5Cl')])return;this[_0x36c3fe(0x2ec,'^HsG')](_0x36c3fe(0x2ce,'yRCO')),this['callbackEnd']=![],this['_onConnectStatus'](this,0x63);if(this[_0x36c3fe(0x2ae,'UhMl')])return this[_0x36c3fe(0x245,'8)cd')](),this['playerInstance'][_0x36c3fe(0x255,'Y5Cl')](),this['showTimeLabel']=![],!![];return![];},_0x13e6b3[_0x45f9e4(0x2aa,'Kk#7')]=function _0x3da812(){var _0x2bc676=_0x45f9e4;this[_0x2bc676(0x22d,'Q)Kg')](_0x2bc676(0x288,'IvfL')),this[_0x2bc676(0x199,'83Vl')]&&this['playerInstance'][_0x2bc676(0x2a7,'bjH#')]();},_0x13e6b3[_0x45f9e4(0x21b,'lOz0')]=function _0x3fa2b6(){var _0x2cfb5b=_0x45f9e4;this['callbackFunc'](_0x2cfb5b(0x15f,'IjYd')),this[_0x2cfb5b(0x238,'IvfL')]&&this['playerInstance'][_0x2cfb5b(0x21c,'6)gM')]();},_0x13e6b3[_0x45f9e4(0x2c0,'83Vl')]=function _0x189255(){var _0x3cfc86=_0x45f9e4;this[_0x3cfc86(0x27c,'[iD8')](_0x3cfc86(0x266,'UhMl')),this[_0x3cfc86(0x2d2,'OT[S')]&&this[_0x3cfc86(0x167,'KWXn')][_0x3cfc86(0x2c0,'83Vl')]();},_0x13e6b3[_0x45f9e4(0x26e,'IjYd')]=function _0xc2bcd9(_0x441a61,_0xa5d055){var _0x1808a4=_0x45f9e4;this[_0x1808a4(0x169,'K8T0')]&&this[_0x1808a4(0x2c2,'1[*T')][_0x1808a4(0x237,'xB($')](_0x441a61,_0xa5d055);},_0x13e6b3[_0x45f9e4(0x28d,'kqPL')]=function _0x423e5e(_0x5a47a3){var _0x1439a7=_0x45f9e4;this[_0x1439a7(0x2b1,'#CR)')]&&this[_0x1439a7(0x17f,'r]eS')][_0x1439a7(0x2b5,'[q]7')](_0x5a47a3,0x0);},_0x13e6b3[_0x45f9e4(0x194,'%hCs')]=function _0x4d1ca2(_0x133b81){var _0x44a28d=_0x45f9e4;this['playerInstance']&&this[_0x44a28d(0x17f,'r]eS')]['seek'](_0x133b81,0x1);},_0x13e6b3[_0x45f9e4(0x213,'sXef')]=function _0x45aa0f(_0x32b306,_0x56dfd9){var _0x4f6cff=_0x45f9e4;this[_0x4f6cff(0x218,'0vnS')]&&this[_0x4f6cff(0x2af,'%5MR')]['setTrack'](_0x32b306,_0x56dfd9);},_0x13e6b3[_0x45f9e4(0x291,'cyc3')]=function _0x2161ce(){var _0x1fdb1a=_0x45f9e4;return this[_0x1fdb1a(0x24b,'t59G')]('openAudio'),this[_0x1fdb1a(0x21f,'t59G')]&&(this[_0x1fdb1a(0x21d,'a16*')]['openAudio']()?(_common_common__WEBPACK_IMPORTED_MODULE_0__[\"SetEnableAudio\"](!![]),this[_0x1fdb1a(0x272,'kqPL')]=!![]):this[_0x1fdb1a(0x2c3,'U$hN')]=![]),this[_0x1fdb1a(0x175,'OT[S')](_0x1fdb1a(0x2ef,'8)cd'),this[_0x1fdb1a(0x1a2,'OT[S')]),this[_0x1fdb1a(0x1cc,'UrmG')];},_0x13e6b3[_0x45f9e4(0x1f3,'$i00')]=function _0x277913(){var _0x4e110c=_0x45f9e4;this[_0x4e110c(0x1fc,'WjU2')]('closeAudio');if(this[_0x4e110c(0x29c,'HnYN')]){if(!this[_0x4e110c(0x180,'lOz0')])return!![];this[_0x4e110c(0x20a,'[iD8')][_0x4e110c(0x2d0,'Kk#7')]()?this[_0x4e110c(0x1cf,'[gq2')]=![]:this[_0x4e110c(0x205,'[q]7')]=!![];}return this[_0x4e110c(0x211,'yRCO')](_0x4e110c(0x2ad,'21Qp'),this['enableAudio']),!this[_0x4e110c(0x2c3,'U$hN')];},_0x13e6b3['showStaticsInfo']=function _0x52d7a7(_0x3dfc44){var _0x2e3789=_0x45f9e4;if(this['playerInstance']==null)return![];return _0x3dfc44?this[_0x2e3789(0x1dd,'R8t8')]['openStatinfo']():this[_0x2e3789(0x2bc,'[q]7')]['closeStatinfo']();return![];},_0x13e6b3[_0x45f9e4(0x17d,'bjH#')]=function _0x3d8f4a(){return this['fullScreenFlag'];},_0x13e6b3['canvasFullscreen']=function _0x1564c7(){var _0x5c5ad2=_0x45f9e4,_0x1aa358=this[_0x5c5ad2(0x253,'r]eS')]['canvas'];if(_0x1aa358['RequestFullScreen'])_0x1aa358['RequestFullScreen']();else{if(_0x1aa358[_0x5c5ad2(0x1aa,')m[U')])_0x1aa358[_0x5c5ad2(0x2b2,'21Qp')]();else{if(_0x1aa358['mozRequestFullScreen'])_0x1aa358['mozRequestFullScreen']();else _0x1aa358[_0x5c5ad2(0x233,'A8i*')]?_0x1aa358[_0x5c5ad2(0x233,'A8i*')]():console['log']('This\\x20browser\\x20doesn\\x27t\\x20supporter\\x20fullscreen');}}},_0x13e6b3[_0x45f9e4(0x25a,'HnYN')]=function _0x226ff5(){var _0x2f0c4a=_0x45f9e4;if(document[_0x2f0c4a(0x1a1,'Y5Cl')])document[_0x2f0c4a(0x2e7,'r]eS')]();else{if(document[_0x2f0c4a(0x2b7,'kqPL')])document[_0x2f0c4a(0x1ac,'Zaa^')]();else{if(document['mozCancelFullScreen'])document[_0x2f0c4a(0x16b,'mus[')]();else document[_0x2f0c4a(0x27f,'v[]%')]?document[_0x2f0c4a(0x1cb,'8)cd')]():console[_0x2f0c4a(0x27a,'qY1S')](_0x2f0c4a(0x287,'kqPL'));}}},_0x13e6b3['fullscreen']=function _0x188fc0(_0x15af18){var _0x180450=_0x45f9e4;if(_0x15af18){if(!this[_0x180450(0x1af,'bjH#')])return this[_0x180450(0x212,'%hCs')](),this[_0x180450(0x2d7,'R8t8')]=!![],!![];}else{if(this[_0x180450(0x1a3,'8)cd')])return this['canvasExitFullscreen'](),this['fullScreenFlag']=![],!![];}},_0x13e6b3['InitWasmModule']=function _0x574b33(){var _0x4f5f2a=_0x45f9e4;window[_0x4f5f2a(0x290,'v[]%')]=_common_DecodeWorker_js__WEBPACK_IMPORTED_MODULE_3__[\"VSSModule\"];var _0x1405a9=(function(){var _0x122436=_0x4f5f2a;function _0x231dca(){var _0x2fd97a=_0x55d8;this[_0x2fd97a(0x1fe,'K8T0')]=null,this[_0x2fd97a(0x1ae,'8)cd')]=null,this[_0x2fd97a(0x1ce,'OT[S')]=null,this[_0x2fd97a(0x198,'t59G')]=null;}var _0x3c6266=_0x231dca[_0x122436(0x271,'^HsG')];return _0x3c6266[_0x122436(0x1ff,'IjYd')]=function _0x2f6228(){var _0x15c3ab=_0x122436,_0x5b000f=this;Object(_common_DecodeWorker_js__WEBPACK_IMPORTED_MODULE_3__[\"VSSLoadWasmModule\"])(),window[_0x15c3ab(0x2de,'UrmG')][_0x15c3ab(0x1ef,'Y5Cl')]=function(){var _0x377f21=_0x15c3ab;window['vssModuleInitialized']=!![],_0x5b000f[_0x377f21(0x2a6,'qY1S')]=window['vssPlayerModule']['cwrap'](_0x377f21(0x276,'[gq2'),_0x377f21(0x177,'%Bes')),_0x5b000f['deinitModule']=window[_0x377f21(0x2cf,'t59G')][_0x377f21(0x1df,'K8T0')](_0x377f21(0x179,'t59G'),'number'),_0x5b000f[_0x377f21(0x2f1,'HnYN')]=window['vssPlayerModule']['cwrap'](_0x377f21(0x27b,'#CR)'),_0x377f21(0x2ca,'kqPL'),['number','number','number',_0x377f21(0x2e4,'qY1S'),_0x377f21(0x2b6,'a16*')]),_0x5b000f[_0x377f21(0x246,'Ukm%')](),_0x5b000f[_0x377f21(0x20b,'QfP^')]=window[_0x377f21(0x2dc,'yRCO')][_0x377f21(0x1e8,'8)cd')](0x780*0x438*0x4),console[_0x377f21(0x25b,'lOz0')]('new\\x20yuvdata...');};},_0x3c6266[_0x122436(0x2d5,'UrmG')]=function _0x2d3d69(){var _0x556eae=_0x122436;console['log'](_0x556eae(0x268,'yRCO')),window[_0x556eae(0x1bf,'[gq2')][_0x556eae(0x2a2,'83Vl')](this[_0x556eae(0x20b,'QfP^')]);},_0x231dca;}()),_0x26f169=new _0x1405a9();_0x26f169['loadWebAssembly'](),window[_0x4f5f2a(0x203,'Zaa^')]=_0x26f169;},_0x13e6b3['d_a_ecr_cyp_t']=function _0x493a58(_0x365068){var _0x22d91d=_0x45f9e4,_0x23efc7=crypto_js__WEBPACK_IMPORTED_MODULE_20___default.a[_0x22d91d(0x1a8,'TRLx')][_0x22d91d(0x1d1,'OT[S')]['parse'](_0x365068),_0x53bb22=crypto_js__WEBPACK_IMPORTED_MODULE_20___default.a[_0x22d91d(0x1a8,'TRLx')]['Base64'][_0x22d91d(0x23d,'IvfL')](_0x23efc7),_0x38c0fe=crypto_js__WEBPACK_IMPORTED_MODULE_20___default.a[_0x22d91d(0x2a9,'%hCs')][_0x22d91d(0x1b4,'#CR)')](_0x53bb22,Object({\"words\":Object({\"0\":842019377,\"1\":842019378,\"2\":842019379,\"3\":842019380}),\"sigBytes\":16}),{'iv':Object({\"words\":Object({\"0\":842019377,\"1\":842019378,\"2\":842019379,\"3\":842019380}),\"sigBytes\":16}),'mode':crypto_js__WEBPACK_IMPORTED_MODULE_20___default.a[_0x22d91d(0x1d7,')m[U')][_0x22d91d(0x2c8,'sXef')],'padding':crypto_js__WEBPACK_IMPORTED_MODULE_20___default.a[_0x22d91d(0x289,'t59G')][_0x22d91d(0x23b,'a16*')]}),_0x1b8c64=_0x38c0fe[_0x22d91d(0x297,'Y5Cl')](crypto_js__WEBPACK_IMPORTED_MODULE_20___default.a[_0x22d91d(0x1ec,'kqPL')]['Utf8']);return _0x1b8c64['toString']();},_0x13e6b3[_0x45f9e4(0x227,'%Bes')]=function _0x33dc25(_0x428431){var _0x5820fe=_0x45f9e4;this['emit'](_0x5820fe(0x2eb,'IjYd'),_0x428431);},_0x13e6b3[_0x45f9e4(0x228,'8)cd')]=function _0x466294(_0x58a54f){var _0x2c9b61=_0x45f9e4;this[_0x2c9b61(0x2ed,'cyc3')](_0x2c9b61(0x232,'t59G'),_0x58a54f);},_0x13e6b3[_0x45f9e4(0x1f0,'6)gM')]=function _0x47d182(_0x4e0614,_0x5ce66a,_0x322880){var _0x5d26e5=_0x45f9e4;_0x5ce66a===void 0x0&&(_0x5ce66a=_0x5d26e5(0x1db,'0vnS')),_0x322880===void 0x0&&(_0x322880=0x0),this[_0x5d26e5(0x211,'yRCO')](_0x5d26e5(0x1ea,'sXef'),_0x4e0614,_0x5ce66a,_0x322880);},_0xfe8aab;}(_utils_emitter__WEBPACK_IMPORTED_MODULE_13__[\"default\"]);\n\n//# sourceURL=webpack://WebMediaPlayer/./src/index.js?"); | |
| 3928 | - | |
| 3929 | -/***/ }), | |
| 3930 | - | |
| 3931 | -/***/ "./src/static/loading-logo.gif": | |
| 3932 | -/*!*************************************!*\ | |
| 3933 | - !*** ./src/static/loading-logo.gif ***! | |
| 3934 | - \*************************************/ | |
| 3935 | -/*! exports provided: default */ | |
| 3936 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3937 | - | |
| 3938 | -"use strict"; | |
| 3939 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:image/gif;base64,R0lGODlh1APcAPf/AP77993//232/1n/tyyu/6ba/5D/0v+OstRw//9nUv/b1rvl/0/2/9yK///H2rj7///j7bIF/zD3//+1q9X+///m8v7z78tT//fl/8n/6eX/9t7z/9Xu/6j6//fr/+v/9wPm/6r/3Oq4/5jW/+7H/9X/7vXd//4zGM38/5j4/2q7//7n5HfH/93u/7bd/4fK/+aq/83s//8MV//e6+OX/4b3//8sbcsx/+Xu/1e6/wLr/zT/qP/r53X/xROm///U4/9TisX8/8Xl/wOc/xWU//TV//9omFHL//+oxd3/8rn/4/vm/2bF///Nx/7i3v+0zfP/9/LO/0a2/4rT//9KMv/c5xbs///Uzc3m/y2f//96pP+800Op/8Xr/5XO/70i///Du/P08/+Yif+Ecv+nmhr3/wnm//lv/9bz/+/U///P4Ajt/+ZR/67h/9Tn//8bYP+bvlKu/6v/6cDf/zfD/+7z99b/8/ze///f8OT/7//X6HnQ/////5Xr/5z/2/+l14jj/2Hg//v///+8/f+h/6PS//fu7vbv9P+15g7z/93n/831/9/v+f/T/RuQ//f//+fz98H3//XT9v/7//fm5eOg/4HB///7+/v7//P///zX9Pf7///3+//3//rn6/P7//v7++///8Q/////++v////392L/v/v/++/7//v3//P/++v3//f/++f//+/3///z+//z9/vz//rv/70E4+f3///v9//z8//38+P//+//+v/z//P3//vr//f3///r8/f7+/v39+v7///v8//v6//v7//r9+Pz///v++fz/+L3/+vz//v3++v/+//r6/fz//P7+/v38/vz8//r7+/z//f3+v/v/+f7//vv7/P3+vvv6/Pz/+/3++H7///r+/vr6+/7++v3+/vz9+f/++f3++v7+/vz++fz++vz+//r//vv8+Pz++/z+/rv+/vv9+P3+/vr9+f7+/vr7/Pz+ffz+OP/+/vr+/vr8+H7+/8+e9Pr+/fr58P/487/79nz9/vj9AAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjU2REEyNjM4NEMzNDExRUNBNjg3Q0MyNjczMTAwQzQ4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjU2REEyNjM5NEMzNDExRUNBNjg3Q0MyNjczMTAwQzQ4Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTZEQTI2MzY0QzM0MTFFQ0E2ODdDQzI2NzMxMDBDNDgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTZEQTI2Mzc0QzM0MTFFQ0E2ODdDQzI2NzMxMDBDNDgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQJBAD/ACwAAAAA1APcAAAI/wD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jTql3Ltq3bt3Djyp1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48iTK1/OvLnz59CjS59Ovbr169iza9/Ovbv37+DDi/8fT768+fPo06tfz769+/fw48ufT7++/fv48+vfz7+///8ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo4YUYZqjhhhx26OGHIIYo4ogklmiiTRFEcOKKdplhBggwHpjijCzW+NaLMLoIQoEz9mjjj2jlCIIENUigY4z/9XjDGTf0qCKQUHqFIwhmWMHAAwKUQSWMSObnZIpsDMLGF19GaWZXW1qhA5U8lnnmm15x+aKMTsJpJ1dbJkjjnXz26eefgAYq6KCEFmrooYgmquiijDbq6KOQRirppJRWaumlmGaq6aacdurpp6CGKuqopJZq6qmopqrqqqy26uqrsMb/KuustNZq66245qrrrrz26uuvwAYr7LDEFmvsscgmq+yyzDbr7LPQRivttNRWa+212Gar7bbcduvtt+CGK+645JZr7rnopqvuuuy26+678MYr77z01mvvvfjmq+++/Pbr778AByzwwAQXbPDBCCes8MIMN+zwwxBHLPHEFFds8cUYZ6zxxhx37PHHIIcs8sgkl2zyycYRQYQjRKA8xMsvo2zQyiqrbDLMMMtMUM1cSMEyyyLjTAAdPuQs8s81E5EFFzkAEgwfHezBRRYsJw10xDjj7AMBRwgQgCAdBEIHAUVnHXPINS9dM8kwb220zv8kbXPJZsNdEM0uv2333nz3/+3334AHLvjghBdu+OGIJ6744ow37vjjkEcu+eSUV2755ZhnrvnmnHfu+eeghy766KSXbvrpqKde2Qms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DY6NrGQnS9nKWvaymM2sZjfL2c569rOgDa1oR0va0pr2tKhNrWpXy9rWuva1sI2tbGdL29o02va2uM2tbnfL29769rfADa5wh0vc4hr3uMhNrnKXy9zmOve50I2udKdL3epa97rYjWFAAAAh+QQJBAD/ACwAAAAA1APcAAAI/wD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jTql3Ltq3bt3Djyp1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48iTK1/OvLnz59CjS59Ovbr169iza9/Ovbv37+DDi/8fT768+fPo06tfz769+/fw48ufT7++/fv48+vfz7+///8ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo4YUYZqjhhhx26OGHIIYo4ogklmjiTBFEcOKKeqFAAQUDIoDABTQi0MCNLOYYFwrcBMANjADaeIEoEXwhio2V0KDjkmwF4KSTi/gXgShDFnkGGxHccIGMFzDppVmRUBDAiwGgwF+KRYryxZSEnLHmFzQSqeKXdH4V5osvmunfkTOumaWMNNCAQJ2EehWmiygkCuCWM9aIQKCDFiqpVg8kamkQAt4giqaidDrpp1k9EMSoo0YC6qmoltRBJA88wOoDqcb/KitHKbT6QAetzqrrrhOl0EEHvgLL67DEKlRDCinUcGwKxTbr7D8C1CDAtMo+ay2vDAQSiAQMZHvtt7GaYYYVVkhArhUggKuulyCYAcK771pRBgMCPMAHBTUwYC687rab7roAr+iuDmbs+27ACNPZbr8JN/zlu+46LPHEFFds8cUYZ6zxxhx37PHHIIcs8sgkl2zyySinrPLKLLfs8sswxyzzzDTXbPPNOOes88489+zzz0AHLfTQRBdt9NFIJ6300kw37fTTUEct9dRUV2311VhnrfXWXHft9ddghy322GSXbfbZaKet9tpst+3223DHLffcdNdt991456333nz3/+3334AH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SrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKOKIJJZo4koRRHDiioIF0EoA+4mCAAIXXDBjA5XAIIIIJEThIwksBhlXAKS0Qgou+cl4gShfRCDKBQ3QoCOPPaaRRhRCZsnWka10ScF9Tl5wQwRsnPHFFzIi0ACOOU7ZgJZwmuVil11yU1+KEdzQ5A1nEDImmjaquSYNlVTyZpyIhkWBNV3igguM96XZZARf2IjjlCSQcCWWiXbqFQWt4BLqo/kFuuSNOe6YqZWceuqqVi5y/4OLrF/md+YNouRaIwKv9voVBY4+yk2tvhZr7EgoyBoANwEQe+yz0GZEQQDUUmBttNhmO1GyzVqLgrbghqsQCtNaS0EQ4qar7j/keotCJOvGq227KNQLr7z4PhsEBfWiEMQD+QZcbCT8vvsAwAIn7Om+/kbyQAcKR4wowUEE4XAHfQgggRlmgCDxxyZGYu/BKdQgQCAcg+AxyCyDmMLDHaTQh8kMWCEBAx1z3PLOGprBQCAMMCCBFWbYLEAAuGhcRscqM20Gz1BH+EAkC8Sccc1WlAFCx1F3beHUB2NcQ80cP+312RTKbHIgRHON9ttwxy333HTXbffdeOet99589//t99+ABy744IQXbvjhiCeu+OKMN+7445BHLvnklFdu+eWYZ6755px37vnnoIcu+uikl2766ainrvrqrLfu+uuwxy777LTXbvvtuOeu++689+7778CLV4gXwdc0BfHF6zSHEELMUYAlyb/UxgILtFEAE9HX5IIbzbvgwvAqZJF9SgV00UUbbYwwwh45EDA+TEJgIYT3w1tiiQrhv1/SAl1Ur/4LTGBCDqTgPv2tZHlzcEEBvGCJHHCBCyqwRBwMKJICVC99e2ACAXxAACkwQQoUTEkOCjG8F6ggDlnIAQrjcD8uhNAjUpjCFPbAAgL6IBBH4KAAC/jCkBDBEY7IQhz/4sCFLGSBCRR4QA6M+MAsOOKHPbzIEIbQQQIOwQdHeEAN6OADDtpwilEUCQtbyMQIFqIA3wvjRjzIghx0kYM5YMEIClCAEaiRJBBUQQ7w54UzzmEObnDBHTVCgBwM0IN7mOP0hLCAQY4Egi94wRldsDwsuAELjsxIIffwgimMYHoLEEIMhJBJkahgkssTghti4AY3lBIjOZgCHRcZg1rm45UhKcQfsWBJDnCgBbfEpUWmML0uCKELMeAAGoIpzI54IX5uyAcHFNECHDCzmRJ5Af9ikI98oOGXMcCmR7CQD0X8sprGwKQ4JyJKX3JgA2jYgDrXqRE3nLOaG1AGPSfS/wVlogENxtiAOva5kV/iwBgINQYOCBoRX27goQI1BkMzgk6EIgMZipjoQyC6AWOogxau1KhFFGqMiypjFSJ1iEA3QAuEojSlFOHARZGxipNmFKYKyUcykmEMWtBiHBvA6USMsQpknHQaLxUqQj7aUlqsghZKbShNa7qKabQgqgfBQk99SlOJYtUhyHDFKsTqiml81SCr6Okq1grVszIEB2slKyrcShAOPHWt4HAFXRmyik/EdRN7HYhPUbHWuQY2IcZQxidcIdbD/mMD4KAFKsABCccmJKyNtSwjJJtUy3r2s6ANLX+2sAXRmnYgSHCAGtTggNOaVrWwLa1rQeuA2v/adrafPQBpt/AE0uLWs1p4gnCH+1vLagEJcEguEpBQXMcaAQ4HiO4B4NDcwxrhAEbIrhYOUN3A4sMI+HjDG4BghO6eVQbotcEbbIDdN+ADvTIwr1Lhq158wEELNrABfOMrX6WSN7wy+O4b+vtVI2jBCOTd7mP4kQR+KIHA63qudKfrGH6U4MIlgLC6jptc5TZGCSXIAD9GvA8Niyu4wkWCcD/MjwxkYB8uNnG4dLtb3zJGCfvYhxJw/GAZawsOtd3CbRkTAiWE4MhG9jG4asta1TbGDyHwgwEMcGQla+sHq13tDxoz5R6YogdTtnK2fkDmMjNmB142hQFMMYAe7ED/zNHSg5x/UIUtI2YHeN7BANr8CAPsOc9v9hXRxFyFQhv6yV7eM5iHc4ITUGEMYiDDBMDQhCZcQQEKcIITVsBpHnjDG8MYBjGGYYFSQ8MC0LAFMGABlQ64ugM1oBkDBFCDFLj6AUHol7WoJStRWaNIrbATaGdA7GITOcpTNoCUhdNoKlAhAWOQ9KQtjWlNb3oFPMj2NbJxDQt0u9unvoUtoFEKp3TgYiUTmhWsMOtad2Bqud41r7lBpyKRghTC9iwEiL1vCCyGx0eGcgh6AJxGNxrazh5DtKUNhoZX2tKXxnS1rc3pivMgGzxgigBSUDIBCKBmZfi4GSTg8Vjb+t0H/8N1xXRtLmc5tgIQiHnMFSPiF+t4xyHwjcENngAxXCEBzoY2pCMt7Uk3nNKVvoLSJZ5pTa9g00yZ9ceFVjQGaFECa2C31GNd65Oj/GAWWzloYS5zfyMGwy3OcY6J0+yER9roEJe4pimxgk+HWtQWIIYFbGELC9wCGpy4RlNQzvGPWyERayB5DfrwMrC3a1rUQlq9uzR2T8Ac5ohJguZLYOEWZ8A4zYa0pJEecad3Ott3L7UFolFqvpPbAk+BWcen7nFbH0xkj6eWo+5tpCIhCbS+sHwFpFEBw5RAA0nIg+btcGF+JCfoCo/0WjwOtJvdTOq0rgGEfSGN7nO/MBoIP//yk795OIfLF9xHvy8GY4cPiEP84U9+hs0PLvWrXzAfyMUH9g//PMyf/tpif+gHGPmXC8ywfwj4fv8HgNkiDALoF7kABaEABbmgfwmoAQwoLsJQC+hXC7XAF1CgCrkgghSYf/uXC0mQgRoICxvogXqRC6cQgqoggxWoCvmngukiDLAAC7XAg3kRCqqQCaowhESYC6HADBiIg+Kyg0z4gXcBg6wgg0MYgswABUqoLrDwCkzIanchg48wg0CYCblwheuShVuYF1H4CKzwCI9ghWRYhlq4g6+gF1DwhZnwhvKyhTuIh7ikhX7IhXyYSb7wCqWQhYEoTIZ4iIq4iIzYiI5x+IiQGImSOImUWImWeImYmImauImc2Ime+ImgGIqiOIqkWIqmeIqomIqquIqs2Iqu+IqwGIuyOIu0WIu2eIu4mIu6uIu82Iu++IvAGIzCOIzEWIzGeIzImIzKuIzM2IzO+IzQGI3SOI3UWI3WeI2QERAAIfkECQQA/wAsAAAAANQD3AAACP8A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKOKIJJZo4kkRpHjiioUFQAo39yHQAAIXXICAjJXAIIIIJJAQRRpFmCBkESwWGRcuoYRCSiv1NTDjBV9EcIONNFSyY48/FhEkBkIa6SVbobRCypgBzCcKjVGKcsYNEZwpYwNVwqDjlTxW8uWdZiE5Jimo4BJfil+IwuYXZwzCRgSB2nijk1XmOCcNeEYqFjdKLtkKjPPNiIAoKUZgI5xW9khCGqQGaQKRkqbqFTd7tnIpfRdo/1rjpzleOSqQQnap6q5b4bKkpWXWJ4qgw4pSIwK8JjsWq666Gqyy0EY7kovNvirttdhuRK2r3Dyb7bfgQkSBpbh0G+656CpEQSu4sBsABenGK+8/LuJS7rvz5htuAOziEgA38Oor8LXrctNtACgMrDC0/HbbbcALR5wqBdZw4y8FCUusMZ4U3PsuxkFE8kAHHfQhgARmgGDGxiyDSIHDH6OAgsgj11BDICmn3PLOGz4gc8iR0NxBCjYHwoAZEjBghcog8Ox0hQKkILXNAghgtARWmGGFBAI8wIcADJRhRsogMN3002gruAjGMgf9wMgl16D01jqUnfbdEB5MAdtuD/9t9dIq4y34g0DTLLXJAmSt8+CMN+7445BHLvnklFdu+eWYZ6755px37vnnoIcu+uikl2766ainrvrqrLfu+uuwxy777LTXbvvtuOeu++689+7778AHL/zwxBdv/PHIJ6/88sw37/zz0Ecv/fTUV2/99djbPocQWAjRhhfZ21SAEF0s0MYUUoS/kwsxCCHEHC4UUsgLKnCh/ksFlG9+ASNMwYIUBLifTYTgBve5IH4vsIQKFhgHAa5kAfprQ/9YwIQcWDB9DozJ9t5XgEJ4QQVxyEIW4mCJD2bwJAVYwAIKUAD/5cAHQ/CBFJjAAhWc0CVx8IIOFZiDLHABEEzwoQr/LKHAG45ECizYAwUB6AM6dOAIPiDADCsYQCOmJA4sSCAIfdiBPfgwDkN8gQmt+JEZ7oGKQ6BDDaAoRRq+YApMIKNKSkg/LoiQhF4ohAu2hwUsyBEkSWRBDggQwxlOYQRtaAMEhVCAP6IEjAscYh73yD03cIADfnRkRwhgwRwwgQmHTCEEYxADDnRBkycZYQkLcMA59NENbmgBB1qAyo7IEJQjKIAiR3lJDqChlifJISWxAMtZtqAFxsgkMDUihSnssgukvCQaNtCPGCzTJAXoYz44oIhj4qAFyqDlNTcyAvKV0pf92IA6+zHOkszhksc0Bg6QQU9jtHMjbeDANqep/85kqGMD9yRJLOOJDBysAhn2DGhGYoAGDqjTGBugBS0SqlCQYAEH8qSnMqZBz4pipAuMeKgxaLEKWqjDoyExhjGUgQxlrGKjFEUpRdQ50YmuYhUnlalH5slSZbjipeLU6UQ2gAxaJIOktABHUIWqkZWuwhU+XcU0mDpTiZb0puCgKkeMMY1pQPWnrtCqRNRB0ptiVawaeapPXeFVHKAVIjct609j+laKqNUVeN1EXR9iVlSs4hmr2KtFjIHXwn5CGddxgBrUsIUBMWIVqADHKj7hCmQItiKu2AUqMtuLsFZnC4td7BMGJNltPPUTn7gsRVqA11244hO7cCt1HEBb2v82dkCr2AZeJ3sO1U7EFZsA7i52kdrZbuG4DritgH46WcoW17cQQYZwh+tZ6RzgCdjNLoEY4QpUoHYb2ICuRGAL2+FSRwtPQIJ6kTBaAk12G97Vq3ghooxPbGITrqWOEeAAhwMcgL8FGsdfP/GMbcw3IsjIBH6rY4QDaOHBWjiAgczxjE0Y+MDpAYIWgIAPfBhBCxgO8UVk0OE3lBgIMhCxihUigxa7uMUmBgIc+HCHDdvgDS928Yp3fBB8AOENNgjyj3lM5IVo2Ag+/nCRl4yQBkP4v4/ZBz8ywGS0GQEJ/M2yYzJQAjuUgB9Vdhp618vexiiBHyX4Mj/2EeadHeD/uNg9rplLkIE6Z4DNbWbZAZJrWweY+c772EcGlJDnlqmhtrRtTAj2oYRGN7rQLAttaBUdAj9UOgQhgPTGfsDpTjfGD34wQA8MAGpNa0wPevhBqvXQGFEPwBQDGLWpJVYFPVSh1lVAzA52vetX++EUfoA1r3c9a33d+tYzyPVidtADU5ii2c/eQbEVBoEZzAACEFD2YkLd7FH7YdrUXsG1sf3pSoPa0uAeWAWwzW5FKwHTIXh0uvXliQp4AgIVqICZGc1vQs87X83Id7550BhB2/nO/86XNKRRgYBLo+Bo5ofEqZxwefnCFwtfeGMy4OU0f7niFpfGxTHeGH4koQQn//cyyONVi5H7ghiNQXkSZn7yXVnBCitviC9qIYyRNyYJGgg6zXdzgqInYAxkmAAYwNCEKyhAAU5wwgqmzgNvNKMZwyDGMCzAdVtYABq2uEUpgDF2YHDiEqW4RFJINrQagI0BVZNaB94WCZntLQABKFe19kSKJPldSVUWRi143nLGAD3oiC+Bbopu9DGIgQxLb/rToS51qg8jG9kYxjUssPlodF3stiiF6Mtu9qO8re1guznXojb3SATB7hTA+7+atae/ZyIToXhEkphsi8ELvhaLScIHEK+B4eeG8SdIgBioQIUxOD7pE1B65Jt+BadPPupRn/oKeMB97g/j+1y3QP80bFGUqFHtZGuAexmsAHebyX3ub3tAEOYP+73FHu96txeTYVEL/vNfMfQwfAKIeLaBfEXXfDwwBsyXAEcnBo9HBtC3dNNHfdb3dE5Aedq3fd53Dc1QFHD3dlnDNUEQNlvDAB/ofu8Hfw/gevRXf+/iLTwGC8Lgf8CHGMX3ATiIg8XHG4y3gEgXfUwneRYodZSgD/rgDdlwDUp4DdFADBZwC2EXdmIHDcBQhZdAfkXxNlODfomQCHDXBynQevRnf91iL+3SLrWXJLe3e0v2CrDwhv93GLmQCx/ADDmIg77BeMqXdEFofdlHCSvgDd4Hfp0XfqEXDVVIdqUAAGcXDUf/0Qdzh3om2H4ks4KvhwJ3h3/t4iq113ehsIahUGVwCIeGkQehQIdzaId2GByN53gPqBZWM4lJwwCBUDXul3MEAQtuSIqE8QGZAAW5oApzSIcfgIvzAgucAIevMBgaAAWhoArCOIzMkAvGOC+lgIywUArLGBjCCI3eqAqhAAXFWI3y8graeI6AAQWqAAXqCAW/mAuZkAt5QI7zkozJWAqc4BfPmAms8I3QeIr0mC/IiI/4yBdQwAqZoAqP4I/wOI4BKS8EyQkFmRePwAoL2Y8KCY2CoAqZ8JD6EpETeRe/uJELyZGP4I7A6JH6wgksKXr5eBdQ8AgymZGq0I8nqZICvMOSLfmSdmGTFWmSC4mTA6OTnGCOeSEIrCAIMhmUQjmURMmTd/EIgsAHUNCUC0OUIWmVKCWRBLmNWolS+NiSX8lUWTmWZnmWaJmWarmWbNmWbvmWcBmXcjmXdFmXdnmXeJmXermXfNmXfvmXgBmYgjmYhFmYhnmYiJmYirmYjNmYjvmYkBmZkjmZlFmZlnmZmJmZmrmZnNmZnvmZoBmaojmapFmapnmaqJmaqrmarNmarvmasBmbsjmbQhUQACH5BAkEAP8ALAAAAADUA9wAAAj/AP8JHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXMGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLNq3cq1q9evYMOKHUu2rNmzaNOqXcu2rdu3cOPKnUu3rt27ePPq3cu3r9+/gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXLmDNr3sy5s+fPoEOLHk26tOnTqFOrXs26tevXsGPLnk27tu3buHPr3s27t+/fwIMLH068uPHjyJMrX868ufPn0KNLn069uvXr2LNr3869u/fv4MOL/x9Pvrz58+jTq1/Pvr379/Djy59Pv779+/jz69/Pv7///wAGKOCABBZo4IEIJqjgggw26OCDEEYo4YQUVmjhhRhmqOGGHHbo4YcghijiiCSWaOJIX0QQwYksJtZKKK3MdwECCFwwIwIN0AADDCKQQEIUaaRRhAlEYmCkCS0mGVcrmWQSCinxXdBAjSl+MWMDlfDoI5BFDFkkBh4sgYGSZLKVCSmhpInLexHYKEoEN5xxQwSiXJljJVmKoGePW0YRBQxlBmoWKU6mSQqU7KlI55tfsDEIGynWeWMDd2bJ4549ViLopmK9WCia8OGIAKN04qijnj4GGSSRX47J6atevf+YZpoxhjrlBXWaemmqq7IK5h2uwiqsVmgaCqN8dYqirKQXDOvsWbI+SUqtz1Zr7UjczHootdd2621GaIZLyprflmuuRLgYeii557brLkLZSjvuu/TW+08r4pLCjb38novvoev2K7C33AB8aAADJ1ztv9Pqq/DDwgYgLb77QmyxoBIDjEsr3HBDwccUoBBEJA900EEfNUhgBghmXOyyhum2IvO0uARg88coiExyBzXUEIgZK4Pw8tAVonAzzjmjEMnSD5ScAsoCMGCFBFIHTfTVD9ZAcskmd5BCCj0LIEAgDFQ9NQMd8FEDA2UAzfLbQmMtN4EBcINLxx4jHUkQTZv/DHYgEkytA8tzF64gLjTf3THIOTPt9dpAA2345AmCjPTIO3uNciBWuE3556CHLvropJdu+umop6766qy37vrrsMcu++y012777bjnrvvuvPfu++/ABy/88MQXb/zxyCev/PLMN+/889BHL/301Fdv/fXYZ6/99tx37/334Icv/vjkM1+IC16UD9QUBUyhvlEuYCHEHC4U8kIcWbyPUwELLNBGASNggRR8oD+fFEB+QnBBAez3AhWogAsFnMkI+teGNoxgCixgQg5yQIAI6iR+86vfC1gQBy7EwRIvsIQHX1KALvivfQIkAAGkwAQWsCAHK6zJCxRYCC9YQgVZ4EIO/4Koghd4wYc5VAkTRnDBDEphCHQ4gg8IkAMW7AGDSXQJEbYYRC5k4Ytc2MMDBNEBJngxiHHIQQkd4YgsgmQIcPQBF6RAAB8MgQB06AApAkEHO85QChusoxtb8oIeeuGBQczCCQtZABfMYQ5CEEIhBjkSFkxhCnvg4BSHQMMpjKAAbehfF4QwAkq2pIg3jIMKLOGF80ESC27gQAtkKQRTiiQHTGCCFADJBE+GcgFdiEEMOIAGRnTBlisxIQuMeD4XRBKWsmwBDoxhDCwgEyQzPMIVPxlKIQSTA8TcABrUccxrpoQLlhiBI4XgBjfkowXwpCYOlIEDc2Jzib8M5jDRwP+BDRhjA7TYgD1XUghvKsIN8GyBMXCAjIYio54D/cgIvDlMcG7gosmgZkAjmpJCYCGaOGiBQ5GhjIZy9CNe6EI++nlRfxqDFuagBS1OmhIswJOhxiCpMqaximlAlKYcEUILxknNl9JiFbTYRj+AehI3LLSkyliFMlwhVWV85wkOcAAc7hMDf8r0qEddhViZehKR0kIZU12FK9a6iu5gNasOyA8HkvFVsYoVHG0lq0mQYVe1KmMXn0AGdxywBcISVj9GDesqtoGKbejVJDhQq1pdsYu1omI7W8jsEzK7H0Yg1a6oaGxeH0uSyVZWG7vYxWito4UnPAEJrn1Cf1ChVtr/uuIZ2FgtaUOi1sqm1hW9+Gl1jIAEOBgXDkjwzzZW8QlUuKKxm4DEbku71tQCdhfYMQIcDqAFLRzgAP+x6yduy9zpksQV4+0FelN7HSBowQhAAIIRwPsfV4Cjudv4xCeeYd6RXDe1m3CFYKsTXxu8wQb4MMIbAKRf5uIWFdLtb0gou4tNVPgT0JGBhjcsAxsAoRFwwMcbOKxh/nxiG8/Q7zM2IWHeVhiwvcDENKgjA3yIGL5vELEMAAQJFe/3E+BoMUhQ8eJNYILF1JEvEGzgYS0MaBOPyO8nNvELIX8EB5/oxSYsvAnhQme+7+0ufQWECv2O9xnnsLJHiqxlJEtH/7vfPYBxCVTmFbviF/xVM0eQkYott5k6WkCCoJGb3AFBAhUpxsYvMKxnjqQiFZ+oMCaoc4DYunYLj8lACfgRArlMGRuboIabG52RVWyiz5hwBaUJm1nONiYD/OAHrOWyjmdQ4xPYwC6pN+KKTfRC19SBK1wbo4QMGNvYSpBLHbKMjV3bRw1qaAK01UDsfSjh2tZ2dut+oIYfcPsHjQmBEkJA7mtrm3U/0IO3vd0YP4TAD/B297lXp4cq2LsKemiMAQzQA1P0YN/zVt0M7m3vxvTb36bw9w4CjjoIzODhD0fMDiY+8QGYwg988EPCKU5xhosOAiAH+Qz03QOLD+DfHv8/HQRWEHII6NsP/DYAvFNuugp4AgIVAHm4leBud3ea5qSzudArEO59iPvayQb66HxRgWZUQBpEZ0yx90H1DCRd6aHzRTOk4QtpSKMx+4D1sTOAddH54uxn/zpjNF2CTZeA7GUHHdrR3hh+tL3tSeBH3EEnjLP33Rd1T0ISSiD4Euz9c7X4OywAzxg7CP7xhj/85GrhC2EIY/GNsQM9BK8BDSRB8pMTRi0SD4taNKYEnU/950FfuFrA4vKlb0wSUp961hcOFrZ4PSxgIfvOf6D2tpfbK3K/e94zRgMfSD7yNRB8ucHiFcU3/mKQn3zlNx9rzy9+KRqjgVxUnxnMvz7/0Z4P/ec3hh65yAUzPqB+8Y//Fa8oBSe2f/wPqCL97VeSFTrnfpKUAv7/R3+LAQW5cH/eFwq0cQIKmABiMAFgAAZNcAUKMIFO4AQrsAI84A3D0AzEMAzEQAwWcA0WAA22cAu3UArAAAwAAAygwIIpCAqXAACgAADUwAlC0TU1IDYMIDY1kAId0DRBEAQ58zE2Yzcygy8MMyuz0iRMWCjXN3/xBws2uBgfQAr4d3/hFxsKeAJUMAZiQAYOGIESqAAVeIEYyAPXkA3DIIIiGA0WcAsWUAonWAp0WAoAAADzZ4cyKIOgMAlA0TdhozJWsIM9+INBiAJEaDO4sDEMUyyh/+AkTZgJjzCJlIiAwSd/UiiFi5F+qmCAj5ALWriFXZgAVJAAXkgGYOiAD9gEYjiGFFiBFmiGZ8gDw1CLImgBI2gLwKCLKsiCPtEzYSM1ZRA1ZkA1AtCDPmgyTfMAh5g0lkMBNlM3izgzDVMszccJ2Ah9U4gYmVCAodCJBQiKrbGFopgAPDAGVFCKpigG7IiKE/CODwiBrHgF9DiBrxiLZsgD+kiLaxiC1+CG0AANPWEGOsgAKlMGDBAEAiABa0A1O3iMPfM1XfODQLg3zggyAQCNAbCIG7OI14iNnPAK22gYoQAFnQiOmQAFCaiA6biO8CiG9+gElEAJ+uAN3nANw/8QgrhoAbZQgnFogifYiyu4hzN4CbfwiyUDNcLYkIFQA32gjA9wkdFohNToiEsYiZKYCR+ZjSNJGCeZCSdZgLZBjgkAhqtYj7B4gd6wj7Wok7fIk7yYgilIh5dQCnV5h3cICtQAFCnANTlYNoRYAyazN0KIkdJ4hACjhI+IlVmplVsJkoaRC2B5ko+gCimZGyfwD6XohV9IBmohNmRjkIDJgz3YfxwBkiHZlYABBYIABY/ACp0Im49gmliDmtg4GB9wCpKoCqzwCK7pm7SJNZcgkpAZGKyZCafwmqrwCMj5AcEpnLYJGKogCL3Zm5O4nKzgnM95NbapmnjBCsgpiZT/uJyTuJ1y0518wZqsYJ3XWZmC4JjmyZ3RmRePIAiCMIn3+Zr1uZzxOTeccAmXwAmT4J1yQZ2CkJz5+QgIqgr9OTcDCqADmhf3aZ8TqqCV2aCF86AAegl4YaEUWp/1iaGGo6GTwKF4wQcHygr3yQoiOjkbCqF6oaB8MJst6qIb+p81qnSTAAAACgB+mKM0958laqJACnSX0AlFmqRKuqRM2qRO+qRQGqVSOqVUWqVWeqVYmqVauqVc2qVe+qVgGqZiOqZkWqZmeqZomqZquqZs2qZu+qZwGqdyOqd0Wqd2eqd4mqd6uqd82qd++qeAGqiCOqiEWqiGeqiImqiKuqiMFtqojvqokBqpkjqplFqplnqpmOqnAQEAIfkECQQA/wAsAAAAANQD3AAACP8A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKOKIJJZo4okovtZKKNbMJ0oDMNJQCQwiiEACCVFEUYQJO5qAwR0YYOABLyakaGRcpDzySCaZxCcKAlAi0ICMNd4YRRppmKBlkBgs0aUHHmBw5JhsZRKKmZmQAh8CF4giygVSzljllUX0uGWQYA5ZBJl8mtUKk0yGEsp7EVwQwRdfRPDklHJWiSOddt7hYxR9ViqWoIGaaV4EnHbK6Rc3sHHGJHwQwsYNiUZww5twSgljJTPC/0BjjZbW+tWfaArqHqeiqHqDonA2AOusNz6qYxp1mpCGrcxyhcqZ0A76HpuifAHnBdgi0Oy2aEFrpq7TRgnlDdyWexYp0YLr3gUwwqitufCOhem3asLHbgPvxqvvrWfSu++/AE+E7reh1BvwwQgj1K+gBSfs8MP/YMqwwRBXvO+KBFNs8cblSiyoxhyHbCvGH0sr8sm1/jlxKK20jAsu3ATADQU0o4BCEJE88EAKKdQggRkgAI3y0BeqPDEpSLfcCswy00zBzTl30HMgVgQdNNFYS0jB0i9zE3MATj99M845P9BBBzX0IQADVkjANghXZy03gx3YDDXOOp99Ns811P8ggACBMMC2FWa4nQIfKTDwM9BWCz334wIG0wopSuNiDcxeO23zInif3YffErRtBtBmQG76gRKjm/TSXsdcM9RmT006CKfXfmAAl2MO9tNik513Cp8Hsjjtthdv/PHIJ6/88sw37/zz0Ecv/fTUV2/99dhnr/323Hfv/ffghy/++OSXb/756Kev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HduyPdu0Xdu2fdu4ndu6vdu83du+/dvAHdzCPdzEXdzGfdzIndzKvdzM3dzO/dzQHd3SPd3UXd3Wfd3Ynd3avd3c3d3eK/3d4B3e4j3e5F3e5n3e6J3e6r3e7N3e7v3e8B3f8j3f9F3f9n3f+D0uAQEAIfkECQQA/wAsAAAAANQD3AAACP8A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKOKIJJZo4okovvaIIJnQh4EHS3ggIy800uiBLLLwgiMvscjSoywepChkXJkI8siK8r0IpIxMAonjk1DiGMuPmcExpH9GHnkkfC/y4oGXYH75ZY06+uhjj1PGgtkTDmyBxJX6aSknlzLG6AEGS4BJZo054ljNk7FgYNkTT2xhqJVw3nekkYI0Ct+dGLwo6Z1MyuhklLFU0+NlhCLRaaL3FblillxGauoSk8Zop5h8ZsrLZUYg/wHHrEi8CWp9ja6oZammYhCFakbAccABWhyA6K3zZTIqqe+ZgIGzzq4GxAFGAGFEscjSx2iWj8BnwrffCqqatTa88QY+RryRrXy5ztksuN+eJsO8MpiLzx9a2GADvTKs656o7rr3bREmEJzavPraoEW65c7rr3u6BtxeGgUXYbG0RuBjLhBaPAyfsnJ2+14aJKdRRBqrXbvwtQd4/N6iErMXRRpRzPwrsMIOa6zLEEe85XskBB30zalpUSuttvK8ns8swie00KtpQejUTyjNHsgxryfC1lyvdoChYG9h9XpYw5wJyGennUkoa4fi9tukhELK3HO3QordrXDDjXNc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37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKOKIJJZo4okovibIivSl0ksvk6SCSScy1jjjJJNgoiMmMWKSimGvTALAJHxMcsklRiZZJJFIHtlJiv8JwseUfMgXSyqp0NiLiz7O2CWWWH4Z45ODHUkkjjg2maSabE4CZX9UTikIfFdiuSWWnXyJZ5ad9DlJnjJiQpiZSKa55qFqpsnJm/rFSSV8LoIJ5pd60thnJ2PyGItgnBBq5JJohspkkmkymp+UjkIq6aSsrippl24K/2akmbMeaeutnoZqKn6OTgnfnZIC66ONNb7642CdeposJ4geimaVu9qHapzwbbKqB5fVaiSZCnHCCaiXRCttr79Kuglm2l6yKEOFNilufb3O+Z6dkaJrK7PhMpTuu/Q5KmW5W26JbrJGCsrurbHyG9+KVP47byrOQHysZZMkiyQsDeG6rsLwMSwntO5tGXHEmOGLJCelNGQxkhwvzAeqDruXSiy9xELyZfga6a3K9+bbsnsevwxyezXXfLNlzCZdscqzMvvze0ILLa9lu3yyySeCfGL11r248okxSc3sjM2b4qxuxZekrO+yPk+3yiePwP3IJpnMHXcon6zydEJSC/9d2So7biL44FZfvcvhh6/iilEQO+N42Uh7q666DaE9+XSo1L3J3JnQrXXcmWitNSqroLJ3QR5LOTVkguvY+uCC9/IJ4p+4grjteg/V+OMlS97pxgqhLXl0mwuy+Sd1Iw+36KKjIvoqweR+OsOqRx1n9aqvqP20L3O/PVyBYwI7JruIv0kvVad/uyvsIyOU0byb7e3vKs9/JHSPJG93Jvx3Hvr/zvsEKgZIugHSYnp9w173tre9BGpvgUF7xNDS0gtBiM91sNuF4LSGuF3Y7oPsY98qlBEU+DlDFr2bH8rq562lNQcVxhPEI2boudAJ0Hl4cx4Bd7iKHkqvZdlLoBD/H6jA7BFRiGvZxSNch0HBpQJ2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URRNURVdURZtURd9URiNURmdURqtURu9URzNUR3dUR7tUR/9USANUiEdUiItUiM9UiRNUiVdUiZtUid9UiiNUimdUiqtUiu9UizNUi3dUi7tUi/9UjANUzEdUzItUzM9UzRNUzVdUx42bVM3fVM4jVM5nVM6rVM7vVM8zVM93VM+7dP6DAgAIfkECQQA/wAsAAAAANQD3AAACP8A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCO50OIxM0hhBALuFBAIS+8oIIKLLzgxYwk0lZAG20UMMIUezCRAxNM7DHFCCN4UaNuMeQTAxZzzFGAF5aowAUXKshYgAsLYJEkFi4cudoCXSyQ4wgvMCGFDwTkwIIXNy4gRBdJhullRZjwwUdmLsyRoopevGBJHFlIkUMWccRYSCEuYGmiEFgsUMBPmAhip52CTGKnpZFeygcmdU4iCCaGlXIJH5dYOsklo47KByh8TGKpqnda/zfCmGT66IMPgRDggxRMsDBkAW0uAKawj87p0KR2YtZilCrEwUUWWXCxRwAB7PFstHHkoIIlLXpxKLAFWLKTq5hiMkmnyLaqrqmtSkoYqpauuy657MZraXVDAOkjAQQM4QMdgTxSAx39ZkGAoL36OuQIwLZBprELpSvIZXNggQWKLhQyQpTQQlslm3meqKUb+XDQAg4tbNCCGzidG6mplUo6ab3ymkpYq67iTG/NyJ46anUFCIGjjj1KMYSuBAQ5xY1YvpkkByajwYgxxmyQD8QHpZvsZRzk48aJibKogrZVFnLliTG4YXIL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xYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKOJgKlhSSBtCYBEDBxy0wIExGxhjDC3GtDCibFMUsIAQMayIxgZAGpOMjMnYeGNsXMRRIgteFFKAC0KkmE+LLcRoDDLIrKKllqi4gsoqR45GgBQ5sDDFCDou0EUXK3IApJUy0rLlKl+uQkuYFvHBB2RejPACC3FwUWaTLuwYw5Qt1ijjKllq6Yorn0DqyiafBAPUJHxMIoggk2CC6aeTYJpppp/ygYlhpYR6ySV8sLrqJK6q/9pqppc0lwMTLOQghRS45tiGmmzGgIabMQ5p55yOotKlsng+pOezjHlRQAFevKACF1nkkAUXKrxQyIkuzBGlim64wWILVeIQJzLKtMulK2DuxMememJi6qil5otvpoSVkiqslwAc8KqvwtpqwJgqd+YUufrgMAE57OHrr8G2+aaVWMrpqJefbPPJJ7s0u9Cz0BpGxLY5BJrFtkz00QofFACSA7bbKqkCCy940aSTLvQ8x44pknuuizUKgVOo+Hrq6b6iljoqv4MNHOrUVE+tJ9IGTwJKcUP4QKauBHR9RAcd0PEwmbjuIfEIaBbQxq8L7Lhmj22yeLExaLghskEkl/9sWCFCLDCHCwUUYi222MaBM88/B23u0C3IiOUqyqwC76OPfryJpDZ1+qy9Vusrat+hdiIYJwQXXHXoTLdqHAttjDDFFEzkQIAPRxzhA8QsrO023HIHm4+w574pY5xbfkKnOXsP1LeeiCEaQ+AuFOJFrkoyyXOh4UaZormRa4x5lx9rvsn55wtyfk1Pkwrq6vB/OtgkqEttP6z4I4wv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06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKGJhmzzyiCCC8IEiinycqCImI872SSYnPrLJJiuaiKKJMdL2iSA2nojjikQWaSQmgvRY2ieYmFijiU2WWKKTRhKpZEV8tAjZJ49kAiSONQKpI4pIVkkkko/wgSRQgkzi5ptwugkAH5e8eQmdl3DikwxvAGHEAXAg8cQWDhTKUylZ1snHm4syOsmdKS7q3IxSOimlmDkCiWKJRKq4Ix847nXCqCfc5imKjLniJadOBsmqpmaa/1mmp4/w1GicuLp5K5ycXMITn2/YgM+fcDzxRKFq/LBFTpjU+aiji0Y7SbRZRqvcJ1xOWam2jzRZ5ImxGpllknaRSqpt446bWCY3BknjlK62Gma44arIxy44qZnltPxKS2eubnLyaE4yFMynEUbYYAMQWmgBx8OCPqEFTrr26++01GI87iTHZYLJuzayG6+2sGoKbqynskimXOYmIAYV5qKlAwgzG2Uvi3wchq2J25rI5ZeVdntymWQWjQmSs3YqyNE2SVvxvgDjKrCeNRlsMD4H/IHPG/j42fABgD58EwBx+lvt2WhXW1wmXD6SraVv26jpkEF+S+TJ4toLI1vmjv9KhRhgJNB3qWSZocPhhxelstqErcIutp+0O+WmQVq6Cba73Kg5vSmfyvhMUONaLb92/vtonTsV/MbqNhjhsKCEOpDsDw7Y1O/tF9Ope9rDoRKK5EHTGK+82N4I+eQlq6w0kqM8ckpcpMI8qsw0lyGBFYeDMJS93BO2yeOR82wj8J9cJMiQp2LSeYozYcyvs3Ve4uyuuPZUsLDEwi77Dz/oUcUMtrvT+xJ1pwLq7hKROptwPhEKyIkscjfymNvKZxG8KY17qHpL375iBsMZDnGJkAADBPCAaqVAABIowxoQRzOa6SRd6gpMMC53ORvt7HKCQAVINoGxFamP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Pm3UTm3VXm3Wbm3Xfm3Yjm3Znm3arm3bvm2KCAgAIfkECQQA/wAsAAAAANQD3AAACP8A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKGJhn2zChyAooniiioLwgcmIs22SCR+PPLLiiSui+CKMMZ74SIoobgLkkCryYeSRPJYmJCaC/Ijijz8ymaKURJ54Hgg6SIXkYz/6SOWQX6aYI5EttgjUJJfwcckkRk7i5ptvXsLJm5xwAotLekBQwZ7NVOBJBdL40owvhNbiizDC1AKLorA02mhPRx7JZppsqnnkKHxMMopzmNjo5KdDQtmkjmWOyaIgZp2g6gkSrXCNBbDG/2rLNVxhaUaWBHUQBAooUEBBAMBSENSNqC72CCY5OknmsswCGekjPKGZKZxxUrvmJdjOKSdLVVSgp55//hlooIQeemiiizZaiqMV5NRmpPDGG69ynyhbY42jKtuss2WKWapYq64KEQ/DDGPBq9HAWoottmiFpQ4QmzFQBw/s6uuvwOISAFBHlplYv/uG3KypOOaE5pvTVqvtyXKiWeeaLEEg88zg8unLuOUeagujjsLCScM4pSkvm0TLe+Qlx4365Kf4igqk01WWaiqyLnYVcAJiUCEwQ2Ao4LUTYDuxwthjK2AVxDqYkQgDApSRtg4M1FBDCh3U/cADkQQRCQoP+P9kZKnFFpaJyIJI2empI7OYI4447kjTydTSOcmccM5peSecAFCLSnrgQfPnfwIqDc6ECmOLMD3D8orqN1Vq9OvzEmevvkrn+/S9ZOLY4pjEpphV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EQh7GNB5e5d6faf4fs96tV/7+3X4CGB7uI97uZ97uq97u797vM97vd97vu97v/97wA98wR98wi98wz98xE98xV98xm98x398yI98yZ98yq98y798zM98zd98zu98z/980A990R990i990z991E991V991m9913992I992Z992q9927993M993d99u97vfd//feAPfuEffuIvfuM/fuRPfuVffuZvfud/fuiPfumffuqvfuu/fuzPfu3ffu7vfu//fvAPf/Eff/Ivf/M/f/RPf/Vff/Zvf/d/f/iPf/mff/qvf/u/f/zPf/3ff/4HiH8CBxIsaPAgwoQKFzJs6PAhxIgSJ1KsaPEixowaN3Ls6PEjyJAiR5IsafIkypQqV7Js6fIlzJgyZ9KsafMmzpw6d/Ls6fMn0KBChxItavQo0qRKlzLtGRAAIfkECQQA/wAsAAAAANQD3AAACP8A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKGJhmzwiyIkn8iEIHyo+wscjj4w42yYorugiipPQiAkrMtJGY41ABomiiSbW2GNpqqQIZJFAgoLJiqCk+CQoR1YkiImQ0fhikEwK6aUgT66oIlCT8DHJmWWmieYkmKw5ySWXTMKJS7a8yYmccObJCSel6AnnmnGWMklPZvJxCYuIJqooos6BYqKKXw4pZJiOngiFigBEdcKmJ0TkRDPEDGPBqLZYUMotwKB6CyfAlAIMn69C/wMMAABgAgAoAABTlA4g6MBrQSkEgQIFFARgLDettEKKssuSEoqzoYSS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O/jwhrl3zolz9ee44l1TdY7BhIkiaaJEISFCBIxKNCpfuFC5Ng3rdZWdgMV1x1qBCSq4oFN/wYTTaUydhyCDjbX3XnzxzUcCh/jB0EADF3wRQQRfVEZDgBUaRaCKEt3UIowxyhiSXjVCdN6NS81oGIf23edhfiiCyN8NEdxwxhlFitIfiTv6xKKTUUo5JZUC2Xilg01VOVePHd4HA5j6DYn/wAWiRIdkdEteEMGWMkHZJpxxyrncgzp9BheEyc2ZVknwwVcEoBv6KOYFRRp5AYgX7JmSZos6+iiklyGFo53mrUZhpFmZsIRkfwJan48woMiffw0gIEqmIHGVKqutuvoqrASR2GSstdp6K6656rorr736+iuwwQo7LLHFGnsssskquyyzzTr7LLTRSjsttdVaey222Wq7LbfdevstuOGKOy655Zp7Lrrpqrsuu+26+y688co7L7312nsvvvnquy+//fr7L8ABCzwwwQUbfDDCCSu8MMMNO/wwxBFLPDHFFVt8McYZa7wxxx17/DHIIYs8Msklm3wyyimrvDLLLbv8VDLMMcs8M80123wzzjnrvDPPPfv8M9BBCz000UUbfTTSSSu9NNNNO/001FFLPTXVVVt9NdZZa7011117/TXYYYs9Ntllm3022mmrvTbbbbv99nABAQAh+QQJBAD/ACwAAAAA1APcAAAI/wD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jTql3Ltq3bt3Djyp1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48iTK1/OvLnz59CjS59Ovbr169iza9/Ovbv37+DDi/8fT768+fPo06tfz769+/fw48ufT7++/fv48+vfz7+///8ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo4YUYZqjhhhx26OGHIIYoYmGClFgiHygKwoeKj6CIyYiz/XLJKKxcIoiNgoAiyCSngAIKNTDS9oiKJhZp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IkIlGQKWoIgYNaiccyWquCKLI5H4UF0YtjjcbBx2KNGHMOg441kv8tiQX9j9OCSRQ/po2VbdFZlaWbaBRFEDlUhZCQwNLMnUkUTyR2GFV3r5pX7ziSb/0U4AgmlajbRV1AANNDTAJg1n/iYkmEGmdMqYcuq5p3dZGhQan5g1yWFFCDSAAKJvBuoSnV8i5eCikUpKnJ8ENWfmpIbNth5FNyB6gSgXIJqpRpW26FdcpKq66mh9obiamKuxipeNGJhwqwlFpJFGFCT4KoIIMFTiJqgRfBHBDRdEMCtFpra4FLPRStvWq4TNNS1aIpAALLA6Ctvmm4giAOoXx35xxiVn3BABu+22i+1ajToKKbz12gtUrMqVmS9M936Vq6689vortzqCe6go5bKxrijs+juQsw9LPDGpdsKVEMVCYfCObbXiasKuAwc77Lg3fJHsBRmnNMlUGbv8/7KqRp24Wpkw/1TbEhjk/HERRUQh8shvXiAqAjeoHJPNSSvNZ101bfZSv0u3VKuNtwY88LYGh4uAKDCnJDXYYYs9Ntllm3022mmrvTbbbbv9Ntxxyz033XXbfTfeeeu9N999+/034IELPjjhhRt+OOKJK7444407/jjkkUs+OeWVW3455plrvjnnnXv+Oeihiz466aWbfjrqqau+Ouutu/467LHLPjvttdt+O+6567477737/jvwwQs/PPHFG3888skrvzzzzTv/PPTRSz899dVbfz322Wu/Pffde/89+OGLPz755Zt/Pvrpq78+++27/z788cs/P/31238//vnrvyM///37/z8AAyjAARKwgAY8IAITqMAFMrCBDnwgBCMoQeIEBAAh+QQJBAD/ACwAAAAA1APcAAAI/wD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jTql3Ltq3bt3Djyp1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48iTK1/OvLnz59CjS59Ovbr169iz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bj30s+ucX5nWXekwNu7cunfz5go7Y0PKvYd3PY3h+EgaMETAoEH8OcHf0BdDhvjo4/Ts2rdzdyxdIU2O3cebNI48JAIYMCqpZ00e9/f3ZXeKl2//Pv78CeMjDL1SP4D/eFAPaiE1QAMNByYY4Gb8MTiUaBON9iCFFVpYmoMGzXTUhe9Fddx5ICHQAAIjNuBeh4NlmOJIHdmEHYsxyjgjVmsZ9VJ9NEL3IYgilXgBkCXqONeKQ2oIk41GKrkkk+A1phJlSTW522EYmCASkF9EEIEoF0QwJVZFLon/pFs5gnkmmjKKqZFLacYWBQlxikACAglteecXs4iCCBtfaHnnl25O9qSbf0kIo6CJKprfmv9INOGimkWRBpxxZoRnBDecIUoEfwYaaUqN6lhbmaCaeup2jU6EKmZSUXUlSDdk2akodbLKWF5ukvrQrb36Ch9PtVW366+JecDLEiBaaQKzJhRBqZwiVJLgjxcIWexIotIYHK/YevstdXjFdBu4c5l3XLPMPlupCMw1d6KJKJa7H6G6NjQvvvmWFdm4u16kb1lRVWnCss8WEQW77k6LIIIA88XQJIg6PDHFFfN7F7kVWzVVYcqm6yylcLbr7nrtabxQxN2evDLL3vr7/2hdkLXsVJXoNlvEupWSMDJzzLFc78xBC72oS6JVZhtlGQ+tVLID35xGyCLv3C4MQf+7NNZZa7011117/TXYYYs9Ntllm3022mmrvTbbbbv9Ntxxyz033XXbfTfeeeu9N999+/034IELPjjhhRt+OOKJK7444407/jjkkUs+OeWVW3455plrvjnnnXv+Oeihiz466aWbfjrqqau+Ouutu/467LHLPjvttdt+O+6567477737/jvwwQs/PPHFG3888skrvzzzzTv/PPTRSz899dVbfz322Wu/Pffde/89+OGLPz755Zt/Pvrpq78+++27/z788cs/P/31238//vnrvxg///37/z8AAyjAARKwgAY8IAITqEDaBQQAIfkECQQA/wAsAAAAANQD3AAACP8A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at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/CAIQyjCEZKwhCY8IQpTqMIVsrCFLnwhDGMowxnSsIY2vCEOc6jDHfKwhz78IRCDKMQhErGIRjwiEpOoxCUysYlOfCIUoyjFKVKxila8IhazqMUtcrGLXvwiGMMoxjGSsYxmPCMa06jGNbKxjW58IxzjKMc50rGOdrwjHvOoxz3ysY9+/CMgAynIQRKykIY8JCITqchFMrKRjnwkJCMpyUlSspKWvCQmM6nJTXKyk578JChDKcpRkrKUpjwlKlOpylWyspWufCUsYynLWdKyFpa2vCUuc6nLXfKyl778JTCDKczrBQQAIfkECQQA/wAsAAAAANQD3AAACP8A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKGJhgpQoCB8noqiiIJugOOJsfPzCByag8KEiHwDYOAkfwLxIGyYolriiiSsGGeSJKQriY2mgXGLjKDYmaSKSNdrIR5U2ArBkRYI8ouRjJT5iZJRTllmmlWje+KVPabaJ5o5FzugSH07yAaeVd9qJJpBt9uTmn2iewodzVRKJpJMpugmKoIJeeYqJk1xyCVDXEGOLBRZcWooF0NhyCzS3AONpKdCQygkwpQADDADA3MIJqaCU/wIAKKAAUyutt+JKKwA0YnLJLyWC0iUmjwjL4ibPPJJSAK1wQwourUQbLSmtkGKtOKFYG8q2mYTSbbePZCIuuI94KW6X5qLr5bpddslHueuKiWSJQb1rImObmKnvvkgW2e+8Qq6ZE6AEp7kjS28aXPCfOi28sHJYztvmvzdaKcgoglyS8caXNCms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pj41qlOt6lWzutWufjWsYy3rWdO61ra+Na5zretd87rXvv41sIMt7GETu9jGPjayk63sZTO72c5+NrSjLe1pU7va1r42trOt7W1zu9ve/ja4wwgt7nGTu74BAQAh+QQJBAD/ACwAAAAA1APcAAAI/wD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jTql3Ltq3bt3Djyp1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48iTK1/OvLnz59CjS59Ovbr169iza9/Ovbv37+DDi/8fT768+fPo06tfz769+/fw48ufT7++/fv48+vfz7+///8ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo4YUYZqjhhhx26OGHIIYoYmGP8CGIiSjyoaIgJ6o4Ik8h7MMPPyUkkUQJJbiloomT7Oijij2+SFuJLD7Cooksnqgkkjsu6aKQLe0g5Q4D+LFPBvzYYWMSGnzQ5Qe5eKlBWC2OsqOZP6Z5iZpQVmSkIJA9ImeSgrxJ551JItminksCBWSaPfaY5p98uASKoIH+iCihOyba06CQ/jhKVlOaMsAOpvgRghJKXEkjjltyqUESYtqRVaSRoonqJWvyMQlQwFz/MkkprAJAa60AXAIKALkCAAquv7JaK6uCrPnrr5MYCwooroIiyLKCYNKss3Vicueun6SUiZxybqvKnHNmkkmd3QqybZFGvnkuunami2KRfJyi5Lx5lohiUEeyyNi45NaJ55168pnnknTeu5OgqPqYKMKFrsSwohArPKhOCVfc8FNTZjxAD3LwEYoBPVi6cQ8GGOCHpptyemUGGeDocgZT7bmixWaquiofrV6cUym3Cuvzz0ALm2yywuZ6rK+5snqsrrou6zS01CYZNZ0njcvt1VhnzS25V/vr9b8F0ws22E/61OKJjyQ259hss/0upCfmZPHcLDEK8cMSu+qj3HOj/4qVlANcWqXKLIOaRB6javDlB4zn4jgUUGTygVOY5Jzi3DbPfQkAfHCOEyy78ro5r6TzGnrpqPcq69DM+kz0zzhfMkqxoJgp7LN8MOsss3T+UtK22z4SvPBaF298v+n6m7yd+aYo89sp+mTk24e12zaeTIq95/NnrxitTXj3/eNKeotPt03mR0rplAMYoETLNR6OuOJgOp6LKlCwAoUqqrDCf52qUIqPnoeqE6GpVZZT0SgSuKNWmelVNdncJXoWtApWcGiuW5MFL1GsDnLwg8WyFthAkTaSEO9q4ipe8JTHwuRd74VvI5jzdKaTI0WPMNZ74Z02oTwRni1fAxvg3v9okj5IQTAlRZzbEWeSxDSBZVP7MNzi6peL/fEPeKxgxSP+BwWjnKJJkSJgqxYGJA0KYnY4+yIDgeQ5mkxQgm9MnRxTJ8GkLe2OTHvask5xCqf18Y/Oktfu6OSs3w3vkOJKIdaGZzytfc2FOgzbikrIE5nFbTBJWludkGQvPlCSIk7y3sxmxsS8JSxRO6pb+Pq2ShrGRHwETKVauMSMXGRCFbfk3/+0+K06dVEoaLQkGGVZkdw18Eca7NwSX2KrUuTKmbSioOhIN7qiAW0SRtsV1JgFAGtN4li5wx0o+jiK2oHCWnxgxdTgRBJFAk94wXvn8bZGJ0gWiWwyJBi9Ymj/NiEKxmqZ9BcnQbIJIc6LmC9JUyp+Uj6EQgRQrkyoExcysbdo4H5bFET/HiEv/8nrk5Xk4OUm6hFg4IwPs9Og7LAZ0ZXYilecAEBP8ARSkOCSeOLiSfbKtpOK/mVt6XKhSTppwxtKdIg+sVsxn1cTnyqEpHHZVv40GlR5CYIVj8pcmSZVEmmdokesip2ululSZ8b0Ej0ZZz1LAk/ikeJReWop+pj6l3u6sEQqQedIi3RUvflJb4KyyI+kRUSoJsSwcYmckbR4Cm5BQV8UK+r4UsKJYIX1pLtiJjRj1ZMSPWJ3Nf1IIhP51ko6Kaky/Ck9leeS6Y1yRS5BLMUeZhG8/4GilJOlaG7t0q/+fY1v3JNrST5YzmSyyiXQtBVaecLDZ/G1naN9hDXgOi+zdY+dfCEeuk6UiZgUdJQnwkRLZMs3Ql0EULhF6lN3e5e1sYJFrDDRTfaqotvCpHKxOykwStESaJZiv52NFgkba8hQJLIVMwViUmd2yb1oN6ihbYm0ZCjckZAXJ+UL7HkvjEQOD8TDiZWTKgDW1DTNzo04K5aw7LsSnrmYv8y9KrUi3JHRGhjBprWh9N7V4Lys8E1Gmq8Nj1Q39va0UTylCERfKamGgFguVn2TVXMhkx/p2CYqHhZXVfJiAPNksXUiYYEzYWBcJJhqM+VxheFi4K7VKf8nBXOoSZ6MW4RlpKFBgolTD2vkvGgUiJB9ibMGKK+c8KpywhIvl23hYpnyRIvQem9JDEzpTHDjzEROMIMdzDVuVaRg0ztooEHJYPl2+E9/XVRGHrYmPT+ZznJhhVVZJK9TuBqM2JUIs0baJGYB4yKvy90lbrFont3C0Tv5xGevKmmShOLZZA7FpXUaV9QGTC9ZG/VDmBfJXEMEnd1TCayZjEqNQKqvcj7IuJNiI8W5m36j4siI5cWn1g6wxw9RpwLhJq9kIjsi0cBZsLDJ5Vsw+hYw3skvSOgsLU762RCfdk8LJj1R64WRQY4It72WPZoaLCKhxNmpgZTq8m1kz+L/fnWfm0Iqxrk8TC5vHOOgYL/JYeROo8g4+ezVIomccZg3u4S0kjWRX3Fuc5P4NUpKweiD92QTDH+Ew50NcVKEIgCVDNiaZQLovXbbntzK6URIQfayt4ICi3gICMxgBhCcBHlykognv9bt5vl8mCNPck9RuXWH8EFaK5+zytXblPoxjhkxfzmYFm+/x/HP5m66E0dXQiQV4TUiQB+UqoxrzGJJpFexw0TCS8J0g5eC2BCxADRiyrNmwnSCSNPmsjJ4zmg9CxMLd+7uQMHDLFK1JFYPPimw/hBrGFie2XZzp7dmz3/t1NtwDlg+AaZD5ccdItYQPtlb0QprBAAFDVk7/wjEbxJFEg8i7oqkwEgM8hmihFBkpRiS++73dXcE5eoOvFEyQXNV1LLxABiA9wM5W8Q/UPAIzOAmszY95HM50PdUX/RFg/I8snNSlvNBuvYz/0YSpWABtnALBgcR0YBwL/VfoLBfwIA0eSRBT0MNeqRHz8IKmMAKvyAIUPdevERjHEF2oVB2xNcQVjdaQphCGLdadRdEStJP+YRr1Sd5XEMuDxEE3NAKuBAAAcANAUABWkgBQbAQ4mcFEsAAbLd2IxEK8HQuELEuAdU2zNNxpvYQ+RR/IDF/f9VQHYE34zV46WYUjoM/AhiA9RMK/HM/ulSI3xI5FPFRFIcSu2ZUDf+xJmZCQLuGOymyQJBogeXEB5wAEYeSNKxiCydhC6JoAUwHEdDwYs6UgqoIACnYK9rUNE4Diy/oR+O0LJ+Fg6zQXSQRDGVndRTwEMcXXYc0Ty3UbTv1E0tYapHULWcoLj0YCjjWEEGAAtQYBJEQCQ+QjR2wjQwwEOInfmwHhgJwdgIgAVbQdt/YdhzBfdxHCq3wgwzBL5rESTpIfTymaA7xQ29IEoCld/KnahyhKJOwZXmHUk6mf0GRC6EQOYaoCvbjf403iFVEiPhTiFskdY2li5gnefR3Z81jaw4BeN1jTK6yXj7ib0T3EJ4IAN8Uih5IihbwENeAijyziqtITbL/F4uzOIvPIki3KCe+QxK9SHa/2BDcQGbN+E5FyHwsRHdHiIy8JkpHWE8QpoMFsX2t4I64QIXWgIVptxBsZwZlUAbkJxJCeH35mEMd+Q+VJzbf9nfvchINtZYShSgPuGEIGRL4ZxD2hxMM2ZD8dz+ECHNe4nLMIIi6RIAXmUUbhVV39yaedBJ6tYcIAT0fV38nolJCBw0PwQlIVysu+ZKg6BAWAAwI12gomIqsqDq1spOY8DS+4jSPgAm3eFXPIjwm4Y7bFwxFyRC4AG0pZIZLiTXF6JTUNzZBwWBxxWvLCGT9AoyUBnHP5o7wqBBtN4Zm0E6LtG3WE5kTITaXyRBD/zYJd+kRiuInfOcR4dOAefkPfWkTwrM/j2BFg5gJuTAmEJELBahLUsdR4/JL3Bk2JkFAD2EiaGJAdCkQnfN3ulI5LNYQr9NNGxgSFuCBxEAMo9kQpHiKwMBoLhZHvRKbTuOJQrcssXl7mJCir6l70cIKzxCUJdGO7NibC9EK0EZpjxCMyHc894RPFLaPQKFP9cKG5hIu4/Jj/gKd0kkKWBgAX+kQa6eOJhRPGskQzEMkFzFhbll/EwakIUFbDNWPCcoQGUaZeqmH/ggU+SNiBTifqhAKGJELp3CA/NOf8bmR9DKgdDZoB3VzupI7PTKhCWFSRqcrJmGhtuCBMgkL0P/AaMDAmVIxhezYCuDXEDZaaXAKGZ6UPEpKZkzaE+5UngaxPNq2VASzCQX6NnJ4fwuDnq4SKCCRMxr2fmg6pjKBS1BwCt/yLaxQRRxxSwB0VaowO1T2UPlSaPw4QAW6JleGEfX1TYdCDQ9hTaAAqSNhAReKrTFJmoxqC6Z5CFPBDVs5hbhQqQxxqZUWGUCmcwxhdRBnaTxxfMzoEOsyJxwRRPQHl4Q3h636E5Pwr47yEQDLMAW5de8ZEx9wgH+2UcXqEbw6Yu+lCh7zUAJDErzjiApBnm8jreb2TTiTZ4/ImoLqEbYwDBc6DBnKEIbQgbbQqNEQrlNIrua6EL95o1X/2hidJqoFIZ3PZmY7gVPd4nfJ450aETZvVn8ogo8iAVgg2xMD+6ohISuNsqpzWKtE8VjmwkuNBXmixSIQWycgCYcCurROorMD8UVJ8poc4YLGNFbTqjoj2xEWMAwmi7IPgaEeCA3RsK1RcYVViAvc0IUNUbPQVlqPwS5mOxDRFm0SlxNttS1wKFQdQS+X1xBFJQhUqxFkBBQDC6t6yTDLJXjtebAv0VhaRFWJmxEjNmJolo/sp5cEI7Z5op7Y5KCZSxC+UitJRxLEQLd0SwwPUaHRkKjQcA1TYYVWyA3cEAkOwQ3uCnGRgbjQGW2h4LM6cUJouRBF6jUfoaUsgqoI/0GewgRbFtavPtG5aWpueHa7J2e1QnEKmdBYGXWzI4GD8HVVEHEnBAa7cel3SmItH3FOh3Iom4gQwOCCgsCS0wQKowcSvuu7DyEMFrC30VC8U0EBVkgBWMi8g/u8z6au2/UQZEa90ZgTieRpDYGkqYt5bUgQnaAk5GktPgRG/Ni5nNu57CtYi2Krcue+QHG6WjSfK7wRghBlpYoQG3fEREzDlju29+csxrJEnLAMr7M5r7g5lZXDFsEDzcADw+DFwWsLFLy3F5yFW/gAzcuD0AsZdmWVBDHCEFfCOGF+biwQEHa0HbELz8ciIpSimCt9KNK0IBEok4AJWhwTOHzIE/+xKLNqYT6MjKcQsUo8EqxbJMhamfSmPTwsnkxMpgWjtAG5a0bHktpUWSu4K1gMAMsQtxvBA678yg+BsmPMt1ChhShwxg6BC2r8wXHinNMbxzsRDEpZx2z5hNnyEQIzmyYiw3DpveHlpQL7qiXprzicrH/yryWxlwVBupT3JlkkdSwRX5C5RQVxuoCGhGS7J/5bLyChOytmNKfMNLfCK8sADC87Eivwyq78ENkwwRMMDcMwFbdMjdSIxg0RALtsuI7RLsT8Dzf6bHJsE/J6fk0MLiHhQ9GyzOGV0TKMuXfSCyVByIZ8wzZMEmS0yUi7r/mn0iacc0UMti6RCUgSX+z/tIZtg9IKUVCn5WQF86Ac8a+W9U2IhkeyBwCe6WX4zAMrsNQr8BDN4M8VbLxSMY3TSI0d4BAI7cEg/Jz0CseZENE1IZzAk7otFBKf4DUy3NHMTJ7/mrYnUc3UXNIjYciopMgToc0Ewc0pYSfvFbYskQmzk0nrZ7QB5dMdAQXHyNNMgtPhO3sDpzSPjSy5AgywcBIKwNQr4ASxbAHXsLe2YAhT8QDWONoPkdVVF73K09DBeGM7IZxX4xDL09DfyccpaiQai9GgjBJwfb67PRIAqyKt5sij2563eie5CBPMY8T/YidIkqx2p9hHAr7ITNSeaKKs6BJOkN1O0AROzdn+/wzaoZ2NQXDVWF12PajQOOvL9Lra6C3RyAfbyHPMH7ELJ7IJa22Ddj3Icu20ve3bUmumd/bIP0snXxQTSUzYUcaIie3JKNJHS5tHS8MJHCsTCqAAEcEDnO3Z4C0VApACHVADEEEBvdiDW52kXZ1IJK4TOwrb4JK9H8FDmyDdNTGwIx3XA/vWoMvYlSngOSGxCzgTjTU240x5fNJ30mfYHUEN/6p0S+EJ3r23Um0WCJ2V513i7LoQQ9jeNREMbeXiCRFUJt4VNJ7fLZHIut2PZJ7SAK6gxA0TL30kBPkSmjQwRSzbyLyIVipSxaLjWeENnH0NFRrlZSHiPEh2qH1PIv8shFpeE9jb0Mxn504BsCma5g7T375d13y+zTyOE6IWQEz0LzOxpU3MIhxEF34O6KhOFTqgA+MX4uZtdYce5vGo6DyBcdsGd14h6dhs4wCbEidS11U73CxdEzl3bTUha3xAv25eb65LLbkzF94wDN7N2VOxdqu+6qWdle666IlRTyuc5bWONdy5PLleyP+a2zph5h1GyJn+YZuOZQXj6ToyMLL7ve1eFV6M6tQeFTpgBjqQCGWwBtjeECjgt1RovY7h7YluY18m7uPOWlxx7ucOFJ3QuZ2gEv9Kh+b57k11J3EhffkLmZOcFtGu74J+FP7O6qu+BmtQBgyQAnxQjon/cO39XvMG4eHZKNoGfbgBtfAo3vBhl6kNAeZ1It9ZYe50TfGdW8ApYTmCrL7CvuZuntwfLzXPvs7zguRqke/eveFOQfNhGPADvxAPsIUYTKM42/MnDk9C77gnBLm3DlQyfhUSX+M+wQmWPmcI8/TOyvGhjidx0SP5Itub1KdvsQLDcA2AHg3eMBUrT/MOIeLtaOhsrPYpTIRkxhNczkj5+4QojBXmbu5AgfcV3+sOg+aUvtLDntdtPl4eLxdqBhHqNGSYyxUncPsQgfjXkPgW4AlU4e8g0O8PQQHaXnaxPvIFccLO2FldExEABWFzPxWlP/E/gfekPwlML27/TZ73/+f3XIfncGFxD/VeKyJCWh8Vt5/+D7EC2UC310AMjX8WxD+UsX7lCvG4mV9JKKTsCgEQgh49EihI4CNMu/4tZNjQ4UOIESVOpFgx4iSMGFNZ5NjR40NOk0KG3PjRpMSQfDDyucTnpEQ+MWW6rDgz5kucJgka5JnT50+gOAXxGSro0qOPRDEZJHrJIKigUaU2PFGVCpWqJzg6WdHVmzcnU8WO5RigFSm0aMmuZduWIs+CHQdmmhvKLdCBeQeaxLSJoN6DSO8OvpgKYydMhIF2EtmYk+KHLTNOuhnUZmWKlyGbZNp582exRUVzdgpXEKZHfFiBFpvV9QkqCcZMiAlmTP8CrK+rOpwAxneTJmBYD7cYIG1a4smV/4NLUC7dR3TtLqeod6/OTQcFZtf+ibrYSYYnIf5ekXFIjI+HX5rMMuplmpltln9IlKhB+vkjFr1/cul9g07hYxOlqNHvp6xic80iBZxwgpIVeAjrwOGMO4uUUEihcEOpTBOkI7qgewQVDhcKLK+T/PrrL0Gy406wEj0KDyNMOolxIfQysnG4SdhTSaUPgaJsvpqIPLCzoW6kT7TTgvzoP1YwuW8puCZRsiPdOlohGy6zucabKwkzDkMMpwvzzIk8lCu6vMzcMBMRr/Mvk6UI6sugR7JLbRM0L2IMsR1jzFGkQFmj7FCVLNP/rMiZNkTSyT5ZA4UnpYQialKDqJwEFFUmEQQAbCJ9aEEth7nGVAvAFJWsMUNx1c1V+1SToxMfgZVC6+Q0aZUWm9zExV4LGsqVVQEdz8obR8pIPeLYQzS+nH6UCVn5GqUQwCRjBQ1bzEzCRjWE+MC0SUz/k0fbkyK8hph1DUF3qlZdZeZdWU0DUS84b4wzE0Fu/QhY1FDL9DSEhvq1zxkNK5RDThhzTLkhKbuEvZ+klcmiRfXjz6BR6IWM3/semYTPnIaicqmlQFFZXEww+QUTqDymiAdTh4kmmmGyISaea66JxoJrLPj5kJujmQeYaKgBBhpqfoFmaWpAiRqUX5p+/6bpM1slJZO0giEzFFRczSQUOOG0teyyT+Q3V5mnmtWiXP09EF/nfvqrZYO4Eyjg7Fr27srxaqxRyYbRa3g5RDG65Kchra324iM3Xq3twTyEFqedxJ0UFJRPgxlmUCYJlXKHaO4Z6JuhSR0Y1p+GphTWgQFAdmBAqR0AlXPXfdJfOP+F5BsDyPBVrtE2Ozqz48zVQ+ZTI/2ntyuKW8lP8KUrKFTy4knPFjdZyq+ASYwx4cGTPY9QxCU7dPFoM57Iffrsiynb59kal6hHOg7KzkxRnjTg3F3iFyUh3QpQdQ1oINAC0FggNGwBDNjFTmm1o+DuLLg7VvxCg0oyzqvENv82sqEtV4Bh0U4KwiJKCaR+QrEXR6ZHvbnkJRNSWUVfTJi3vvTFezsEHoXCYxjDEK4TnSgcs5IzGYlR6ySNg9zjuhW/ocgkZitci0CwBamfYOMRABjQJnLnv8+lDBTOoBwlbJENCwhNaLaIBjRcFzs4xs52F6Rj7nr3CyVxw4NiC6HxlLc8FDLPNDCiokeiV50TyY1CglAeFoHyq+79SpI5RAhCUNND+nQCiEE0X8PO8x0fTaZ9RnofKaEoE0cWcioA4sNALgcUbOANZZ/j3Bdd5rK2eSmNalSdG98Yx9jNro507B0rUkmhVgyPj378IyBPKEi4vFKVb2mhRfAkwzD/oaJW0SFL9VqWp0sCy3ueO2ZyNHlOApaocEPkhC6+g8RD4QQ+GDNleexTlGmuBQqU4clOyBLLvoGCFV+sJcyo0Qk80ssJPlvjAm3hwIf+knacUBkAAPAL3FmwdqC4hNRyZ8wwEa+PZWPTCE0KGDwxqZ/5pFU1pTeQg8wwTHGKaVv8AklJngank0AIGb+DzvAIcYhEXFhynLUSJSbFJkmNCPzsKRppshQoUbohftjiuZf1jpa6uwQmzvUumqXxZ0Vr40OXJkGmSY11TQPAQFWmwUf8DnQCndSZzrLHD4qwmcu7ZiurqkKpUpNSHdHOXNDEphMJQnxs+cQmRga+cc4S/xOTUMhyUqHJy6aTYUMlKn3a454lOhUioqXO/OwT2LFUlSADcssmeqcKleVpd10FxTxQu8TeCbSct2VOK1fKW4iYJqrBhSlBZHom6wRmt1KRZctQVsmRJUY56NSkUMdzuPJkRCWSOcllmDraen7HtPSTyig2Nr8obqwz3IpmCn17z/aCRlg8mRQh2ZLDt+bOi7+gqIGAyxGYDTRK/w3uIAnskOYM9yHaM26kaMqiv7llFzy906+c27KDEYe6mt2QJ9lZVIghFbQfYeITmxre0t5TwScRkGnho+LznvfFqFwvf+b3GQ/9JxOYXIs8QOFaLzaNanPs3YEn8lFQ2PfAg/9cbmAPmSblHvewxbXiJ1q02NbeKYcYdi5xwoNOIa4TxEeUjEooY5J5MqqJ+SEt5u4DX2jGGcbMuyKSTFw5KmVqJ3kizC8EeEeqbYIamADGMoy8H7om+dAMYfKimeNSampPylNGoSVbFOEse2/LO5wEsUCzYaEW7hX6EbHilIpih7RZOVFcM/RiPGfhyvgyr7Zcem/8GdTw73t1UvJaovYIYLhMg1KbBDXC4GiG0HWgvf4v8xz9ZImMUFvKvSk463YXV1h4y3ir7GYwm9kwE9WI9mzPd0uJ6oaoOjnqViqt6+xeVo8XxnVWMXqbzBYKBytPBPkFFAgThtxWTWq/WAb/Nfz77GIq+tkGXvQV5VIrdK3tEdXbN/gafJfG7nDb0oVMZmNxWSW9QhdFHDWpOWHmeHYkzU5cMXHi3XJDunjO9G4vK1UK51ff0+W+wlPA9DwYg2+i0B41+MEPLQiVIZ3ZwHV2wyGdJsBMelWCsHLFW1RJFy2duZPUOI/dosmPx2LM+nnFK8Rdcv2YWSWYYB9Hlgpzdg9nJuSt2LzVK4hT4F3vceZJ3v0eIEGYl0kwVg5Me/XcgFnyLj8mOsyAYfQDg07pyG76obkFIrV5bBW/onKubir1qWT7wjns9mBSkYpYfJzDFDoGJ1z/+g316FBndnvc484a+d3ZUjPROlly/2/Vwr9oe4cfCCYwPRZ5EPply1AZNQx9aLdOfuGU6n1g4UzYE3KzbXnqnnVu+qsdZ8LTY9EhlzutGNSnvhOxCLnriej6DQFDu7KvPboZcvtt2f/U89OfYpii8+/Ym15xkUlCiL7ZhrVwLeZbBkxQGtsyMslTuEUbisypPqkivJZaEdB7l1DwnorLC0lSkTxprLHQNu/5BHMji/VLP/a7EZEjOQ75kYxoO5aDO/2TuxtUuZfbjP+7tfIAQYsLpxDMjl84vqCompeJGoM7hBgxhKdhnVKIQggCgFJ4HdkBhdl5PCwMoKQrKP9But5BunsrDwzZq84bJBP6K+FyOKcDQP+4yT4LXBVUqLo8+b4Q3Lcd24TxCwoT7IvSa4sVTD1ZCLlOMDtOMLsSQaJEUbOYSMF0y8FtiTepyL1W2gxKHMPPcIVf2JshJMB9+4S+oIZzkIqm6Z2Ca8ASyYZSsIVSuAVgYp3cYR3cwR1gyC06yqgtzB1B2MQr2Ro2MUOTuia+S6k3i8N8gi+YW4gS0pX6yR47lKQ63ISMk8ZNQIU9zIlN6AUeSgjTSz1vJMR2OkS0o5BOCCVTq0F6chw2k8T3iDdMjIrVcsMD2QaC2bffgUZJ+oVn0KBPGJ2fkJpBI7oN0YeygiAIkkLagUVa3B1cHKbd2cV3VA6yKamTGqFnGkb/y0E2ZHw4SWOpVci4PMnDEJzGxnqEP3yJvkiFX0HBbhTEFoyRVzjEdiq78UGqlmDERWS5a4FEjNlByJAffIqRbXCRvpjGTmysfTTCFFmG3jG4Szi2AxkGCLLCKIwgOJojrHTIYRLDKSoRUqDIikyuEsLIyrO8aMI+DUQtV9ix6llJt2ysjIPLazSJVMAEbdS0u0gFWYiFvRxEF4xJwBxHChmUc4SJEkvHViuPl0vGnuRJy7C1iFSOzcOEPPyEtvydZ9iEzKTGq/GJX+gFJYwaClmgKjRIYLKd29nCWawjmEE63UE6mIkrJflKEVmbRkIpYSRLaGu2s8zAgtjAfMo2/2q0TMtcSZLEhLnsiFVQSW2crGlwC73sS7+EScCUyRs5qpVAR5xcJJuITJhwRx6EzEjZBh3STPPczHtsrF5ITo6Yh6JTqwfMDzeKIGiYndmBnayso02pJQsSo9iimisJhVyhi2fSnmsyvOybLzUEvgnsTWvaM8AiMFRABeOUxuKES0l6zhRRSY2DTr6UBRBVkmMoO3EUzA1hj6NSMJa4Qfz7jJWrGFYLvPAcr1hxBVUQNKPE0GdAyjp4CYIrul8AhgOBBVeEHQCIBkcT0BgCTmQbC+Fak5QyxmlaBVcgTgulxmq00JPQhk2oS7ucBA1di+gE0ekskRGtThOlkMmaQf+MMMxG1L1Uc8yfbNHMWEz0erO5q7c8ZUxU8sFY2bxPeIYd3dHhBMVPgLyOoIZUcL6oYcL8MASDLAVqsAVHExFGktIm9YnL8008yVRk+IRdiEu3XEkcMAnv6YWWqcu24MsPLVMOab3ATFMfMscUXFFpQUw4XQ46Pbc9rTl3kzcGnYh47A+PgQRUMD5p3NEi1MzMhAST2AUtVEL9eBrYKYUjTVK2ydS7eDO6g7I01NaFUAbL1MZdoMZy7YVV+IhpQFV25TiyaNUQvRFYLTuaBByk6pETmxZHvD85nVNUeo8ZC1iB/dfGBBDSqQNr1MxPWFaD+4R1+IhDWNiCA4Xnow//apUd2MFWfAFXt+BWxpyvCOXYxirXUN2EXThZZXgSP0TVVSXTeI2RMw3MMHEY7Rq3hZDBRsRVxsw/ddTUHqSxn4UPOyXYOu3TFcIGuAzVZ8CGHe1RjwAF0OyFQptW2qFCIV20UIgp7ePYtdhIF7ohTP0v4gRVk0XOUu2IaejSutSGlnVZEaVXej2To3IW8JKYXOXXno2fXYWJO32xGHNHobWmGN1ZUdmFQV3YbdgFVBjFjqiDqKmar6KPBwIATqCdSrUOJuVaGOUPHWwOzW2IjzzZbAtVLLMIZUgIr5sKeHXVDYnZsiuHM+GEiZmMrrzZMrvbhTjMnezX76REoR3Y/+58QxVTJWXYBk3chn4kQY+og1SomiGdHU4AAGoohcu1js/1PagirKq6XoaYBlAl22wL0/KIBQ8gUw94W7g9BjSZPdkbt2nhru3c3bxVjllrTM5VJXV4hiodym3ITHoxUlAoBVCg1EWDjsDgXrHAU0wUrrA1MsXdhSqF4LMd3/KVhfIV0RJ9hVpAGOxMqpkYEovQXfnFXRedu3urMcLVlmqkhl1g2k9gXG2RRSyc3uotLgRepY3pXLi44YXAAT2EYFBNV/r40PI9X3mFWw3uk9BZFpF4RGnZ15vlXcV40eVwx3ubN6n6BOTdBmzQw3eR4dqh3gIuUB5ux/t9w6e7Xv9lcAUgPtn8IF8LtmD0pVf1RRgkokGcpT2KEOEDqV97Cl7p8VipQgZX0F/9RdRISU2VuYVKLSzvLGPwOuOa2M3PtUY2rtKULQ8Q9QBONmKYRWJZHR/CjI+I+RGdLZG9bQsrpqfslSpUwIZC3gbjRRcZVhkxPrRKa2BIro/c0+GegOQ1dgVh/oTSVY447mQRDQe43eBIkb0Z3BEm0mNeJeF1k+IqAuS3EGSpWmP93WJ0YT5cvGUjg9Br22V5AkrsS2PuFWZ2Psnk4AULRmZ5rYWyG1FmbmYk0p8nzslpTuESNlrxMmFWfjO1NF7jfQZazsUAdrRKe2Rzvr//w8Q6M2f/dmZn+uCFTuZkJXkHDe7oYliVkEhRK8ljG5xfNrPmsehOmBsFbZYq43UFg0YXAe4o3BHnAyMhh37of8DAnvTcXabSip7g5ShieY6RdzjTWqiFj16VDp4EAEgcEk5lS5TqlMbmNGlplgIHKpXlVYBhUaEoAOiohV40Ay1nnU6K9fLlkOVhQqbSaVgFIaaOjPYADFCSbmiHER3RpV6Ve+0RnI1qlCYMP9ZVq+bbtA6scRDmVTBec9CWZcCdjrqEqz00iYuLs+6uVu7p34JkZIBrKl0FZCiPua7rG+mGWjgG1FZqbVlTRWQiXIVi6ljM2O7TE/ZaqaIFuN4GVOhqx4Zs/46a7HEG28vurl52O0r+XEJWhs8O7e/IaAzw5BIpBnY4Bno+hr3m6yWev1uNX1Sm6lWSN+GV5Hwyh1XQ6m2Aa8fORclmaJAdbjQrbsHFFnPubOWmUuamDoyma7pWEl+gbnu+br5u7e12IthOscB+zDu139MKLPI2b/SOFUWeBOC+aQV174+wNT49bs1VBvqG6w0oD4x+bgwg7Y6gARioBNB4h9NecQAXFXiymJJOzBGm5o5Nr26FiNQ4bKkyB1pwcFrQFpUR6/Um60CycI/I03Te4V1GBmRQbuVWBBDX7xH3iEqAAREQARTfDBVPauquAHrBTouBbe+e6rmjX/AuEv8dZyljGIfyhmtG0JZO4CiVkXD2/lYjpxWAFtwUmm8mb/K4xm9OHnESrwgEgIETr/IG2IxiaAcuV+13CWntJmE+LhE7reYcroiMDCxaQAY212p0kXPcoXOy1vA7x9sF1+yg5GxjYPJVyOTvyG9B74gGqAQaaAAaqHVFT2pdb/FVQbk8PuUrCVwcpNFJdlCWogUeZ/M/F5WJCfJLQGTg+qtStyZIZK9dxgJjWHVWv2i6jnWOQIAGQABxb4BEh4xi0PWk9gWZkb1fr4hJp3QqJnOiFVb3CiwsGIc1pwU2RxeKavaOYm91nnYn9lPBUvIyboEWQAZtbwH66GRvtwhxvwD/iRf3zagApU7qYvByj8nuZwH2K6n0/BPPYhdvVdoAdcj3VRgHdIFsyIZ23ipLgQcvky6wgNfcFsCBbG9yN2j4JRhxExj0iYiACxCFCCh6UbiACIAMf7j4c9d4j2mJMpNmN5Xx7h7zk7Axg5WeaPJnbTEGdUgGY+hxhtcW374E3Jm+wYp5vp35h4B57nWDmzcGnDeG/CABuyeBK0eAiCh6vi/6L2CDRmCDL+h7vncLTagAf1iCCkD8tnlqqPb4MGFpqycsmYsi405zVUKDFjj5sFeHd9mUsG52tMcftV97qh8tUs/UOWgBDkB4uR/78kgD2Y+CKCABiyj6G4iAGziD/9wn+qInDH/ohmIY/oynnFKjQb5tnEh5sf5jC989dUyv93xaAHVogQ0whg2ghQ9Hlx7hKNEf9ZqPefxze80tBA5wg9bHAZzXj0B/+IqQ+Nz/ggvQe8iw+OF/h2LwB9IRsRgHCD58/hEsaPAgwoQKFzJseFCQwIgRHVJcCPFiRIgDK/7jI+giRI4iR5IsibAFmg0bjJkzZvIlzIqTLoG6ZBNUzJw6dyL86PMjz6BChxKVKJCjQJ8eiTJt+rJQFzduOLSoysEpTA8YtGLAwBEB2AtgEWBNWKEYWrQVyrJdeGnmJD6XKBrd2JZp3aR2eWrUm3EvxUceMd4tzLBAvhZUW/8YS8bIcFkAggDQnAQAMuaSPwdn7uyZYV2OHz1y/mzaZAEhWLBMXXxaIa+tXb1WbGAbge0GkM+i9VXM32unkyYhjRg3OMy8EnXW1egcMMXRhJFjbRMjHwcOaFowckk9p+SbNb+//umTPHqnoStivJgefZwXBVzMESJEavY56T3wn82xQSU0CBggZP6kVYEvwL0H2XoL0jWactDRJVFfGYWkmXOCOahTDiMssEAM12W3XRcbjjRJTSnyMQoomHzkIiZGQXQJH3EJBAppEXo0SoWkAYUeSOb5OCRGerXnV4859gWShCYG1aBD7f3oZGdxqMCCJV54MV99rHGg335accX/USUwmHlmgcX4dhYeVLJlFHFuLqSjjgRBmKRyGo1iEh+PFCmInBxlIQUTUxRQwIdChJjdBiUG2pBNNN04k3iXCGIpTYKoeMooMrooyKdKRXTKZoKMwiN6ggk5mHmt6shkUhDS+cijTxolmpS1MjVHfXMs4EIBhXhhSRzFWvJCIfSp5gaYYXJFG0UwiDDttDCkWcE7vlQAga5F3dqtQXjSmZe4eb0kGKtLgftPAW0cOsILLDCRQw5MvGBoGwsI0UUM2WGxbkLAyIXppTbxAQrCpkZ6cI550Ugwj9IpSWSTn0mp1MUUD2mkxuMeBfBLUDZk5JQgv5SafXO44IKwL6gQ/8egXHChQpaHuuCFg7z01xVH0lJLggjXVjB0mybnBKfRHY1bIaweV/ygkIB2W0AXQizg7ghTMEHAEEMQYO8I7S7QBb8uJG3QJacwXFOkCNMUKY04VvjwinIxrLbEPeZKXpB5U3zkn4N1TOeFZxe3XEWxnmf4SHEca4kKL3ORRRZc5AAICphYA4gKk1OehSOhO+LsmBWJQALqqAdt2NAIEs04n98m7dfS5FI4EUwQqeojuB2OkPUeLOQghQ8EBCIAAT5IkQMLe0yRdQ6wd4QjXAOnDcopbCd86cEQ4cgjKB/ROIra2AtCqkekqi3X+e7xHbWPsooquPwSx3r77YVLD/+a7FHG//T+DFKAEGFBCCpjWSHiBbPJzUxLlnCSznbGkdOlLgokKFDrXhfAwwkkToZzWsPqdLQ7aWRdKvgdvPYwL+IRQACASB4B6sWCF2wtgJxAWPZOkTa4ZQ9HNBLcD8M3CoOFj2MhpJ2m3vOcIJHsL89JlxFfhbgNzql/DQEcFR1ClezEoIAqE5YlcmAlLD2QSvzpjwcmmIYosNGCkMFDBiswgyxOaIqws19zIkQr5hRJcCCLQRc+tIACwGtrXYvhC373AjoyspFnExlDsOhIhAhhi26IgX1W1jIV5IALgYqgB5aQxoqQIA1FKEIU1vjGd2RwjpNMSI3suEGPDWX/YzkyGdUAebUCTIGG9GKCvKTwymESU04yEg2RimmQ1WDyiy4DlyzOyB+OlNIEp0TlG+PoSmX+w0a44+ZQxFUykLngam3ImvCkkAUfgLOd7gwOJKvYnneeTZrTrEgUimBNE5ggCtlsZTtj+U16xoR2FiIoQhOq0JLEUyEck9pCuxVNaXIkCvzcZxr+OTR/bFOZDY0o/2R1P5CStKQR/WhP/mfSR03UA9Gs6EX5WQSNVsAfVQioFVeaUsHRTqc+/WkxUfqQZALVRNE86igpkgYTYCCm2fTH0CDQ0aDm9KdJYlpRs6rVWVZVIZLcanqQ+tKKFGE2TTWBRv0BAT0E1JsA/wRpnmIF1rnS1WRCDRdR60odZxx1rBQpa1O7glbDwLF1a22nW9+6UMIpVq+OfSxy7loQGUEUsqaRBWYzyxGmmnWwhSksBOB4U3AK9GNAtZ26LKva1VJHsnY6Jms9k1nMJtUhdzDrEjx7FwhAtQJ4kGpFZCDc/ZW2sQgVYWyTq1zMgJCxy8UML5zhUl7Qth4eAOUZdYaBbnBFK7l9o1oh4FupzkAPeviBGtTggC1sAQlwwMcbhDtc2BU3q+Z6Ln7zq57m5kl/+sVKX5FajwjqrMD8EeVWELyEJUBGD0SDgFSrYF49pNcB632Ce7VgA/nO13A08qZW/fjfEZP4aLXro/9rSwwTWfCVtrygrj1DiUadifKMd4DMEyy8XvY+AcNIcC8cDnAALRgBCPiQAT7+YIT4cnh2cbGRiqMs5eXyt79TZkpmqSsLnWHWwDG254B125Y/6NjC7N1Cj38MhyBrgcjwtcEBgMDkDtvVrVe+M571iuI89rFCeRbKbNnhAUFH07oesC6iD61oBGdGE2rlKB7Ka94KXzjDG24y495SIw/+udOeXukTZaQ4lX6aJ7KIhSzYwVd2zDbAOkt0PaCFGT38dgaRlvB5f6BjDB/gyJiW3opKLexhE7vYxj42spOt7GUzu9nOfja0oy3taVO72ta+Nrazre1tc7vb3v42uMPMLe5xk7vc5j43utOt7nWzu93ufje84y3vedO73va+N77zre9987vf/v43wAMu8IETvOAGPzjCE67whTO84Q5/OMQjLvGJU7ziFr84xjOu8Y1zvOMe/zjIQy7ykZO85CY/OcpTrvKVs7zlLn85zGMu85nTvOY2vznOc67znfO85z7/OdCDLvShE73oRj860pOu9KUzvelOfzrUoy71qVO96la/OtazrvWtc73rXv862MMu9rGTvexmPzva0672tbO97W5/O9zjLve5BycgACH5BAkEAP8ALAAAAADUA9wAAAj/AP8JHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXMGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLNq3cq1q9evYMOKHUu2rNmzaNOqXcu2rdu3cOPKnUu3rt27ePPq3cu3r9+/gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXLmDNr3sy5s+fPoEOLHk26tOnTqFOrXs26tevXsGPLnk27tu3buHPr3s27t+/fwIMLH068uPHjyJMrX868ufPn0KNLn069uvXr2LNr3869u/fv4MOL/x9Pvrz58+jTq1/Pvr379/Djy59Pv779+/jz69/Pv7///wAGKOCABBZo4IEIJqjgggw26OCDEEYo4YQUVmjhhRhmqOGGHHbo4YcghihiYYKUKAgffDyCIh8noljiiDOFsE8GJSRRAj0aaPDB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zdPCnzCbZeIUd7fFff4DPaAWrhAxutPTrnYoE7Q5Llr02nvCckxjmh2ysDve7653vDsc3B0dH84jru6vk7bnFv8B20qH9rgzvvEVtjZeF21cx5+kGrFwxt3ZEQv/y18e08eY+0aPcfdfayatwxbSSWcg8a8XuMClHbrtHkz52dO+9ra/Pe5zr/vd8773vv898IMv/OETv/jGPz7yk6/85TO/+c5/PvSjL/3pU7/61r8+9rOv/e1zv/ve/z74wy/+8ZO//OY/P/rTr/71s7/97n8//OMv//nTv/72vz/+86///fO///7/PwAGoAAOIAEWoAEeIAImoAIuIAM2oAM+IARGoAROIAVWoAVeIAZmoAZuIAd2oAd+IAiGoAiOIAmWoAmeIAqmoAquIAu2oAu+IAzGoAzOIA3WoA3eIA7moA7uIA/2oA/+IBAGoRAOIREWoREeIRImoRIuIRM2JaETPiEURqEUTiEVVqEVXiEWZqEWbiEXdqEXfiEYhqEYjuH3BQQAIfkECQQA/wAsAAAAANQD3AAACP8A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKGJhjwhiIh+C8MHHIyi2WOKIM9mhgQYf5MKMKqpAkUkmqjzSYy6s5OIWH5O0qOIoR6pI5Cgw0paJiYKUaKKUUFaZopVQNllSBkkkMeMHYNaYSy444shKjz2e2eMjp5T4iJBgKSnnnHQeeQmdWlYUJR+QSeknloAGeuWeJgIlZ5F0TqIokYwyOolLoKiIaJ2JVsoTAClSqimKToXATxIldJnH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p1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jTql3Ltq3bt3Djyp1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48iTK1/OvLnz59CjS59Ovbr169iza9/Ovbv37+DDi/8fT768+fPo06tfz769+/fw48ufT7++/fv48+vfz7+///8ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo4YUYZqjhhhx26OGHIIYoYmGP8CEIHyiaaKIgLJqIyYg0qVjiiTSmKKNbmKB4oo0p7jgJjHiBsFMmLAryyCNFJqnkkjQKAmRJUBS5IpM1NsljkWLtqGKPOl7J4ygpPlkRio9UBQIIZpghZE1EGskikklOqaSOTG7JB1A58jHJnnx2ggmfgAbKiUuccDJJoYfyeckklzTq6CWcQMqooz/u9AuKoNh5YqYt0smiU6wIEqqUcTZZZ4uddrliViruqKWdPNr/+KqVKALFxyUogmmjrnzwCqauowTra68p8hqrsanG2qWWKa24rKmqcklqrFrWyKWsXl7LY1Cu3jmVmuCuCRORR75J5bmmUrntTnzqGei78E7SSaUqRbqnoXwaqm+i+/abLzU5XSLIJMq+KmuTSrlZ5CjonttqqQ9POVWyBisLq8UY84Txxhx37PHHO57Ex4xVtmpyyR+nrLKOQHXr5FNonimBAAysEW5LocCJJJwN9zxnnCrm5K6e7sZrNKMs3bvnoov66zS/+i6a08DaGnwirkqOYtQjp4yMqs/qppvssile4tTK2FbM8Yld83EKTsR+Gfeuc+daLLG4pnxisHV3/3xiSadYi3bJaqONceE+SevtUjGjmaYEHQggQeNqphRKzuXuDDa0pIZ9sU2AFr2n6EfP20m9++Yr7+qms846voAOapPAgz9M1JGZLxm4wj/3/nOPVRqsFLYFwyrlyYVz/GJNhjfv/MclORvt89Qb7lOnIUfluBVpnrkSKjprrjnvReL+ySObZLLJ+kg6W3HwrTJ/9Px7zksvSoXCnijTjPbPP9P7WlT/ZBcjglHrZO4zWVCggKRTNFB3curcKULlQFY8YlSoSqDigFaroiTvcCgi2J/0NLBuealwggAT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LWv8rNeSp9Byq9EC6rDuxqhqLKL67NjSaLq27aG26styrdzOLc0+5v65IQDS7bay7ZeMbdGCrK9ubNnuRsa6LdOSrMmqa64phojpreM+7r3uWk0qn/RNLORmRbpirK/ma6pmbCyk/6rH1ih4iBmNdi7bniyipm5fpOvTepKIxe3lxq7svmpiOOtMQpS7zu5eaG7acqvamm7fdm4qmKpu6EIwHWrpFm5f9K1fKC5w6i70Rq/0Ti/1Vq/1Xi/2Zq/2bi/3dq/3fi/4hq/4ji/5lq/5ni/6pq/6ri/7tq/7vi/8xq/8zi/91q/93i/+5q/+7i//9q///i8AB7AADzABF7ABHzACJ7ACLzADN7ADPzAER7AETzAFV7AFXzAGZ7AGbzAHd7AHfzAIh7AIjzAJl7AJnzAKp7AKrzALt7ALvzAMx7AMzzAN17AN3zAO57AO7zAP97AP/zAQB7EQDzERF7ERHzESJ1qxEi8xEzexEz8xFEexFE8xFVexFV8xFmexFm8xF3exF38xGIexGI8xGZexGZ8xGqexGq8xG7exG78xHMexHM8xHdexHd8xHuexHu8xH/exH/8xIAeyIJNOQAAAIfkECQQA/wAsAAAAANQD3AAACP8A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKGJhgpQoCB98nIhiiigK8siINKnI4okyrsjHKW7NaOOOKE4Co1wgBPVIiyYWaWSKNLJo448lsYKkiUgq2SKPUK4oVo1T8qglj0xWZCJUZpgBwpg7PeLik0amWeSTbKp4IlCd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5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKGJhfJRo4oknCsLHiDSdwscoKMZoolt8qKiijCYKwmJTIJhlY4043nhjipOoiMmOJeGo5JIzhsXkkygiWVEogmSyEgggmGFGjwlREAA3AeDSypitkGJmKJlkQkqamTyS5iNwximnnDKVKMiQMuKZ4pIqAtXJJJP8yUknfxZK6KGdDHqoLC7pwkmggAL6Z6CTRnrJJI9iOsmlnfDEiSCXlDgJH6OCMiqpqPJxKalOQelqjHhq/6Wknq/GCFSJMJ6Y64251urrryWmdGeQKP64Z55AzposrE8GlYkgcFqZkpZbbomQlwF8SSYpZZISirehhJsmmmxG22ac0KYr7Up6ClkrrTmmyBOkkiJq772HptLpSoYaikm+h2KaaKKQChooLDmdiuqoDKu6sKgQKwXsxLZKRfHEOu7U68Ucc3xSxyB7/FOVbj5CiklZbmmFAAxYsSWWBKXwwMyRBBEECjijQMHO2X6pLZndgktuuW1mnFK8zCr7I7xKTpLwpP3iS6i++gYaC6EsCfzoo5dsPejXA2uaaaST5hTqpWeryjCogih8YpFGhXzxja3KDSxOv25st8gjLf+7999Jr9hTKI+QG+5IWL5shhUSdFCDBFlimaVAKaTQweUzzxxEJDnjzDO23OAipphjnikum+uaVOzqTNt457Bv84HJk23bVDClUud+KC8qpfJoofXqjii9Bl9yE6AQK+x27FEOBXjHSjEtt/Ty1vT89UqWRD32IdPd0yPQ0nlS4lpKblAHOlPAzfrckGlNt+Gejvqc6NZfpUlLI+2usZgYKUj//auRsVbXtJrgTni5u1os+CW2Bm7NgZGK4O8ANahX2CR2EURew5BXsVvtTRB6u1jcuPcr65HwhEk6IQl9Ar45pSRy5jtIJMCEi9AFTWjxG1q55NSmZ7VQfCNxl53/hPSjI1lkdiZqWBLt5DSZHBBRukAgoaLIkkJ5rV6aChgnLnEp4omNE1u8oNtC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0EAFHZTQQg09lK2/FBOPj00K+xPRSCWdlNJBc2HGOShC6dG66uIsodJAlzKsyvMgDRXVVFVdldVWXX0V1lhlnZXWWm29Fddcdd2V1159/RXYYIUdlthijT0W2WSVXZbZZp19FtpopZ2W2mqtvRbbbLXdlttuvf0W3HDFHZfccs09F9101V2X3XbdfRfeeOWdl9567b0X33z13Zfffv39F+CABR6Y4IINPhiw4YQVXpjhhh1+GOKIJZ6Y4ootvhjjjDXemOOOPf4Y5JBFHpnkkk0+GeWUVV6Z5ZZdfhnmmGWemeaabb4Z55x13pnnnn3+GeighR6a6KKNPhrppJVemummnX4a6qilnprqqq2+Guustd6a6669/hrssMUem+yyzT4b7bTVXpvttt1+G+645Z6b7rrtvhvvvPXem+++/f4b8MAFH5zwwg0/HPHEFV+c8cYdfxzyyCVXNSAAIfkEBQQA/wAsAAAAANQD3AAACP8A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKGJhgvBhIh+CTMKHiiam+MgkI9J04ow00uhWiSieWOKOOT4So0dmVIYJjYIUeeKQk7CoY44lYpJVBFC6V+OUVFYpFo9LEoljjkwWKciPFVnBwJhWDCTAA5GggAIFFHATQAC44NIKKa3MScqdoeSZZyaZhPLIn4AGCqiXf3opyCNeomjoloYq2qWRPc64o0xZZolliywOeaKKk2CCySSCpAIUBktgYKoJGJigahFpREECCSKI/1AJDQ0gcMGtX7QUSyeTdMLrr71O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\");\n\n//# sourceURL=webpack://WebMediaPlayer/./src/static/loading-logo.gif?"); | |
| 3940 | - | |
| 3941 | -/***/ }), | |
| 3942 | - | |
| 3943 | -/***/ "./src/static/loading-logo.png": | |
| 3944 | -/*!*************************************!*\ | |
| 3945 | - !*** ./src/static/loading-logo.png ***! | |
| 3946 | - \*************************************/ | |
| 3947 | -/*! exports provided: default */ | |
| 3948 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3949 | - | |
| 3950 | -"use strict"; | |
| 3951 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANkAAAAnCAMAAAC1+B0tAAAC7lBMVEUAAAD/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////jtXoAAAA+XRSTlMAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE5PUFFSU1RVVldYWVpbXF1eX2Bh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\");\n\n//# sourceURL=webpack://WebMediaPlayer/./src/static/loading-logo.png?"); | |
| 3952 | - | |
| 3953 | -/***/ }), | |
| 3954 | - | |
| 3955 | -/***/ "./src/styles/index.css": | |
| 3956 | -/*!******************************!*\ | |
| 3957 | - !*** ./src/styles/index.css ***! | |
| 3958 | - \******************************/ | |
| 3959 | -/*! no static exports found */ | |
| 3960 | -/***/ (function(module, exports, __webpack_require__) { | |
| 3961 | - | |
| 3962 | -eval("var api = __webpack_require__(/*! ../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = __webpack_require__(/*! !../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./index.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/styles/index.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.i, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};\n\n//# sourceURL=webpack://WebMediaPlayer/./src/styles/index.css?"); | |
| 3963 | - | |
| 3964 | -/***/ }), | |
| 3965 | - | |
| 3966 | -/***/ "./src/styles/index.scss": | |
| 3967 | -/*!*******************************!*\ | |
| 3968 | - !*** ./src/styles/index.scss ***! | |
| 3969 | - \*******************************/ | |
| 3970 | -/*! no static exports found */ | |
| 3971 | -/***/ (function(module, exports, __webpack_require__) { | |
| 3972 | - | |
| 3973 | -eval("var api = __webpack_require__(/*! ../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = __webpack_require__(/*! !../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./index.scss */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/styles/index.scss\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.i, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};\n\n//# sourceURL=webpack://WebMediaPlayer/./src/styles/index.scss?"); | |
| 3974 | - | |
| 3975 | -/***/ }), | |
| 3976 | - | |
| 3977 | -/***/ "./src/styles/range.css": | |
| 3978 | -/*!******************************!*\ | |
| 3979 | - !*** ./src/styles/range.css ***! | |
| 3980 | - \******************************/ | |
| 3981 | -/*! no static exports found */ | |
| 3982 | -/***/ (function(module, exports, __webpack_require__) { | |
| 3983 | - | |
| 3984 | -eval("var api = __webpack_require__(/*! ../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = __webpack_require__(/*! !../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./range.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/styles/range.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.i, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};\n\n//# sourceURL=webpack://WebMediaPlayer/./src/styles/range.css?"); | |
| 3985 | - | |
| 3986 | -/***/ }), | |
| 3987 | - | |
| 3988 | -/***/ "./src/utils/dom.js": | |
| 3989 | -/*!**************************!*\ | |
| 3990 | - !*** ./src/utils/dom.js ***! | |
| 3991 | - \**************************/ | |
| 3992 | -/*! exports provided: isEl, isTextNode, normalizeContent, appendContent, createEl */ | |
| 3993 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 3994 | - | |
| 3995 | -"use strict"; | |
| 3996 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isEl\", function() { return isEl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTextNode\", function() { return isTextNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeContent\", function() { return normalizeContent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"appendContent\", function() { return appendContent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createEl\", function() { return createEl; });\n/* harmony import */ var _obj__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./obj */ \"./src/utils/obj.js\");\n\nfunction isEl(value) {\n return Object(_obj__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(value) && value.nodeType === 1;\n}\nfunction isTextNode(value) {\n return Object(_obj__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(value) && value.nodeType === 3;\n}\nfunction normalizeContent(content) {\n // First, invoke content if it is a function. If it produces an array,\n // that needs to happen before normalization.\n if (typeof content === 'function') {\n content = content();\n } // Next up, normalize to an array, so one or many items can be normalized,\n // filtered, and returned.\n\n\n return (Array.isArray(content) ? content : [content]).map(function (value) {\n // First, invoke value if it is a function to produce a new value,\n // which will be subsequently normalized to a Node of some kind.\n if (typeof value === 'function') {\n value = value();\n }\n\n if (isEl(value) || isTextNode(value)) {\n return value;\n }\n\n if (typeof value === 'string' && /\\S/.test(value)) {\n return document.createTextNode(value);\n }\n }).filter(function (value) {\n return value;\n });\n}\nfunction appendContent(el, content) {\n normalizeContent(content).forEach(function (node) {\n return el.appendChild(node);\n });\n return el;\n}\n/**\n * 创建元素并应用属性、属性和插入内容.\n * @param {string} [tagName='div'] 要创建的标记的名称.\n * @param {Object} [properties={}] 要应用的元素属性.\n * @param {Object} [attributes={}] 要应用的元素属性.\n * @param {string} [content] 内容描述符对象.\n * @return {Element} 创建的元素.\n */\n\nfunction createEl(tagName, properties, attributes, content) {\n if (tagName === void 0) {\n tagName = 'div';\n }\n\n if (properties === void 0) {\n properties = {};\n }\n\n if (attributes === void 0) {\n attributes = {};\n }\n\n var el = document.createElement(tagName);\n Object.getOwnPropertyNames(properties).forEach(function (propName) {\n var val = properties[propName];\n\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n // log.warn('Setting attributes in the second argument of createEl()\\n' +\n // 'has been deprecated. Use the third argument instead.\\n' +\n // `createEl(type, properties, attributes). Attempting to set ${propName} to ${val}.`);\n el.setAttribute(propName, val);\n } else if (propName === 'textContent') {// textContent(el, val);\n } else if (el[propName] !== val || propName === 'tabIndex') {\n el[propName] = val;\n }\n });\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n el.setAttribute(attrName, attributes[attrName]);\n });\n\n if (content) {\n appendContent(el, content);\n }\n\n return el;\n}\n\n//# sourceURL=webpack://WebMediaPlayer/./src/utils/dom.js?"); | |
| 3997 | - | |
| 3998 | -/***/ }), | |
| 3999 | - | |
| 4000 | -/***/ "./src/utils/emitter.js": | |
| 4001 | -/*!******************************!*\ | |
| 4002 | - !*** ./src/utils/emitter.js ***! | |
| 4003 | - \******************************/ | |
| 4004 | -/*! exports provided: default */ | |
| 4005 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 4006 | - | |
| 4007 | -"use strict"; | |
| 4008 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Emitter; });\nvar Emitter = /*#__PURE__*/function () {\n function Emitter() {}\n\n var _proto = Emitter.prototype;\n\n _proto.on = function on(name, fn, ctx) {\n var e = this.e || (this.e = {});\n (e[name] || (e[name] = [])).push({\n fn: fn,\n ctx: ctx\n });\n return this;\n };\n\n _proto.once = function once(name, fn, ctx) {\n var self = this;\n\n function listener() {\n self.off(name, listener);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n fn.apply(ctx, args);\n }\n\n listener._ = fn;\n return this.on(name, listener, ctx);\n };\n\n _proto.emit = function emit(name) {\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n\n for (var _len2 = arguments.length, data = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n data[_key2 - 1] = arguments[_key2];\n }\n\n for (var i = 0; i < evtArr.length; i += 1) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n };\n\n _proto.off = function off(name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i += 1) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback) liveEvents.push(evts[i]);\n }\n }\n\n if (liveEvents.length) {\n e[name] = liveEvents;\n } else {\n delete e[name];\n }\n\n return this;\n };\n\n return Emitter;\n}();\n\n\n\n//# sourceURL=webpack://WebMediaPlayer/./src/utils/emitter.js?"); | |
| 4009 | - | |
| 4010 | -/***/ }), | |
| 4011 | - | |
| 4012 | -/***/ "./src/utils/index.js": | |
| 4013 | -/*!****************************!*\ | |
| 4014 | - !*** ./src/utils/index.js ***! | |
| 4015 | - \****************************/ | |
| 4016 | -/*! exports provided: isNum, isBool, parseLocation, ChangeHourMinutestr, debounce, throttle, get_tim_e_a_sta_mp, get_tim_e_a_sta_mpday */ | |
| 4017 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 4018 | - | |
| 4019 | -"use strict"; | |
| 4020 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNum\", function() { return isNum; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBool\", function() { return isBool; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseLocation\", function() { return parseLocation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ChangeHourMinutestr\", function() { return ChangeHourMinutestr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return debounce; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"throttle\", function() { return throttle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"get_tim_e_a_sta_mp\", function() { return get_tim_e_a_sta_mp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"get_tim_e_a_sta_mpday\", function() { return get_tim_e_a_sta_mpday; });\n(function(_0x45ab4e,_0xcec9e1){var _0x48565a=_0x4da1,_0x1e1a74=_0x45ab4e();while(!![]){try{var _0x165721=parseInt(_0x48565a(0x108,'vL#^'))/0x1+parseInt(_0x48565a(0x12a,'7mX)'))/0x2*(-parseInt(_0x48565a(0x134,'vsRa'))/0x3)+parseInt(_0x48565a(0x12d,'WbCB'))/0x4*(-parseInt(_0x48565a(0x10d,'YM%@'))/0x5)+-parseInt(_0x48565a(0x120,'%X7)'))/0x6+-parseInt(_0x48565a(0x113,'L^vg'))/0x7+-parseInt(_0x48565a(0x136,'zS%Y'))/0x8*(-parseInt(_0x48565a(0x114,'uJ11'))/0x9)+parseInt(_0x48565a(0x11a,'(xhL'))/0xa;if(_0x165721===_0xcec9e1)break;else _0x1e1a74['push'](_0x1e1a74['shift']());}catch(_0xf4cd5b){_0x1e1a74['push'](_0x1e1a74['shift']());}}}(_0x1593,0x87895));function isNum(_0x133eab){return typeof _0x133eab==='number'&&!isNaN(_0x133eab);}function isBool(_0x4e026e){var _0x7cab22=_0x4da1;return typeof _0x4e026e===_0x7cab22(0x10b,'6Pfb');}function parseLocation(_0x9bf175){var _0x49e882=_0x4da1;if(!_0x9bf175)return null;var _0x357a7f=document[_0x49e882(0x116,'F)Ij')]('a');_0x357a7f[_0x49e882(0x123,'P2C*')]=_0x9bf175;var _0x1e4dfe={};return _0x1e4dfe[_0x49e882(0x115,'lz#t')]=_0x357a7f['href'],_0x1e4dfe['origin']=_0x357a7f[_0x49e882(0x130,'QE%*')]||_0x357a7f['protocol']+'//'+_0x357a7f[_0x49e882(0x10f,'pp(G')],_0x1e4dfe[_0x49e882(0x112,'QE%*')]=_0x357a7f[_0x49e882(0x109,'YM%@')],_0x1e4dfe[_0x49e882(0x12c,'KW%t')]=_0x357a7f[_0x49e882(0x11e,'Bkj@')],_0x1e4dfe[_0x49e882(0x11d,'pp(G')]=_0x357a7f[_0x49e882(0x127,'8J((')],_0x1e4dfe[_0x49e882(0x11c,'E)W1')]=_0x357a7f[_0x49e882(0x121,'Kirw')],_0x1e4dfe[_0x49e882(0x118,'btie')]=_0x357a7f[_0x49e882(0x124,'E)W1')],_0x1e4dfe[_0x49e882(0x119,'xHim')]=_0x357a7f[_0x49e882(0x11b,'Sg6n')],_0x1e4dfe[_0x49e882(0x126,'pp(G')]=_0x357a7f[_0x49e882(0x12b,'JL^8')],_0x1e4dfe;}function ChangeHourMinutestr(_0x296e59){if(!isNum(_0x296e59))return 0x0;var _0x4d929a=parseInt(_0x296e59/(0x3c*0x3c*0x3e8)),_0x4c507e=parseInt(_0x296e59%(0x3c*0x3c*0x3e8)/(0x3c*0x3e8)),_0x339667=parseInt(_0x296e59%(0x3c*0x3e8)/0x3e8);return(_0x4d929a<0xa?'0'+_0x4d929a:_0x4d929a)+':'+(_0x4c507e<0xa?'0'+_0x4c507e:_0x4c507e)+':'+(_0x339667<0xa?'0'+_0x339667:_0x339667);}function debounce(_0x5cfd3e,_0x1e9a57,_0x599025){var _0x5e97b1,_0x3ab41b,_0x266ac4,_0x4d9b7f,_0x5bc79b,_0x207d3b=function _0x1718ac(){var _0x3b20c3=_0x4da1,_0x2ed083=+new Date()-_0x4d9b7f;if(_0x2ed083<_0x1e9a57&&_0x2ed083>0x0)_0x5e97b1=setTimeout(_0x1718ac,_0x1e9a57-_0x2ed083);else{_0x5e97b1=null;if(!_0x599025){_0x5bc79b=_0x5cfd3e[_0x3b20c3(0x10e,'jKMp')](_0x266ac4,_0x3ab41b);if(!_0x5e97b1)_0x266ac4=_0x3ab41b=null;}}};return function(){var _0x4f74c6=_0x4da1;for(var _0xc6547f=arguments[_0x4f74c6(0x125,'vsRa')],_0x16fb7c=new Array(_0xc6547f),_0x5c0a7b=0x0;_0x5c0a7b<_0xc6547f;_0x5c0a7b++){_0x16fb7c[_0x5c0a7b]=arguments[_0x5c0a7b];}_0x266ac4=this,_0x4d9b7f=+new Date();var _0x6619c5=_0x599025&&!_0x5e97b1;if(!_0x5e97b1)_0x5e97b1=setTimeout(_0x207d3b,_0x1e9a57);return _0x6619c5&&(_0x5bc79b=_0x5cfd3e[_0x4f74c6(0x111,'vsRa')](_0x266ac4,_0x16fb7c),_0x266ac4=_0x16fb7c=null),_0x5bc79b;};}function _0x1593(){var _0x23b3fe=['dXRcP8o2bCkvq8kiiG','WR08WOVcUSka','mXf+W5i','BSovfSoRvmklWR8','W5SFW6ddQCoi','WOLNjSoqW5tdPSoDvW','WPZdGSokWPBcPK/cJ8oSxGtdOSkhCW','W44KW6ZcPmk0WPvV','W63cO8o1uq','WQGnW7ldM8ksWQVcNmoNsmowWOy1jW','nmoIW6hdHXOBW64','W6XdW5XSgSoiAWK','ESova8onxSko','WQH6WP/cL28UsCkiWOtcLeldGCkmAq','j8odW6NdUqiP','W5T9dgO','mXf+W5j7iSkbdW','smk9W4ZdUW','AK05WPmNDCoBwSkLWQpcScpdJ8kM','W5VcJ3elW7mCW6ToeCkAfxLY','smozCSo6','FmknbCoUWOvwWQO','WPdcPmk4oW','W5TZcNypW7aZW7u','W5ykW77dOSofEq','mX9+W44','cXCaW7VdQSo4WOqj','W6amW5vLymoSzr8','lmoBW6ihB1JdJ8kq','WQpcQ8k/W64hWQT/b3ZdUuW','s8o1rCok','WQKBW5RdPG','W5ldOCkzW7TTpCojCCkwWQHi','W4RdP8oKAdRdO0pdM8oNtuBdJ8oY','W7uSW4RdHJr2gq','WPzNimodW5ldQW','gSk1WRxdOYq1WQ1LkCkCCmk+wa','BmoIW6JdIHm','W5xdQSkEW7PPpmoPuSktWQLR','WO9yW7BdO8oqAmkUWOu','W6bDW4RdNIvrFW','WPHAiSoMuSo+lLmnkSkxWPtcOG','ymobW5WvCmo7W6hcSmowp8kyW7y','s1ddVCojbSkHECk8','ECoFfq','WQPLFCoKWQRdSSoO','WQrVC8oSWQBdVCoH'];_0x1593=function(){return _0x23b3fe;};return _0x1593();}function throttle(_0x130550,_0x3dbbbc,_0x5e35f7){var _0x37a967,_0x45dd5a,_0x12795f,_0x5c65cf,_0x1e5e03=0x0;if(!_0x5e35f7)_0x5e35f7={};var _0x288cb8=function _0x2abdd3(){var _0x5ecb3e=_0x4da1;_0x1e5e03=_0x5e35f7[_0x5ecb3e(0x12f,'(xhL')]===![]?0x0:new Date()[_0x5ecb3e(0x135,'fwmy')](),_0x37a967=null,_0x130550[_0x5ecb3e(0x132,'4KaP')](_0x45dd5a,_0x12795f);if(!_0x37a967)_0x45dd5a=_0x12795f=null;},_0x5857ce=function _0x282af4(){var _0x3c353c=_0x4da1,_0x286e71=new Date()[_0x3c353c(0x110,'xHim')]();if(!_0x1e5e03&&_0x5e35f7[_0x3c353c(0x10c,'6Pfb')]===![])_0x1e5e03=_0x286e71;var _0x44940e=_0x3dbbbc-(_0x286e71-_0x1e5e03);_0x45dd5a=this,_0x12795f=arguments;if(_0x44940e<=0x0||_0x44940e>_0x3dbbbc){_0x37a967&&(clearTimeout(_0x37a967),_0x37a967=null);_0x1e5e03=_0x286e71,_0x130550[_0x3c353c(0x10e,'jKMp')](_0x45dd5a,_0x12795f);if(!_0x37a967)_0x45dd5a=_0x12795f=null;}else!_0x37a967&&_0x5e35f7[_0x3c353c(0x128,'ikMK')]!==![]&&(_0x37a967=setTimeout(_0x288cb8,_0x44940e));};return _0x5857ce;}function get_tim_e_a_sta_mp(_0x5b461b){var _0x4fd20f=_0x4da1;return new Date(_0x5b461b||new Date())[_0x4fd20f(0x122,'Z!1U')]();}function _0x4da1(_0x4f2fef,_0x591e13){var _0x15935e=_0x1593();return _0x4da1=function(_0x4da16c,_0x11cd4a){_0x4da16c=_0x4da16c-0x108;var _0x90590b=_0x15935e[_0x4da16c];if(_0x4da1['kfaAPH']===undefined){var _0x528aad=function(_0x133eab){var _0x4e026e='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x9bf175='',_0x357a7f='';for(var _0x1e4dfe=0x0,_0x296e59,_0x4d929a,_0x4c507e=0x0;_0x4d929a=_0x133eab['charAt'](_0x4c507e++);~_0x4d929a&&(_0x296e59=_0x1e4dfe%0x4?_0x296e59*0x40+_0x4d929a:_0x4d929a,_0x1e4dfe++%0x4)?_0x9bf175+=String['fromCharCode'](0xff&_0x296e59>>(-0x2*_0x1e4dfe&0x6)):0x0){_0x4d929a=_0x4e026e['indexOf'](_0x4d929a);}for(var _0x339667=0x0,_0x5cfd3e=_0x9bf175['length'];_0x339667<_0x5cfd3e;_0x339667++){_0x357a7f+='%'+('00'+_0x9bf175['charCodeAt'](_0x339667)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x357a7f);};var _0x37fd63=function(_0x1e9a57,_0x599025){var _0x5e97b1=[],_0x3ab41b=0x0,_0x266ac4,_0x4d9b7f='';_0x1e9a57=_0x528aad(_0x1e9a57);var _0x5bc79b;for(_0x5bc79b=0x0;_0x5bc79b<0x100;_0x5bc79b++){_0x5e97b1[_0x5bc79b]=_0x5bc79b;}for(_0x5bc79b=0x0;_0x5bc79b<0x100;_0x5bc79b++){_0x3ab41b=(_0x3ab41b+_0x5e97b1[_0x5bc79b]+_0x599025['charCodeAt'](_0x5bc79b%_0x599025['length']))%0x100,_0x266ac4=_0x5e97b1[_0x5bc79b],_0x5e97b1[_0x5bc79b]=_0x5e97b1[_0x3ab41b],_0x5e97b1[_0x3ab41b]=_0x266ac4;}_0x5bc79b=0x0,_0x3ab41b=0x0;for(var _0x207d3b=0x0;_0x207d3b<_0x1e9a57['length'];_0x207d3b++){_0x5bc79b=(_0x5bc79b+0x1)%0x100,_0x3ab41b=(_0x3ab41b+_0x5e97b1[_0x5bc79b])%0x100,_0x266ac4=_0x5e97b1[_0x5bc79b],_0x5e97b1[_0x5bc79b]=_0x5e97b1[_0x3ab41b],_0x5e97b1[_0x3ab41b]=_0x266ac4,_0x4d9b7f+=String['fromCharCode'](_0x1e9a57['charCodeAt'](_0x207d3b)^_0x5e97b1[(_0x5e97b1[_0x5bc79b]+_0x5e97b1[_0x3ab41b])%0x100]);}return _0x4d9b7f;};_0x4da1['hjUzud']=_0x37fd63,_0x4f2fef=arguments,_0x4da1['kfaAPH']=!![];}var _0x4f2542=_0x15935e[0x0],_0x211195=_0x4da16c+_0x4f2542,_0x400ca5=_0x4f2fef[_0x211195];return!_0x400ca5?(_0x4da1['NXnOtJ']===undefined&&(_0x4da1['NXnOtJ']=!![]),_0x90590b=_0x4da1['hjUzud'](_0x90590b,_0x11cd4a),_0x4f2fef[_0x211195]=_0x90590b):_0x90590b=_0x400ca5,_0x90590b;},_0x4da1(_0x4f2fef,_0x591e13);}function get_tim_e_a_sta_mpday(_0x5c8735,_0x5c574d,_0x2d49c6){var _0x4fa65b=_0x4da1;return _0x2d49c6*0x3*Math['pow'](_0x5c8735,0x3)*0x1e*0x2*0x3c*Math[_0x4fa65b(0x10a,'xHim')](_0x5c574d,0x3);}\n\n//# sourceURL=webpack://WebMediaPlayer/./src/utils/index.js?"); | |
| 4021 | - | |
| 4022 | -/***/ }), | |
| 4023 | - | |
| 4024 | -/***/ "./src/utils/obj.js": | |
| 4025 | -/*!**************************!*\ | |
| 4026 | - !*** ./src/utils/obj.js ***! | |
| 4027 | - \**************************/ | |
| 4028 | -/*! exports provided: each, reduce, assign, isObject, isPlain */ | |
| 4029 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 4030 | - | |
| 4031 | -"use strict"; | |
| 4032 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"each\", function() { return each; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reduce\", function() { return reduce; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assign\", function() { return assign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return isObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPlain\", function() { return isPlain; });\n/**\n * @file obj.js\n * @module obj\n */\n\n/**\n * @callback obj:EachCallback\n *\n * @param {Mixed} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n */\n\n/**\n * @callback obj:ReduceCallback\n *\n * @param {Mixed} accum\n * The value that is accumulating over the reduce loop.\n *\n * @param {Mixed} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n *\n * @return {Mixed}\n * The new accumulated value.\n */\nvar toString = Object.prototype.toString;\n/**\n * Get the keys of an Object\n *\n * @param {Object}\n * The Object to get the keys from\n *\n * @return {string[]}\n * An array of the keys from the object. Returns an empty array if the\n * object passed in was invalid or had no keys.\n *\n * @private\n */\n\nvar keys = function keys(object) {\n return isObject(object) ? Object.keys(object) : [];\n};\n/**\n * Array-like iteration for objects.\n *\n * @param {Object} object\n * The object to iterate over\n *\n * @param {obj:EachCallback} fn\n * The callback function which is called for each key in the object.\n */\n\n\nfunction each(object, fn) {\n keys(object).forEach(function (key) {\n return fn(object[key], key);\n });\n}\n/**\n * Array-like reduce for objects.\n *\n * @param {Object} object\n * The Object that you want to reduce.\n *\n * @param {Function} fn\n * A callback function which is called for each key in the object. It\n * receives the accumulated value and the per-iteration value and key\n * as arguments.\n *\n * @param {Mixed} [initial = 0]\n * Starting value\n *\n * @return {Mixed}\n * The final accumulated value.\n */\n\nfunction reduce(object, fn, initial) {\n if (initial === void 0) {\n initial = 0;\n }\n\n return keys(object).reduce(function (accum, key) {\n return fn(accum, object[key], key);\n }, initial);\n}\n/**\n * Object.assign-style object shallow merge/extend.\n *\n * @param {Object} target\n * @param {Object} ...sources\n * @return {Object}\n */\n\nfunction assign(target) {\n for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n sources[_key - 1] = arguments[_key];\n }\n\n if (Object.assign) {\n return Object.assign.apply(Object, [target].concat(sources));\n }\n\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n each(source, function (value, key) {\n target[key] = value;\n });\n });\n return target;\n}\n/**\n * Returns whether a value is an object of any kind - including DOM nodes,\n * arrays, regular expressions, etc. Not functions, though.\n *\n * This avoids the gotcha where using `typeof` on a `null` value\n * results in `'object'`.\n *\n * @param {Object} value\n * @return {boolean}\n */\n\nfunction isObject(value) {\n return !!value && typeof value === 'object';\n}\n/**\n * Returns whether an object appears to be a \"plain\" object - that is, a\n * direct instance of `Object`.\n *\n * @param {Object} value\n * @return {boolean}\n */\n\nfunction isPlain(value) {\n return isObject(value) && toString.call(value) === '[object Object]' && value.constructor === Object;\n}\n\n//# sourceURL=webpack://WebMediaPlayer/./src/utils/obj.js?"); | |
| 4033 | - | |
| 4034 | -/***/ }), | |
| 4035 | - | |
| 4036 | -/***/ "./src/webrtc/index.js": | |
| 4037 | -/*!*****************************!*\ | |
| 4038 | - !*** ./src/webrtc/index.js ***! | |
| 4039 | - \*****************************/ | |
| 4040 | -/*! exports provided: default */ | |
| 4041 | -/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
| 4042 | - | |
| 4043 | -"use strict"; | |
| 4044 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebRtcPlayer; });\n/* harmony import */ var _FlvPlayer_flv_js_player_player_events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../FlvPlayer/flv.js/player/player-events */ \"./src/FlvPlayer/flv.js/player/player-events.js\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! events */ \"./node_modules/node-libs-browser/node_modules/events/events.js\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common/common */ \"./src/common/common.js\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n\n\n\n\nvar WebRtcPlayer = /*#__PURE__*/function () {\n function WebRtcPlayer(url, options) {\n this.TAG = 'WebRtcPlayer';\n this._type = 'WebRtcPlayer';\n this._emitter = new events__WEBPACK_IMPORTED_MODULE_1___default.a(); // this.options = options || {};\n\n this.pc = null;\n this._mediaElement = null;\n this.url = url;\n this.autoplay = !!options.autoplay || false;\n this.typeCallback = options.typeCallback;\n this.statusCallback = options.statusCallback;\n\n if (!url.match(/^webrtc?:\\/\\/||^webrtcs?:\\/\\//)) {\n throw 'JSWebrtc just work with webrtc';\n }\n\n this.timer = null;\n this.sendChannel = null;\n this._mediaInfo = null;\n this._statisticsInfo = null;\n this.isPlaying = false;\n this._isLoad = false;\n this._isDestroy = false;\n this.e = {\n onvLoadedMetadata: this._onvLoadedMetadata.bind(this),\n onvSeeking: this._onvSeeking.bind(this),\n onvCanPlay: this._onvCanPlay.bind(this),\n onvPlay: this._onvPlay.bind(this),\n onvStalled: this._onvStalled.bind(this),\n onvProgress: this._onvProgress.bind(this),\n onvWaiting: this._onvWaiting.bind(this),\n onvPlaying: this._onvPlaying.bind(this)\n };\n this.attachMediaElement(options.mediaElement, url);\n }\n\n var _proto = WebRtcPlayer.prototype;\n\n _proto.on = function on(event, listener) {\n var _this = this;\n\n if (event === _FlvPlayer_flv_js_player_player_events__WEBPACK_IMPORTED_MODULE_0__[\"default\"].MEDIA_INFO) {\n if (this._mediaInfo != null) {\n Promise.resolve().then(function () {\n _this._emitter.emit(_FlvPlayer_flv_js_player_player_events__WEBPACK_IMPORTED_MODULE_0__[\"default\"].MEDIA_INFO, _this.mediaInfo);\n });\n }\n } else if (event === _FlvPlayer_flv_js_player_player_events__WEBPACK_IMPORTED_MODULE_0__[\"default\"].STATISTICS_INFO) {\n if (this._statisticsInfo != null) {\n Promise.resolve().then(function () {\n _this._emitter.emit(_FlvPlayer_flv_js_player_player_events__WEBPACK_IMPORTED_MODULE_0__[\"default\"].STATISTICS_INFO, _this.statisticsInfo);\n });\n }\n }\n\n this._emitter.addListener(event, listener);\n };\n\n _proto.off = function off(event, listener) {\n this._emitter.removeListener(event, listener);\n };\n\n _proto.attachMediaElement = function attachMediaElement(mediaElement, url) {\n this._mediaElement = mediaElement;\n this._mediaElement = mediaElement;\n mediaElement.addEventListener('loadedmetadata', this.e.onvLoadedMetadata);\n mediaElement.addEventListener('seeking', this.e.onvSeeking);\n mediaElement.addEventListener('canplay', this.e.onvCanPlay);\n mediaElement.addEventListener('play', this.e.onvPlay);\n mediaElement.addEventListener('stalled', this.e.onvStalled);\n mediaElement.addEventListener('progress', this.e.onvProgress);\n mediaElement.addEventListener('waiting', this.e.onvWaiting);\n mediaElement.addEventListener('playing', this.e.onvPlaying);\n this.typeCallback(!false);\n this.load(url);\n };\n\n _proto.load = function load(url) {\n var _this2 = this;\n\n this.statusCallback(0);\n\n if (this.pc) {\n this.pc.close();\n }\n\n this.pc = new RTCPeerConnection(null);\n\n this.pc.ontrack = function (event) {\n _this2._mediaElement['srcObject'] = event.streams[0];\n };\n\n this.pc.addTransceiver('audio', {\n direction: 'recvonly'\n });\n this.pc.addTransceiver('video', {\n direction: 'recvonly'\n });\n this.sendChannel = this.pc.createDataChannel('keepalive');\n this.sendChannel.onclose = this.onChannelClose.bind(this);\n this.sendChannel.onopen = this.onChannelOpen.bind(this);\n this.sendChannel.onmessage = this.onChannelMessage.bind(this);\n this.pc.createOffer({\n offerToReceiveVideo: !0,\n offerToReceiveAudio: !0\n }).then(function (offer) {\n return _this2.pc.setLocalDescription(offer).then(function () {\n return offer;\n });\n }).then(function (offer) {\n return new Promise(function (resolve, reject) {\n _this2.HttpPost(url, window.btoa(offer.sdp)).then(function (res) {\n resolve(res);\n }, function (rej) {\n reject(rej);\n });\n });\n }).then(function (answerSdp) {\n return _this2.pc.setRemoteDescription(new RTCSessionDescription({\n type: 'answer',\n sdp: window.atob(answerSdp)\n }));\n }).then(function () {\n _this2._isLoad = true;\n }).catch(function (reason) {\n throw reason;\n });\n };\n\n _proto.onChannelClose = function onChannelClose() {\n var _this3 = this;\n\n // console.log('onclose');\n clearInterval(this.timer);\n\n if (!this._isDestroy) {\n _common_common__WEBPACK_IMPORTED_MODULE_2__[\"sleep\"](3000).then(function () {\n // console.log('Reconnecting...');\n _this3.load(_this3.url);\n });\n }\n };\n\n _proto.onChannelOpen = function onChannelOpen() {\n var _this4 = this;\n\n // console.log('onopen');\n this.timer = setInterval(function () {\n if (_this4.sendChannel) {\n _this4.sendChannel.send('ping');\n }\n }, 3000);\n };\n\n _proto.onChannelMessage = function onChannelMessage() {// console.log('onmessage');\n };\n\n _proto.HttpPost = function HttpPost(url, data) {\n return new Promise(function (resolve, reject) {\n var xhr = new XMLHttpRequest();\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4 && xhr.status >= 200 && xhr.status < 300) {\n var respone = xhr.responseText;\n xhr.onreadystatechange = new Function();\n xhr = null;\n resolve(respone);\n }\n };\n\n xhr.open('POST', url.replace('webrtc', 'http'), true); // note: In Internet Explorer, the timeout property may be set only after calling the open()\n // method and before calling the send() method.\n // xhr.timeout = 5000;// 5 seconds for timeout\n // xhr.responseType = \"text\";\n // xhr.setRequestHeader(\"Content-Type\", \"text/plain; charset=utf-8\");\n\n xhr.send(data);\n });\n };\n\n _proto._onvLoadedMetadata = function _onvLoadedMetadata() {};\n\n _proto._onvSeeking = function _onvSeeking() {};\n\n _proto._onvCanPlay = function _onvCanPlay() {\n if (this.autoplay) {\n this._mediaElement.play();\n }\n };\n\n _proto._onvPlay = function _onvPlay() {\n this.isPlaying = true;\n this.statusCallback(100);\n };\n\n _proto._onvStalled = function _onvStalled() {};\n\n _proto._onvProgress = function _onvProgress() {};\n\n _proto._onvWaiting = function _onvWaiting() {};\n\n _proto._onvPlaying = function _onvPlaying() {};\n\n _proto.unload = function unload() {};\n\n _proto.play = function play() {\n if (!this.isPlaying) {\n this._mediaElement.play();\n\n this.isPlaying = true;\n }\n };\n\n _proto.pause = function pause() {\n if (this.isPlaying) {\n this._mediaElement.pause();\n\n this.isPlaying = false;\n }\n };\n\n _proto.resume = function resume() {};\n\n _proto.openAudio = function openAudio() {};\n\n _proto.closeAudio = function closeAudio() {};\n\n _proto.seek = function seek() {};\n\n _proto.stop = function stop() {\n this.destroy();\n };\n\n _proto.destroy = function destroy() {\n this._isDestroy = true;\n\n if (this.pc) {\n this.pc.close();\n this.pc = null;\n }\n\n if (this._mediaElement) {\n // this._mediaElement.srcObject = '';\n this._mediaElement = null;\n }\n\n if (this.sendChannel) {\n this.sendChannel = null;\n }\n\n this.autoplay = null;\n this.typeCallback = null;\n this.statusCallback = null;\n this.isPlaying = false;\n this._isLoad = false;\n clearInterval(this.timer);\n };\n\n _createClass(WebRtcPlayer, [{\n key: \"isLoad\",\n get: function get() {\n return this._isLoad;\n }\n }]);\n\n return WebRtcPlayer;\n}();\n\n\n\n//# sourceURL=webpack://WebMediaPlayer/./src/webrtc/index.js?"); | |
| 4045 | - | |
| 4046 | -/***/ }), | |
| 4047 | - | |
| 4048 | -/***/ 0: | |
| 4049 | -/*!**********************!*\ | |
| 4050 | - !*** util (ignored) ***! | |
| 4051 | - \**********************/ | |
| 4052 | -/*! no static exports found */ | |
| 4053 | -/***/ (function(module, exports) { | |
| 4054 | - | |
| 4055 | -eval("/* (ignored) */\n\n//# sourceURL=webpack://WebMediaPlayer/util_(ignored)?"); | |
| 4056 | - | |
| 4057 | -/***/ }), | |
| 4058 | - | |
| 4059 | -/***/ 1: | |
| 4060 | -/*!**********************!*\ | |
| 4061 | - !*** util (ignored) ***! | |
| 4062 | - \**********************/ | |
| 4063 | -/*! no static exports found */ | |
| 4064 | -/***/ (function(module, exports) { | |
| 4065 | - | |
| 4066 | -eval("/* (ignored) */\n\n//# sourceURL=webpack://WebMediaPlayer/util_(ignored)?"); | |
| 4067 | - | |
| 4068 | -/***/ }), | |
| 4069 | - | |
| 4070 | -/***/ 10: | |
| 4071 | -/*!************************!*\ | |
| 4072 | - !*** buffer (ignored) ***! | |
| 4073 | - \************************/ | |
| 4074 | -/*! no static exports found */ | |
| 4075 | -/***/ (function(module, exports) { | |
| 4076 | - | |
| 4077 | -eval("/* (ignored) */\n\n//# sourceURL=webpack://WebMediaPlayer/buffer_(ignored)?"); | |
| 4078 | - | |
| 4079 | -/***/ }), | |
| 4080 | - | |
| 4081 | -/***/ 11: | |
| 4082 | -/*!************************!*\ | |
| 4083 | - !*** buffer (ignored) ***! | |
| 4084 | - \************************/ | |
| 4085 | -/*! no static exports found */ | |
| 4086 | -/***/ (function(module, exports) { | |
| 4087 | - | |
| 4088 | -eval("/* (ignored) */\n\n//# sourceURL=webpack://WebMediaPlayer/buffer_(ignored)?"); | |
| 4089 | - | |
| 4090 | -/***/ }), | |
| 4091 | - | |
| 4092 | -/***/ 12: | |
| 4093 | -/*!************************!*\ | |
| 4094 | - !*** buffer (ignored) ***! | |
| 4095 | - \************************/ | |
| 4096 | -/*! no static exports found */ | |
| 4097 | -/***/ (function(module, exports) { | |
| 4098 | - | |
| 4099 | -eval("/* (ignored) */\n\n//# sourceURL=webpack://WebMediaPlayer/buffer_(ignored)?"); | |
| 4100 | - | |
| 4101 | -/***/ }), | |
| 4102 | - | |
| 4103 | -/***/ 13: | |
| 4104 | -/*!************************!*\ | |
| 4105 | - !*** buffer (ignored) ***! | |
| 4106 | - \************************/ | |
| 4107 | -/*! no static exports found */ | |
| 4108 | -/***/ (function(module, exports) { | |
| 4109 | - | |
| 4110 | -eval("/* (ignored) */\n\n//# sourceURL=webpack://WebMediaPlayer/buffer_(ignored)?"); | |
| 4111 | - | |
| 4112 | -/***/ }), | |
| 4113 | - | |
| 4114 | -/***/ 14: | |
| 4115 | -/*!************************!*\ | |
| 4116 | - !*** crypto (ignored) ***! | |
| 4117 | - \************************/ | |
| 4118 | -/*! no static exports found */ | |
| 4119 | -/***/ (function(module, exports) { | |
| 4120 | - | |
| 4121 | -eval("/* (ignored) */\n\n//# sourceURL=webpack://WebMediaPlayer/crypto_(ignored)?"); | |
| 4122 | - | |
| 4123 | -/***/ }), | |
| 4124 | - | |
| 4125 | -/***/ 2: | |
| 4126 | -/*!**********************!*\ | |
| 4127 | - !*** util (ignored) ***! | |
| 4128 | - \**********************/ | |
| 4129 | -/*! no static exports found */ | |
| 4130 | -/***/ (function(module, exports) { | |
| 4131 | - | |
| 4132 | -eval("/* (ignored) */\n\n//# sourceURL=webpack://WebMediaPlayer/util_(ignored)?"); | |
| 4133 | - | |
| 4134 | -/***/ }), | |
| 4135 | - | |
| 4136 | -/***/ 3: | |
| 4137 | -/*!**********************!*\ | |
| 4138 | - !*** util (ignored) ***! | |
| 4139 | - \**********************/ | |
| 4140 | -/*! no static exports found */ | |
| 4141 | -/***/ (function(module, exports) { | |
| 4142 | - | |
| 4143 | -eval("/* (ignored) */\n\n//# sourceURL=webpack://WebMediaPlayer/util_(ignored)?"); | |
| 4144 | - | |
| 4145 | -/***/ }), | |
| 4146 | - | |
| 4147 | -/***/ 4: | |
| 4148 | -/*!************************!*\ | |
| 4149 | - !*** buffer (ignored) ***! | |
| 4150 | - \************************/ | |
| 4151 | -/*! no static exports found */ | |
| 4152 | -/***/ (function(module, exports) { | |
| 4153 | - | |
| 4154 | -eval("/* (ignored) */\n\n//# sourceURL=webpack://WebMediaPlayer/buffer_(ignored)?"); | |
| 4155 | - | |
| 4156 | -/***/ }), | |
| 4157 | - | |
| 4158 | -/***/ 5: | |
| 4159 | -/*!************************!*\ | |
| 4160 | - !*** buffer (ignored) ***! | |
| 4161 | - \************************/ | |
| 4162 | -/*! no static exports found */ | |
| 4163 | -/***/ (function(module, exports) { | |
| 4164 | - | |
| 4165 | -eval("/* (ignored) */\n\n//# sourceURL=webpack://WebMediaPlayer/buffer_(ignored)?"); | |
| 4166 | - | |
| 4167 | -/***/ }), | |
| 4168 | - | |
| 4169 | -/***/ 6: | |
| 4170 | -/*!************************!*\ | |
| 4171 | - !*** crypto (ignored) ***! | |
| 4172 | - \************************/ | |
| 4173 | -/*! no static exports found */ | |
| 4174 | -/***/ (function(module, exports) { | |
| 4175 | - | |
| 4176 | -eval("/* (ignored) */\n\n//# sourceURL=webpack://WebMediaPlayer/crypto_(ignored)?"); | |
| 4177 | - | |
| 4178 | -/***/ }), | |
| 4179 | - | |
| 4180 | -/***/ 7: | |
| 4181 | -/*!**********************!*\ | |
| 4182 | - !*** util (ignored) ***! | |
| 4183 | - \**********************/ | |
| 4184 | -/*! no static exports found */ | |
| 4185 | -/***/ (function(module, exports) { | |
| 4186 | - | |
| 4187 | -eval("/* (ignored) */\n\n//# sourceURL=webpack://WebMediaPlayer/util_(ignored)?"); | |
| 4188 | - | |
| 4189 | -/***/ }), | |
| 4190 | - | |
| 4191 | -/***/ 8: | |
| 4192 | -/*!**********************!*\ | |
| 4193 | - !*** util (ignored) ***! | |
| 4194 | - \**********************/ | |
| 4195 | -/*! no static exports found */ | |
| 4196 | -/***/ (function(module, exports) { | |
| 4197 | - | |
| 4198 | -eval("/* (ignored) */\n\n//# sourceURL=webpack://WebMediaPlayer/util_(ignored)?"); | |
| 4199 | - | |
| 4200 | -/***/ }), | |
| 4201 | - | |
| 4202 | -/***/ 9: | |
| 4203 | -/*!************************!*\ | |
| 4204 | - !*** buffer (ignored) ***! | |
| 4205 | - \************************/ | |
| 4206 | -/*! no static exports found */ | |
| 4207 | -/***/ (function(module, exports) { | |
| 4208 | - | |
| 4209 | -eval("/* (ignored) */\n\n//# sourceURL=webpack://WebMediaPlayer/buffer_(ignored)?"); | |
| 4210 | - | |
| 4211 | -/***/ }) | |
| 4212 | - | |
| 4213 | -/******/ })["default"]; | |
| 4214 | -}); |
src/main/resources/static/pages/video/video.css deleted
100644 → 0
| 1 | -.skeyewebplayerDivContent_one{ | |
| 2 | - width: 99%; | |
| 3 | - height: 99%; | |
| 4 | - border: 1px solid #000000; | |
| 5 | - overflow:hidden; | |
| 6 | -} | |
| 7 | - | |
| 8 | -.skeyewebplayerDivContent_Four{ | |
| 9 | - width: 49%; | |
| 10 | - height: 49%; | |
| 11 | - float: left; | |
| 12 | - border: 1px solid #000000; | |
| 13 | - overflow:hidden; | |
| 14 | -} | |
| 15 | -.skeyewebplayerDivContent_nine{ | |
| 16 | - width: 33%; | |
| 17 | - height: 33%; | |
| 18 | - float: left; | |
| 19 | - border: 1px solid #000000; | |
| 20 | - overflow:hidden; | |
| 21 | -} | |
| 22 | -.skeyewebplayerDivChannel{ | |
| 23 | - width: 99%; | |
| 24 | - overflow:auto; | |
| 25 | - border: 1px solid #000000; | |
| 26 | -} | |
| 27 | -.skeyewebplayerDiv_title{ | |
| 28 | - width: 100%; | |
| 29 | - height: 30px; | |
| 30 | - background-color: #F8F8F8; | |
| 31 | -} | |
| 32 | -.skeyewebplayerDivContent_play_selected{ | |
| 33 | - border: 1px solid #FFD700; | |
| 34 | - overflow:hidden; | |
| 35 | -} | |
| 36 | 0 | \ No newline at end of file |
src/main/resources/static/pages/video/video.html deleted
100644 → 0
| 1 | -<link href="video.css" rel="stylesheet" type="text/css" /> | |
| 2 | - | |
| 3 | -<div class="page-head"> | |
| 4 | - <div class="page-title"> | |
| 5 | - <h1>$$$$$${txt-4509}</h1> | |
| 6 | - </div> | |
| 7 | -</div> | |
| 8 | - | |
| 9 | -<ul class="page-breadcrumb breadcrumb"> | |
| 10 | - <li><a href="/pages/home.html" data-pjax>$$$$$${txt-3807}</a> <i class="fa fa-circle"></i></li> | |
| 11 | - <li><span class="active">$$$$$${txt-4509}</span> <i class="fa fa-circle"></i></li> | |
| 12 | -</ul> | |
| 13 | -<div id="deviceVedioDiv" style="display: none"> | |
| 14 | - <div>$$$$$${txt-3520}<input type="input" id="dateTimeStr" /></div> | |
| 15 | -</div> | |
| 16 | - | |
| 17 | -<div class="row"> | |
| 18 | - <div class="col-md-4" style="padding-right: 0px;width: 20%"> | |
| 19 | - <div class="portlet light bordered" style="height: 715px;overflow:scroll"> | |
| 20 | - <div class="portlet-body"> | |
| 21 | - <div id="video_tree"></div> | |
| 22 | - | |
| 23 | - </div> | |
| 24 | - </div> | |
| 25 | - </div> | |
| 26 | - | |
| 27 | - <div class="col-md-6" style="padding-left: 0px;width: 76%"> | |
| 28 | - <div class="portlet light bordered" > | |
| 29 | - <div class="portlet-body"> | |
| 30 | - <div class="layui-inline"> | |
| 31 | - <input type="text" placeholder="$$$$$${txt-1265}" autocomplete="off" class="layui-input" id="carCode_like" style="display:inline-block;width: 200px"/> | |
| 32 | - <input type="text" placeholder="$$$$$${txt-1773}" autocomplete="off" class="layui-input" id="insideCode_like" style="display:inline-block;width: 200px"/> | |
| 33 | - <input type="text" placeholder="$$$$$${txt-1774}" autocomplete="off" class="layui-input" id="equipmentCode_like" style="display:inline-block;width: 200px"/> | |
| 34 | - <input type="text" placeholder="$$$$$${txt-3704}" autocomplete="off" class="layui-input" id="carPlate_like" style="display:inline-block;width: 200px"/> | |
| 35 | - <button type="button" class="layui-btn layui-btn-primary" lay-on="get-vercode" onclick="queryTreeTable()">$$$$$${txt-3841}</button> | |
| 36 | - </div> | |
| 37 | - | |
| 38 | - <div class="layui-tab layui-tab-card"> | |
| 39 | - <ul class="layui-tab-title"> | |
| 40 | - <li class="layui-this">直播</li> | |
| 41 | - <li>历史数据</li> | |
| 42 | - </ul> | |
| 43 | - <div class="layui-tab-content"> | |
| 44 | - <div class="layui-tab-item layui-show" id="live_broadcastDiv" style="height: 572px;100%"> | |
| 45 | - <div>$$$$$${txt-4520}: | |
| 46 | - <a href="#" class="layui-btn layui-btn-primary layui-btn-xs" onclick="skeyewebplayerOne()">□</a> | |
| 47 | - <a href="#" class="layui-btn layui-btn-primary layui-btn-xs" onclick="skeyewebplayerFour()">▤</a> | |
| 48 | - <a href="#" class="layui-btn layui-btn-primary layui-btn-xs" onclick="skeyewebplayerNine()">▦</a> | |
| 49 | - </div> | |
| 50 | - <div id="skeyewebplayerDivContent" > | |
| 51 | - | |
| 52 | - </div> | |
| 53 | - </div> | |
| 54 | - <div class="layui-tab-item" style="height: 572px;width: 100%"></div> | |
| 55 | - </div> | |
| 56 | - </div> | |
| 57 | - </div> | |
| 58 | - </div> | |
| 59 | - </div> | |
| 60 | - | |
| 61 | - <div id="deviceVideoDiv" style="display: none"> | |
| 62 | - | |
| 63 | - <div class="layui-form-item" style="width: 37%; float: left"> | |
| 64 | - <div class="layui-inline"> | |
| 65 | - <label class="layui-form-label">$$$$$${txt-4004}</label> | |
| 66 | - <div class="layui-input-inline layui-input-wrap"> | |
| 67 | - <input type="text" placeholder="$$$$$${txt-4518}" autocomplete="off" class="layui-input" id="deviceVideoDate"/> | |
| 68 | - </div> | |
| 69 | - <div class="layui-form-mid" style="padding: 0!important;"> | |
| 70 | - <button type="button" class="layui-btn layui-btn-primary" lay-on="get-vercode" id="queryDeviecChannel">$$$$$${txt-3841}</button> | |
| 71 | - </div> | |
| 72 | - </div> | |
| 73 | - <div class="layui-table-fixed-l" > | |
| 74 | - <div class="layui-table-body" style="height: 500px;overflow:auto;"> | |
| 75 | - <table cellspacing="0" cellpadding="0" border="0" class="layui-table"><tbody id="deviceVideoTbody"></tbody></table> | |
| 76 | - </div> | |
| 77 | - </div> | |
| 78 | - </div> | |
| 79 | - <div id="videoPlay" style=" width: 62%;float: right"> | |
| 80 | - <div style="height:550px;width:99%;background-color: #0d1318"></div> | |
| 81 | - </div> | |
| 82 | - </div> | |
| 83 | - | |
| 84 | - <div id="skeyewebplayerDiv" style="display: none"> | |
| 85 | - <div style="float: left;width: 10%;"> | |
| 86 | - <div>$$$$$${txt-4519}</div> | |
| 87 | - <div id="skeyewebplayerDivChannel" class="skeyewebplayerDivChannel"></div> | |
| 88 | - </div> | |
| 89 | - | |
| 90 | - <div style="width: 89%;border: 1px solid #0aae0a" id="skeyewebplayerDiv_main"> | |
| 91 | - <div>$$$$$${txt-4520}: | |
| 92 | - <a href="#" class="layui-btn layui-btn-primary layui-btn-xs" onclick="skeyewebplayerOne()">□</a> | |
| 93 | - <a href="#" class="layui-btn layui-btn-primary layui-btn-xs" onclick="skeyewebplayerFour()">▤</a> | |
| 94 | - <a href="#" class="layui-btn layui-btn-primary layui-btn-xs" onclick="skeyewebplayerNine()">▦</a> | |
| 95 | - </div> | |
| 96 | - <div id="skeyewebplayerDivContent" > | |
| 97 | - | |
| 98 | - </div> | |
| 99 | - </div> | |
| 100 | - </div> | |
| 101 | -</div> | |
| 102 | - | |
| 103 | -<script type="text/html" id="treeTable-tools"> | |
| 104 | - <div class="layui-btn-container"> | |
| 105 | - <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="SkeyeWebPlayerEvent">$$$$$${txt-4510}</a> | |
| 106 | - </div> | |
| 107 | -</script> | |
| 108 | - | |
| 109 | - | |
| 110 | -<script src="static/SkeyeWebPlayer/SkeyeWebPlayer.js"></script> | |
| 111 | -<script src="video.js"></script> |
src/main/resources/static/pages/video/video.js deleted
100644 → 0
| 1 | -var loading = loadingFunction(); | |
| 2 | -var player = null; | |
| 3 | -let skeyWebPlayer_myVar = null; | |
| 4 | -let option = null; | |
| 5 | -let treeURL = null; | |
| 6 | -$(document).ready(function () { | |
| 7 | - $.getJSON("/video/tree", null, function (rep) { | |
| 8 | - if (rep.status == "SUCCESS") { | |
| 9 | - initTree(rep.data); | |
| 10 | - } | |
| 11 | - initTable(); | |
| 12 | - }); | |
| 13 | - | |
| 14 | -}); | |
| 15 | - | |
| 16 | -function initTree(data) { | |
| 17 | - layui.use(function () { | |
| 18 | - var tree = layui.tree; | |
| 19 | - var opt = initTreeOpt(data, tree); | |
| 20 | - // 渲染 | |
| 21 | - var treeObj = tree.render(opt); | |
| 22 | - closeLoading(); | |
| 23 | - }); | |
| 24 | -} | |
| 25 | - | |
| 26 | -function initTreeOpt(data, tree) { | |
| 27 | - | |
| 28 | - var opt = { | |
| 29 | - elem: '#video_tree', | |
| 30 | - id: "video_tree", | |
| 31 | - data: data, | |
| 32 | - onlyIconControl: true, // 是否仅允许节点左侧图标控制展开收缩 | |
| 33 | - showLine: true, // 是否开启连接线 | |
| 34 | - click: function (node) { | |
| 35 | - loading = loadingFunction(); | |
| 36 | - if (node.data.type < 400) { | |
| 37 | - lasyCarNo(node, tree, data); | |
| 38 | - node.initChild = true; | |
| 39 | - } else { | |
| 40 | - playWvpVideo1(node); | |
| 41 | - closeLoading(); | |
| 42 | - } | |
| 43 | - | |
| 44 | - }, dblClick: function (node) { | |
| 45 | - // lasyCarNo(node,tree,data); | |
| 46 | - } | |
| 47 | - }; | |
| 48 | - return opt; | |
| 49 | -} | |
| 50 | - | |
| 51 | -function lasyCarNo(node, tree, oldData) { | |
| 52 | - if (isEmpty(node.initChild) || false === node.initChild) { | |
| 53 | - if (node.data.type < 200) { | |
| 54 | - $.getJSON("/video/tree/carNo/" + node.data.code, function (data) { | |
| 55 | - if (oldData) { | |
| 56 | - $.each(oldData, function (index, d) { | |
| 57 | - layCarNoConcatArr(d, node, data); | |
| 58 | - initTable(node); | |
| 59 | - }); | |
| 60 | - closeLoading(); | |
| 61 | - tree.reload('video_tree', {data: oldData}); | |
| 62 | - | |
| 63 | - } | |
| 64 | - }); | |
| 65 | - } else if (node.data.type > 300) { | |
| 66 | - $.getJSON("/video/car/channel/tree/" + node.data.sourceId, function (data) { | |
| 67 | - $.each(oldData, function (index, d) { | |
| 68 | - layCarNoConcatArr(d, node, data.data, data); | |
| 69 | - initTable(node); | |
| 70 | - | |
| 71 | - }); | |
| 72 | - | |
| 73 | - tree.reload('video_tree', {data: oldData}); | |
| 74 | - closeLoading(); | |
| 75 | - }); | |
| 76 | - } else { | |
| 77 | - closeLoading(); | |
| 78 | - } | |
| 79 | - | |
| 80 | - } | |
| 81 | - | |
| 82 | -} | |
| 83 | - | |
| 84 | -function layCarNoChildren(oldData, node, data, result) { | |
| 85 | - if (oldData) { | |
| 86 | - $.each(oldData, function (index, d) { | |
| 87 | - layCarNoConcatArr(d, node, data, result); | |
| 88 | - }); | |
| 89 | - } | |
| 90 | -} | |
| 91 | - | |
| 92 | -function layCarNoConcatArr(d, node, data, result) { | |
| 93 | - if (d.id === node.data.id && d.type === node.data.type) { | |
| 94 | - if (isEmpty(d.children)) { | |
| 95 | - d.children = []; | |
| 96 | - } | |
| 97 | - d.spread = true; | |
| 98 | - if (result) { | |
| 99 | - $.each(data, function (index, d1) { | |
| 100 | - d1.wvpLiveBroadcast = result.wvpLiveBroadcast; | |
| 101 | - }) | |
| 102 | - } | |
| 103 | - | |
| 104 | - d.children = d.children.concat(data); | |
| 105 | - if (result) { | |
| 106 | - d.wvpLiveBroadcast = result.wvpLiveBroadcast; | |
| 107 | - } | |
| 108 | - } else { | |
| 109 | - layCarNoChildren(d.children, node, data, result); | |
| 110 | - } | |
| 111 | -} | |
| 112 | - | |
| 113 | - | |
| 114 | -function initTable(treeNode) { | |
| 115 | - var queryURL = "/video/tree/table?1=1"; | |
| 116 | - if (treeNode) { | |
| 117 | - if (treeNode.data.type === 1) { | |
| 118 | - queryURL = queryURL + "&businessCode_eq=" + treeNode.data.code; | |
| 119 | - } | |
| 120 | - | |
| 121 | - if (treeNode.data.type === 2) { | |
| 122 | - queryURL = queryURL + "&brancheCompanyCode_eq=" + treeNode.data.code; | |
| 123 | - } | |
| 124 | - } | |
| 125 | - treeURL = queryURL; | |
| 126 | - option = initTreeTableOption(queryURL); | |
| 127 | - layui.use(function () { | |
| 128 | - var treeTable = layui.treeTable; | |
| 129 | - // 渲染 | |
| 130 | - treeTable.render(option); | |
| 131 | - treeTable.on('rowDouble(treeTable)', function (obj) { | |
| 132 | - var targetDataIndex = obj.dataIndex + "-0"; | |
| 133 | - $("div[lay-table-id='treeTable']").find("tr").each(function (index, node) { | |
| 134 | - var sourceDataIndex = $(node).attr("data-index"); | |
| 135 | - if (sourceDataIndex === targetDataIndex) { | |
| 136 | - queryChannelByCarNo(node, obj); | |
| 137 | - return; | |
| 138 | - } | |
| 139 | - }); | |
| 140 | - }); | |
| 141 | - | |
| 142 | - treeTable.on('tool(treeTable)', function (obj) { | |
| 143 | - switch (obj.event) { | |
| 144 | - case 'SkeyeWebPlayerEvent': | |
| 145 | - skeyewebplayerOpen(obj.data.carCode); | |
| 146 | - | |
| 147 | - break; | |
| 148 | - } | |
| 149 | - }); | |
| 150 | - }); | |
| 151 | -} | |
| 152 | - | |
| 153 | -function queryTreeTable() { | |
| 154 | - let url = treeURL; | |
| 155 | - if (!isEmpty($("#carCode_like").val())) { | |
| 156 | - url += "&carCode_like=" + $("#carCode_like").val(); | |
| 157 | - } | |
| 158 | - | |
| 159 | - if (!isEmpty($("#insideCode_like").val())) { | |
| 160 | - url += "&insideCode_like=" + $("#insideCode_like").val(); | |
| 161 | - } | |
| 162 | - | |
| 163 | - if (!isEmpty($("#equipmentCode_like").val())) { | |
| 164 | - url += "&equipmentCode_like=" + $("#equipmentCode_like").val(); | |
| 165 | - } | |
| 166 | - | |
| 167 | - if (!isEmpty($("#carPlate_like").val())) { | |
| 168 | - url += "&carPlate_like=" + $("#carPlate_like").val(); | |
| 169 | - } | |
| 170 | - option.url = url; | |
| 171 | - var treeTable = layui.treeTable; | |
| 172 | - treeTable.render(option); | |
| 173 | -} | |
| 174 | - | |
| 175 | -function isEmpty(val) { | |
| 176 | - return null == val || undefined == val || "" == val; | |
| 177 | -} | |
| 178 | - | |
| 179 | -function initTreeTableOption(queryURL) { | |
| 180 | - var option = { | |
| 181 | - elem: '#treeTable', | |
| 182 | - url: queryURL, | |
| 183 | - loading: true, | |
| 184 | - treeColIndex: 1, | |
| 185 | - even: true, | |
| 186 | - treeSpid: 0, | |
| 187 | - limit: 5, | |
| 188 | - limits: [5, 10, 20, 50], | |
| 189 | - maxHeight: '701px', | |
| 190 | - cols: [[ | |
| 191 | - {field: 'name', title: i18n('txt-2479'), width: 140}, | |
| 192 | - {field: 'insideCode', title: i18n('txt-2597'), width: 120}, | |
| 193 | - {field: 'equipmentCode', title: i18n('txt-3094'), width: 160}, | |
| 194 | - {field: 'carPlate', title: i18n('txt-3704'), width: 160}, | |
| 195 | - {field: 'company', title: '所在公司', width: 160}, | |
| 196 | - {field: 'brancheCompany', title: i18n('txt-2188'), width: 160}, | |
| 197 | - { | |
| 198 | - field: 'sfdc', title: i18n('txt-4087'), width: 80, templet: function (obj) { | |
| 199 | - if (obj.sfdc == 'true' || obj.sfdc == true) { | |
| 200 | - return i18n('txt-4257') | |
| 201 | - } else if (obj.sfdc == 'false' || obj.sfdc == false) { | |
| 202 | - return i18n('txt-4260'); | |
| 203 | - } | |
| 204 | - return i18n('txt-4058'); | |
| 205 | - } | |
| 206 | - }, | |
| 207 | - { | |
| 208 | - field: 'scrapState', title: i18n('txt-3874'), width: 80, templet: function (obj) { | |
| 209 | - if (obj.scrapState == 'true' || obj.scrapState == true) { | |
| 210 | - return i18n('txt-4257') | |
| 211 | - } else if (obj.scrapState == 'false' || obj.scrapState == false) { | |
| 212 | - return i18n('txt-4260'); | |
| 213 | - } | |
| 214 | - return i18n('txt-4058'); | |
| 215 | - } | |
| 216 | - }, | |
| 217 | - {title: i18n('txt-3942'), width: 80, toolbar: '#treeTable-tools'} | |
| 218 | - ]], | |
| 219 | - page: true | |
| 220 | - }; | |
| 221 | - return option; | |
| 222 | -} | |
| 223 | - | |
| 224 | -function queryChannelByCarNo(treeNode, obj) { | |
| 225 | - loading = loadingFunction(); | |
| 226 | - var url = "/video/car/channel/" + obj.data.name; | |
| 227 | - $.getJSON(url, function (rep) { | |
| 228 | - if (rep.status === "SUCCESS") { | |
| 229 | - var html = "<td data-field=\"name\" colspan='8' data-key=\"1-" + obj.dataIndex + "-0\" class=\"\" >"; | |
| 230 | - html += "<table cellspacing=\"0\" cellpadding=\"0\" border=\"1\" class=\"layui-table\" style='padding-left: 15px;boder:1px solid #000;margin-bottom: 15px;'><thead><tr>"; | |
| 231 | - html += "<th data-field=\"name\" data-key=\"1-" + obj.dataIndex + "-0\" class=\"\" title=\"" + i18n('txt-4511') + "\"><div class=\"layui-table-cell \" style='width: 200px;'><span>" + i18n('txt-4511') + "</span></div></th>"; | |
| 232 | - html += "<th data-field=\"name\" data-key=\"2-" + obj.dataIndex + "-0\" class=\"\" title=\"" + i18n('txt-3094') + "\"><div class=\"layui-table-cell \" style='width: 200px;'><span>" + i18n('txt-3094') + "</span></div></th>"; | |
| 233 | - html += "<th data-field=\"name\" data-key=\"3-" + obj.dataIndex + "-0\" class=\"\" title=\"通道名称\"><div class=\"layui-table-cell\" style='width: 100px;'><span>通道名称</span></div></th>"; | |
| 234 | - html += "<th data-field=\"name\" data-key=\"4-" + obj.dataIndex + "-0\" class=\"\" title=\"" + i18n('txt-4513') + "\"><div class=\"layui-table-cell \"><span>" + i18n('txt-4513') + "</span></div></th>"; | |
| 235 | - html += "<th data-field=\"name\" data-key=\"5-" + obj.dataIndex + "-0\" class=\"\" title=\"" + i18n('txt-4514') + "\"><div class=\"layui-table-cell \" style='width: 100px;'><span>" + i18n('txt-4514') + "</span></div></th>"; | |
| 236 | - html += "<th data-field=\"name\" data-key=\"6-" + obj.dataIndex + "-0\" class=\"\" title=\"" + i18n('txt-4515') + "\"><div class=\"layui-table-cell \"><span>" + i18n('txt-4515') + "</span></div></th>"; | |
| 237 | - html += "<th data-field=\"name\" data-key=\"7-" + obj.dataIndex + "-0\" class=\"\" title=\"" + i18n('txt-3874') + "\"><div class=\"layui-table-cell \"><span>" + i18n('txt-3874') + "</span></div></th>"; | |
| 238 | - html += "<th data-field=\"name\" data-key=\"8-" + obj.dataIndex + "-0\" class=\"\" title=\"" + i18n('txt-3874') + "\"><div class=\"layui-table-cell \" style='width: 100px;'><span>" + i18n('txt-3874') + "</span></div></th>"; | |
| 239 | - html += "</tr>"; | |
| 240 | - if (rep.data) { | |
| 241 | - $.each(rep.data, function (index, node) { | |
| 242 | - html += "<tr><td>" + node.channelId + "</td><td>" + node.deviceId + "</td><td>" + node.name + "</td><td>" + getBigSnap(rep.channelImageURL, node.deviceId, node.channelId) + "</td><td>" + node.manufacture; | |
| 243 | - html += "</td><td>" + hasAudioText(node.hasAudio) + "</td><td>" + wvpStatusText(node.status) + "</td><td><button class=\"layui-btn layui-btn-primary layui-border\" onclick=\"playWvpVideo('"; | |
| 244 | - html += rep.wvpLiveBroadcast + "','" + node.deviceId + "','" + node.channelId + "')\">" + i18n('txt-3870') + "</button><button class=\"layui-btn layui-btn-primary layui-border\" onclick=\"deviceVedioPage('" + node.deviceId + "','" + node.channelId + "')\">" + i18n('txt-4516') + "</button></td></tr>"; | |
| 245 | - }); | |
| 246 | - } | |
| 247 | - | |
| 248 | - html += "</thead></table></td>"; | |
| 249 | - | |
| 250 | - $(treeNode).html(html); | |
| 251 | - | |
| 252 | - closeLoading(); | |
| 253 | - } | |
| 254 | - }) | |
| 255 | -} | |
| 256 | - | |
| 257 | -function hasAudioText(hasAudio) { | |
| 258 | - return "true" == hasAudio || true == hasAudio ? "开启" : i18n('txt-4015'); | |
| 259 | -} | |
| 260 | - | |
| 261 | -function wvpStatusText(status) { | |
| 262 | - return "true" == status || true == status ? "在线" : i18n('txt-4184'); | |
| 263 | -} | |
| 264 | - | |
| 265 | -function getBigSnap(imageURL, deviceId, channelId) { | |
| 266 | - return "<image src=" + imageURL + deviceId + "/" + channelId + " />" | |
| 267 | -} | |
| 268 | - | |
| 269 | -function playWvpVideo(playURL, deviceId, channelId) { | |
| 270 | - var idDiv = "video_" + (Date.now()); | |
| 271 | - var html = "'<div id='" + idDiv + "' style='padding-top: 0;'></div>'"; | |
| 272 | - playURL = playURL.replace("{device}", deviceId).replace("{channel}", channelId); | |
| 273 | - | |
| 274 | - | |
| 275 | - var index = layer.open({ | |
| 276 | - type: 2, | |
| 277 | - title: i18n('txt-4517'), | |
| 278 | - area: ['1000px', '650px'], | |
| 279 | - height: '800px', | |
| 280 | - content: playURL, | |
| 281 | - success: function (layero, index, that) { | |
| 282 | - } | |
| 283 | - }); | |
| 284 | - | |
| 285 | -} | |
| 286 | - | |
| 287 | -function playWvpVideo1(node) { | |
| 288 | - let url = node.data.wvpLiveBroadcast.replace("{device}", node.data.sourceId).replace("{channel}", node.data.id); | |
| 289 | - $("#live_broadcastDiv").html("<iframe src='"+url+"' style='width: 100%;height: 100%' frameborder='0' boder='0'/>"); | |
| 290 | -} | |
| 291 | - | |
| 292 | -function playVideo(url, ID, time) { | |
| 293 | - return new WebMediaPlayer(url, ID, function () { | |
| 294 | - }, { | |
| 295 | - autoplay: 1, | |
| 296 | - currentTime: time | |
| 297 | - }).play(); | |
| 298 | -} | |
| 299 | - | |
| 300 | - | |
| 301 | -function playVideo1(url, ID) { | |
| 302 | - let html = "<video id=\"video\" class=\"video-js vjs-default-skin vjs-fluid\" width=\"375\" height=\"200\" controls preload=\"none\" "; | |
| 303 | - html += " data-setup='{ \"html5\" : { \"nativeTextTracks\" : false } }'><source src=\"" + url + "\" type=\"video/mp4\" /> </video>"; | |
| 304 | - $("#" + ID).html(html); | |
| 305 | -} | |
| 306 | - | |
| 307 | -function playVideo2(url, jqeruyObj, style) { | |
| 308 | - | |
| 309 | - let html = " <video id=\"video\" controls=\"\" src=\"" + url + "\" style=\"width:100%; height:100%; object-fit: fill\" autoplay></video>"; | |
| 310 | - jqeruyObj.html(html); | |
| 311 | -} | |
| 312 | - | |
| 313 | -function loadingFunction() { | |
| 314 | - closeLoading(); | |
| 315 | - var loading = layer.load(0, { | |
| 316 | - shadeClose: false, | |
| 317 | - title: '加载中..', | |
| 318 | - shade: [0.5, '#000'] | |
| 319 | - }); | |
| 320 | - return loading; | |
| 321 | -} | |
| 322 | - | |
| 323 | -function closeLoading() { | |
| 324 | - if (loading) { | |
| 325 | - layer.close(loading); | |
| 326 | - loading = null; | |
| 327 | - } | |
| 328 | -} | |
| 329 | - | |
| 330 | -function deviceVedioPage(device, channel) { | |
| 331 | - var idDiv = "device_video_" + (Date.now()); | |
| 332 | - var html = "<div id='" + idDiv + "'></div>"; | |
| 333 | - | |
| 334 | - var index = layer.open({ | |
| 335 | - type: 1, | |
| 336 | - title: i18n('txt-4516'), | |
| 337 | - area: ['1300px', '650px'], | |
| 338 | - content: html, | |
| 339 | - success: function (layero, index, that) { | |
| 340 | - $("#" + idDiv).html($("#deviceVideoDiv").html()); | |
| 341 | - var $deviceVideoDiv = $("#" + idDiv); | |
| 342 | - $("#deviceVideoDate", $deviceVideoDiv).datetimepicker({ | |
| 343 | - format: 'YYYY-MM-DD', | |
| 344 | - locale: 'zh-cn' | |
| 345 | - }); | |
| 346 | - | |
| 347 | - $("#queryDeviecChannel", $deviceVideoDiv).click(function () { | |
| 348 | - deviceVidemoQueryHistory(device, channel, $deviceVideoDiv, idDiv); | |
| 349 | - }) | |
| 350 | - }, beforeEnd: function (layero, index, that) { | |
| 351 | - if (player) { | |
| 352 | - player = null; | |
| 353 | - } | |
| 354 | - } | |
| 355 | - }); | |
| 356 | -} | |
| 357 | - | |
| 358 | -function deviceVidemoQueryHistory(device, channel, $deviceVideoDiv, idDiv) { | |
| 359 | - var dateStr = $("#deviceVideoDate", $deviceVideoDiv).val(); | |
| 360 | - if (null === dateStr || undefined === dateStr || "" === dateStr) { | |
| 361 | - layer.alert(i18n('txt-4518')); | |
| 362 | - return; | |
| 363 | - } | |
| 364 | - loading = loadingFunction(); | |
| 365 | - var url = "/video/car/channel/history/" + device + "/" + channel + "/" + dateStr; | |
| 366 | - $.getJSON(url, function (resp) { | |
| 367 | - if (resp.status === "SUCCESS") { | |
| 368 | - var html = "<tr>"; | |
| 369 | - $.each(resp.data, function (index, node) { | |
| 370 | - if (isEmpty(node.filePath)) { | |
| 371 | - node.filePath = node.startTime + "_" + index; | |
| 372 | - } | |
| 373 | - html += "<td><button class=\"layui-btn layui-btn-primary layui-border\" onclick=\"playDeviceVidemoQueryHistory('" + idDiv + "','" + resp.wvpPlayURL + "','" + device + "','" + channel + "','" + node.startTime + "','" + node.endTime + "','" + resp.token + "')\" title='" + node.filePath + "'>" + node.filePath + "</button></td>"; | |
| 374 | - if (index % 2 === 1) { | |
| 375 | - html += "</tr><tr>"; | |
| 376 | - } | |
| 377 | - }); | |
| 378 | - | |
| 379 | - $("#deviceVideoTbody", $deviceVideoDiv).html(html); | |
| 380 | - closeLoading(); | |
| 381 | - } else { | |
| 382 | - closeLoading(); | |
| 383 | - } | |
| 384 | - }); | |
| 385 | -} | |
| 386 | - | |
| 387 | -function playDeviceVidemoQueryHistory(idDiv, url, device, channel, startTime, endTime, token) { | |
| 388 | - if (player) { | |
| 389 | - player = null; | |
| 390 | - } | |
| 391 | - startTime = startTime.replace("-", "").replace("-", "").replace(":", "").replace(":", "").replace(" ", ""); | |
| 392 | - endTime = endTime.replace("-", "").replace("-", "").replace(":", "").replace(":", "").replace(" ", ""); | |
| 393 | - | |
| 394 | - url = url + device + "_" + channel + "_" + startTime + "_" + endTime + ".live.mp4"; | |
| 395 | - | |
| 396 | - var idDiv1 = "device_video_play_" + (Date.now()); | |
| 397 | - $("#videoPlay", $("#" + idDiv)).html("<div id='" + idDiv1 + "' style='height:550px;width:99%'></div>") | |
| 398 | - player = playVideo(url, idDiv1, 0); | |
| 399 | - | |
| 400 | -} | |
| 401 | - | |
| 402 | -function skeyewebplayerOpen(carNo) { | |
| 403 | - loading = loadingFunction(); | |
| 404 | - | |
| 405 | - layer.open({ | |
| 406 | - type: 1, | |
| 407 | - content: '<div id="skeyewebplayer"></div>', | |
| 408 | - title: "分页显示", | |
| 409 | - area: ['320px', '195px'], // 初始宽高 | |
| 410 | - success: function (layero, index) { | |
| 411 | - layer.full(index); // 最大化 | |
| 412 | - let $skeyewebplayer = $("#skeyewebplayer"); | |
| 413 | - $("#skeyewebplayer").html($("#skeyewebplayerDiv").html()); | |
| 414 | - let width = $(window).width(); | |
| 415 | - let height = $(window).height(); | |
| 416 | - height = height - height * 0.0605; | |
| 417 | - let channelHeight = height - height * 0.03; | |
| 418 | - $("#skeyewebplayerDivChannel", $skeyewebplayer).attr("style", "height:" + channelHeight + "px;"); | |
| 419 | - $("#skeyewebplayerDiv_main", $skeyewebplayer).attr("style", "width:" + width + "px;height:" + height + "px"); | |
| 420 | - skeyWebPlayer(1, "skeyewebplayer"); | |
| 421 | - skeywebPlayerChannel($skeyewebplayer, carNo); | |
| 422 | - }, | |
| 423 | - beforeEnd: function (layero, index, that) { | |
| 424 | - if (skeyWebPlayer_myVar) { | |
| 425 | - window.clearInterval(skeyWebPlayer_myVar); | |
| 426 | - } | |
| 427 | - $("#skeyewebplayer").html(""); | |
| 428 | - } | |
| 429 | - }); | |
| 430 | -} | |
| 431 | - | |
| 432 | -function skeywebPlayerChannel($skeyewebplayer, carNo) { | |
| 433 | - var url = "/video/car/channel/" + carNo; | |
| 434 | - $.getJSON(url, function (rep) { | |
| 435 | - if (rep.status === "SUCCESS") { | |
| 436 | - | |
| 437 | - if (rep.data) { | |
| 438 | - let html = "<table cellspacing=\"0\" cellpadding=\"0\" border=\"1\" class=\"layui-table\"><tbody>"; | |
| 439 | - $.each(rep.data, function (index, node) { | |
| 440 | - html = html + "<tr><td><button class=\"layui-btn layui-btn-primary\" channelNode='" + node.name + "' deviceId='" + node.deviceId + "' channelId='" + node.channelId + "' onclick=\"skeyewebplayerChannelClick('" + rep.wvpLiveBroadcast + "',this)\">" + node.name + "</button></td></tr>"; | |
| 441 | - }); | |
| 442 | - $("#skeyewebplayerDivChannel", $skeyewebplayer).html(html); | |
| 443 | - closeLoading(); | |
| 444 | - } | |
| 445 | - } | |
| 446 | - }); | |
| 447 | -} | |
| 448 | - | |
| 449 | -function skeyewebplayerChannelClick(playURL, btn, deviceId, channelId) { | |
| 450 | - let children = $("#skeyewebplayerDivContent", $("#skeyewebplayer")).children(); | |
| 451 | - let length = children.length; | |
| 452 | - if (length === 1) { | |
| 453 | - displaySkeyewebplayerChannel(children[0], playURL, btn, deviceId, channelId); | |
| 454 | - } else if (length > 1) { | |
| 455 | - for (let i = 0; i < length; i++) { | |
| 456 | - let classCss = $(children[i]).attr("class"); | |
| 457 | - if (classCss.indexOf("skeyewebplayerDivContent_play_selected") > -1) { | |
| 458 | - displaySkeyewebplayerChannel(children[i], playURL, btn, deviceId, channelId); | |
| 459 | - break; | |
| 460 | - } | |
| 461 | - } | |
| 462 | - } | |
| 463 | - | |
| 464 | - | |
| 465 | -} | |
| 466 | - | |
| 467 | -function displaySkeyewebplayerChannel(htmlNode, playURL, btn, deviceId, channelId) { | |
| 468 | - loading = loadingFunction(); | |
| 469 | - let $htmlNode = $(htmlNode); | |
| 470 | - let $btn = $(btn); | |
| 471 | - deviceId = $btn.attr("deviceId"); | |
| 472 | - channelId = $btn.attr("channelId"); | |
| 473 | - | |
| 474 | - | |
| 475 | - let htmlObj = $("div[class='skeyewebplayerDiv_play_content']", $htmlNode); | |
| 476 | - | |
| 477 | - htmlObj.html(""); | |
| 478 | - $("div[class='skeyewebplayerDiv_title']", $htmlNode).html($btn.attr("channelNode")); | |
| 479 | - playURL = playURL.replace("{device}", deviceId).replace("{channel}", channelId); | |
| 480 | - let playURL1 = "<iframe style='width:100%;height:100%;' src ='" + playURL + "'/>"; | |
| 481 | - | |
| 482 | - htmlObj.html(playURL1); | |
| 483 | - closeLoading(); | |
| 484 | -} | |
| 485 | - | |
| 486 | -function skeyewebplayerOne() { | |
| 487 | - skeyWebPlayer(1, "live_broadcastDiv"); | |
| 488 | -} | |
| 489 | - | |
| 490 | -function skeyewebplayerFour() { | |
| 491 | - skeyWebPlayer(4, "live_broadcastDiv"); | |
| 492 | -} | |
| 493 | - | |
| 494 | -function skeyewebplayerNine() { | |
| 495 | - skeyWebPlayer(9, "live_broadcastDiv"); | |
| 496 | -} | |
| 497 | - | |
| 498 | -function skeyWebPlayer(len, parentId) { | |
| 499 | - var $skeyewebplayerDivContent = $("#skeyewebplayerDivContent123", $("#" + parentId)); | |
| 500 | - var classCss = "skeyewebplayerDivContent_one"; | |
| 501 | - let width = $(window).width()*0.75; | |
| 502 | - width = width - width * 0.1; | |
| 503 | - // $skeyewebplayerDivContent.attr("style", "width:100%;height:98%;float:right"); | |
| 504 | - // skeyWebPlayer_myVar = setInterval(function () { | |
| 505 | - // width = $(window).width(); | |
| 506 | - // width = width - width * 0.1; | |
| 507 | - // // $skeyewebplayerDivContent.attr("style", "width:100%;height:98%;float:right"); | |
| 508 | - // }, 1000); | |
| 509 | - | |
| 510 | - if (len === 4) { | |
| 511 | - classCss = "skeyewebplayerDivContent_Four"; | |
| 512 | - } else if (len === 9) { | |
| 513 | - classCss = "skeyewebplayerDivContent_nine"; | |
| 514 | - } | |
| 515 | - | |
| 516 | - console.log($skeyewebplayerDivContent) | |
| 517 | - var html = ""; | |
| 518 | - for (let i = 0; i < len; i++) { | |
| 519 | - html += "<div class='" + classCss + "' id='skeyewebplayerDivContent_play_" + i + "' onclick=\"skeyewebplayerDivContent_play_click(this)\"><div class='skeyewebplayerDiv_title'>"; | |
| 520 | - html += "</div><div id='skeyewebplayerDiv_play_content_" + i + "' class='skeyewebplayerDiv_play_content' style='height: 95%'></div></div>"; | |
| 521 | - } | |
| 522 | - $skeyewebplayerDivContent.html(html); | |
| 523 | - | |
| 524 | -} | |
| 525 | - | |
| 526 | -function skeyewebplayerDivContent_play_click(node) { | |
| 527 | - let $node = $(node); | |
| 528 | - let nodes = $(node).parent().children(); | |
| 529 | - | |
| 530 | - $.each(nodes, function (index, item) { | |
| 531 | - let $item = $(item); | |
| 532 | - let classCss = $item.attr("class"); | |
| 533 | - classCss = classCss.replace(" skeyewebplayerDivContent_play_selected", ""); | |
| 534 | - $item.attr("class", classCss) | |
| 535 | - }) | |
| 536 | - let classCss = $node.attr("class"); | |
| 537 | - | |
| 538 | - if (classCss.indexOf("skeyewebplayerDivContent_play_selected") > -1) { | |
| 539 | - classCss = classCss.replace(" skeyewebplayerDivContent_play_selected", ""); | |
| 540 | - } else { | |
| 541 | - classCss = classCss + " skeyewebplayerDivContent_play_selected" | |
| 542 | - } | |
| 543 | - $node.attr("class", classCss) | |
| 544 | -} | |
| 545 | 0 | \ No newline at end of file |
src/main/resources/static/pages/video/videoPage.html