dms-scrape 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.gitattributes ADDED
@@ -0,0 +1,2 @@
1
+ # Auto detect text files and perform LF normalization
2
+ * text=auto
@@ -0,0 +1,18 @@
1
+ {
2
+ // Use IntelliSense to learn about possible attributes.
3
+ // Hover to view descriptions of existing attributes.
4
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5
+ "version": "0.2.0",
6
+ "configurations": [
7
+ {
8
+ "type": "node",
9
+ "request": "launch",
10
+ "name": "Launch Program",
11
+ "console": "integratedTerminal",
12
+ "skipFiles": [
13
+ "<node_internals>/**"
14
+ ],
15
+ "program": "${workspaceFolder}\\index.mjs"
16
+ }
17
+ ]
18
+ }
package/README.md ADDED
@@ -0,0 +1,46 @@
1
+ # DMS Scrape
2
+
3
+ ## Currently supported sources
4
+ ### T1
5
+ - [x] 電子*
6
+ - [ ] 工商*
7
+ - [x] 經濟 (UDNMoney)
8
+ ### T2
9
+ - [x] 自由 3C
10
+ - [x] 自由
11
+ - [x] 聯合
12
+ - [ ] 中國*
13
+ ### T3 電視台
14
+ - [ ] ETtoday
15
+ - [ ] 三立
16
+ ### T4
17
+ - [ ] 中央社
18
+ - [ ] 太報
19
+ ### T5
20
+ - [x] Mashdigi
21
+ - [x] Cool3c
22
+ - [x] ePrice
23
+ - [x] Sogi
24
+ - [ ] TechOrange*
25
+ - [x] KOCPC
26
+ - [x] TechNews
27
+ - [ ] TechBang
28
+ - [ ] XFastest
29
+ ### T6 財經媒體
30
+
31
+
32
+ ## To be supported
33
+ - nextapple
34
+ - cna
35
+ - setn
36
+ - bnext
37
+ - saydigi
38
+ - inside
39
+ - lpcomment
40
+ - techudnc
41
+ - ctimes
42
+ - ctwant
43
+ - cnyes
44
+ - moneydj
45
+ - 2cm
46
+ - investor
@@ -0,0 +1 @@
1
+ declare module 'dms-scrape'
package/index.mjs ADDED
@@ -0,0 +1,15 @@
1
+ import { fetchAndScrape } from "./lib/fetchAndScrape.mjs";
2
+ import { justScrape } from "./lib/justScrape.mjs";
3
+ export async function dmsScrape(type, link, html) {
4
+ return type == "link"
5
+ ? await fetchAndScrape(link)
6
+ : type == "html"
7
+ ? justScrape(link, html)
8
+ : "Must specify type";
9
+ }
10
+ console.log(
11
+ await dmsScrape(
12
+ "link",
13
+ "https://technews.tw/2024/09/12/snapdragon-8-gen-4-and-dimensity-9400-configuration-unveiled/"
14
+ )
15
+ );
@@ -0,0 +1,19 @@
1
+ import { justScrape } from "./justScrape.mjs";
2
+ export async function fetchAndScrape(link) {
3
+ var response;
4
+ try {
5
+ if (
6
+ // link.includes("digitimes") ||
7
+ link.includes("chinatimes") ||
8
+ link.includes("ctee") ||
9
+ link.includes("buzzorange")
10
+ ) {
11
+ return "Must use extension";
12
+ } else {
13
+ response = await fetch(link);
14
+ return justScrape(link, await response.text());
15
+ }
16
+ } catch (error) {
17
+ return error;
18
+ }
19
+ }
@@ -0,0 +1,38 @@
1
+ export function filterContent(inputArray) {
2
+ inputArray = inputArray.map((line) => line.trim());
3
+
4
+ inputArray = inputArray.filter(
5
+ (item) =>
6
+ item !== "" &&
7
+ !item.startsWith("一手掌握經濟脈動") &&
8
+ item !== "《你可能還想看》" &&
9
+ !item.includes("請繼續往下閱讀...") &&
10
+ !item.startsWith("(") &&
11
+ !item.startsWith("(") &&
12
+ !item.startsWith("不用抽") &&
13
+ !item.includes("核稿編輯") &&
14
+ !item.startsWith("記者") &&
15
+ !item.includes("圖/") &&
16
+ !item.startsWith("▲") &&
17
+ !item.startsWith("<") &&
18
+ !item.includes("引用來源:") &&
19
+ !item.startsWith("\\") &&
20
+ !item.includes("<h2>") &&
21
+ !item.includes("&nbsp;") &&
22
+ !item.endsWith(":") &&
23
+ !item.includes("訂閱手機王") &&
24
+ !item.includes("想快速知道") &&
25
+ !item.includes("資料來源:") &&
26
+ !item.includes("&nbsp;") &&
27
+ !item.includes("上傳") &&
28
+ !item.includes("消息來源") &&
29
+ !item.includes(".jpg") &&
30
+ !item.startsWith("(") &&
31
+ !item.includes("下載附件") &&
32
+ !item.includes("保存到相冊") &&
33
+ !item.includes(".png")
34
+ );
35
+ inputArray = inputArray.map((str) => str.replace(/<\/?[^>]+(>|$)/g, ""));
36
+ inputArray = inputArray.map((line) => line.trim());
37
+ return inputArray;
38
+ }
@@ -0,0 +1,14 @@
1
+ import { processHTML } from "./processHTML.mjs";
2
+ import { filterContent } from "./filterContent.mjs";
3
+ export function justScrape(link, html) {
4
+ try {
5
+ var scrapedContent = processHTML(link, html)
6
+ scrapedContent["content"] = scrapedContent["content"]
7
+ ? filterContent(scrapedContent["content"])
8
+ : "";
9
+ scrapedContent["url"] = link;
10
+ return scrapedContent;
11
+ } catch (error) {
12
+ return error;
13
+ }
14
+ }
@@ -0,0 +1,55 @@
1
+ import { LTN3C } from "../sources/T2/LTN3C.mjs";
2
+ import { LTNEC } from "../sources/T2/LTNEC.mjs";
3
+ import { UDN } from "../sources/T2/UDN.mjs";
4
+ import { UDNMoney } from "../sources/T1/UDNMoney.mjs";
5
+ import { ETDAY } from "../sources/T3/ETDAY.mjs";
6
+ import { EPRICE } from "../sources/T5/EPRICE.mjs";
7
+ import { COOL3C } from "../sources/T5/COOL3C.mjs";
8
+ import { MASHDIGI } from "../sources/T5/MASHDIGI.mjs";
9
+ import { SOGI } from "../sources/T5/SOGI.mjs";
10
+ import * as cheerio from "cheerio";
11
+ import { TECHORANGE } from "../sources/T5/TECHORANGE.mjs";
12
+ import { DIGITIMES } from "../sources/T1/DIGITIMES.mjs";
13
+ import { KOCPC } from "../sources/T5/KOCPC.mjs";
14
+ import { XF } from "../sources/T5/XF.mjs";
15
+ import { TAISOUNDS } from "../sources/T4/TAISOUNDS(unfinished).mjs";
16
+ import { TECHNEWS } from "../sources/T5/TECHNEWS.mjs";
17
+
18
+ function determineSource(link) {
19
+ if (link.includes("3c.ltn")) {
20
+ return LTN3C; // Return the corresponding function
21
+ } else if (link.includes("ec.ltn")) {
22
+ return LTNEC;
23
+ } else if (link.includes("money.udn")) {
24
+ return UDNMoney;
25
+ } else if (link.includes("udn")) {
26
+ return UDN;
27
+ } else if (link.includes("ettoday")) {
28
+ return ETDAY;
29
+ } else if (link.includes("eprice")) {
30
+ return EPRICE;
31
+ } else if (link.includes("cool3c")) {
32
+ return COOL3C;
33
+ } else if (link.includes("mashdigi")) {
34
+ return MASHDIGI;
35
+ } else if (link.includes("sogi")) {
36
+ return SOGI;
37
+ } else if (link.includes("techorange")) {
38
+ return TECHORANGE
39
+ } else if (link.includes("digitimes")) {
40
+ return DIGITIMES
41
+ } else if (link.includes("kocpc")) {
42
+ return KOCPC
43
+ } else if (link.includes("xfastest")) {
44
+ return XF
45
+ } else if (link.includes("taisounds")) {
46
+ return TAISOUNDS
47
+ } else if (link.includes("technews")) {
48
+ return TECHNEWS
49
+ }
50
+ }
51
+
52
+ export function processHTML(link, html) {
53
+ const handlerFunction = determineSource(link)
54
+ return handlerFunction(cheerio.load(html));
55
+ }
package/package.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "dms-scrape",
3
+ "version": "0.1.0",
4
+ "main": "index.mjs",
5
+ "type": "module",
6
+ "scripts": {
7
+ "test": "echo \"Error: no test specified\" && exit 1"
8
+ },
9
+ "author": "",
10
+ "license": "ISC",
11
+ "description": "",
12
+ "devDependencies": {
13
+ "esbuild": "^0.23.1"
14
+ },
15
+ "dependencies": {
16
+ "axios": "^1.7.7",
17
+ "cheerio": "^1.0.0"
18
+ }
19
+ }
@@ -0,0 +1,19 @@
1
+ /////chinatimes bug time wrong
2
+ // https://www.chinatimes.com/realtimenews/20240820002976-260412?chdtv
3
+ // case link.includes("chinatimes"):
4
+ // title = $("h1.article-title").text();
5
+ // date_source_author =
6
+ // $("span.date").first().text() +
7
+ // " / " +
8
+ // $("div.source").text() +
9
+ // " / " +
10
+ // $("div.author").text();
11
+
12
+ // content = [];
13
+ // $("div.article-body p").each((index, element) => {
14
+ // if (!$(element).text().trim() == "") {
15
+ // content.push($(element).text().trim());
16
+ // }
17
+ // });
18
+ // break;
19
+ //////
@@ -0,0 +1,18 @@
1
+ ///////ctee 、綜合外電
2
+ // https://www.ctee.com.tw/news/20240821700211-439901
3
+ // https://www.ctee.com.tw/news/20240821701357-430704
4
+ // case link.includes("ctee"):
5
+ // title = $("h1.main-title").text().trim();
6
+ // date_source_author = `${$("li.publish-date time")
7
+ // .text()
8
+ // .replace(/\./g, "-")} / 工商時報 / ${$("span.name").text().trim()}`;
9
+ // content = [];
10
+ // // content?.push($('blockquote p').text())
11
+ // $("article p").each((i, element) => {
12
+ // const text = $(element).text().trim();
13
+ // if (text) {
14
+ // content?.push(text);
15
+ // }
16
+ // });
17
+ // break;
18
+ //////
@@ -0,0 +1,9 @@
1
+ export function DIGITIMES($) {
2
+ let data = {};
3
+ data["title"] = $("h1.news-title").text();
4
+ data["date"] = $("time").text();
5
+ data["source"] = "電子時報";
6
+ data["author"] = $("font").first().text();
7
+ data["content"] = [];
8
+ return data;
9
+ }
@@ -0,0 +1,39 @@
1
+
2
+ export function UDNMoney($) {
3
+ const data = $.extract({
4
+ headline: "h1#story_art_title",
5
+ date: [
6
+ {
7
+ selector: "time.article-body__time",
8
+ value: (el, key) => {
9
+ const data = $(el).text().replace(/\//g, "-").slice(0, 10);
10
+ return data;
11
+ },
12
+ },
13
+ ],
14
+ author: [
15
+ {
16
+ selector: "div.article-body__info > span",
17
+ value: (el, key) => {
18
+ const text = $(el).text();
19
+ return text.replace(/.*記者(.{3}).*/, "$1");
20
+ },
21
+ },
22
+ ],
23
+ content: [
24
+ {
25
+ selector: "section.article-body__editor p",
26
+ value: (el, key) => {
27
+ if (!$(el).text().trim() == "") {
28
+ return $(el)
29
+ .text()
30
+ .replace(/\$\(.*/s, "")
31
+ .trim();
32
+ }
33
+ },
34
+ },
35
+ ],
36
+ });
37
+ data["source"] = "經濟日報";
38
+ return data;
39
+ }
@@ -0,0 +1,33 @@
1
+ export function LTN3C($) {
2
+ const data = $.extract({
3
+ headline: "div.whitecon.borderline.boxTitle.boxText h1",
4
+ date: [
5
+ {
6
+ selector: "span.time",
7
+ value: (el, key) => {
8
+ const data = $(el).text().split(" ").slice(0)[0].replace(/\//g, "-");
9
+ return data;
10
+ },
11
+ },
12
+ ],
13
+ author: [
14
+ {
15
+ selector: "span.author",
16
+ value: (el) => {
17
+ const data = $(el).text().split("").slice(-3).join("");
18
+ return data;
19
+ },
20
+ },
21
+ ],
22
+ content: [
23
+ {
24
+ selector: "div.text p",
25
+ value: (el, key) => {
26
+ const text = $(el).text().trim();
27
+ return text;
28
+ },
29
+ },
30
+ ],
31
+ });
32
+ return data;
33
+ }
@@ -0,0 +1,40 @@
1
+ export function LTNEC($) {
2
+ const data = $.extract({
3
+ headline: "div.whitecon.boxTitle.boxText h1",
4
+ date: [
5
+ {
6
+ selector: "span.time:nth-of-type(1)",
7
+ value: (el, key) => {
8
+ const data = $(el).text().split(" ").slice(0)[0].replace(/\//g, "-");
9
+ if (data != "") {
10
+ return data;
11
+ }
12
+
13
+ },
14
+ },
15
+ ],
16
+ author: [
17
+ {
18
+ selector: "div.text p:nth-of-type(2)",
19
+ value: (el) => {
20
+ const data = $(el).text().split("/")[0];
21
+ return data;
22
+ },
23
+ },
24
+ ],
25
+ content: [
26
+ {
27
+ selector: "div.text p",
28
+ value: (el, key) => {
29
+ const text = $(el)
30
+ .text()
31
+ .trim()
32
+ .replace(/〔.*?〕/g, "");
33
+ return text;
34
+ },
35
+ },
36
+ ],
37
+ });
38
+
39
+ return data;
40
+ }
@@ -0,0 +1,29 @@
1
+ export function UDN($) {
2
+ const data = $.extract({
3
+ headline: "h1.article-content__title",
4
+ date: [
5
+ {
6
+ selector: "time.article-content__time",
7
+ value: (el, key) => {
8
+ const data = $(el).text().replace(/\//g, "-")
9
+ .slice(0, 10);
10
+ return data;
11
+ },
12
+ },
13
+ ],
14
+ author: "a[href^='/news/reporter/']",
15
+ content: [
16
+ {
17
+ selector: "section.article-content__editor p",
18
+ value: (el, key) => {
19
+ const text = $(el)
20
+ .text()
21
+ .trim();
22
+ return text;
23
+ },
24
+ },
25
+ ],
26
+ });
27
+
28
+ return data;
29
+ }
@@ -0,0 +1,41 @@
1
+ import * as cheerio from "cheerio";
2
+ export function ETDAY(html) {
3
+ const $ = cheerio.load(html);
4
+ const data = $.extract({
5
+ headline: "h1.title",
6
+ time: [
7
+ {
8
+ selector: "time.date",
9
+ value: (el, key) => {
10
+ const date = new Date($(el).attr("datetime"));
11
+
12
+ // Format the date to "YYYY-MM-DD"
13
+ const formattedDate = date.toISOString().split("T")[0];
14
+ return formattedDate;
15
+ },
16
+ },
17
+ ],
18
+ author: [
19
+ {
20
+ selector: "div > p:first",
21
+ value: (el) => {
22
+ const data = $(el).text()
23
+
24
+ return data.replace(/.*記者(.{3}).*/, '$1');
25
+ },
26
+ },
27
+ ],
28
+ content: [
29
+ {
30
+ selector: "div.story > p",
31
+ value: (el, key) => {
32
+ // if (key > 1) {
33
+ return $(el).text().trim()
34
+ // }
35
+ },
36
+ },
37
+ ],
38
+ });
39
+ data["source"] = "ETtoday"
40
+ return data;
41
+ }
@@ -0,0 +1,9 @@
1
+ export function TAISOUNDS($) {
2
+ let data = {};
3
+ data["title"] = $("div.news-box h1").text();
4
+ data["date"] = "";
5
+ data["source"] = "太報";
6
+ data["author"] = $("a[href^='/more/reporternews']").text();
7
+ data["content"] = [];
8
+ return data;
9
+ }
@@ -0,0 +1,26 @@
1
+ export function COOL3C($) {
2
+ let data = {};
3
+ data["title"] = $("li.breadcrumb-item.active")
4
+ .text()
5
+ .trim()
6
+ .replace("\n", "");
7
+ data["date"] = $("div.created.slacken span")
8
+ .eq(1)
9
+ .text()
10
+ .trim()
11
+ .split(" ")[0]
12
+ .replace(/\./g, "-");
13
+ data["author"] = $("div.author a").text().trim();
14
+
15
+ data["content"] = [];
16
+ $("div.row.content div p").each(function () {
17
+ const text = $(this).html().trim();
18
+ if (text.startsWith("<img") || text.startsWith("▲")) {
19
+ return;
20
+ } else {
21
+ data["content"].push(text.replace("undefined", "").trim());
22
+ }
23
+ });
24
+ data["source"] = "Cool3c";
25
+ return data;
26
+ }
@@ -0,0 +1,19 @@
1
+ export function EPRICE($) {
2
+ const data = $.extract({
3
+ headline: "h1.title",
4
+ });
5
+ data["date"] = $("span.date")
6
+ .first()
7
+ .text()
8
+ .replace(/.*?(\d{4}-\d{2}-\d{2}).*/, "$1");
9
+ data["author"] = $("a.nickname").first().attr("title");
10
+
11
+ data["content"] = $("div.user-comment-block")
12
+ .first()
13
+ .html() // Get inner HTML of the div
14
+ .split(/<br\s*\/?>\s*<br\s*\/?>/i) // Split by two consecutive <br> tags
15
+ .map((line) => line.trim()) // Trim whitespace from each line
16
+ .filter((line) => line.length > 0);
17
+ data["source"] = "ePrice"
18
+ return data;
19
+ }
@@ -0,0 +1,28 @@
1
+ export function KOCPC($) {
2
+ let data = {};
3
+
4
+ data["title"] = $("h1.jeg_post_title").text();
5
+ data["date"] = $('div.jeg_meta_date > a')
6
+ .text()
7
+ .replace(/(\d{4}) 年 (\d{2}) 月 (\d{2}) 日/, "$1-$2-$3");
8
+ data["source"] = "電腦王阿達";
9
+ data["author"] = $("div.jeg_meta_author a").text();
10
+ data["content"] = [];
11
+ // data['category'] = $("meta")
12
+ //Zi_ad_ar_iR
13
+
14
+ $("div.Zi_ad_ar_iR p").each((index, element) => {
15
+ if (
16
+ !$(element).text().trim() == "" &&
17
+ !$(element).text().startsWith("<img")
18
+ ) {
19
+ data["content"].push(
20
+ $(element)
21
+ .text()
22
+ .trim()
23
+ .replace(/<[^>]*>/g, "")
24
+ );
25
+ }
26
+ });
27
+ return data;
28
+ }
@@ -0,0 +1,27 @@
1
+ export function MASHDIGI($) {
2
+ let data = {};
3
+ const link = $('link[rel="canonical"]').attr('href')
4
+ data["title"] = $("h1.entry-title").text().trim();
5
+ data["date"] = $('[href="' + link + '"] > time.entry-date.published').text();
6
+ data["author"] = $("div.entry-meta span.author.vcard")
7
+ .text()
8
+ .replace(" (Mash Yang)", "");
9
+
10
+ data["content"] = [];
11
+ $("div.bialty-container p").each(function () {
12
+ const htmlContent = $(this).html().trim();
13
+ const textContent = $(this).text().trim();
14
+
15
+ if (
16
+ htmlContent.includes("<img") ||
17
+ textContent.startsWith("▲") ||
18
+ textContent === ""
19
+ ) {
20
+ return;
21
+ } else {
22
+ data["content"].push(textContent.replace("undefined", "").trim());
23
+ }
24
+ });
25
+ data["source"] = "Mashdigi";
26
+ return data;
27
+ }
@@ -0,0 +1,46 @@
1
+ export function SOGI($) {
2
+ const data = $.extract({
3
+ title: "h1.h1",
4
+ author: [
5
+ {
6
+ selector: "div.d-inline-block.mr-3",
7
+ value: function (el, key) {
8
+ let cleanedText = $(el)
9
+ .text()
10
+ .trim()
11
+ .replace(/[\n\s]/g, "");
12
+ if (cleanedText.includes("特約編輯")) {
13
+ var match = cleanedText.match(/by(.*?)特約編輯/);
14
+ } else if (cleanedText.includes("編輯")) {
15
+ var match = cleanedText.match(/by(.*?)編輯/);
16
+ } else {
17
+ var match = null;
18
+ }
19
+ if (match) {
20
+ let result = match[1]; // This will give you the text between "by" and "特約編輯"
21
+ return result.trim(); // Trimming in case there are extra spaces
22
+ } else {
23
+ console.log("No match found");
24
+ }
25
+ },
26
+ },
27
+ ],
28
+ });
29
+
30
+ data["date"] = $("div.d-inline-block.mr-3")
31
+ .first()
32
+ .text()
33
+ .replace("\n", "")
34
+ .trim()
35
+ .replace(/\//g, "-");
36
+
37
+ data["content"] = $("div.editable.my-2")
38
+ .html() // Get inner HTML of the div
39
+ .split(/<br\s*\/?>\s*<br\s*\/?>/i) // Split by two consecutive <br> tags
40
+ .map((line) => line.trim()) // Trim whitespace from each line
41
+ .filter((line) => line.length > 0);
42
+
43
+ data["source"] = "手機王"
44
+
45
+ return data;
46
+ }
@@ -0,0 +1,13 @@
1
+ // title = $("h1.post-title").text();
2
+
3
+ // dateParts =
4
+ // $("p.post-meta-info span:nth-of-type(3)")
5
+ // .text()
6
+ // .replace("發表於 ", "")
7
+ // .split("日")[0] + "日";
8
+ // // .match(/(\d{4}) 年 (\d{2}) 月 (\d{2}) 日/);
9
+ // date_source_author =
10
+ // `${dateParts[1]}-${dateParts[2]}-${dateParts[3]}` +
11
+ // " / T客邦 / " +
12
+ // $("a.nickname").text();
13
+ // content = [];
@@ -0,0 +1,17 @@
1
+ export function TECHNEWS($) {
2
+ let data = {};
3
+ data["title"] = $("h1.entry-title").text();
4
+ data["content"] = [];
5
+ let dateParts = $("span.body:nth-of-type(4)")
6
+ .text()
7
+ .match(/(\d{4}) 年 (\d{2}) 月 (\d{2}) 日/);
8
+ data["date"] = `${dateParts[1]}-${dateParts[2]}-${dateParts[3]}`;
9
+ data["source"] = "科技新報";
10
+ data["author"] = $("[rel=author]").text().replace(" ", "");
11
+
12
+ $("div.indent p").each((i, element) => {
13
+ data["content"].push($(element).text().trim());
14
+ });
15
+
16
+ return data;
17
+ }
@@ -0,0 +1,24 @@
1
+ export function TECHORANGE($) {
2
+ let data = {};
3
+ data["title"] = $("h1.elementor-heading-title").text();
4
+ console.log($.html())
5
+ // data["date"] = $("time").text();
6
+ // data["source"] = "科技報橘";
7
+ // data["author"] = $(
8
+ // "span.elementor-icon-list-text.elementor-post-info__item.elementor-post-info__item--type-author"
9
+ // )
10
+ // .text()
11
+ // .trim();
12
+ // data["content"] = [];
13
+
14
+ // $("div.elementor-widget-container > p").each((index, element) => {
15
+ // if (
16
+ // !$(element).text().trim().startsWith("還在靠社群媒體") &&
17
+ // !$(element).text().trim().startsWith("訂閱即同意") &&
18
+ // !$(element).text().trim().startsWith("*本文開放")
19
+ // ) {
20
+ // data["content"].push($(element).text().trim());
21
+ // }
22
+ // });
23
+ return data
24
+ }
@@ -0,0 +1,28 @@
1
+ export function XF($) {
2
+ let data = {};
3
+ data["title"] = $("span#thread_subject").text();
4
+
5
+ const input = $('em[id^="authorposton"]').text();
6
+
7
+ // Regular expression to match the date part and capture the year, month, and day
8
+ const regex = /發表於 (\d{4})-(\d{1,2})-(\d{1,2})/;
9
+
10
+ // Replace the matched date with the desired format
11
+ const formattedDate = input.replace(regex, (match, year, month, day) => {
12
+ // Ensure month and day are zero-padded to two digits
13
+ const paddedMonth = month.padStart(2, "0");
14
+ const paddedDay = day.padStart(2, "0");
15
+ return `${year}-${paddedMonth}-${paddedDay}`;
16
+ });
17
+ data["date"] = formattedDate.slice(0, 10);
18
+ data["source"] = "XFastest";
19
+ data["author"] = $("a[href^='space-uid']").last().text();
20
+ $('td[id^="post"]').each((index, element) => {
21
+ let content = $(element)
22
+ .html()
23
+ .split(/<\/?[^>]+>/)
24
+ .map((item) => item.trim()); // Trim all elements
25
+ data["content"] = content;
26
+ });
27
+ return data;
28
+ }
package/test.html ADDED
@@ -0,0 +1,489 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en-US">
3
+
4
+ <head>
5
+ <title>Just a moment...</title>
6
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
7
+ <meta http-equiv="X-UA-Compatible" content="IE=Edge">
8
+ <meta name="robots" content="noindex,nofollow">
9
+ <meta name="viewport" content="width=device-width,initial-scale=1">
10
+ <style>
11
+ * {
12
+ box-sizing: border-box;
13
+ margin: 0;
14
+ padding: 0
15
+ }
16
+
17
+ html {
18
+ line-height: 1.15;
19
+ -webkit-text-size-adjust: 100%;
20
+ color: #313131
21
+ }
22
+
23
+ button,
24
+ html {
25
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji
26
+ }
27
+
28
+ body {
29
+ display: flex;
30
+ flex-direction: column;
31
+ height: 100vh;
32
+ min-height: 100vh
33
+ }
34
+
35
+ body.no-js .loading-spinner {
36
+ visibility: hidden
37
+ }
38
+
39
+ body.theme-dark {
40
+ background-color: #222;
41
+ color: #d9d9d9
42
+ }
43
+
44
+ body.theme-dark a {
45
+ color: #fff
46
+ }
47
+
48
+ body.theme-dark a:hover {
49
+ color: #ee730a;
50
+ text-decoration: underline
51
+ }
52
+
53
+ body.theme-dark .lds-ring div {
54
+ border-color: #999 transparent transparent
55
+ }
56
+
57
+ body.theme-dark .font-red {
58
+ color: #b20f03
59
+ }
60
+
61
+ body.theme-dark .pow-button {
62
+ background-color: #4693ff;
63
+ color: #1d1d1d
64
+ }
65
+
66
+ body.theme-dark #challenge-success-text {
67
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSIgdmlld0JveD0iMCAwIDI2IDI2Ij48cGF0aCBmaWxsPSIjZDlkOWQ5IiBkPSJNMTMgMGExMyAxMyAwIDEgMCAwIDI2IDEzIDEzIDAgMCAwIDAtMjZtMCAyNGExMSAxMSAwIDEgMSAwLTIyIDExIDExIDAgMCAxIDAgMjIiLz48cGF0aCBmaWxsPSIjZDlkOWQ5IiBkPSJtMTAuOTU1IDE2LjA1NS0zLjk1LTQuMTI1LTEuNDQ1IDEuMzg1IDUuMzcgNS42MSA5LjQ5NS05LjYtMS40Mi0xLjQwNXoiLz48L3N2Zz4=)
68
+ }
69
+
70
+ body.theme-dark #challenge-error-text {
71
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI0IyMEYwMyIgZD0iTTE2IDNhMTMgMTMgMCAxIDAgMTMgMTNBMTMuMDE1IDEzLjAxNSAwIDAgMCAxNiAzbTAgMjRhMTEgMTEgMCAxIDEgMTEtMTEgMTEuMDEgMTEuMDEgMCAwIDEtMTEgMTEiLz48cGF0aCBmaWxsPSIjQjIwRjAzIiBkPSJNMTcuMDM4IDE4LjYxNUgxNC44N0wxNC41NjMgOS41aDIuNzgzem0tMS4wODQgMS40MjdxLjY2IDAgMS4wNTcuMzg4LjQwNy4zODkuNDA3Ljk5NCAwIC41OTYtLjQwNy45ODQtLjM5Ny4zOS0xLjA1Ny4zODktLjY1IDAtMS4wNTYtLjM4OS0uMzk4LS4zODktLjM5OC0uOTg0IDAtLjU5Ny4zOTgtLjk4NS40MDYtLjM5NyAxLjA1Ni0uMzk3Ii8+PC9zdmc+)
72
+ }
73
+
74
+ body.theme-light {
75
+ background-color: #fff;
76
+ color: #313131
77
+ }
78
+
79
+ body.theme-light a {
80
+ color: #0051c3
81
+ }
82
+
83
+ body.theme-light a:hover {
84
+ color: #ee730a;
85
+ text-decoration: underline
86
+ }
87
+
88
+ body.theme-light .lds-ring div {
89
+ border-color: #595959 transparent transparent
90
+ }
91
+
92
+ body.theme-light .font-red {
93
+ color: #fc574a
94
+ }
95
+
96
+ body.theme-light .pow-button {
97
+ background-color: #003681;
98
+ border-color: #003681;
99
+ color: #fff
100
+ }
101
+
102
+ body.theme-light #challenge-success-text {
103
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSIgdmlld0JveD0iMCAwIDI2IDI2Ij48cGF0aCBmaWxsPSIjMzEzMTMxIiBkPSJNMTMgMGExMyAxMyAwIDEgMCAwIDI2IDEzIDEzIDAgMCAwIDAtMjZtMCAyNGExMSAxMSAwIDEgMSAwLTIyIDExIDExIDAgMCAxIDAgMjIiLz48cGF0aCBmaWxsPSIjMzEzMTMxIiBkPSJtMTAuOTU1IDE2LjA1NS0zLjk1LTQuMTI1LTEuNDQ1IDEuMzg1IDUuMzcgNS42MSA5LjQ5NS05LjYtMS40Mi0xLjQwNXoiLz48L3N2Zz4=)
104
+ }
105
+
106
+ body.theme-light #challenge-error-text {
107
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZjNTc0YSIgZD0iTTE2IDNhMTMgMTMgMCAxIDAgMTMgMTNBMTMuMDE1IDEzLjAxNSAwIDAgMCAxNiAzbTAgMjRhMTEgMTEgMCAxIDEgMTEtMTEgMTEuMDEgMTEuMDEgMCAwIDEtMTEgMTEiLz48cGF0aCBmaWxsPSIjZmM1NzRhIiBkPSJNMTcuMDM4IDE4LjYxNUgxNC44N0wxNC41NjMgOS41aDIuNzgzem0tMS4wODQgMS40MjdxLjY2IDAgMS4wNTcuMzg4LjQwNy4zODkuNDA3Ljk5NCAwIC41OTYtLjQwNy45ODQtLjM5Ny4zOS0xLjA1Ny4zODktLjY1IDAtMS4wNTYtLjM4OS0uMzk4LS4zODktLjM5OC0uOTg0IDAtLjU5Ny4zOTgtLjk4NS40MDYtLjM5NyAxLjA1Ni0uMzk3Ii8+PC9zdmc+)
108
+ }
109
+
110
+ body.theme-light.feedback-report {
111
+ border: 1px solid #959595
112
+ }
113
+
114
+ body.feedback-report {
115
+ border-radius: 5px
116
+ }
117
+
118
+ a {
119
+ background-color: transparent;
120
+ color: #0051c3;
121
+ text-decoration: none;
122
+ transition: color .15s ease
123
+ }
124
+
125
+ a:hover {
126
+ color: #ee730a;
127
+ text-decoration: underline
128
+ }
129
+
130
+ .main-content {
131
+ margin: 8rem auto;
132
+ max-width: 60rem;
133
+ padding-left: 1.5rem;
134
+ padding-right: 1.5rem;
135
+ width: 100%
136
+ }
137
+
138
+ .main-content .spacer {
139
+ margin: 2rem 0
140
+ }
141
+
142
+ .main-content .loading-spinner {
143
+ height: 76.391px
144
+ }
145
+
146
+ .feedback-content {
147
+ align-content: space-between;
148
+ display: inline-grid;
149
+ height: 100vh;
150
+ margin: 0;
151
+ padding: 0
152
+ }
153
+
154
+ .feedback-content .spacer {
155
+ margin: 0
156
+ }
157
+
158
+ .heading-favicon {
159
+ height: 2rem;
160
+ margin-right: .5rem;
161
+ width: 2rem
162
+ }
163
+
164
+ @media (width <=720px) {
165
+ .main-content {
166
+ margin-top: 4rem
167
+ }
168
+
169
+ .heading-favicon {
170
+ height: 1.5rem;
171
+ width: 1.5rem
172
+ }
173
+
174
+ .feedback-content {
175
+ margin-top: 0
176
+ }
177
+ }
178
+
179
+ .main-wrapper {
180
+ align-items: center;
181
+ display: flex;
182
+ flex: 1;
183
+ flex-direction: column
184
+ }
185
+
186
+ .feedback-report .main-wrapper {
187
+ min-height: 100vh
188
+ }
189
+
190
+ .font-red {
191
+ color: #b20f03
192
+ }
193
+
194
+ .h1 {
195
+ font-size: 2.5rem;
196
+ font-weight: 500;
197
+ line-height: 3.75rem
198
+ }
199
+
200
+ .h2 {
201
+ font-weight: 500
202
+ }
203
+
204
+ .core-msg,
205
+ .h2 {
206
+ font-size: 1.5rem;
207
+ line-height: 2.25rem
208
+ }
209
+
210
+ .body-text,
211
+ .core-msg {
212
+ font-weight: 400
213
+ }
214
+
215
+ .body-text {
216
+ font-size: 1rem;
217
+ line-height: 1.25rem
218
+ }
219
+
220
+ @media (width <=720px) {
221
+ .h1 {
222
+ font-size: 1.5rem;
223
+ line-height: 1.75rem
224
+ }
225
+
226
+ .h2 {
227
+ font-size: 1.25rem
228
+ }
229
+
230
+ .core-msg,
231
+ .h2 {
232
+ line-height: 1.5rem
233
+ }
234
+
235
+ .core-msg {
236
+ font-size: 1rem
237
+ }
238
+ }
239
+
240
+ #challenge-error-text {
241
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZjNTc0YSIgZD0iTTE2IDNhMTMgMTMgMCAxIDAgMTMgMTNBMTMuMDE1IDEzLjAxNSAwIDAgMCAxNiAzbTAgMjRhMTEgMTEgMCAxIDEgMTEtMTEgMTEuMDEgMTEuMDEgMCAwIDEtMTEgMTEiLz48cGF0aCBmaWxsPSIjZmM1NzRhIiBkPSJNMTcuMDM4IDE4LjYxNUgxNC44N0wxNC41NjMgOS41aDIuNzgzem0tMS4wODQgMS40MjdxLjY2IDAgMS4wNTcuMzg4LjQwNy4zODkuNDA3Ljk5NCAwIC41OTYtLjQwNy45ODQtLjM5Ny4zOS0xLjA1Ny4zODktLjY1IDAtMS4wNTYtLjM4OS0uMzk4LS4zODktLjM5OC0uOTg0IDAtLjU5Ny4zOTgtLjk4NS40MDYtLjM5NyAxLjA1Ni0uMzk3Ii8+PC9zdmc+);
242
+ padding-left: 34px
243
+ }
244
+
245
+ #challenge-error-text,
246
+ #challenge-success-text {
247
+ background-repeat: no-repeat;
248
+ background-size: contain
249
+ }
250
+
251
+ #challenge-success-text {
252
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSIgdmlld0JveD0iMCAwIDI2IDI2Ij48cGF0aCBmaWxsPSIjMzEzMTMxIiBkPSJNMTMgMGExMyAxMyAwIDEgMCAwIDI2IDEzIDEzIDAgMCAwIDAtMjZtMCAyNGExMSAxMSAwIDEgMSAwLTIyIDExIDExIDAgMCAxIDAgMjIiLz48cGF0aCBmaWxsPSIjMzEzMTMxIiBkPSJtMTAuOTU1IDE2LjA1NS0zLjk1LTQuMTI1LTEuNDQ1IDEuMzg1IDUuMzcgNS42MSA5LjQ5NS05LjYtMS40Mi0xLjQwNXoiLz48L3N2Zz4=);
253
+ padding-left: 42px
254
+ }
255
+
256
+ .text-center {
257
+ text-align: center
258
+ }
259
+
260
+ .pow-button {
261
+ background-color: #0051c3;
262
+ border: .063rem solid #0051c3;
263
+ border-radius: .313rem;
264
+ color: #fff;
265
+ font-size: .875rem;
266
+ line-height: 1.313rem;
267
+ margin: 2rem 0;
268
+ padding: .375rem 1rem;
269
+ transition-duration: .2s;
270
+ transition-property: background-color, border-color, color;
271
+ transition-timing-function: ease
272
+ }
273
+
274
+ .pow-button:hover {
275
+ background-color: #003681;
276
+ border-color: #003681;
277
+ color: #fff;
278
+ cursor: pointer
279
+ }
280
+
281
+ .footer {
282
+ font-size: .75rem;
283
+ line-height: 1.125rem;
284
+ margin: 0 auto;
285
+ max-width: 60rem;
286
+ padding-left: 1.5rem;
287
+ padding-right: 1.5rem;
288
+ width: 100%
289
+ }
290
+
291
+ .footer-inner {
292
+ border-top: 1px solid #d9d9d9;
293
+ padding-bottom: 1rem;
294
+ padding-top: 1rem
295
+ }
296
+
297
+ .clearfix:after {
298
+ clear: both;
299
+ content: "";
300
+ display: table
301
+ }
302
+
303
+ .clearfix .column {
304
+ float: left;
305
+ padding-right: 1.5rem;
306
+ width: 50%
307
+ }
308
+
309
+ .diagnostic-wrapper {
310
+ margin-bottom: .5rem
311
+ }
312
+
313
+ .footer .ray-id {
314
+ text-align: center
315
+ }
316
+
317
+ .footer .ray-id code {
318
+ font-family: monaco, courier, monospace
319
+ }
320
+
321
+ .core-msg,
322
+ .zone-name-title {
323
+ overflow-wrap: break-word
324
+ }
325
+
326
+ @media (width <=720px) {
327
+ .diagnostic-wrapper {
328
+ display: flex;
329
+ flex-wrap: wrap;
330
+ justify-content: center
331
+ }
332
+
333
+ .clearfix:after {
334
+ clear: none;
335
+ content: none;
336
+ display: initial;
337
+ text-align: center
338
+ }
339
+
340
+ .column {
341
+ padding-bottom: 2rem
342
+ }
343
+
344
+ .clearfix .column {
345
+ float: none;
346
+ padding: 0;
347
+ width: auto;
348
+ word-break: keep-all
349
+ }
350
+
351
+ .zone-name-title {
352
+ margin-bottom: 1rem
353
+ }
354
+ }
355
+
356
+ .loading-spinner {
357
+ height: 76.391px
358
+ }
359
+
360
+ .lds-ring {
361
+ display: inline-block;
362
+ position: relative
363
+ }
364
+
365
+ .lds-ring,
366
+ .lds-ring div {
367
+ height: 1.875rem;
368
+ width: 1.875rem
369
+ }
370
+
371
+ .lds-ring div {
372
+ animation: lds-ring 1.2s cubic-bezier(.5, 0, .5, 1) infinite;
373
+ border: .3rem solid transparent;
374
+ border-radius: 50%;
375
+ border-top-color: #313131;
376
+ box-sizing: border-box;
377
+ display: block;
378
+ position: absolute
379
+ }
380
+
381
+ .lds-ring div:first-child {
382
+ animation-delay: -.45s
383
+ }
384
+
385
+ .lds-ring div:nth-child(2) {
386
+ animation-delay: -.3s
387
+ }
388
+
389
+ .lds-ring div:nth-child(3) {
390
+ animation-delay: -.15s
391
+ }
392
+
393
+ @keyframes lds-ring {
394
+ 0% {
395
+ transform: rotate(0)
396
+ }
397
+
398
+ to {
399
+ transform: rotate(1turn)
400
+ }
401
+ }
402
+
403
+ @media screen and (-ms-high-contrast:active),
404
+ screen and (-ms-high-contrast:none) {
405
+
406
+ .main-wrapper,
407
+ body {
408
+ display: block
409
+ }
410
+ }
411
+
412
+ .rtl .heading-favicon {
413
+ margin-left: .5rem;
414
+ margin-right: 0
415
+ }
416
+
417
+ .rtl #challenge-success-text {
418
+ background-position: 100%;
419
+ padding-left: 0;
420
+ padding-right: 42px
421
+ }
422
+
423
+ .rtl #challenge-error-text {
424
+ background-position: 100%;
425
+ padding-left: 0;
426
+ padding-right: 34px
427
+ }
428
+
429
+ .challenge-content .spacer {
430
+ margin: 2rem 0
431
+ }
432
+
433
+ .challenge-content .loading-spinner {
434
+ height: 76.391px
435
+ }
436
+
437
+ @media (prefers-color-scheme:dark) {
438
+ body {
439
+ background-color: #222;
440
+ color: #d9d9d9
441
+ }
442
+
443
+ body a {
444
+ color: #fff
445
+ }
446
+
447
+ body a:hover {
448
+ color: #ee730a;
449
+ text-decoration: underline
450
+ }
451
+
452
+ body .lds-ring div {
453
+ border-color: #999 transparent transparent
454
+ }
455
+
456
+ body .font-red {
457
+ color: #b20f03
458
+ }
459
+
460
+ body .pow-button {
461
+ background-color: #4693ff;
462
+ color: #1d1d1d
463
+ }
464
+
465
+ body #challenge-success-text {
466
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSIgdmlld0JveD0iMCAwIDI2IDI2Ij48cGF0aCBmaWxsPSIjZDlkOWQ5IiBkPSJNMTMgMGExMyAxMyAwIDEgMCAwIDI2IDEzIDEzIDAgMCAwIDAtMjZtMCAyNGExMSAxMSAwIDEgMSAwLTIyIDExIDExIDAgMCAxIDAgMjIiLz48cGF0aCBmaWxsPSIjZDlkOWQ5IiBkPSJtMTAuOTU1IDE2LjA1NS0zLjk1LTQuMTI1LTEuNDQ1IDEuMzg1IDUuMzcgNS42MSA5LjQ5NS05LjYtMS40Mi0xLjQwNXoiLz48L3N2Zz4=)
467
+ }
468
+
469
+ body #challenge-error-text {
470
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI0IyMEYwMyIgZD0iTTE2IDNhMTMgMTMgMCAxIDAgMTMgMTNBMTMuMDE1IDEzLjAxNSAwIDAgMCAxNiAzbTAgMjRhMTEgMTEgMCAxIDEgMTEtMTEgMTEuMDEgMTEuMDEgMCAwIDEtMTEgMTEiLz48cGF0aCBmaWxsPSIjQjIwRjAzIiBkPSJNMTcuMDM4IDE4LjYxNUgxNC44N0wxNC41NjMgOS41aDIuNzgzem0tMS4wODQgMS40MjdxLjY2IDAgMS4wNTcuMzg4LjQwNy4zODkuNDA3Ljk5NCAwIC41OTYtLjQwNy45ODQtLjM5Ny4zOS0xLjA1Ny4zODktLjY1IDAtMS4wNTYtLjM4OS0uMzk4LS4zODktLjM5OC0uOTg0IDAtLjU5Ny4zOTgtLjk4NS40MDYtLjM5NyAxLjA1Ni0uMzk3Ii8+PC9zdmc+)
471
+ }
472
+ }
473
+ </style>
474
+ <meta http-equiv="refresh" content="390">
475
+ </head>
476
+
477
+ <body class="no-js">
478
+ <div class="main-wrapper" role="main">
479
+ <div class="main-content"><noscript>
480
+ <div id="challenge-error-title">
481
+ <div class="h2"><span id="challenge-error-text">Enable JavaScript and cookies to continue</span>
482
+ </div>
483
+ </div>
484
+ </noscript></div>
485
+ </div>
486
+ <script>(function () { window._cf_chl_opt = { cvId: '3', cZone: "buzzorange.com", cType: 'managed', cNounce: '52834', cRay: '8c4b380eabbb8433', cHash: '2b68651e52d3fdb', cUPMDTk: "\/techorange\/2024\/09\/05\/qualcomm-snapdragon-x-plus\/?__cf_chl_tk=FHKb46qwdnKKt5B12ExsIG1Q1Lg3b3_NqXqWbR_0G1U-1726598366-0.0.1.1-4564", cFPWv: 'b', cTTimeMs: '1000', cMTimeMs: '390000', cTplV: 5, cTplB: 'cf', cK: "", fa: "\/techorange\/2024\/09\/05\/qualcomm-snapdragon-x-plus\/?__cf_chl_f_tk=FHKb46qwdnKKt5B12ExsIG1Q1Lg3b3_NqXqWbR_0G1U-1726598366-0.0.1.1-4564", md: "WcZPfQBWsx1Gkms8LI1hUcihc46K2adbQsUg9Z1z7Nw-1726598366-1.1.1.1-ulR.CBYjNL1Ru4u8mmsdQIuA_Ik9PbjB0CAdNcm4UvKKU75OL6JEXSuqtYJ37y9pg.mIJPC50HU0b7Wj7Yo0lEn6sqmDd0oabUZy_Eo7RDXqwM00TPJO_m9MErHfgV0Q6lSbOFZemRMmq6li9RiHUdFqJbY9QHlikqXMXQIC0sNAqHGsPZEZMBpwYhfW7DDEYPCpHsr91uAOzknfo4tDFubxQ7AdzWgFEqOV9L9LzPPfDhl9h8GJlYv7VFA0SOqiSOvuhZ776Fd1TftQg8a417EBuZKSsIDZrOhAxdu5LNYyKPiCF0dQV54yROlGjPvASbYYS69ZidKez4v4kEWQEBHlGXOsJgrV1Q.xIGjOJkogfCt0_6Q_ohdX87tzlFbzqYefNc.AsRJoxN5QDPA7ed44hzYtZuhiHgreKXq09P9KuIcn6tNQ.m5vTF.ZtQsQbZM3DMb_J9Y1SN.qSmDxpLMSJOMbnUdKkCxqL.n6ijEfiLyVW55JVulCqSphayMS.PimZKuE_W2pEFo03av7w4eh.E8G.PEt9U2S45Y9jh6WZce2m1Tlqn4IqT.plOczW3Lg8i_K8qhLqQOiEsIN4GJa9brg3BBvwEdpEXvc2zGRlT3pGoyvsakfIA81QCF9_7vIVplfChrOYGPIv6a3ApcCdpGtEtnn5AR_ylioDuNYbNhZfyJOmWOBmCJ9842QmF59l37RE4U9cnt_NxG2N_SrAWTTgyjoe3n0ZM_h_zKYk5RnUB8KPLpLQ0u_E5pvbsmCuq6dyx.apO7er.vIxOVFvyvDEn0udiA72wBKbMX43CtDu2RR8eY._wNIHnFJp4TA4Q8uxQ6PDm9pfhIYNaEWQ.8Smu_9RR8yXrWpxT3oeFd9HMhRtRIems5gX1X1QoT2KvcTEqEZXGm08HxY.XUi1YIuJ_CNU9Kfc9qohqiUOVuozwIARuEKFcs7L63nguxCJrcQpCxyPjoDYLLcdMUBFsax2BmpQ1LPoBsH9HaoOQhaA7kk5raoklBjdjUl3Cok70Y6.JPwBuU8e0B1J08X8pcMiegTyKSo58kYhmcIMHQUIuVqvGMxfnjK78yWZa2eXZoLkvlnExLgoJrPCp8TOvPY0Ki7BdUWgyRfYfS.CVIT2P.zLjzUWOUmDhe41x5vwnAGO.qTkmvn60ngscjXDqvsoymN4s0vCWVMfVhN3VczdThP5v3q4f2pWEYOhseNKxCSpLaYfB8lavy5C2lyuHXXHKa9mVIpDh2Sxi8V4oPGoqSBLnGAxciUDb6s.TQH1fBIlbJE4oaxDYQRt2lUPbdxPR89bW2mzhoIw4YlcUEJ7m050n8EW1dUs9HhZuXejXTgpQV4CB94gKY__EXeGn_CU0CrGZOgRB0YG3_AtgLNOw9eXz8Yzz7EqNiGZK90tKAyGAsJ8E78Ey9H5zBrMnmVabHFJshJE.oO6AKifA7wJVoZOHvMhBq0FDZyZBfrdwVbyz5KfFBoiLEAqqQsNcx3uKdDXXaTXlG93uumSoCCOqtEANhmHeh72OMmDsVg6TPWlyL2BaAaGOEJzYlGShwME1_zBvG1WBMNOa.ZaUWj8TfXxXdQ5d5R8XgyZZLD8mLGg663DHTB8.W57aJzAegMP6Z0jxcJlwcPxCS4JFmC8DFFvUJT_SmyQqmrKRg4hxvb5ILDnGlwG1hpvZH3EN0Mh6e94cZiKNdaC1nY0HFjQRzNeNz9RJ0YHoe6Db6HXZ47tTS21vV0WgFITh8zfCpZow0008REPAEV4i9F_gobNu4tXsJBWdLHG3ERl4bg5QB9rWxxskDOqhHTf9zQHubMLdspGtPJLTKlnIHzYV.RvPK4DH9wFR4MLb3kEk4_Ha6cVstOnPoQiTVsBY1InOFDnik0qicfru5IGSOGJ6wHBneNq5HrRYEPss5JY5tkS5xJIX95e0p0MRcWh6k0RXbQZs9FnJOGwTL2mIySlxAcuOOSyoL4bodASs.MDVxwFwPDbDC_zGshb8bByn3upBjP7D3bxHVgcn77TSxp8D4ihWWPc2lt69Xp2qILmshVEr9nfTMjxNXJHcKopNTgAp8uoCbflCP.8gHqBorZIyKvRFoQH1luyW7exzgSAcX6aXVa2yY6BIUV_dvc1w", mdrd: "QtjyWNDdPZl.YrShjwAGWvvMHnD51dhwVjocJ6d2580-1726598366-1.1.1.1-D1fYE0bQUMbyaXK8X9Z26knaJ5bxtzOBayyF.z1geoHph_89JL5m0Y.gggtEBOee49fbUwzWTuoBUoKKWfn0LD7HWcvTAs5pZkMLucZ1JeRLzxrEVpn2x4kF8AzVZLfSl5sYzFJkgLgBsXmf4kCNv1x48afr_rWl.eBfd7ehHhlnobK_Bud_beABInE_lr3ND.2Hc1cjBVw2bsEDyVaPwxUF9bXKCbaV9dabV39.Tq.fiAwtptEFLtmcnRWPt7jUSeVupdovpI69E2CrY_7eGjgvotknxydbdrN0AtQbatFF7.DTjtCDwoZWoN4dehpVKO0RyMWz5qBjdS0EJjdZyO2dGVbWqrgPZFpD87caQUBnW4oYY4sSleOSSM.8q_3nKuzq5tCkDz4os6BAL1ZrbIJl0M4xY4Muvip.LAh46jTccLrRGSrOql9r9yiaquVhC0191iOkqoSWUgp6sRtyFQPDketCoyMEnWq1jnfPanmHUMfq27ttWVpg.K7.26G1jCcp6CUvd.m177c8ocU.1CXZSDy.2v..0SJ.IIphWgXERieOioAeyrv3H7VtIMXkM9ai0Xw.d.dmIt57McMqxVWXSDAaQM49GUZIibMR7zWJybUNLe59sKvkTabLaIxmjsiXf7H6kzAR6uH2yXge_PiGB.Df5yBo7uFSRJKoNOESZPIvZXrnsTbp9B9bFHwXLHPA8VwxXZn843biGpWP6njfOodymE.PrLSyF9s4n4RSGHsk7AAckW3ZB20V3m3hVDYBypFzYjxfNFGBvsALnCS1BMjcNu68O15taPrrfyQH_lHJtkn9DCc2HX604IpKj9jFHSvXvFDAFJEh5xmluzRTjy97KwC30aCEZCE_YcN49loTvJqz7W_SKOurYZuNIvWrYSkANyP5752aXk5kl08GZrhj4k_i1ecfYrXsbxDr4_Fq62HRbnxMNFOjIitohRvrfyM7TC_.vWXexX0qAaFW16njQ7B9KiSUe3WUF.GsePI7NS6o.oRYTYikLkR6p0GNdjmXS3Ukv0eqJ54LMQT3JM5SfAz_xcT9h24_tJnAdI0aVx1XEsPMdQ.jYjWZdp7F7vM3DqBdiR2XWWjMP6Ov5AZQqfyRKb.3wmjzd79AFjuRx4FlV48XsDpqdyyKhrL15BweRI0RYkwrHkzCz8G4LT7S.NKGRerBrjFs0bkiBvrzJoADft0ctyckfOC9iD.5zQRX56p1XrIGCGICR6S7TATmBitquAQRDgV0H5SwN.yMIFvlM1uS9kusKqNrQqrN37Xfagoq0VgzQdZzJeYbEUZ1JM.Yi56AQUgF7U7AYgrsxxAbz5JnwcoJh0vD8QSElrIXAChSWTKyjgf9AS43LcnOOxp5QvHS8hcIzM.30ZyvApWi3X1R.moop_MBOWqJHFeAISUwAPiDN44V7ctxhqZdRmJWNzsOYAcEROjTdKK2nY9N0YfvzEKhcr9M8RHFzswfow1kVVvW1bZsblbciXKAi0KQ4OguduPzzZv0uQ_4utPJx9U5xqq4ZJ2BkIouoCqgN88zkem2jN9dZJ9ueoRS8DBKyk7ih6NR7RYqupEPGDKeDChX5IA8vrwAgj0MgZ6v72ElpzCWsm0nGMjBcaHmyR0yGoV76Rsm0QMrmAhmQrKmHUcawgn7lY9B1DlkfNR7WvoBH3QSBSTKaihCPzZXW_oGg7yRBpvvTNFRkpPojW42FvtpdFNepAXNqKv.HjM_WVbAO2l9hT9G4VWpxGL1s6U8UFsdl.EeccKNKczlOGguuBT3Da_AKItonSzZ0XbMkw02ZIda552.hgMWPNOYpDT89Pols.HvHH2QGCJUGH5n9eraxKzARj9b1pVDYPbhHhSMJrBHEzPlCj0E72Vr.8TjstC6Yp9M24hRi5FDIQCJK4xBvK6fUy8sEdv7qQXKM_QQh6ySxJx0heb2G3GP.Pn7G7oXvCX1FDY3Uz7nODAr7haLyli2N5S3_oXCT8fcCwQ9FvYTxaWI8t_DongLMWKMyjb1qfPUIlclOBdj9nerQfxkHVvc3BvzEpniygGerHrFiBVwwENfCrMNcFphPE.PrN.QOcTWhdHyf3MS6X1uFfhy4fYKcn8rctwV4HTL.0CTc8zeHrjdmRWNTg6FQtSQ17wVDSOhDUGrbJaO0iOBM1KgYvnSoWlmviCh6XAQL7OABF993UpHTfyikeM3X0jV49q9q5PMFsfnfkQhd6Mnl5IFpfr_h6mGb.tWxMPElEZAIyZ4Jo5Z1nYCNwL1ujZiUYKfHRss.U1F0pIOmG24jQWuO1bAGUGZ", cRq: { ru: 'aHR0cHM6Ly9idXp6b3JhbmdlLmNvbS90ZWNob3JhbmdlLzIwMjQvMDkvMDUvcXVhbGNvbW0tc25hcGRyYWdvbi14LXBsdXMv', ra: 'bm9kZQ==', d: 'VN6OT5N6jx+Ksrx+cGEdmS5HOrKBaYFhbp3vFcIcP6lGOvl7WfaCNwJ2wW8INbXjthaazVrD0KnkRMXJ4XFsm1MijlvyUDteQ5HUCndXfCoB7ff8p1hrmD/v3EpsZgwHPrBaJXu1IsrRnAynWKAwy2fZk4Mgg5fGg8b+N+2RqPiG6cxrH9yqONXTXNt27n82HDnDUr3qQBysRVGkHTp5yImHDlxjL3StX8zzAyMNEG00F3ZchpDYd8WkV7LtsYwEGm2QdNUEHyS5pATVKLumQ8awTxvtb7TnioGFCA6lrloKs/adPTin2i1whYZRb71r6ob8hXhGpzBM0a24zgIATqJZNAXLhDFRYSCmUoZcJ6YiUmmIErpLC9pQ8yX/xt3UhTtN+9FPSDmpdPP9tFayVw9L8xKp7UitOsFYpOmDXM6diur4FdzwRpX6XuFAfyL6aO0fY+fX86kZZUY3wqtjzrOnPD0YIEFE59I8EaZ3b8fa4zJNcN6/UcLAMkJDtTZ1QZ5fenr7kLJMNw5BwZWj3MeSQeWAOPhW2oY4y9qzA6MoGDhxhfn5FHg9SfvyAnxBmtiZZj8GMh2TS/JrpIqwRg==', t: 'MTcyNjU5ODM2Ni4wMDAwMDA=', cT: Math.floor(Date.now() / 1000), m: 'woM6rSm6caxZUYgIDnTm4JxCbrWESrDSkBo5xUNkjac=', i1: 'G2TNRE3Vrf+WQHHc1z1tsw==', i2: 'jbF0j4O2GvT+XPYJ1bA5ew==', zh: 'KKqQOftEx0NwiQm4SmUpfRW4Eszhw6EknOB2LQPbyVo=', uh: 'cf3Q4zoYg0xYd8OtBOnAKzgaudeos9exIBpxx9pkDb0=', hh: 'iUGLFOYyoFjA9jOvlff2BduIv1uHmYFeJGiYlE1+eXk=', } }; var cpo = document.createElement('script'); cpo.src = '/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=8c4b380eabbb8433'; window._cf_chl_opt.cOgUHash = location.hash === '' && location.href.indexOf('#') !== -1 ? '#' : location.hash; window._cf_chl_opt.cOgUQuery = location.search === '' && location.href.slice(0, location.href.length - window._cf_chl_opt.cOgUHash.length).indexOf('?') !== -1 ? '?' : location.search; if (window.history && window.history.replaceState) { var ogU = location.pathname + window._cf_chl_opt.cOgUQuery + window._cf_chl_opt.cOgUHash; history.replaceState(null, null, "\/techorange\/2024\/09\/05\/qualcomm-snapdragon-x-plus\/?__cf_chl_rt_tk=FHKb46qwdnKKt5B12ExsIG1Q1Lg3b3_NqXqWbR_0G1U-1726598366-0.0.1.1-4564" + window._cf_chl_opt.cOgUHash); cpo.onload = function () { history.replaceState(null, null, ogU); } } document.getElementsByTagName('head')[0].appendChild(cpo); }());</script>
487
+ </body>
488
+
489
+ </html>