diff --git a/.gitignore b/.gitignore
index 6301d17..8b25c74 100644
--- a/.gitignore
+++ b/.gitignore
@@ -66,3 +66,4 @@ yarn-error.log
.pnp.js
# Yarn Integrity file
.yarn-integrity
+/package-lock.json
\ No newline at end of file
diff --git a/contents/posts/operation-system/1/index.md b/contents/posts/operation-system/1/index.md
index 7df4780..520acbf 100644
--- a/contents/posts/operation-system/1/index.md
+++ b/contents/posts/operation-system/1/index.md
@@ -1,5 +1,5 @@
---
-title: "1. 운영체제의 역할과 커널의 기능"
+title: "운영체제의 역할과 커널의 기능"
description: "운영체제의 역할과 커널의 기능"
date: 2025-09-04
update: 2025-09-04
diff --git a/contents/posts/operation-system/10/index.md b/contents/posts/operation-system/10/index.md
index f7c28aa..9689900 100644
--- a/contents/posts/operation-system/10/index.md
+++ b/contents/posts/operation-system/10/index.md
@@ -1,5 +1,5 @@
---
-title: "10. 멀티 프로세스와 멀티 쓰레드의 차이 및 장단점"
+title: "멀티 프로세스와 멀티 쓰레드의 차이 및 장단점"
description: "멀티 프로세스와 멀티 쓰레드의 차이 및 장단점"
date: 2025-09-13
update: 2025-09-13
@@ -8,11 +8,11 @@ tags:
series: "프로세스와 쓰레드에 대해서 알아보기"
---
-
+
-멀티 프로세스는 운영체제에서 하나의 응용 프로그램에 대해 동시에 여러 개의 프로세스를 실행할 수 있게 하는 기술이다.
+멀티 프로세스는 운영체제에서 하나의 응용 프로그램에 대해 동시에 여러 개의 프로세스를 실행할 수 있게 하는 기술입니다.
보통은 하나의 프로그램을 실행하기 위해서 하나의 프로세스만 메모리에 생성하게 되지만, 부가적인 기능을 위해
-여러개의 프로세스를 생성하는 것이다.
+여러개의 프로세스를 생성하는 것입니다.
@@ -20,13 +20,13 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
### 어떻게 멀티 프로세스를 생성할까?
멀티 프로세스는 이전에 보았던 계층구조 프로세스 처럼 부모 프로세스가
-여러개의 자식 프로세스를 생성한다.
+여러개의 자식 프로세스를 생성합니다.
부모 프로세스는 자식 프로세스의 PID를 알고있으며 자식또한 PID와 PPID를 알고있어
-서로 통신이 가능하다.
+서로 통신이 가능합니다.
이런 성질은 각각 독립적이지만 통신이 가능하게 만들었고 멀티 프로세스의 대표적인 예가
-브라우저의 탭이라고 할 수 있다.
+브라우저의 탭이라고 할 수 있습니다.
브라우저 탭은 문제가 발생해서 닫아야 하는 상황이여도 다른 탭까지 닫히지 않고 개별적으로
운용을 할 수 있는걸 기억해보면 독립적이란 말을 더 잘 이해할 수 있을것이다.
@@ -40,10 +40,10 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
1. 안정성
-멀티 프로세스의 안정성은 각각의 프로세스가 독립적이기 떄문에 가능하다.
+멀티 프로세스의 안정성은 각각의 프로세스가 독립적이기 떄문에 가능합니다.
대표적인 예로 좀전에 설명을 했던 특정 브라우저 탭이 문제가 발생하여 닫아야 하는 상황에서
-같은 브라우저의 다른 탭까지 닫히지는 않는다.
-이런것이 독립적인 성격에 의한 안정성이라고 할 수 있다.
+같은 브라우저의 다른 탭까지 닫히지는 않습니다.
+이런것이 독립적인 성격에 의한 안정성이라고 할 수 있습니다.
@@ -54,18 +54,18 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
1. 문맥교환 (Context Switching) Overhead
-멀티 태스킹을 이루는 기술인 문맥 교환 과정에서 성능 저하가 발생할 수 있다.
+멀티 태스킹을 이루는 기술인 문맥 교환 과정에서 성능 저하가 발생할 수 있습니다.
프로세스를 컨텍스트 스위칭 하면, CPU는 다음 프로세스의 정보를 불러오기 위해
메모리를 검색하고, CPU 캐시 메모리를 초기화하며, 프로세스 상태를 저장하고,
-불러올 데이터를 준비해야 하기 떄문에, 빈번한 문맥교환이 발생하고 이 비용은 곧 오버헤드로 발생할 수 있다.
+불러올 데이터를 준비해야 하기 떄문에, 빈번한 문맥교환이 발생하고 이 비용은 곧 오버헤드로 발생할 수 있습니다.
2. 자원 공유 비효율성
-프로세스는 독립적인 메모리를 가지고, 멀티 프로세스는 독립적인 메모리 공간의 합일 것이다.
-그렇기 때문에 메모리 비효율성을 초래한다.
+프로세스는 독립적인 메모리를 가지고, 멀티 프로세스는 독립적인 메모리 공간의 합일 것입니다.
+그렇기 때문에 메모리 비효율성을 초래합니다.
@@ -74,17 +74,17 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
---
-
+
-이전에 보았던 것처럼 스레드는 하나의 프로세스 내에 있는 실행 흐름이다.
-멀티 스레드는 하나의 프로세스 안에 여러개의 실행흐름을 가지는 것이다.
-멀티 스레드 또한 멀티 프로세스 처럼 여러개의 작업을 동시 실행 할 수 있다.
+이전에 보았던 것처럼 스레드는 하나의 프로세스 내에 있는 실행 흐름입니다.
+멀티 스레드는 하나의 프로세스 안에 여러개의 실행흐름을 가지는 것입니다.
+멀티 스레드 또한 멀티 프로세스 처럼 여러개의 작업을 동시 실행 할 수 있습니다.
-이전에 보았던 것처럼 멀티 프로세스는 브라우저의 여러개의 탭을 통해 예시를 들었다.
+이전에 보았던 것처럼 멀티 프로세스는 브라우저의 여러개의 탭을 통해 예시를 들었습니다.
하지만, 멀티 스레드는 같은 브라우저라 할지라도 동일탭에 여러 실행 흐름을 말하게 되고
-예를들어 네트워크 처리 스레드, 검색 스레드 와 같이 동일한 프로세스 내 기능들을 말하게 된다.
+예를들어 네트워크 처리 스레드, 검색 스레드 와 같이 동일한 프로세스 내 기능들을 말하게 됩니다.
@@ -96,8 +96,8 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
### 프로세스보다 스레드가 가벼움
스레드는 프로세스보다 용량이 가볍다. 이유는 데이터, 코드, 힙 영역을
-프로세스와 공유해서 사용하기 때문에 내장된 정보다 프로세스보다 작기 떄문이다.
-그렇기 때문에 스레드를 제거하는 작업이 프로세스를 제거하는 작업보다 가볍다.
+프로세스와 공유해서 사용하기 때문에 내장된 정보다 프로세스보다 작기 떄문입니다.
+그렇기 때문에 스레드를 제거하는 작업이 프로세스를 제거하는 작업보다 가볍습니다.
@@ -105,7 +105,7 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
### 자원의 효율성
멀티 스레드는 하나의 프로세스 내에서 스택영역을 제외한 영역을 공유하기 때문에
-프로세스 간 통신을 사용하지 않고도 자원의 공유가 가능하여 자원을 효율적으로 사용할 수 있다.
+프로세스 간 통신을 사용하지 않고도 자원의 공유가 가능하여 자원을 효율적으로 사용할 수 있습니다.
@@ -113,20 +113,20 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
### Context Switching 비용 감소
스레드 문맥 교환 또한 오버헤드가 존재하지만, 프로세스 문맥교환과 비교했을 때,
-상대적으로 오버헤드가 적다.
+상대적으로 오버헤드가 적습니다.
이유는 프로세스 컨텍스트 스위칭 비용은 스위칭할 때마다 CPU 캐시에 있는 내용을 모두 초기화하고,
-새로운 프로세스 정보를 CPU 캐시에 적재해야 하기 떄문이다.
-하지만, 스레드 문맥교환은 스레드 개별적인 정보만 교체하면 되기 떄문에 비용이 상대적으로 낮다.
+새로운 프로세스 정보를 CPU 캐시에 적재해야 하기 떄문입니다.
+하지만, 스레드 문맥교환은 스레드 개별적인 정보만 교체하면 되기 떄문에 비용이 상대적으로 낮습니다.
## 멀티 스레드의 단점
-멀티 프로세스는 개별적인 작업으로 인해 독집적이고, 각자의 문제를 전파하지 않는다고 하였다.
+멀티 프로세스는 개별적인 작업으로 인해 독집적이고, 각자의 문제를 전파하지 않는다고 합니다.
-하지만, 멀티 스레드는 하나의 스레드가 문제가 발생하면 다른 스레드들고 영향을 받아 전체가 종료가 될 수 있다.
+하지만, 멀티 스레드는 하나의 스레드가 문제가 발생하면 다른 스레드들고 영향을 받아 전체가 종료가 될 수 있습니다.
@@ -134,14 +134,14 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
## 데드락
데드락이란 하나의 자원을 사용하기위해 여러 곳에서 접근했고, 그상황에서 교착상태가 일어났을때
-여러대의 스레드가 서로 대기하면서 무한정 기다리는 현상을 데드락이라고 한다.
+여러대의 스레드가 서로 대기하면서 무한정 기다리는 현상을 데드락이라고 합니다.
-예를들어, 스레드 1 은 자원 A을 점유하고 있는 상태에서 자원 B가 필요한 상황이다.
-그리고 스레드 2 는 자원 B를 점유하고 있는 상태에서 자원 A이 필요한 상황이다.
+예를들어, 스레드 1 은 자원 A을 점유하고 있는 상태에서 자원 B가 필요한 상황입니다.
+그리고 스레드 2 는 자원 B를 점유하고 있는 상태에서 자원 A이 필요한 상황입니다.
하지만 스레드 1은 자원 B가 필요한 상황에서 자원 A을 빌려줄 수 있는 상황이 아니고,
-스레드 2또한 자원 A이 필요한 상태에서 자원 B를 빌려줄 수 없는 상황인 것이다.
+스레드 2또한 자원 A이 필요한 상태에서 자원 B를 빌려줄 수 없는 상황인 것입니다.
이처럼 다수의 쓰레드가 같은 lock을 동시에,
-다른 명령에 의해 획득하려 할 때 서로 절대 불가능한 일을 계속적으로 기다리는 상황을 이야기 한다.
+다른 명령에 의해 획득하려 할 때 서로 절대 불가능한 일을 계속적으로 기다리는 상황을 이야기 합니다.
diff --git "a/contents/posts/operation-system/10/\353\251\200\355\213\260\355\224\204\353\241\234\354\204\270\354\212\244.png" b/contents/posts/operation-system/10/multi_process.png
similarity index 100%
rename from "contents/posts/operation-system/10/\353\251\200\355\213\260\355\224\204\353\241\234\354\204\270\354\212\244.png"
rename to contents/posts/operation-system/10/multi_process.png
diff --git "a/contents/posts/operation-system/10/\353\251\200\355\213\260\354\212\244\353\240\210\353\223\234.png" b/contents/posts/operation-system/10/multi_thread.png
similarity index 100%
rename from "contents/posts/operation-system/10/\353\251\200\355\213\260\354\212\244\353\240\210\353\223\234.png"
rename to contents/posts/operation-system/10/multi_thread.png
diff --git "a/contents/posts/operation-system/11/\353\217\231\354\213\234\354\204\261\354\235\264\354\212\210.png" b/contents/posts/operation-system/11/concurrency.png
similarity index 100%
rename from "contents/posts/operation-system/11/\353\217\231\354\213\234\354\204\261\354\235\264\354\212\210.png"
rename to contents/posts/operation-system/11/concurrency.png
diff --git a/contents/posts/operation-system/11/index.md b/contents/posts/operation-system/11/index.md
index c1ef596..df8c7dd 100644
--- a/contents/posts/operation-system/11/index.md
+++ b/contents/posts/operation-system/11/index.md
@@ -1,5 +1,5 @@
---
-title: "11. 멀티 쓰레드 프로그래밍의 동시성 이슈와 Thread-Safe 설계 방법"
+title: "멀티 쓰레드 프로그래밍의 동시성 이슈와 Thread-Safe 설계 방법"
description: "멀티 쓰레드 프로그래밍의 동시성 이슈와 Thread-Safe 설계 방법"
date: 2025-09-14
update: 2025-09-14
@@ -15,7 +15,7 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
-
+
@@ -26,7 +26,7 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
스레드 a가 좋아요 카운트를 늘리면 11가 됩니다. 하지만 스레드 a와 b는 좋아요 카운트에 동시에 접근해서 초기값 10을 받은 상태라면
스레드 b는 늘어난 11라는 숫자대신 10을 기준으로 값을 줄이게 됩니다. 그럼 최종 결과는 10이 아닌 9라는 값으로 나오게 됩니다.
-이처럼 멀티 스레드 환경에서는 하나의 자원에 동시에 접근하게 되면 이러한 문제가 발생할 수 있다.
+이처럼 멀티 스레드 환경에서는 하나의 자원에 동시에 접근하게 되면 이러한 문제가 발생할 수 있습니다.
@@ -36,7 +36,7 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
---
그럼 우리가 추구해야 할 문제는 스레드 안전한 멀티 스레드 프로그래밍을 구현할 수 있어야 한다. 이것을 구현하는
-방법에 대해 이야기 하려고 한다.
+방법에 대해 이야기 하려고 합니다.
@@ -60,7 +60,7 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
-- 공유 자원에 하나의 Thread만 접근할 수 있도록 세마포어/ 뮤텍스락을 통제하는 방법이다.
+- 공유 자원에 하나의 Thread만 접근할 수 있도록 세마포어/ 뮤텍스락을 통제하는 방법입니다.
@@ -68,10 +68,10 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
-- 공유 자원에 접근할 때 원자 연산을 이용하거나 원자적으로 정의된 접근 방법을 사용함으로써 상호 배제를 구현하는 방법이다.
+- 공유 자원에 접근할 때 원자 연산을 이용하거나 원자적으로 정의된 접근 방법을 사용함으로써 상호 배제를 구현하는 방법입니다.
- Atomic
- 공유 자원 변경에 필요한 연산을 원자적으로 분리한 뒤에 실제로 데이터의 변경이 이루어지는 시점에 Lock을 걸고,
- 데이터를 변경하는 시간 동안 다른 쓰레드의 접근이 불가능하도록 하는 방법이다.
+ 데이터를 변경하는 시간 동안 다른 쓰레드의 접근이 불가능하도록 하는 방법입니다.
@@ -79,8 +79,8 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
-- 공유 자원의 사용을 최대한 줄이고 각가의 쓰레드에서만 접근 가능한 저장소들을 사용함으로써 동시 접근을 막는 방법이다.
-- 일반적으로 공유 상태를 피할 수 없을 때 사용하는 방식이며, 전역 변수 사용을 자제하라는 뜻으로 생각하면 된다.
+- 공유 자원의 사용을 최대한 줄이고 각가의 쓰레드에서만 접근 가능한 저장소들을 사용함으로써 동시 접근을 막는 방법입니다.
+- 일반적으로 공유 상태를 피할 수 없을 때 사용하는 방식이며, 전역 변수 사용을 자제하라는 뜻으로 생각하면 됩니다.
@@ -88,9 +88,9 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
-- 쓰레드 호출과 상관 없이 프로그램에 문제가 없도록 작성하는 방법이다.
-- 어떤 함수가 한 스레드에 의해 호출되어 실행 중이라면 다른 스레드가 그 함수를 호출하더라도 그 결과가 각각에게 옳바르게 주어져야 한다.
-- 쓰레드끼리 독립적으로 동작할 수 있도록 코드를 작성하는 것으로 생각하면 된다.
+- 쓰레드 호출과 상관 없이 프로그램에 문제가 없도록 작성하는 방법입니다.
+- 어떤 함수가 한 스레드에 의해 호출되어 실행 중이라면 다른 스레드가 그 함수를 호출하더라도 그 결과가 각각에게 옳바르게 주어져야 합니다.
+- 쓰레드끼리 독립적으로 동작할 수 있도록 코드를 작성하는 것으로 생각하면 됩니다.
diff --git a/contents/posts/operation-system/12/index.md b/contents/posts/operation-system/12/index.md
new file mode 100644
index 0000000..2b9e02a
--- /dev/null
+++ b/contents/posts/operation-system/12/index.md
@@ -0,0 +1,95 @@
+---
+title: "CPU 스케줄링의 목적과 스케줄러의 종류"
+description: "CPU 스케줄링의 목적과 스케줄러의 종류"
+date: 2025-09-15
+update: 2025-09-15
+tags:
+ - 운영체제
+series: "CPU 스케줄링"
+---
+
+## CPU 할당?
+
+---
+
+지금까지 배운 내용을 토대로 프로세스는 CPU를 필요로 하며, 프로세스가 실행 된다는 말은 메모리에 올라간 데이터를 토대로 프로세스가 CPU를 할당받아 사용
+하는것을 프로세스가 실행 된다고 표현합니다. 그 과정에서 프로세스는 일정 주기마다 컨텍스트 스위칭을 통해 CPU 할당을 바꾸고 IO요청에 대해서도 대기 상태로 들어가는 등
+CPU사용에 여러 변수가 있습니다.
+
+한가지 의문점은, 누가? 어떻게? CPU를 할당하는지 배운적은 없습니다.
+여기서 CPU라는 리소스에 대한 사용을 결정짓는건 운영체제입니다.
+그리고 오늘 글의 주제인 CPU 스케줄링은 운영체제가 CPU라는 자원을 배분하는 행위를 지칭합니다.
+
+
+
+
+## CPU 스케줄링 우선순위
+
+---
+
+
+
+운영체제는 많은 프로세스에게 공정하게 CPU라는 공용자원을 배분하기 위해 고려해야 하는것이 우선순위 입니다.
+우선순위라는 기준을 매겨야 하는 이유는
+운영체제는 어떤 프로세스는 당장 처리해야 할 중요성을 띄거나, IO작업이 많거나, CPU 사용시간 자체가 길거나처럼 각자의 사정이 있고, 이 사정 가운대 효율적으로 자원을 배분해야 하기 떄문입니다.
+
+
+
+'우선순위가 높다'라는 표현은 CPU 사용에 우선권을 가집니다. 즉 먼저 처리되어야 한다 라는 뜻입니다.
+대표적으로 우선순위가 높은 프로세스는 입출력이 많은 프로세스 입니다.
+(입출력 처리가 많은 프로세스가 우선순위가 높은 이유는 아래에서 설명합니다.)
+
+대부분의 프로세스는 I/O 작업과 CPU처리를 번갈아가면서 수행하게 됩니다. 이 말은 프로세스 상태 변화에서 실행, 대기를 번갈아 가면서 사용한다는 뜻입니다.
+그렇지만 모든 프로세스가 동일한 비율로 I/O와 CPU처리를 하는것은 아닙니다. 여기서 CPU작업의 비율이 많다면 **CPU 집중 프로세스**라고 하게 되며, 반대로 I/O작업의
+비율이 많다면 **입출력 집중 프로세스** 라고 부르게 됩니다.
+
+CPU집중 프로세스는 실행상태가 많고, 입출력 집중 프로세스는 대기 상태가 많으니 입출력 집중 프로세스를 빠르게 대기 상태로 넘겨주는 것이 CPU사용에 대해서 더 효율적인
+방법일것입니다. 그렇기 떄문에 입출력 처리가 많은 프로세스가 우선순위가 높습니다.
+
+여담으로, CPU를 이용하는 작업을 **CPU 버스트**, 입출력을 이용하는 작업을 **입출력 버스트**라고 부르게 됩니다.
+
+
+
+
+이러한 우선순위는 **PCB**에 기록됩니다. **PCB** 우선순위 기준으로 먼저 처리할 프로세스를 결정하고 처리하게 됩니다.
+
+
+
+
+## 스케줄링 큐
+
+---
+
+
+
+우선순위는 **PCB**에 기록되지만, 운영체제가 매 CPU 할당 과정마다 **PCB**를 확인하고 결정하는건 비효율 적인 방식입니다.
+그렇기 때문에 프로세스는 마치 '줄을 서는것'처럼 대기하게 됩니다. 이것을 **스케줄링 큐**라고 부르게 됩니다.
+
+
+
+
+
+
+
+운영체제는 메모리로 적재되고 싶은 프로세스들을 큐에 삽입하여 줄을 세우고, CPU를 사용하고 싶거나, 특정 입출력장치를 사용하거 싶은 프로세스들을 줄세웁니다.
+이 과정에서 사용할 자원에 따라 다른 큐에서 대기하게 됩니다.
+
+운영체제가 관리하는 큐로는 **준비큐**와 **대기큐**로 이루어 져 있습니다. **준비 큐**는 말그대로 CPU를 이용하고 싶은 프로세스들이 대기하게 되고,
+
+
+
+
+
+
+
+**대기 큐**는
+입출력장치를 이용하기 위한 대기 상태에 돌입한 프로세스들이 서는 줄입니다.
+큐에 들어와 있다고 해도 항상 순서대로 작동하는 것은 아니고 **우선 순위**를 고려합니다.
+
+
+
+## 출처
+
+---
+
+[이미지 출처](https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard)
diff --git a/contents/posts/operation-system/12/priority.png b/contents/posts/operation-system/12/priority.png
new file mode 100644
index 0000000..4cdb917
Binary files /dev/null and b/contents/posts/operation-system/12/priority.png differ
diff --git a/contents/posts/operation-system/12/queue_scheduling.png b/contents/posts/operation-system/12/queue_scheduling.png
new file mode 100644
index 0000000..ea542d1
Binary files /dev/null and b/contents/posts/operation-system/12/queue_scheduling.png differ
diff --git a/contents/posts/operation-system/12/ready_queue.png b/contents/posts/operation-system/12/ready_queue.png
new file mode 100644
index 0000000..9378e7e
Binary files /dev/null and b/contents/posts/operation-system/12/ready_queue.png differ
diff --git a/contents/posts/operation-system/12/wait_queue.png b/contents/posts/operation-system/12/wait_queue.png
new file mode 100644
index 0000000..eba9c94
Binary files /dev/null and b/contents/posts/operation-system/12/wait_queue.png differ
diff --git a/contents/posts/operation-system/13/index.md b/contents/posts/operation-system/13/index.md
new file mode 100644
index 0000000..e4e4bff
--- /dev/null
+++ b/contents/posts/operation-system/13/index.md
@@ -0,0 +1,114 @@
+---
+title: "선점형과 비선점형 스케줄링의 차이 및 기아 상태와 해결 방법"
+description: "선점형과 비선점형 스케줄링의 차이 및 기아 상태와 해결 방법"
+date: 2025-09-16
+update: 2025-09-16
+tags:
+ - 운영체제
+series: "CPU 스케줄링"
+---
+
+## 선점형? 비선점형? 개요
+
+---
+
+**CPU 스케줄링**은 자원 선점 후 자원에 대한 권한이 뺏길 수 있냐 없냐에 따라 두가지로 나누게 됩니다.
+
+여기서 자원을 사용하고 있음에도 외부에서 CPU 자원을 뺏는 방식과, 한번 점유한 CPU 자원을 끝가지 사용할 수 있는 방식이 있습니다.
+
+
+
+
+## 선점형 스케줄링
+
+---
+
+> 선점의 사전적 정의는 '남보다 앞서서 차지함'이라는 뜻을 가지게 됩니다.
+
+즉, 어떤 프로세스가 CPU라는 자원을 사용하고 있음에도 운영체제가 CPU를 사용중인 프로세스로부터 자원을 강제로 빼앗아 다른 프로세스에 할당할 수 있는
+스케줄링 방식을 의미합니다.
+
+다르게 표현한다면 어떠한 프로세스도 CPU를 독점할 수 없다는 말입니다.
+
+선점형의 예시중 하나는 지금까지 보았던, 특정 주기마다 CPU에 대한 할당 권한을 다른 프로세스에게 넘겨주는 방식이 있습니다.
+
+
+
+
+
+
+
+
+## 비 선점형 스케줄링
+
+---
+
+비선점형 스케줄링이란 하나의 프로세스가 자원을 사용하고 있다면 그 프로세스가 종료되거나
+스스로 대기 상태에 접어들기 전까진 다른 프로세스가 끼어들 수 없는 스케줄링입니다.
+
+다르게 표현한다면 특정 프로세스가 CPU를 사용하기 시작했다면 자원 사용을 독점할 수 있는 방식입니다.
+
+
+
+
+
+
+
+
+## 선점, 비선점의 장 단점
+
+---
+
+대부분의 운영체제는 **선점형 스케줄링**를 사용중입니다. 그럼에도 **비선점형 스케줄링**를 사용하는 곳이 있는데 그것은 각자의 장 단점이 존재하기 때문입니다.
+
+
+
+- 선점형 스케줄링 장점
+
+> 선점형 스케줄링은 어는 한 프로세스의 자원 독점을 막고 프로세스들에 골고루 자원을 분배 할 수 있다는 장점이 있습니다.
+
+
+
+- 선점형 스케줄링 단점
+
+> 콘텍스트 스위칭이 빈번하기 떄문에 오버헤드가 많이 발생합니다.
+
+
+
+
+- 비 선점형 스케줄링 장점
+
+> 상대적으로 선점형 보다 콘텍스트 스위칭에 대한 오버헤드가 작게 발생합니다.
+
+
+
+- 선점형 스케줄링 단점
+
+> 하나의 프로세스가 작업이 끝나기를 기다려야 하기 때문에, 모든 프로세스가 골고루 자원을 사용할 수 없습니다.
+
+
+
+
+
+## 기아 상태(Starvation)
+
+---
+
+기아 상태란 우선순위가 밀린 프로세스가 영원히 자신의 우선순위까지 순서가 오지 못해 실행되지 못하는 상태를 기아 상태라고 합니다.
+
+
+
+
+## 기아 상태 해결법
+
+---
+
+이러한 기아 상태를 해결하기 위한 방법으로는
+
+**에이징** 기법을 활용하는 것입니다.
+
+기아 상태가 발생하는 이유는 항상 자신보다 높은 우선순위를 가지는 프로세스가 존재하기 떄문입니다.
+
+**에이징** 기법은 준비큐에서 대기가 길어진 프로세스들에게 우선순위를 조금씩 높여주는 방식을 사용합니다.
+결국 조금씩 우선순위가 높아진다면 언젠가는 해당 프로세스가 실행될 수 있게 됩니다.
+
diff --git a/contents/posts/operation-system/13/non_preemptive.png b/contents/posts/operation-system/13/non_preemptive.png
new file mode 100644
index 0000000..3c6b6db
Binary files /dev/null and b/contents/posts/operation-system/13/non_preemptive.png differ
diff --git a/contents/posts/operation-system/13/preemptive.png b/contents/posts/operation-system/13/preemptive.png
new file mode 100644
index 0000000..e7cedcd
Binary files /dev/null and b/contents/posts/operation-system/13/preemptive.png differ
diff --git a/contents/posts/operation-system/14/fcfs.png b/contents/posts/operation-system/14/fcfs.png
new file mode 100644
index 0000000..651e08e
Binary files /dev/null and b/contents/posts/operation-system/14/fcfs.png differ
diff --git a/contents/posts/operation-system/14/index.md b/contents/posts/operation-system/14/index.md
new file mode 100644
index 0000000..8456174
--- /dev/null
+++ b/contents/posts/operation-system/14/index.md
@@ -0,0 +1,178 @@
+---
+title: "CPU 스케줄링 알고리즘 (FCFS, SJF, SRTF, 우선순위, 라운드 로빈)"
+description: "CPU 스케줄링 알고리즘 (FCFS, SJF, SRTF, 우선순위, 라운드 로빈)"
+date: 2025-09-17
+update: 2025-09-17
+tags:
+ - 운영체제
+series: "CPU 스케줄링"
+---
+
+## 스케줄링 알고리즘 개요
+
+---
+
+스케줄링 알고리즘중 다섯가지의 알고리즘을 선점, 비선점을 통해 설명하겠습니다.
+
+
+
+- 비선점 스케줄링
+ - 선입 선처리 스케줄링 (FCFS)
+ - 최단 작업 우선 스케줄링 (SJF)
+
+
+
+- 선점 스케줄링
+ - 라운드 로빈 스케줄링
+ - 최소 잔여 시간 우성 스케줄링 (SRT)
+ - 우선순위 스케줄링
+
+
+
+# 비 선점 스케줄링
+
+
+
+
+## 선입 선처리 스케줄(FCFS)
+
+---
+
+
+
+
+
+FCFS는 **준비 큐**에 들어가있는 순서대로 CPU를 할당하는 간단한 스케줄링 입니다.
+
+하지만, FCFS 방식에는 **호위 효과**라는 문제가 있습니다.
+
+그림을 보면 프로세스 A, B, C순서대로 실행되며 각각 실행 시간이 17, 5, 2 ms가 걸리게 됩니다.
+이상황에서 프로세스 B는 실행 상태가 되기 위해 최소 17ms를 기다려야 하며, 프로세스 c는 22ms를 기다리게 됩니다.
+
+> 이러한 현상을 **호위 효과(Convoy effect)** 라고 하며 이것이 FCFS 스케줄링의 단점입니다.
+
+
+
+
+하지만, 이러한 FCFS 방식도 배치 처리 시스템이나 작업 길이가 거의 비슷하고 사용자와 상호 작용이 필요하지 않는 환경에는
+적합하며, 멀티프로그래밍이나 실시간 시스템에서는 부적합합니다.
+
+
+
+
+## 최단 작업 우선 스케줄링(SJF)
+
+---
+
+
+
+
+
+최단작업 우선 스케줄링(SJF)는 이전 FCFS방식에서 **호위 효과**를 억제하기 위해 사용하는 방식입니다.
+
+**호위 효과**는 실행시간이 긴 프로세스 때문에 다른 프로세스가 기다리는 시간이 길다는 문제가 있고,
+이러한 문제를 실행시간이 짧은 프로세스를 먼저 시행되게 하여 해결하는 방식입니다.
+
+그림을 통해 보면 FCFS방식의 평균 대기시간은 13ms인 반면에 SJF방식의 편균대기 시간은 3ms로 줄어든것을
+확인할 수 있습니다.
+
+> 즉 SJF방식은 호위효과를 줄여 프로세스들의 평균대기시간을 줄이는 방법으로 이해하면 됩니다.
+
+하지만, 이러한 방식도 문제가 있는데, 실행 시간이 긴 프로세스가 **기아**상태에 빠지기 쉽다는 것입니다.
+
+이러한 방식은 평균 대기 시간을 중요하게 여기는 시스템에 적합하며, 실시간 시스템이나 사용자 대화형 시스템에 부적합하게 됩니다.
+
+
+
+
+# 선점 스케줄링
+
+
+
+
+## 라운드 로빈 스케줄링
+
+---
+
+
+
+
+
+라운드 로빈 스케줄링은 선입 선처리 방식(FCFS)방식에서 **타임 슬라이스**가 더해진 방식입니다.
+여기서 말하는 **타임 슬라이스**는 CPU를 사용할 수 있는 정해진 시간을 의미합니다.
+
+그림에서처럼 타임 슬라이스가 4ms이면 한번에 4ms까지 CPU를 할당받을 수 있고, 그 이후는 큐 가장 뒤로 들어가며
+콘텍스트 스위칭이 일어나게 됩니다.
+
+
+
+> 라운드 로빈 방식의 중요한 포인트는 **슬라이스 크기**입니다.
+
+만약 슬라이스 크기가 지나치게 크다면 **FCFS**방식과 다를게 없을 것이고, 지나치게 작다면 콘텍스트 스위칭으로 인한
+오버헤드가 많이 발생할 것입니다.
+
+
+
+
+## 최소 잔여 시간 우선 스케줄링 (SRT)
+
+---
+
+
+
+
+
+최단 작업 우선 알고리즘(SJF) 그리고 라운드 로빈 알고리즘을 합친 형태입니다.
+즉 작업 시간이 짧은 프로세스를 먼저 실행하되, 타임슬라이스 보다 큰 프로세스는 다시 큐 뒤로 보내고 작업을 이어가는 방식입니다.
+
+위 알고리즘은 특이한 점이 있어서 상세히 설명하겠습니다.
+
+
+
+### SRT 동작 방식
+
+1. 새로운 프로세스가 도착하면 그 프로세스의 남은 실행 시간을 계산합니다
+2. 준비 큐에 있는 프로세스 중에서 현재 실행 중인 프로세스를 포함하여 가장 짧은 실행 시간을 가진 프로세스에 CPU를 할당합니다
+3. 만약 새로운 프로세스가 도착하고 현재 실행 중인 프로세스 보다 남은 실행 시간이 더 짧다면 현재 프로세스는 중단되고 CPU는 새 프로세스에 할당되는 '선점'이 발생합니다.
+4. 선점이 발생하면 운영체제는 콘텍스트 스위칭으로 CPU자원을 현재 프로세스에서 새 프로세스로 교체합니다.
+5. 선점된 프로세스는 준비 큐로 이동합니다.
+
+
+
+SRT또한 SJF와 비슷한 장 단점을 공유하는데, 평균 대기 시간을 최소화 하는 장점을 가지지만, 작업 시간이 긴
+프로세스는 CPU 할당을 받기 어렵다는 단점이 있습니다.
+
+
+
+
+## 우선 순위 스케줄링
+
+---
+
+우선순위 스케줄링은 우선순위를 부여하고, 가장 높은 우선순위를 가진 프로세스부터 실행하는 알고리즘 입니다.
+만약 같은 우선순위가 있다면 선입 선처리로 처리 됩니다.
+
+이러한 우선순위 알고리즘 방식은 기아(Starvation) 현상을 동반하며 이는 에이징 방식으로 해결가능 하다고 이전 파트에서 설명했으니
+넘어가겠습니다.
+
+
+
+
+
+
+
+
+
+## 출처
+
+---
+
+[이미지 출처](https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard)
+
+[SRT 출처](https://devshovelinglife.tistory.com/977)
+
+
+
+
+
+
diff --git a/contents/posts/operation-system/14/round_robin.png b/contents/posts/operation-system/14/round_robin.png
new file mode 100644
index 0000000..a81078a
Binary files /dev/null and b/contents/posts/operation-system/14/round_robin.png differ
diff --git a/contents/posts/operation-system/14/sjf.png b/contents/posts/operation-system/14/sjf.png
new file mode 100644
index 0000000..da9e968
Binary files /dev/null and b/contents/posts/operation-system/14/sjf.png differ
diff --git a/contents/posts/operation-system/14/srt.png b/contents/posts/operation-system/14/srt.png
new file mode 100644
index 0000000..d2fa54e
Binary files /dev/null and b/contents/posts/operation-system/14/srt.png differ
diff --git a/contents/posts/operation-system/15/index.md b/contents/posts/operation-system/15/index.md
new file mode 100644
index 0000000..e43564d
--- /dev/null
+++ b/contents/posts/operation-system/15/index.md
@@ -0,0 +1,95 @@
+---
+title: "멀티 레벨 큐와 멀티 레벨 피드백 큐 스케줄링"
+description: "멀티 레벨 큐와 멀티 레벨 피드백 큐 스케줄링"
+date: 2025-09-18
+update: 2025-09-18
+tags:
+ - 운영체제
+series: "CPU 스케줄링"
+---
+
+## 다단계 큐 스케쥴링(Multilevel queue scheduling)
+
+---
+
+멀티 레벨 스케줄링은 **우선순위** 스케줄링의 발전된 형태입니다.
+아래 그림을 통해 설명 하면,
+
+
+
+
+
+
+
+이전에는 준비상태에 해당하는 단 하나의 큐만 사용하여 스케줄링을 진행하였는데,
+멀티레벨 스케줄링은 우선순위에 따른 n개의 큐를 이용하는 방식입니다.
+
+가장 높은 우선순위에 있는 큐들을 처리하고, 가장 높은 우선순위 큐가 비게 된다면 그 아래 우선순위의 큐를 처리하게 됩니다.
+그림을 통해 이해하자면, 우선순위 0 -> 우선순위 1 -> 우선순위 2 이렇게 처리하게 되는것입니다.
+
+멀티레벨 큐의 특징으로는 각각의 큐들을 개별적으로 핸들링 할 수 있습니다.
+예를들어, 특정 큐의 타임 슬라이드와 다른 큐의 타임 슬라이드를 다르게 처리 한다던가, 혹은 스케줄링 방식 자체를
+FCFS를 적용하고 다른 곳에서는 라운드로빈을 적용하는것 처럼 개별적인 핸들링이 가능합니다.
+
+
+
+
+### 다단계 큐 스케쥴링 문제점
+
+---
+
+다단계 큐 스케줄링의 문제점으로는 **기아** 현상이 있습니다.
+
+멀티레벨 큐 방식에서는 큐간의 이동이 불가능합니다. 그렇기 떄문에 우선순위가 낮은 곳에 배정받은 프로세스들은
+이전에 보았던 **에이징**방식을 사용할수 없습니다. 그렇기 때문에 이러한 방식은 우선순위가 올때 까지 기다려야 하는
+기아 현상을 문제로 가지고 있습니다.
+
+이러한 방식의 해결법은 아래 설명할 다단계 피드백 큐 스케줄링으로 해결이 가능합니다.
+
+
+
+
+## 다단계 피드백 큐 스케줄링(multilevel feedback queue scheduling)
+
+---
+
+
+
+
+
+다단계 피드백 큐 스케줄링 같은경우는 프로세스들이 큐 사이로 이동할 수 있습니다. 그렇기 때문에 이전 방식에서 보았던
+**기아**현상을 직접적으로 해결할 수 있습니다.
+
+
+
+### 다단계 피드백 큐 스케줄링 특징
+
+
+이러한 이동가능한 점 때문에 **멀티 레벨 큐**와 다른 점이 있습니다.
+**멀티 레벨 피드백 큐**는 처음 생성된 프로세스가 우선순위가 가장 높은 큐로 삽입이 됩니다. 그 이후 CPU를 할당받고
+타임슬라이드 동안 실행되며, 이 실행이 끝나게 된다면 다음 우선순위 큐로 넘어 갑니다(우선순위가 낮아짐). 또 다음 우선순위
+큐에서 실행이 끝나지 않는다면 또 다음 우선순위로 넘어가고 이 과정을 반복합니다.
+
+이렇게 우선순위가 낮아지는 방식을 사용함으로써 자동으로 **CPU 버스트**가 많은 프로세스는 우선순위가 낮아지고,
+**IO 버스트**가 많은 프로세스는 상대적으로 우선순위가 높아질것입니다.
+
+### 기아 해결
+
+또한, 프로세스들이 이동가능 하기 때문에 우선순위가 낮아져 **기아**상태에 빠진 프로세스에는 **에이징**기법을 적용해
+다시 우선순위를 높이게 됩니다.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/contents/posts/operation-system/15/multi_feedback_queue.png b/contents/posts/operation-system/15/multi_feedback_queue.png
new file mode 100644
index 0000000..03ff975
Binary files /dev/null and b/contents/posts/operation-system/15/multi_feedback_queue.png differ
diff --git a/contents/posts/operation-system/15/multilevel_queue.png b/contents/posts/operation-system/15/multilevel_queue.png
new file mode 100644
index 0000000..b5609b0
Binary files /dev/null and b/contents/posts/operation-system/15/multilevel_queue.png differ
diff --git a/contents/posts/operation-system/16/concurrency.png b/contents/posts/operation-system/16/concurrency.png
new file mode 100644
index 0000000..0cf559d
Binary files /dev/null and b/contents/posts/operation-system/16/concurrency.png differ
diff --git a/contents/posts/operation-system/16/execution_order.png b/contents/posts/operation-system/16/execution_order.png
new file mode 100644
index 0000000..92b6abe
Binary files /dev/null and b/contents/posts/operation-system/16/execution_order.png differ
diff --git a/contents/posts/operation-system/16/index.md b/contents/posts/operation-system/16/index.md
new file mode 100644
index 0000000..13593e6
--- /dev/null
+++ b/contents/posts/operation-system/16/index.md
@@ -0,0 +1,120 @@
+---
+title: "병행성과 병렬성의 차이 및 프로세스 동기화의 필요성"
+description: "병행성과 병렬성의 차이 및 프로세스 동기화의 필요성"
+date: 2025-09-19
+update: 2025-09-19
+tags:
+ - 운영체제
+series: "프로세스 동기화"
+---
+
+## 병행성(Concurrency)
+
+---
+
+
+
+
+병행성은 다른 말로 **동시성**이라고 부르는 용어입니다.
+이전까지 보았던 싱글 코어에서 프로세스를 처리하기 위해 많은 프로세스들을 **컨텍스트 스위칭**을 통해 효율적으로 프로세스를 처리했던것 기억할것 입니다.
+이경우 프로세스를 동시에 처리한다고 표현하지만 사실 이는 빠른 속도로 프로세스를 스위칭해서 실행시키는 것이지 실제로 동시에 실행되는 것은 아닙니다.
+
+동시성의 핵심 키워드는 **동시에 처리되게 보이는것**입니다.
+
+
+
+
+## 병렬성(Parallelism)
+
+---
+
+
+
+병렬 처리는 프로그램의 독립적인 작업을 동시에 실행할 수 있는 능력입니다. 이러한 작업은
+다른 프로세스 코어 단위에서, 혹은 분산 시스템 처럼 완전히 다른 컴퓨터에서 동시에 실행될 수 도 있습니다.
+
+병렬성의 핵심 키워드는 **실제로 동시에 처리되고 있는것**입니다.
+
+
+
+
+
+## 동기화
+
+---
+
+동시다발적으로 실행되는 프로세스들은 공동의 목적을 수행하기 위해 서로 협력하며 영향을 주고 받기도 합니다.
+조금 전 설명했던 **동시성**, **병렬성** 모두 동시다발적으로 수행되는 환경입니다.
+
+이런 환경의 예시를 하나들면, 워드 프로세스가 있습니다. 해당 프로세스는 글을 쓸수도 있고, 쓰여진 글을 읽을 수도 있고,
+맞춤법을 검사하는 기능도 있습니다. 하지만 해당 프로세스가 따로 동작하는 것이 아닌 모두 하나의 프로그램처럼 보여지고 있습니다.
+
+이런 상황을 **동시 다발적**이란 표현을 통해 하고, 이런 동시 다발적인 상황의 **수행 시기**를 맞춰주는 것이
+**동기화**라고 합니다.
+
+
+
+### 수행 시기를 맞추다?
+
+이전에 설명한 **수행 시기**를 맞추다는 말은 추상적입니다.
+
+이를 두가지 관점으로 볼 수 있습니다.
+
+1. 실행 순서 제어: 프로세스를 올바른 순서대로 실행하는것
+2. 상호 배제: 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하는 것
+
+다시 말해 **동기화**는 실행 순서를 제어하는 **동기화**와, **상호 배제**를 위한 동기화가 있습니다.
+
+
+
+
+## 1. 실행 순서를 제어하는 동기화
+
+---
+
+
+
+실행 순서를 제어한다는 것은 요리 레시피 순서를 지키는것과 같습니다.
+재료를 준비하고, 손질하고, 요리하는 이런 일련의 과정을 지켜 보았을 때
+재료 손질이 준비보다 먼저일 수 없고, 요리또한 손질보다 먼저일 수 없습니다.
+
+프로세스도 마찬가지로 무언가를 읽게 하였는데 읽은 대상이 생성 되어있고, 작성되어있어야 합니다.
+이런 것을 **실행 순서**라고 표현하며 이것을 지키게 하는 것을 **동기화**라고 표현합니다.
+
+
+
+
+
+## 2. 상호 배제를 위한 동기화
+
+---
+
+**상호 배제**란 공유가 불가능한 자원의 동시 사용을 피하기 위해 사용하는 알고리즘입니다.
+여기서 말하는 공유가 불가능한 자원은 실제로 공유하면 안되는 자원이 아닌, 동시 사용하는 경우 문제가 발생하는
+자원입니다.
+
+아래 예시를 통해서 보면
+
+
+
+프로세스A는 현재 잔고에서 2만원을 더하고, 프로세스B는 현재 잔고에서 5만원을 더합니다.
+이러한 경우 총합 7만원을 더하는 형태가 될것입니다.
+
+하지만 프로세스A가 값을 더하고(12만원) 저장하기 전에 **콘텍스트 스위칭**이 일어난다면 다음 프로세스B는
+저장하기 전 값을 조회하고(10만원) 자신의 값을 저장할것 입니다(15만원).
+다시 프로세스 A로 돌아오면 12만원을 저장하고 프로세스 B로 돌아오면 15만원을 저장합니다.
+이과정에서 서로의 결과를 무시하는 방향으로 진행되고 최종적으로 마지막에 저장한 값은 다른 프로세스의 결과를
+반영하지 않는 상태가 됩니다.
+
+이런 상황은 동시에 사용하는 자원에 대해 **동기화**를 이루지 못해서 발생한 경우이고, 이 경우 **상호 배제를 위한 동기화**
+를 진행해야 합니다.
+
+
+
+
+## 출처
+
+---
+
+[동시성, 병렬성 출처](https://www.baeldung.com/cs/concurrency-vs-parallelism)
+[이미지 출처](https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard)
diff --git a/contents/posts/operation-system/16/mutual_exclusion.png b/contents/posts/operation-system/16/mutual_exclusion.png
new file mode 100644
index 0000000..634cc9c
Binary files /dev/null and b/contents/posts/operation-system/16/mutual_exclusion.png differ
diff --git a/contents/posts/operation-system/16/parallelism.png b/contents/posts/operation-system/16/parallelism.png
new file mode 100644
index 0000000..8593154
Binary files /dev/null and b/contents/posts/operation-system/16/parallelism.png differ
diff --git a/contents/posts/operation-system/17/critical_section.png b/contents/posts/operation-system/17/critical_section.png
new file mode 100644
index 0000000..1e00829
Binary files /dev/null and b/contents/posts/operation-system/17/critical_section.png differ
diff --git a/contents/posts/operation-system/17/index.md b/contents/posts/operation-system/17/index.md
new file mode 100644
index 0000000..5f1be8b
--- /dev/null
+++ b/contents/posts/operation-system/17/index.md
@@ -0,0 +1,60 @@
+---
+title: "임계구역과 경쟁상태"
+description: "임계구역과 경쟁상태"
+date: 2025-09-20
+update: 2025-09-20
+tags:
+ - 운영체제
+series: "프로세스 동기화"
+---
+
+### 공유자원
+
+---
+
+동시에 실행되는 프로세스에서 **공통**으로 사용하는 자원을 우리는 **공유자원**이라고 부릅니다.
+
+
+
+
+## 임계구역(Critical Section)
+
+---
+
+공유 자원을 사용하는 여러개의 프로세스 중, 해당 공유 자원에 접근하는 코드 영역을 **임계 구역**이라고 부릅니다.
+
+두 개 이상의 프로세스가 임계 구역에 진입하고자 하면 둘 중 하나는 대기해야 합니다. 임계 구역에 먼저 진입한 프로세스의
+작업이 마무리되면 그제서야 기다렸던 프로세스가 임계 구역에 진입 합니다.
+
+
+
+
+
+
+
+## 경쟁상태(Race Condition)
+
+---
+
+**임계 구역**은 두 개 이상의 프로세스가 동시에 실행되면 안 되는 영역이지만, 잘못된 실행으로 여러 프로세스가
+**공유 자원**을 사용하는 경우에 문제가 발생합니다.
+이러한 문제를 **경쟁 상태**라고 합니다.
+
+이러한 **경쟁 상태**는 데이터의 일관성이 깨지는 문제를 발생시킵니다.
+
+
+
+
+## 운영체제가 임계구역 문제를 해결하는 세가지 원칙
+
+---
+
+### 1. 상호배제: 한 프로세스가 임계 구역에 진입했다면 다른 프로세스가 들어올 수 없다.
+### 2. 진행: 임계구역에 어떤 프로세스도 진입하지 않았다면 진입하고자 하는 프로세는 들어갈 수 있어야 한다.
+### 3. 유한 대기: 한 프로세스가 임계구역에 진입하고 싶다면 언젠가는 임계구역에 들어갈 수 있어야 한다.(무한정 대기x)
+
+## 출처
+
+---
+
+[이미지 출처](https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard)
diff --git a/contents/posts/operation-system/18/index.md b/contents/posts/operation-system/18/index.md
new file mode 100644
index 0000000..5c8619c
--- /dev/null
+++ b/contents/posts/operation-system/18/index.md
@@ -0,0 +1,252 @@
+---
+title: "상호배제와 동기화 기법"
+description: "상호배제와 동기화 기법"
+date: 2025-09-21
+update: 2025-09-21
+tags:
+ - 운영체제
+series: "프로세스 동기화"
+---
+
+## 상호배제(Mutual Exclusion)
+
+---
+
+상호배제(Mutual Exclusion)는 여러 프로세스나 스레드가 동시에 같은 공유 자원에 접근하는 것을 막는 메커니즘입니다.
+
+일상생활에서 비유하면, 화장실 사용과 같습니다.
+한 번에 한 사람만 화장실을 사용할 수 있고, 다른 사람들은 기다려야 합니다.
+컴퓨터 시스템에서도 마찬가지로 특정 자원은 한 번에 하나의 프로세스만 사용할 수 있어야 합니다.
+
+
+
+## 왜 상호배제가 필요할까?
+현대 운영체제는 멀티태스킹 환경에서 여러 프로세스가 동시에 실행됩니다.
+이때 프로세스들이 공유하는 자원(메모리, 파일, 데이터베이스 등)에 동시에 접근하면 다음과 같은 문제가 발생할 수 있습니다.
+
+### 1.경쟁 상황(Race Condition)
+
+두 프로세스가 동시에 같은 데이터를 수정하려 할 때, 실행 순서에 따라 결과가 달라지는 상황입니다.
+예를 들어, 은행 계좌 잔액을 동시에 업데이트하는 두 거래가 있다면, 최종 잔액이 예상과 다를 수 있습니다.
+
+### 2. 데이터 일관성 파괴
+
+여러 프로세스가 동시에 데이터를 수정하면 데이터의 무결성이 깨질 수 있습니다. 이는 시스템 전체의 신뢰성에 큰 영향을 미칩니다.
+
+
+
+
+## 동기화 기법
+
+---
+
+이런 **상호 배제**에 대해 방지하는 방법으로는 **뮤텍스**, **세마포어**, **모니터** 기법이 있습니다.
+
+
+
+
+## 뮤텍스 락(Mutex lock)
+
+---
+
+**뮤텍스 락**의 풀네임은 **Mutual Exclusion Lock**입니다. 즉 상호 배제 단어에 lock을 붙인 단어와 일치합니다.
+
+이 말은 상호배제를 구현하기 위해 **Locking**방식을 사용하는 방법입니다.
+
+**뮤텍스 락**은 화장실 사용에 비유해보겠습니다.
+
+
+
+
+
+화장실은 한칸에 한사람만 받을 수 있습니다. 칸에 사람이 들어가있다면 해당 칸에 다른 사람이 들어올 수 없습니다.
+다른 사람이 들어오는 시점은 먼저 사용하던 사람이 해당 칸을 나가게 되면 사용할 수 있습니다.
+
+이 내용을 설명하는 이유는, 위 방식의 흐름이 뮤텍스 락과 동일하기 때문입니다.
+
+간단한 **뮤텍스락**을 코드를 통해서 보겠습니다.
+
+**자물쇠**에 해당하는 전역변수 하나, 그리고 해당 **자물쇠**를 잠구고, 푸는 두가지 함수만 있으면 구현가능합니다.
+
+
+
+
+````java
+acquire(){
+ while (lock == true){
+ .....
+ }
+
+ lock = true;
+}
+````
+
+````java
+release(){
+ lock = false;
+ }
+````
+
+
+
+해당 함수들은 차례대로 화장실 문이 잠겼는지 확인하고 잠기지 않았다면 들어가서 잠구는 함수 **Acquire**,
+그리고 화장실을 나올때 잠금을 해제 하는 **Release**로 볼 수 있습니다.
+
+이 함수를 아래 수도코드 처럼, 임계 구역 들어가기전, 나온 후 에 사용하게 되면
+
+````java
+acquire();
+// 임계 구역
+release();
+````
+
+**lock**여부를 확인 한 후, 들어가도 되면 본인이 **lock**을 걸고 이미 **lock**이 걸려있다면
+임계 구역 코드 전에서 계속 기다리게 됩니다.
+
+
+
+### 뮤텍스 락의 단점
+
+
+하지만, 이런 방식에는 큰 문제가 있는데 **바쁜대기(Busy Wait)** 을 수행하게 됩니다.
+명칭 그대로 대기를 하는 상황임에도 바쁘게 행동하는 것을 말하게 됩니다.
+
+**대기**를 하는 상황에 행동을 하는것은 **lock 확인**작업에 **CPU**를 사용하겠다는 것을 의미하고,
+이런 기다림은 해당 **lock** 이 풀릴떄까지 지속됩니다. 즉, 비효율적입니다.
+
+
+
+
+## 세마포(semaphore)
+
+---
+
+**세마포**는 동기화 방식중 하나입니다. **뮤텍스 락**과 비교하면 공유자원의 갯수를 다루는 방식이 다릅니다.
+**뮤텍스 락**은 공유자원이 하나라고 가정하고 라킹을 수행하지만, **세마포**는 공유 자원이 여러 개 있을경우
+각 프로세스는 해당 공유자원에 접근이 가능합니다.
+
+마치 공중화장실에서 화장신 칸 수 만큼 공유자원이 있고, 각 칸에 사람이 들어가는 것을 관리하는 방식입니다.
+
+
+
+**세마포**는 사진과 같은 **철도 신호기**에서 유래한 단어 입니다. 그렇기 때문에 철도 신호와 같은 방식을 사용합니다.
+
+**뮤텍스 락**은 공유 자원을 **잠금**, **해제**를 수행하면서 해당 자원을 관리하지만,
+
+**세마포**의 경우 **빨간불**, **초록불** 처럼 가도 되는지, 멈춰야 하는지 상태를 알려줍니다.
+
+**세마포**도 간단하게 코드로 구현이 가능합니다.
+
+먼저 **공유자원의 갯수**를 나타내는 전역 변수 한개와, 임계구역에 들어가도 되는지, 기다려야 할지 알려주는 함수 **Wait**,
+그리고 기다리고 있는 프로세스에게 **이제 출발하라**를 나타내는 **Signal**함수가 있습니다.
+
+
+
+````java
+wait() {
+ while(S <= 0){
+
+ }
+ S--;
+}
+````
+
+````java
+signal() {
+ S++;
+}
+````
+
+위 코드를 차례대로 **Wait**, **Signal**함수를 구현한것이고 전역 변수 S의 값이 양수, 즉 사용해도 되는
+공유자원이 있을 경우 **Wait**함수의 while문을 탈출합니다.
+
+그 경우 사용가능한 공유 자원 갯수를 하나 줄입니다.
+
+````java
+wait();
+// 임계 구역
+signal();
+````
+
+임계 구역을 나오게 되면 signal이 수행될것이고, 사용가능한 자원을 하나 반납하게 될것입니다.
+
+
+
+근데 while문이 있다면 **뮤텍스락**처럼 **바쁜 대기** 상태가 발생할 수 있다는걸 암시하게 됩니다.
+하지만 이는 세마포가 **CPU**를 사용하지 않게 구현하며 해결할 수 있습니다.
+
+
+
+## 세마포가 busy wait를 해결하는 방법
+
+---
+
+아래 두가지 함수를 통해서 세마포는 **busy wait**를 해결합니다.
+
+````java
+wait(){
+ S--;
+ if ( S < 0){
+ add this process to Queue;
+ sleep();
+ }
+}
+````
+
+````java
+signal(){
+ S++
+ if ( S <= 0){
+ remove a process p from Queue;
+ wakeup(p);
+ }
+}
+````
+위 방식은 이전처럼 while문을 통한 접근 가능여부를 체크하는 것이 아닌 만약 접근 불가능 한경우(사용가능한 공유 자원이 없을떄)
+해당 프로세스의 **PCB**를 **세마포**를 위한 **대기 큐**에 넣습니다.
+
+프로세스는 대기 큐에 들어가게 되면서 이후 해당 **PCB**를 **준비 큐**로 돌리기 전까지 **CPU**자원을 잡아 먹지 않게 됩니다.
+
+
+
+
+## 모니터
+
+---
+
+세마포 기법 자체는 동기화도구로써 좋은 효능을 보여주지만, 사용자 측면에서 불편한 점이 있다.
+임계 구역에 앞뒤로 wait, signal 함수를 사용하고 휴먼에러로 인한 실수가 발생한다면 예기치 못한 결과를 발생시킬 수 있기 때문이다.
+
+이에 **모니터**라는 동기화 도구가 생기게 된다.
+
+모니터는 공유 자원과, 공유 자원에 접근하기 위한 인터페이스를 묶어 관리합니다.
+
+
+
+
+
+
+
+이를 위해 모니터를 통해 공유 자원에 접근하고자 하는 프로세스를 큐에 삽입하고, 큐에 삽입된 순서대로 하나씩 공유 자원을 이용하도록 합니다.
+모니터는 공유 자원을 다루는 인터페이스에 접근하기 위한 큐를 만들고, 모니터 안에 항상 하나의 프로세스만 들어오도록 하여 **상호 배제**를 수행합니다.
+
+또한, 모니터는 **실행 순서**를 제어하는 동기화 또한 수횅합니다. **조건 변수**를 사용해서 실행 순서를 제어하게 됩니다.
+
+
+
+
+
+
+
+해당 그림처럼 기존 **상호 배제를 위한 큐**가 아닌 **조건 변수**에 대한 큐가 있습니다. 이 **조건 변수**는 기존처럼 **wait**, **signal** 연산을
+수횅할 수 있습니다.
+
+상호 배제를 위한 큐에서 가장 선두에 있는 프로세스A보다 특정 프로세스B가 더 먼저 시행되어야 한다면, B가 수행되기 전까지 앞선 프로세스들은 **wait** 연산을 통해
+조건 변수에 대한 큐에서 대기하게 되고, 그렇게 대기를 하게되면 최우선 시행되는 프로세스는 **B**가 될것입니다. 이런 형태로 모니터는 실행 순서를 제어합니다.
+
+## 출처
+
+---
+
+[이미지 출처](https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard)
+
diff --git a/contents/posts/operation-system/18/monitor.png b/contents/posts/operation-system/18/monitor.png
new file mode 100644
index 0000000..b1e1a05
Binary files /dev/null and b/contents/posts/operation-system/18/monitor.png differ
diff --git a/contents/posts/operation-system/18/monitor2.png b/contents/posts/operation-system/18/monitor2.png
new file mode 100644
index 0000000..0cab2b6
Binary files /dev/null and b/contents/posts/operation-system/18/monitor2.png differ
diff --git a/contents/posts/operation-system/18/semaphore.png b/contents/posts/operation-system/18/semaphore.png
new file mode 100644
index 0000000..a7fbf1b
Binary files /dev/null and b/contents/posts/operation-system/18/semaphore.png differ
diff --git a/contents/posts/operation-system/18/toilet.png b/contents/posts/operation-system/18/toilet.png
new file mode 100644
index 0000000..13c85ff
Binary files /dev/null and b/contents/posts/operation-system/18/toilet.png differ
diff --git a/contents/posts/operation-system/19/dpp.png b/contents/posts/operation-system/19/dpp.png
new file mode 100644
index 0000000..a395978
Binary files /dev/null and b/contents/posts/operation-system/19/dpp.png differ
diff --git a/contents/posts/operation-system/19/index.md b/contents/posts/operation-system/19/index.md
new file mode 100644
index 0000000..c4abd26
--- /dev/null
+++ b/contents/posts/operation-system/19/index.md
@@ -0,0 +1,212 @@
+---
+title: "교착상태와 해결 방법"
+description: "교착상태와 해결 방법"
+date: 2025-09-22
+update: 2025-09-22
+tags:
+ - 운영체제
+series: "프로세스 동기화"
+---
+
+## 교착상태란?(Dead Lock)
+
+---
+
+**교착상태**란 두개 이상의 프로세스가 각자 가지고 있는 자원을 무작정 기다리는것을 말합니다.
+
+**교착상태**를 설명하는 대표적인 예시로 **식사하는 철학자 문제**라는게 있습니다.
+
+
+
+### 식사하는 철학자
+
+---
+
+
+
+
+
+식사하는 철학자 문제는 그림처럼 동그란 원탁에 다섯명의 철학자가 앉아 있습니다. 이 철학자들은 각각 식사를 배정받고, 식사에 필요한 포크도 있습니다.
+식사를 하려면 두개의 포크를 들어야 하는 상황입니다.
+
+이를 순서도로 표현하면
+
+1. 생각을 하다가 왼쪽 포크를 들 수 있다면 든다.
+2. 생각을 하다가 오른쪽 포크를 들 수 있다면 든다.
+3. 왼쪽, 오른쪽 포크를 모두 집어들면 정해진 시간동안 식사를 한다.
+4. 식사 시간이 끝나면 오른쪽 포크를 내려놓는다.
+5. 나머지 왼쪽 포크도 내려놓는다.
+6. 1번부터 반복한다.
+
+
+
+위와같은 상황일때 모든 철학자가 왼쪽 포크를 들고 있거나, 반대쪽 포크를 들고 있다면 식사는 영원히 끝나지 않습니다. 이유는 포크라는 자원은
+철학자의 수만큼 존재하고 각 철학자는 두개의 포크를 원하는 상태에서 모든 포크를 얻을때까지 가디라기 떄문에, 모든 철학자가 포크를 기다리기만 하는
+상황이 발생합니다.
+
+이러한 문제는 **일어나지 않을 사건을 기다리며 진행이 멈춰 버리는** **교착상태**와 같습니다.
+
+여기서 철학자를 **프로세스 혹은 스레드** 포크를 **자원** 그리고 생각하는 행위가 자원을 기다리는 것이라고 생각한다면, 프로세스와 스레드는
+**자원**을 사용하기 위해 **기다리는 행위**만 계속하는 상황이 되는것입니다.
+
+
+
+
+## 교착상태 발생조건
+
+---
+
+교착상태가 발생할 조건에는 네가지가 있습니다. 차례대로 **상호배제**, **점유와 대기**, **비선점**, **원형 대기**입니다. 해당 조건은
+모두 만족해야지 **교착상태**가 발생하고 하나라도 해당하지 않는다면 **교착상태**는 발생하지 않습니다.
+
+
+
+### 1. 상호 배제
+
+교착 상태가 발생한 근본적인 원인은 해당 자원을 하나의 프로세스만 사용하기 때문입니다. 프로세스도 마찬가지로 한 프로세스가 사용하는 자원을 다른 프로세스가
+사용할 수 없을때, 교착상태가 발생합니다.
+
+### 2. 점유와 대기
+
+프로세스는 자원을 할당받은 상태에서 다른 자원을 할당받기를 기다린다면 교착 상태가 발생할 수 있습니다. 이렇게 **자원을 할당받은 상태에서 다른 자원을
+할당받기를 기다리는 상태**를 **점유와 대기**라고 합니다.
+
+### 3. 비선점
+
+이전에 **선점**, **비선점**이라는 개념을 보았습니다. **비선점**이란 프로세스나 스레드가 자원을 할당받으면 그 작업이 끝나기전까지 자원을 뻇어갈수 없다는
+특징이 있었습니다. 교착상태가 발생하는 원인은 **점유와 대기**상태중 필요한 자원을 **선점**할수 없이 계속 기다리기만 하여서 발생하는 문제 입니다.
+
+### 4. 원형 대기
+
+**자원 할당 그래프**가 원의 형태로 그려지면 교착 상태가 발생할 수 있습니다. 이렇게 프로세스들이 원의 형태로 자원을 대기하는 것을 **원형 대기**라고 합니다.
+
+
+
+
+## 교착상태 해결방법
+
+---
+
+교착상태를 해결하는 방법은 크게 세가지로 나눌수 있습니다.
+> 1. 예방
+> 2. 회피
+> 3. 검출 후 회복
+
+
+
+
+## 예방을 통한 해결
+
+---
+
+예방이란 교착상태 발생 조건에 부합하지 않게 자원을 분배하는 방식입니다.
+
+이전에 말한 **교착상태**발생 조건에 해당하는 네 가지 중 하나를 충족 하게 되면 **교착 상태**를 해결할 수 있습니다.
+
+### 상호 배제를 없애는 방식
+
+> 이론적으로는 가능하나, 모든 자원이 상호 배제를 없애기는 어렵기 때문에 비현실적이다.
+
+
+
+### 점유와 대기를 없애는 방식
+
+> 특정 자원이 먼저 점유를 수행하여 작업을 끝내고, 다른 프로세스에게 자원을 몰아주는 방식으로 해결이 가능합니다.
+>
+> 하지만 이런 방식은 자원 활용률이 낮아 진다는 문제가 있습니다.
+
+
+
+### 비선점 조건을 없애는 방식
+
+> 비선점 방식으로 작업을 다루게 되면 교착상태가 발생해도 자원을 뺏어 해결 할 수 있습니다.
+>
+> 하지만, 이런방식의 문제점은 모든 자원이 비선점 기능을 사용할 수 없다는 점에 있습니다.
+>
+> 예를들어, 프린터는 비선점 방식을 수행하는 자원입니다.
+
+
+
+### 원형 대기 조건을 없애는 방식
+
+> 모든 자원에 번홀을 붙이고 오름차순으로 자원을 할당하면 원형 대기는 방생하지 않습니다.
+> 마치 원형이 아닌, 선형으로 자원을 나열하는 방식입니다.
+>
+> 이런 방식은 자원에 일일이 번호를 붙여야 한다는점과, 특정 번호는 자원 활용률이 떨어질수 있다는 문제가 있습니다.
+
+
+
+
+## 회피를 통한 해결
+
+---
+
+회피 방식에서는 교착 상태 발생이 한정된 자원을 무분별하게 할당하였서 그렇다고 가정합니다. 그렇기 때문에 회피방식은 자원을 신중하게 할당하는 방식으로
+해결합니다.
+
+즉, 교착 상태가 발생하지 않을 정도의 양만큼만 자원을 배분하는 방법을 **교착 상태 회피**라고 부릅니다.
+
+**안정 상태**, **불안전 상태**가 있습니다. 각각 교착상태가 발생하지 않는 상태를 **안정상태**, 발생할 가능성이 있는 상태를 **불안정 상태**라고 부릅니다.
+
+**회피**를 통해 교착상태를 해결하기 위해 **안전 순서열**을 고려해서 문제를 해결합니다.
+
+> 안전순서열: 교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서를 의미합니다.
+
+
+
+내용을 종합하면 **안전 순서열**이 있고 그것을 사용할때 상태를 **안정상태**, 안전 순서열이 없을 때 상태는 **불안정상태**라고 부르게 됩니다.
+
+
+
+
+## 교착 상태 검출 후 회복
+
+---
+
+마지막으로, 교착상태를 피하기 위해서는 **검출**, **회복** 방식을 사용합니다.
+
+두가지 방식을 고려할 수 있는데,
+
+1. 선점을 통한 회복
+2. 프로세스 강제종료
+
+
+
+### 선점을 통한 회복
+
+교착 상태가 해결될 때까지 한 프로세스씩 자원을 몰아주는 방식입니다. 교착 상태가 해결될 떄까지 다른 프로세스로부터 자원을 빼앗고 할당하는 방식입니다.
+
+
+
+### 강제종료를 통한 회복
+
+교착 상태에 놓인 순간 모든 프로세스를 종료 하는 방법 혹은 프로세스를 하나씩 종료해서 확인해보는 방법이 있습니다.
+
+전자는 가장 확실하지만 모든 작업에 대한 진행사항을 잃을 가능성이 있고, 후자는 전자보다 손실에 대한 부담은 적지만 오버헤드가 커진다는 단점이 있습니다.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## 출처
+
+---
+
+[이미지 출처](https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard)
+
diff --git a/contents/posts/operation-system/2/index.md b/contents/posts/operation-system/2/index.md
index 494bdf2..d726ab3 100644
--- a/contents/posts/operation-system/2/index.md
+++ b/contents/posts/operation-system/2/index.md
@@ -1,5 +1,5 @@
---
-title: "2. CPU 스케줄링, 시스템 자원 관리"
+title: "CPU 스케줄링, 시스템 자원 관리"
description: "CPU 스케줄링, 시스템 자원 관리"
date: 2025-09-05
update: 2025-09-05
diff --git a/contents/posts/operation-system/20/index.md b/contents/posts/operation-system/20/index.md
new file mode 100644
index 0000000..ee1f307
--- /dev/null
+++ b/contents/posts/operation-system/20/index.md
@@ -0,0 +1,117 @@
+---
+title: "물리주소, 논리주소 그리고 메모리 분할 방식"
+description: "물리주소, 논리주소 그리고 메모리 분할 방식"
+date: 2025-09-23
+update: 2025-09-23
+tags:
+ - 운영체제
+series: "가상메모리, 메모리분할"
+---
+
+## 물리주소와 논리주소
+
+---
+
+
+
+메모리는 보조기억장치로 부터 실행될 프로그램을 받아서 저장합니다.
+이 저장된 메모리의 데이터를 **CPU** 혹은 **실행중인 프로그램**이 읽어 실행하게 됩니다.
+
+해당 그림은 두가지 관점으로 **주소**를 나누고 사용하는 방식을 그림으로 나타낸 것입니다.
+
+왜, 주소를 두가지 방식으로 나누어서 사용하게 되었을까요?
+
+> 이유는 메모리에 저장되어 있는 정보는 변화가 빠르고 이를 시시각각 알기어렵기 때문에
+
+가령 프로그램이 새롭게 실행될때, 삭제 될때 혹은 같은 프로그램일지라도 실행될때마다 실행되는 주소가 다르기 때문입니다.
+
+그렇기때문에 주소를 두가지 관점으로 나눠서 사용하게 됩니다.
+
+> **물리주소**란 실제로 정보가 저장된 하드웨어상 주소를 의미합니다.
+
+> **논리주소**란 실행중인 프로그램에 부여된 0번지부터 시작되는 주소를 의미합니다.
+
+여기서 주의할점은 **논리주소**는 0번지 부터 시작하는 논리적 주소이기 때문에, **고유성**이 없습니다. 하지만 **물리주소**는
+하드웨어상 주소기 때문에 **고유성**이 있습니다.
+
+
+
+
+## 메모리 할당 방식
+
+---
+
+**메모리 할당**이란 주기억 장치에 프로세스를 저장하는 과정입니다.
+이러한 과정은 크게 **두가지**로 나누어집니다.
+
+1. 연속 할당
+2. 불연속 할당
+
+
+
+## 연속할당
+
+---
+
+연속 할당은 프로세스가 연속된 메모리 영역에 할당되는 방법을 말합니다.
+각 프로세스는 연속적인 메모리 주소 범위 내에 위치하게 됩니다. 이렇게 연속할당을 하게 되면
+빈공간보다 프로세스 공간이 더 작은 경우가 있는데 이러한 현상을 **단편화**라고 합니다.
+
+연속할당의 종류로는 **고정 크기 파티셔닝**, **가변 크기 파티셔닝**이 있습니다.
+
+
+
+### 고정 크기 파티셔닝
+
+고정 크기 파티셔닝은 메모리를 고정된 크기의 파티션으로 나누어 각 파티션에 프로세스를 할당하는 방식입니다.
+예를들어, 모든 파티션을 10MB로 설정하고 파티션마다 프로세스를 할당하는 방식을 사용할 수 있습니다.
+
+이러한 방식은 모든 프로세스가 지정한 파티션 크기만큼 떨어지는것이 아니기 떄문에 효율적이지 못한 단점이 있습니다.
+
+
+
+### 가변 크기 파티셔닝
+
+가변 크기 파티셔닝은 파티션의 크기를 유동적으로 조절하는 메모리 할당 방식입니다.
+이러한 방식은 **고정 크기 파티셔닝**보다는 효율적이지만, 메모리 공간에 어떤 프로세스를 저장해야 할지 결정하는게
+복잡합니다.
+
+
+
+
+## 불연속 할당
+
+---
+
+불연속 할당은 한 프로세스를 메모리 여러 곳에 분산 저장하는 방법입니다. **페이징**, **세그멘테이션** 이 있습니다.
+
+
+
+### 페이징
+
+페이징은 프로세스의 주소 공간을 페이지라는 동일한 크기의 구획으로 나누고, 주기억 장치도 페이지와 동일한 크기의
+프레임이라는 구획으로 나눕니다. 이후 한 페이지를 한 프레임에 적재하는 방식입니다.
+
+자세한 내용은 이후에 다루게 됩니다.
+
+
+
+### 세그멘테이션
+
+프로세스의 주소공간을 세그먼트라는 단위로 나누어 주기억 장치에 적재합니다.
+프로세스는 코드, 데이터, 스택 등으로 구성되기 때문에 각각을 한 세그먼트로 나누어서 메모리에 적재합니다.
+
+이 과정에서, base주소와, limit주소를 이용하여 프로세스가 자신에게 할당된 메모리 영역만 사용하게 합니다.
+
+
+
+
+
+
+## 출처
+
+---
+
+[이미지 출처](https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard)
+
+
diff --git a/contents/posts/operation-system/20/memory_address.png b/contents/posts/operation-system/20/memory_address.png
new file mode 100644
index 0000000..812a22b
Binary files /dev/null and b/contents/posts/operation-system/20/memory_address.png differ
diff --git a/contents/posts/operation-system/21/best_fit.png b/contents/posts/operation-system/21/best_fit.png
new file mode 100644
index 0000000..da8cb02
Binary files /dev/null and b/contents/posts/operation-system/21/best_fit.png differ
diff --git a/contents/posts/operation-system/21/first_fit.png b/contents/posts/operation-system/21/first_fit.png
new file mode 100644
index 0000000..cbccac3
Binary files /dev/null and b/contents/posts/operation-system/21/first_fit.png differ
diff --git a/contents/posts/operation-system/21/index.md b/contents/posts/operation-system/21/index.md
new file mode 100644
index 0000000..021d541
--- /dev/null
+++ b/contents/posts/operation-system/21/index.md
@@ -0,0 +1,185 @@
+---
+title: "메모리 배치기법 그리고 단편화에 대해"
+description: "메모리 배치기법 그리고 단편화에 대해"
+date: 2025-09-24
+update: 2025-09-24
+tags:
+ - 운영체제
+series: "가상메모리, 메모리분할"
+---
+
+## 연속 메모리 할당
+
+---
+
+
+
+**연속 메모리 할당**이란 메모리에 프로세스가 그림처럼 **연속적**으로 배치되는 상황을 가정합니다.
+
+프로세스 A가 할당되고, 남는 주소만큼 이어서 B,C,D...를 할당하는 방식입니다.
+
+이런 방식은 예제를 위한 단편적인 설명만 가능한데 이유는 아래에서 설명할 **스와핑**과 관련이 있습니다.
+
+
+
+## 스와핑이란?
+
+---
+
+메모리는 실행시킬 프로세스를 적재하게 됩니다. 하지만, 이런 프로세스들 중에 현재 실행되지 않는 프로세스는 처리해줘야 합니다.
+메모리 리소스가 한정적이기 때문입니다.
+
+여기서 말하는 실행되지 않는 프로세스의 예시는 **I/O**작업, 오랫동안 사용되지 않는 프로세스가 이에 해당합니다.
+
+
+
+
+
+
+
+그렇다면 이러한 프로세스를 메모리에서 처리하는 방법이 필요한데 그 방법이 **스와핑** 입니다.
+
+**스와핑**은, 두가지 행위를 통해서 수행할 수 있습니다.
+
+> 스왑 아웃: 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것 (메모리 -> 스왑 영역)
+
+> 스왑 인: 스왑영역에 있던 프로세스가 다시 메모리로 옮겨지는 것 (스왑 영역 -> 메모리)
+
+또한 메모리에서 보조기억장치로 옮겨질때 **스왑영역**으로 프로세스를 옮겨두는데 그 영역을 **스왑 영역**이라고 합니다.
+
+
+
+
+## 메모리 할당 방식
+
+---
+
+프로세스는 메모리 속 비어있는 공간에 적재되어야 합니다. 비어 있는 메모리 공간에 프로세스를 연속적으로 할당하기 위해
+**세가지** 방법을 고려할 수 있습니다.
+
+1. **최초 적합(first fit)**
+2. **최적 적합(best fit)**
+3. **최악 적합(worst fit)**
+
+각방식을 아래 예시를 통해 들어보려 합니다.
+
+프로세스 A,B,C는 이미 적재되어있고, 빈 공간 A,B,C가 있습니다. 앞으로 적재할 프로세스는 20MB크기를 가지고 있으며
+적재 방식에 따라 이를 어디에 적재할지 달라지게 됩니다.
+
+
+
+
+
+## 최초 적합
+
+---
+
+최초 적합은 메모리 내의 빈 공간을 순서대로 검색하다가 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방식입니다.
+이전 그림에서 운영체제가 빈공간 A,B,C 순서대로 검색을 하였다면 가장 먼저 검색된 A 빈공간에 적재되는 방식입니다.
+
+
+
+적재후 모습은 그림과 같으며 해당 방식은 검색을 최소화 하며 **빠른 할당**을 가능하게 하는 장점이 있습니다.
+하지만, 이후에 보게 될 **외부 단편화**가 생길 가능성이 높아지게 됩니다.
+
+
+
+
+## 최적 적합
+
+---
+
+최적 적합은 운영체제가 빈공간을 **모두** 검색한 후 프로세스가 적재될 수 있는 공간 중 가장 **작은 공간**에 프로세스를
+배치하는 방식입니다.
+이전 그림에서는 빈 공간 C가 가장 적합한 크기를 가진 공간이기 때문에 그곳에 적재 됩니다.
+
+
+
+적재후 모습은 그림과 같으며 해당 방식은 적재할 프로세스 크기를 고려한 방식이기 때문에 **외부 단편화**를
+최소화 할 수 있다는 장점이 있지만, **모든**공간을 검색하는 행위가 **오버헤드**를 발생시키기 때문에 느려집니다.
+
+
+
+
+## 최악 적합
+
+---
+
+최악 적합은 운영체제가 빈 공간을 모두 검색한 후, 가장 큰 공간에 프로세스를 적재하는 방식입니다.
+
+
+
+적재 후 모습은 가장 빈공간의 크기가 큰 B에 적재되는 것을 확인할 수 있습니다. 이러한 방식은
+외부 단편화의 발생 빈도도 크며, 모든 공간을 검색한다는 비효율적인 측면도 가지고 있습니다.
+
+
+
+지금까지 **외부 단편화**라는 용어가 단점으로 설명했습니다.
+그렇다면, **외부 단편화**는 어떠한 문제일까요?
+
+
+
+## 단편화
+
+---
+
+단편화는 크게 두가지로 나눌 수 있습니다.
+
+1. 내부 단편화
+2. 외부 단편화
+
+
+
+### 내부 단편화
+
+
+
+내부 단편화 문제는 이전 **최초 적합** 사례에서 볼 수 있습니다.
+빈공간A의 크기는 30MB인데 적재한 프로세스는 20MB입니다. 이런경우 10MB의 빈공간이 생기게 되고 이러한 비어있는
+공간을 **내부 단편화**가 발생했다고 표현합니다.
+
+
+
+### 외부 단편화
+
+
+
+외부 단편화 문제는 이전 **최초 적합** 사례를 이어서 설명하겠습니다.
+현재 그림속 비어있는 공간은 **80MB**입니다. 하지만 해당 공간에 **80MB**크기의 프로세스를 적재할 수 없습니다.
+이유는, 빈 공간이 연속적인것이 아닌 프로세스C에 의해 끊어져있기 때문입니다.
+
+이처럼, 프로세스를 할당하기 어려울 만큼 작은 메모리 공간들로 인해 메모리가 낭비되는 현상을 지칭합니다.
+
+이러한 외부 단편화를 해결할 수 있는 대표적인 방안은 메모리를 **압축**하는 방법이 있습니다.
+
+
+
+## 압축
+
+---
+
+**압축**이란 흩어져 있는 빈 공간들을 하나로 모으는 방식으로 메모리 내에 저장된 프로세스를 재배치 시켜 빈 공간을
+하나의 큰 빈 공간으로 만드는 방법입니다.
+
+이러한 방식은 단점이 있는데, 메모리의 빈공간을 모으는 작업은 시스템을 중지 시킨다는 문제가 있습니다.
+또한, 메모리를 옮기는 작업이 큰 오버헤드를 만들고, 최적화 방법에 대한 정답을 고르기가 어렵습니다.
+
+
+
+
+
+
+
+
+## 출처
+
+---
+
+[이미지 출처](https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard)
+
+
+
+
+
+
+
diff --git a/contents/posts/operation-system/21/memory_stacking.png b/contents/posts/operation-system/21/memory_stacking.png
new file mode 100644
index 0000000..ed36ec0
Binary files /dev/null and b/contents/posts/operation-system/21/memory_stacking.png differ
diff --git a/contents/posts/operation-system/21/sequencial_memory.png b/contents/posts/operation-system/21/sequencial_memory.png
new file mode 100644
index 0000000..a744e9c
Binary files /dev/null and b/contents/posts/operation-system/21/sequencial_memory.png differ
diff --git a/contents/posts/operation-system/21/swaping.png b/contents/posts/operation-system/21/swaping.png
new file mode 100644
index 0000000..f955b9a
Binary files /dev/null and b/contents/posts/operation-system/21/swaping.png differ
diff --git a/contents/posts/operation-system/21/worst_fit.png b/contents/posts/operation-system/21/worst_fit.png
new file mode 100644
index 0000000..5d0e924
Binary files /dev/null and b/contents/posts/operation-system/21/worst_fit.png differ
diff --git a/contents/posts/operation-system/22/index.md b/contents/posts/operation-system/22/index.md
new file mode 100644
index 0000000..f7797b0
--- /dev/null
+++ b/contents/posts/operation-system/22/index.md
@@ -0,0 +1,232 @@
+---
+title: "페이징"
+description: "페이징"
+date: 2025-09-25
+update: 2025-09-25
+tags:
+ - 운영체제
+series: "가상메모리, 메모리분할"
+---
+
+### 연속 할당의 문제점
+
+---
+
+연속적 할당의 대표적인 문제점은 **외부 단편화**가 있습니다. 외부 단편화란 특정 프로세스를 실행시키기 위해
+필요한 공간이 있음에도 빈공간이 연속적이지 않아서 발생하는 문제입니다.
+
+이러한 문제를 해결하기 위해서는 **불연속 할당** 방식 중 대표적인 **페이징**기법을 사용할 수 있습니다.
+
+
+
+
+## 페이징이란?
+
+---
+
+
+
+페이징 기법은 프로세스를 일정한 단위로 자릅니다. 또한 프로세스가 들어갈 메모리 공간 또한 일정한 단위로 자릅니다.
+
+여기서 프로세스를 일정한 단위로 자르면 일정한 **논리 주소 공간**이 생기는데 이것을 **페이지**라고 부르며,
+일정한 단위로 잘린 메모리 **물리 주소 공간**은 **프레임**이라고 부르게 됩니다.
+
+여기서 **프레임**, **페이지**의 일정한 단위는 동일한 크기로 자르게 됩니다.
+
+이렇게 만들어진 **페이지**를 **프레임**에 할당하는 가상 메모리 관리 기법을 **페이징**기법이라고 부르게 됩니다.
+
+이렇게 일정한 크기를 정하고 불연속 할당을 수행하면 외부 단편화 문제를 줄일 수 있습니다.
+
+
+
+### 페이징에서 스와핑
+
+
+
+페이징에서도 이전과 마찬가지로 **스와핑**이 사용됩니다. 차이가 있다면 기존 연속 할당 방식 스와핑은
+프로세스 전체가 스왑영역으로 넘어가지만, **페이징 스와핑**은 사용하지 않는 특정 **페이지**만 스왑아웃
+시킬 수 있습니다.
+
+이러한 방식은 이후 **가상메모리** 방식을 사용하는데 핵심이 됩니다.
+
+
+
+## 페이지 테이블
+
+---
+
+불연속 할당 방식에는 실행순서에 대한 문제가 하나 있습니다.
+연속적 할당 방식에서는 실행순서를 CPU에게 알려줄 필요가 없습니다. 왜냐하면 실제로 물리 메모리에 연속적으로
+프로세스에 대한 정보가 있기 때문에 순서대로 실행시키면 되기 때문입니다.
+
+하지만, **불연속 할당**은 상황이 다릅니다. 메모리상 프로세스에 대한 정보가 연속적이지 않기 떄문에
+이를 실행시키는 **CPU**입장에서는 어떤 프로세스를 실행시켜야 할지 알기 어렵습니다.
+
+
+
+
+
+
+
+이를 해결하기 위해서 **페이지 테이블**이란것을 사용합니다.
+
+**페이지 테이블**은 **페이지 번호**, **프레임 번호**를 짝지어 줍니다. 그렇게 되면 **CPU**입장에서는
+**페이지 번호**만 알고있다면 **페이지 테이블**을 통해 **프레임**으로 접근이 가능하기 때문입니다.
+
+페이지 테이블은 프로세스마다 각자의 페이지 테이블을 가지게 됩니다.
+
+
+
+
+## 페이지 테이블 베이스 레지스터(PTBR)
+
+---
+
+페이지 테이블은 프로세스마다 가지고 있고, 이는 **메모리**에 저장됩니다.
+
+하지만, CPU 입장에서는 결국 **페이지 테이블**의 위치를 알아야 합니다. 이러한 기능을 수행하는게
+**CPU**내의 존재하는 **PTBR**입니다.
+
+**PTBR**은 **CPU**내에 존재하고 **페이지 테이블**의 위치를 기록합니다.
+
+
+
+해당 그림처럼 특정 프로세스 작업을 수행하기 위해서 **CPU**는 해당 **PTBR**내부 프로세스의 페이지 테이블을
+조회합니다. 이후 메모리내부 해당 페이지 테이블 주소로 넘어가서 특정 프로세스의 페이지 까지 접근하게 됩니다.
+
+
+
+
+### 비효율적인 접근
+
+---
+
+이전 **페이지 테이블**을 참조하는데 한가지 문제가 있습니다.
+
+**CPU**는 **페이지 테이블**로 접근하고, 해당 값들을 통해 실제 **페이지**로 접근합니다.
+
+즉, 하나의 조회에 대해 두가지 접근을 수행하게 됩니다. 이러한 방식은 비효율적입니다.
+그렇기 때문에 **캐싱**기능을 통해 이를 해결하고 이러한 기능을 수행하는게 **TLB**입니다.
+
+
+
+## TLB(Translation Lookaside Buffer)
+
+---
+
+
+
+**TLB**는 CPU 곁에 존재하며 이는 페이지 테이블에 대한 **캐시 메모리**입니다.
+참조 지역성에 근거해 주로 최근에 사용된 페이지 위주로 가져와서 저장합니다.
+
+여타한 캐싱 기능과동일하게 리소스가 **TLB**를 통해서 나오게 되면, **히트**했다. 그것이 아니라면
+**미스**했다 라고 표현합니다.
+
+
+
+
+
+## 페이징에서의 주소 변환
+
+---
+
+**특정 주소**에 접근하기 위해서는 두가지 관점의 정보가 필요하게 됩니다.
+
+1. 어떤 페이지 혹은 프레임에 접근하고 싶은지
+2. 접근하려는 주소가 그 페이지 혹은 프레임으로부터 얼마나 떨어져 있을지
+
+
+
+이중에서 1번은 기존 **페이지 번호**를 통해서 해결할 수 있습니다.
+하지만, 2번의 말은 조금 애매하게 들리는데 이를 풀어서 설명하면,
+하나의 **주소**내에서도 **논리** 혹은 **물리**주소에 따른 순차적인 주소가 있습니다.
+
+n번지, n+1번지, n+2번지.... 처럼 세부적인 **지점**을 의미합니다.
+
+1번 주소를 통해서 **페이지**혹은 **프레임**에 접근한다면 그 중 명확한 지점을 식별해야 하기 때문에
+
+페이징 시스템에서는 **페이지번호**, **변위**를 이용합니다.
+
+자세한 예시는 아래 그림을 통해서 하겠습니다.
+
+
+
+
+
+페이지, 페이지 테이블, 프레임을 나타내는 그림입니다. 이러한 그림은 특정 페이지에 접근하기 위해
+페이지 테이블을 참조하고 프레임 번호를 얻어 실제 메모리 프레임에 접근하는 시퀀스 입니다.
+
+만약 **CPU**가 5번페이지에 변위가 2인 곳에 접근하려고 하면 10번지로 접근하게 될것입니다.
+
+1. 5번 페이지는 1번 프레임에 있다.
+2. 1번 프레임의 시작 번지수는 8번지이다
+3. 8번지에 변위 2를 더해서 최종주소는 10이 된다.
+
+여기서 주의 할점은, 논리주소의 변위를 최종 물리 주소상 프레임 번지에 더하였다는 것입니다.
+> 이말은, 논리주소의 변위 == 물리주소의 변위 입니다.
+
+이것이 가능한 이유는 처음 페이징 방식을 사용할때 페이지와 프레임 변환과정에서 **특정 크기**로 나누게 되고,
+그 간격이 같기 때문에 논리주소의 변위랑 물리주소의 변위는 같다는 결론이 나옵니다.
+
+
+
+
+## 페이지 테이블 엔트리
+
+---
+
+페이지 테이블 엔트리는 페이지 테이블 **row**를 지칭하는 단위입니다.
+
+
+
+지금까지는 이러한 페이지 테이블에는 페이지 번호, 프레임 번호만 존재 한다고 설명했습니다.
+하지만, 다른 중요한 정보들도 있습니다.
+
+1. 유효 비트
+2. 보호 비트
+3. 참조 비트
+4. 수정 비트
+
+
+
+### 유효 비트
+
+유효비트는 해당 페이지에 접근 가능한지 여부를 알려줍니다. 대표적으로 접근 불가능 한 경우는
+**스와핑**으로 인한 해당 **페이지**가 **스왑영역**으로 들어간 경우입니다.
+
+이러한 경 **페이지 폴트**라는 예외가 발생하며, 하드웨어 인터럽트 처럼 처리 됩니다.
+
+1. CPU는 기존 작업 내역을 백업합니다.
+2. 페이지 폴트 처리 루틴을 실행합니다.
+3. 페이지 처리 루틴은 원하는 페이지를 메모리로 가져온 뒤 유효 비트를 1로 변경해줍니다.
+4. 페이지 폴트를 처리했다면 이제 CPU는 해당 페이지에 접근할 수 있게 됩니다.
+
+
+
+### 보호 비트
+
+보호비트는 페이지 보호 기능을 위해 존재합니다. 리눅스의 읽기 쓰기 권한을 생각하면 됩니다.
+해당 페이지가 읽기 전용 페이지라면 보호비트는 0을 나타내고, 읽고 쓰기가 가능하다면 1을 나타냅니다.
+
+
+
+### 참조 비트
+
+**CPU**가 접근한적 있는지 여부를 나타냅니다. 참조된 비트라면 1을 나타내며, 그렇기 않다면 0으로 유지됩니다.
+
+
+
+### 수정 비트
+
+해당 페이지에 데이터를 쓴 적이 있는 여부를 나타냅니다. 수정 여부를 확인해야 하는 이유는 **스와핑** 떄문입니다.
+만약 **CPU**가 페이지에 대한 내용을 수정했다면, 스와핑 과정에서 보조 기억장치에 있는 데이터 또한 수정해야 하기 때문입니다.
+
+
+
+
+
+## 출처
+
+---
+
+[이미지 출처](https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard)
diff --git a/contents/posts/operation-system/22/page_table.png b/contents/posts/operation-system/22/page_table.png
new file mode 100644
index 0000000..f7e7c17
Binary files /dev/null and b/contents/posts/operation-system/22/page_table.png differ
diff --git a/contents/posts/operation-system/22/paging.png b/contents/posts/operation-system/22/paging.png
new file mode 100644
index 0000000..6346487
Binary files /dev/null and b/contents/posts/operation-system/22/paging.png differ
diff --git a/contents/posts/operation-system/22/paging_address_trans.png b/contents/posts/operation-system/22/paging_address_trans.png
new file mode 100644
index 0000000..1f971ff
Binary files /dev/null and b/contents/posts/operation-system/22/paging_address_trans.png differ
diff --git a/contents/posts/operation-system/22/paging_swaping.png b/contents/posts/operation-system/22/paging_swaping.png
new file mode 100644
index 0000000..9f70f9c
Binary files /dev/null and b/contents/posts/operation-system/22/paging_swaping.png differ
diff --git a/contents/posts/operation-system/22/ptbr.png b/contents/posts/operation-system/22/ptbr.png
new file mode 100644
index 0000000..8aa525b
Binary files /dev/null and b/contents/posts/operation-system/22/ptbr.png differ
diff --git a/contents/posts/operation-system/22/pte.png b/contents/posts/operation-system/22/pte.png
new file mode 100644
index 0000000..a4934ea
Binary files /dev/null and b/contents/posts/operation-system/22/pte.png differ
diff --git a/contents/posts/operation-system/22/tlb.png b/contents/posts/operation-system/22/tlb.png
new file mode 100644
index 0000000..9159742
Binary files /dev/null and b/contents/posts/operation-system/22/tlb.png differ
diff --git a/contents/posts/operation-system/23/degree_of_multiprogramming.png b/contents/posts/operation-system/23/degree_of_multiprogramming.png
new file mode 100644
index 0000000..ccb43d4
Binary files /dev/null and b/contents/posts/operation-system/23/degree_of_multiprogramming.png differ
diff --git a/contents/posts/operation-system/23/fifo.png b/contents/posts/operation-system/23/fifo.png
new file mode 100644
index 0000000..894d7dc
Binary files /dev/null and b/contents/posts/operation-system/23/fifo.png differ
diff --git a/contents/posts/operation-system/23/index.md b/contents/posts/operation-system/23/index.md
new file mode 100644
index 0000000..d088b3d
--- /dev/null
+++ b/contents/posts/operation-system/23/index.md
@@ -0,0 +1,288 @@
+---
+title: "요구페이징을 잘 수행하기 위해서 필요한 것들"
+description: "요구페이징을 잘 수행하기 위해서 필요한 것들"
+date: 2025-09-26
+update: 2025-09-26
+tags:
+ - 운영체제
+series: "가상메모리, 메모리분할"
+---
+
+## 서론
+
+---
+
+지금까지 **가상 메모리**를 통해서 실제 물리적 메모리 보다 더 많은 프로세스를 실행할 수 있다고 배웠습니다.
+이러한 행위는 한정된 **메모리**를 어떻게 더 효율적으로 사용할까에서 출발하게 됩니다.
+
+그럼에도 더 효율적인 메모리를 이용하기 위해서 두가지 방법을 더 고려하게 됩니다.
+
+1. 불필요한 페이지를 **선별** 후 **스왑 아웃** 한다.
+2. 프로세스에게 적절한 **프레임**을 할당한다.
+
+각각 **페이지 교체 알고리즘**, **프레임 할당**이라고 부릅니다.
+
+또한, 이러한 작업은 **요구 페이징(demand paging)** 이라는 작업을 더 효율적으로 할 수 있게 돕습니다.
+
+이 글은 요구 페이징에 대해서 알아보고, 요구 페이징이 안정적으로 작동하기 위해 필연적인 페이지 교체 알고리즘과, 프레임 할당을 설명합니다.
+
+
+
+
+## 요구 페이징(demand paging)
+
+---
+
+프로세스를 메모리에 적재할 떄 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 방식을
+**요구 페이징**이라고 부릅니다.
+
+요구 페이징은 다음과 같은 플로우로 진행됩니다.
+
+1. CPU가 특정 페이지에 접근하는 명령어를 내린다.
+2. 페이지가 메모리에 존재하면 **유효비트 1**을 나타내며 해당 프레임에 접근한다.
+3. 존재 하지 않는다면 **유효비트 0**을 나타내며 **페이지 폴트**가 발생한다.
+4. **페이지 폴트**가 발생하면 해당 페이지를 메모리로 적재하고 유효비트를 1로 설정한다.
+5. 1번을 다시 시행한다.
+
+이러한 **요구 페이징**은 필요한 페이지만 그때그때 불러서 적재 후 사용한다는 의미를 나타냅니다.
+
+**요구 페이징**을 안정적으로 수행하기 위해서는 크게 두가지를 고려해야 합니다.
+첫번째는, **요구 페이징**은 메모리 기준 **Input**작업 입니다.
+그렇다면 반대로 **Output**작업도 필요하게 됩니다.
+
+왜냐하면 메모리는 한정되고 상대적으로 덜 필요한 페이지를 **스왑아웃**하는 작업도 필요하기 때문입니다.
+
+이러한 방식을 **페이지 교체** 라고 부르며, 그중 여러가지 방식이 있기 때문에 **페이지 교체 알고리즘**으로 분류하고 명명합니다.
+
+두번째는, 한정된 프레임을 잘 배분하는 것으로 **스왑 아웃**자체를 줄일 수 있기 때문에 **프레임 할당** 또한
+**요구 페이징**을 수행하기 위해 중요합니다.
+
+
+
+
+# 페이지 교체 알고리즘
+
+---
+
+페이지 교체 알고리즘은 **스왑 아웃**할 페이지를 **선별**하는 알고리즘입니다.
+그렇기 때문에 어떤 **선별 기준**에 따라 알고리즘을 나누게 됩니다.
+
+일반적으로 **기준**은 **페이지 폴트** 발생 비율입니다. **페이지 폴트**는 보조기억장치로 부터
+정보를 가져와서 메모리로 할당하여 그 정보를 불러와야 하는 비효율적인 시퀀스를 가지고 있습니다.
+이러한 **페이지 폴트** 발생 비율이 적은 교체 알고리즘을 좋다고 평가합니다.
+
+그리고 **페이지 폴트 횟수**는 **페이지 참조열**을 통해서 진행합니다.
+
+가령,
+
+> 2 2 2 3 5 5 5 3 3 7
+
+이라는 페이지 참조가 발생한다면 **페이지 참조열**은 여기서 연속된 중복을 제거한 순서입니다.
+
+> 2 3 5 3 7
+
+이 해당 순서에 **페이지 참조열**이 됩니다. 이렇게 중복을 제거하는 이유는 연속된 참조는 **페이지 폴트**대상이
+아니기 때문입니다.
+
+
+
+
+## FIFO 페이지 교체 알고리즘
+
+FIFO 페이지 교체 알고리즘은 이름 그대로 먼저 들어온 페이지를 먼저 내보내는 방식입니다.
+
+
+
+해당 그림을 통해 설명하면 2,3,1 번의 순서대로 프레임에 쌓이게 되며 마지막 1번 페이지가 적재 된 이후에는
+프레임이 가득차게 됩니다. 이후 3번은 이미 적재된 페이지이기 때문에 넘어갑니다.
+
+5번 페이지가 적재 되는 시점에 프레임은 가득 차있고, 5번페이지는 적재 되어있지 않기 때문에 **선별**후 **교체**하는
+작업이 필요합니다.
+
+여기서 **FIFO**방식은 가장 먼저들어온 페이지를 내보낸다라고 설명드린것처럼 처음들어온 **2페이지** **스왑아웃** 시키게 됩니다.
+빈 공간에 필요한 **5페이지**를 넣게 됩니다.
+
+이렇게 먼저 들어온 페이지를 먼저 내보내는것을 **FIFO 교체 알고리즘**이라고 명명합니다.
+
+하지만 이러한 방식에는 큰 단점이 있는데, 먼저 들어온 페이지가 실행 내내 사용 될 수도 있습니다.
+즉, 먼저 들어왔다고 해서 교체에 대상이 되기는 합당한 이유가 아니기 때문입니다.
+
+
+
+
+## 2차 기회 페이지 교체 알고리즘
+
+---
+
+해당 알고리즘은 **FIFO**방식을 개선한 알고리즘 입니다. 이름 처럼 한번의 기회를 더 주는 방식입니다.
+두가지 케이스가 있습니다. 기본적으로 가장 오래된 페이지를 **스왑 아웃**한다는 방식은 같습니다.
+만약 **스왑 아웃** 시점이 오게 되면, 해당 **참조 비트**를 확인합니다.
+
+CPU에 의해서 **참조** 된적이 있다면, 해당 **참조 비트**를 0으로 바꾸고 적재 시간을 현재로 변경하며,
+**참조 비트**가 0이라면 오래되면서 참조된적도 없기 떄문에 바로 **스왑 아웃** 시켜버립니다.
+
+
+
+
+## 최적 페이지 교체 알고리즘
+
+---
+
+**최적 페이지 교체** 방식은 이름그대로 최적의 방안을 찾는 알고리즘입니다.
+미래를 통해 오랫동안 사용되지 않을 페이지를 **스왑아웃** 시키면서 문제를 해결합니다.
+
+
+
+해당 그림을 통해 설명하면 5번 페이지를 요청할때 페이지 폴트가 발생하고 그 과정에서 이후 미래를 고려해서
+1번이 사용되지 않는다고 판단해 1번을 **스왑 아웃**하는 방식입니다.
+
+해당 알고리즘은 **페이지 폴트**가 가장 낮습니다.
+그렇지만, 현실적인 구현이 어렵습니다. 미래를 예측하는건 어려운 작업입니다. 그렇기 떄문에 현실적으로 가능한
+알고리즘으로 여기기 보단, **페이지 폴트**가 가장 낮다는 점을 고려하여 상대적인 **성능 평가**를 목적으로 사용합니다.
+
+다른 **교체 알고리즘**의 하한선으로 잡고 비교대상으로 쓰여집니다.
+
+
+
+
+## LRU 페이지 교체 알고리즘 (Least Recently Used Page Algorithm)
+
+---
+
+해당 알고리즘은 **최적 페이지 교체 알고리즘**을 변형해 **미래**를 예측하는것이 아닌, **과거**를 통해
+사용되지 않은 페이지를 **스왑아웃**하는 방식을 차용합니다.
+
+'최근에 사용되지 않은 페이지는 앞으로도 사용되지 않을 것이다' 라는 점을 토대로 구성됩니다.
+
+
+
+페이지마다 마지막으로 사용한 시간을 토대로 최근에 가장 사용이 적었던 페이지를 교체합니다.
+해당 그림에서는 5번 페이지가 적재될 시기에 가장 오래 사용되지 않는 **2**를 **스왑아웃** 시키는것을
+알 수 있습니다.
+
+
+
+
+## 스래싱과 프레임 할당
+
+---
+
+요구 페이징을 잘 수행하기 위해 **페이지 폴트**를 줄이는 방식을 이야기 했습니다.
+이러한 **페이지 폴트**를 줄이기 위해 **교체 알고리즘**을 적절하게 선택하는것이 중요하단것을 알게 되었습니다.
+
+하지만, **페이지 폴트**를 발생시키는 이유에는 **프레임 수의 한정**이라는 문제가 있습니다.
+프레임이 무지막지 하게 많다면 모든 프로세스를 할당할 수 있을것이고, 그렇게 되면 **스왑 아웃**이 발생할 이유도 없을것입니다.
+
+그렇기 때문에 **페이지 폴트**의 발생을 줄이기 위해 적절하게 **프레임을 할당**하는 것또한, 중요합니다.
+
+역으로 자원을 효율적으로 사용하고, 가상메모리와 같은 기법을 사용하면서 **페이징에 프로세스 실제 실행시간보다
+더큰 리소스를 사용**하는 문제가 생길 수도 있습니다.
+
+이렇게 배보다 배꼽이 큰 상황, 플어서 이야기하면
+> 페이징 시간이 프로세스 실제 실행보다 더 길어지는 상황
+
+을 **스레싱**이라고 부르게 됩니다.
+
+
+
+### 멀티 프로그래밍 정도
+
+
+
+해당 그래프는 세로축 **CPU 이용률**, 가로축 **메모리에 올라와 있는 프로세스 수**를 나타냅니다.
+그래프에서 알 수 있듯이 프로세스수가 증가하면, CPU이용률 또한 증가합니다 하지만 일정 가로축을 넘어가면
+**CPU**이용률이 줄어드는 것을 알게 됩니다.
+
+즉, 프로세스가 너무 많이 발생하면 각 프로세스에 할당된 **프레임**이 부족하고 그런 문제로 인해 **페이지 폴트**가
+자주 발생하게 됩니다.
+
+CPU를 아무리 좋은것을 사용해도 메모리 공간이 부족하면 컴퓨터 성능이 안좋아지는 이유가 이런이유입니다.
+
+
+
+
+# 프레임 할당
+
+---
+
+스래싱의 근본적 이유는 각 프로세스가 필요로 하는 **프레임**이 부족하기 때문입니다. 그렇기 떄문에
+운영체제는 **프레임**을 적절하게 할당할 수 있어야 합니다.
+
+이러한 **프레임 할당**을 크게 두가지로 나눌수 있습니다.
+
+1. 정적 할당 방식
+2. 동적 할당 방식
+
+
+
+
+## 정적 할당 방식
+
+---
+
+정적할당방식은 두가지로 나누어집니다.
+
+1. **균등할당**
+2. **비례할당**
+
+
+
+### 균등할당
+
+균등할당은 이름에서 알 수 있듯이 모든 프로세스에 프레임을 균등하게 할당하는 방식입니다.
+프로세스가 3개가 있고, 프레임이 300개가 있다면 각 프로세스는 100개의 프레임을 할당받게 됩니다.
+
+이러한 방식은 프로세스 크기도 각자 다른 상황에서 합리적이지 못한 선택입니다.
+
+
+
+### 비례할당
+
+크기가 큰 프로세스에 더 많은 프레임을 할당하는 방식을 비례할당이라고 부릅니다.
+하지만 이러한 방식은 **정적**이라는 한계점을 가지고 있습니다.
+
+실제 프로세스를 실행해보면 크기와 상관없이 더 많은 프레임을 필요로 하거나 그렇지 않은 프로세스들이 존재합니다.
+이러한 문제 떄문에 비례할당도 합리적이라고 할 수 없습니다.
+
+
+
+## 동적 할당 방식
+
+---
+
+동적할당방식에는 크게 두가지로 나누어집니다.
+
+1. 작업 직합 모델(working set model)
+2. 페이지 폴트 빈도(PFF: page fault frequency)
+
+
+
+### 작업 집합 모델
+
+작업 집합 모델에서는 '프로세스가 일정 기간 동안 참조한 페이지 집합'을 기억하며 빈번한 페이지 교체를 방지합니다.
+예를 들어 프로세스가 3초동안 20개의 페이지를 집중적으로 참조했다면 20개의 프레임을 할당하면 효율적일 것입니다.
+
+이렇게 실행 중인 프로세스가 일정 시간 동안 참조한 페이지의 집합을 **작업 집합**이라고 합니다.
+
+
+
+
+### 페이지 폴트 빈도
+
+
+
+페이지 폴트 빈도 방식은 해당 그래프를 통해 이루어 집니다.
+가로축은 할당된 프레임을 나타내며 세로축은 페이지 폴트율을 나타냅니다.
+할당된 프레임은 적으면 페이지 폴트가 많이 발생하는 형상이 됩니다.
+
+이러한 그래프에서 상한과 하한을 정한다음 해당 적정 구간에 들어올 수 있도록 프레임을 할당해주는
+방식을 **페이지 폴트 빈도**방식이라고 합니다.
+
+
+
+
+## 출처
+
+---
+
+[이미지 출처](https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard)
diff --git a/contents/posts/operation-system/23/lru.png b/contents/posts/operation-system/23/lru.png
new file mode 100644
index 0000000..7dfa903
Binary files /dev/null and b/contents/posts/operation-system/23/lru.png differ
diff --git a/contents/posts/operation-system/23/optimal_page_replace.png b/contents/posts/operation-system/23/optimal_page_replace.png
new file mode 100644
index 0000000..6bff461
Binary files /dev/null and b/contents/posts/operation-system/23/optimal_page_replace.png differ
diff --git a/contents/posts/operation-system/23/page_fault.png b/contents/posts/operation-system/23/page_fault.png
new file mode 100644
index 0000000..9eb3ef9
Binary files /dev/null and b/contents/posts/operation-system/23/page_fault.png differ
diff --git "a/contents/posts/operation-system/3/\354\235\264\354\244\221\353\252\250\353\223\234.png" b/contents/posts/operation-system/3/dual_mode.png
similarity index 100%
rename from "contents/posts/operation-system/3/\354\235\264\354\244\221\353\252\250\353\223\234.png"
rename to contents/posts/operation-system/3/dual_mode.png
diff --git a/contents/posts/operation-system/3/index.md b/contents/posts/operation-system/3/index.md
index 8364cbb..56caa2b 100644
--- a/contents/posts/operation-system/3/index.md
+++ b/contents/posts/operation-system/3/index.md
@@ -1,5 +1,5 @@
---
-title: "3. 유저모드와 커널모드 전환, 시스템 콜의 동작 원리"
+title: "유저모드와 커널모드 전환, 시스템 콜의 동작 원리"
description: "유저모드와 커널모드 전환, 시스템 콜의 동작 원리"
date: 2025-09-06
update: 2025-09-06
@@ -21,7 +21,7 @@ series: "운영체제 기본 개념"
-
+
@@ -55,7 +55,7 @@ series: "운영체제 기본 개념"
-
+
@@ -67,7 +67,7 @@ series: "운영체제 기본 개념"
-
+
diff --git "a/contents/posts/operation-system/3/\354\213\234\354\212\244\355\205\234\354\275\234.png" b/contents/posts/operation-system/3/system_call.png
similarity index 100%
rename from "contents/posts/operation-system/3/\354\213\234\354\212\244\355\205\234\354\275\234.png"
rename to contents/posts/operation-system/3/system_call.png
diff --git "a/contents/posts/operation-system/3/\354\213\234\354\212\244\355\205\234\354\275\234\354\236\221\353\217\231\353\260\251\354\213\235.png" b/contents/posts/operation-system/3/system_call_method.png
similarity index 100%
rename from "contents/posts/operation-system/3/\354\213\234\354\212\244\355\205\234\354\275\234\354\236\221\353\217\231\353\260\251\354\213\235.png"
rename to contents/posts/operation-system/3/system_call_method.png
diff --git a/contents/posts/operation-system/4/index.md b/contents/posts/operation-system/4/index.md
index 0dd73dc..6c0eeed 100644
--- a/contents/posts/operation-system/4/index.md
+++ b/contents/posts/operation-system/4/index.md
@@ -1,5 +1,5 @@
---
-title: "4. 멀티프로그래밍, 시분할 시스템, 멀티프로세싱 개념"
+title: "멀티프로그래밍, 시분할 시스템, 멀티프로세싱 개념"
description: "멀티프로그래밍, 시분할 시스템, 멀티프로세싱 개념"
date: 2025-09-07
update: 2025-09-07
@@ -18,7 +18,7 @@ series: "운영체제 기본 개념"
-
+
CPU 관점에서 본다면 특정 작업을 수행중 IO 작업이 생긴다면 IO작업동안 CPU는 멈추게
@@ -28,7 +28,7 @@ CPU 관점에서 본다면 특정 작업을 수행중 IO 작업이 생긴다면
## 멀티 프로그래밍
-
+
이러한 문제를 해결하기 위해 어쩔 수 없이 작업이 멈추는 구간에 다른 작업을 진행하는 방법을 사용하게 된다.
이를 멀티 프로그래밍이라고 부르며 그림처럼 CPU 사용률을 높이기 위한 목적이었습니다.
@@ -40,7 +40,7 @@ CPU 관점에서 본다면 특정 작업을 수행중 IO 작업이 생긴다면
## 멀티 태스킹
-
+
멀티 프로그래밍 방식에서 더 나아가 모든 프로세스가 공정하게 특정 짧은 시간만 실행되게 반복한다면 길게 시행되는
프로세스 뒤에 오는 프로세스가 기다리는 문제가 없을 것이다. 이것이 멀티태스킹을 사용하는 이유입니다.
@@ -58,7 +58,7 @@ CPU 관점에서 본다면 특정 작업을 수행중 IO 작업이 생긴다면
이전 방식은 하나의 **CPU**를 어떻게 쪼개서 사용할까라는 목적이였다면, **멀티 프로세싱**은 **CPU** 작업단위인
코어 자체를 늘려서 여러 CPU코어가 동시에 작업하는것을 멀티 프로세싱이라고 부르게 됩니다.
-
+
멀티 프로세싱은 CPU코어 수를 늘리는 방법이기 때문에, 이를 어떻게 처리할까에 대한 내용은 멀티 프로세싱 자체의 내용이 아니고 앞서 나왔던 방법론을 도입할 수 있습니다.
그림처럼 하나의 프로세스를 여러 코어가 담당하는 방법이나, 여러 프로세스를 여러 코어가 담당 할 수 도 있습니다.
diff --git "a/contents/posts/operation-system/4/\353\251\200\355\213\260\355\224\204\353\241\234\354\204\270\354\213\261.png" b/contents/posts/operation-system/4/multiprocessing.png
similarity index 100%
rename from "contents/posts/operation-system/4/\353\251\200\355\213\260\355\224\204\353\241\234\354\204\270\354\213\261.png"
rename to contents/posts/operation-system/4/multiprocessing.png
diff --git "a/contents/posts/operation-system/4/\353\251\200\355\213\260\355\224\204\353\241\234\352\267\270\353\236\230\353\260\215.png" b/contents/posts/operation-system/4/multiprograming.png
similarity index 100%
rename from "contents/posts/operation-system/4/\353\251\200\355\213\260\355\224\204\353\241\234\352\267\270\353\236\230\353\260\215.png"
rename to contents/posts/operation-system/4/multiprograming.png
diff --git "a/contents/posts/operation-system/4/\353\251\200\355\213\260\355\203\234\354\212\244\355\202\271.png" b/contents/posts/operation-system/4/multitasking.png
similarity index 100%
rename from "contents/posts/operation-system/4/\353\251\200\355\213\260\355\203\234\354\212\244\355\202\271.png"
rename to contents/posts/operation-system/4/multitasking.png
diff --git "a/contents/posts/operation-system/4/\353\213\250\354\235\274\355\224\204\353\241\234\354\204\270\354\212\244.png" b/contents/posts/operation-system/4/single_process.png
similarity index 100%
rename from "contents/posts/operation-system/4/\353\213\250\354\235\274\355\224\204\353\241\234\354\204\270\354\212\244.png"
rename to contents/posts/operation-system/4/single_process.png
diff --git a/contents/posts/operation-system/5/index.md b/contents/posts/operation-system/5/index.md
index 7f9501e..13d4e3a 100644
--- a/contents/posts/operation-system/5/index.md
+++ b/contents/posts/operation-system/5/index.md
@@ -1,5 +1,5 @@
---
-title: "5. 인터럽트와 DMA를 통한 효율적 입출력 처리"
+title: "인터럽트와 DMA를 통한 효율적 입출력 처리"
description: "인터럽트와 DMA를 통한 효율적 입출력 처리"
date: 2025-09-08
update: 2025-09-08
diff --git "a/contents/posts/operation-system/6/\353\271\204\353\217\231\352\270\260\354\213\235IO.png" b/contents/posts/operation-system/6/asynchronous_io.png
similarity index 100%
rename from "contents/posts/operation-system/6/\353\271\204\353\217\231\352\270\260\354\213\235IO.png"
rename to contents/posts/operation-system/6/asynchronous_io.png
diff --git a/contents/posts/operation-system/6/index.md b/contents/posts/operation-system/6/index.md
index 821b7fd..bdfce74 100644
--- a/contents/posts/operation-system/6/index.md
+++ b/contents/posts/operation-system/6/index.md
@@ -1,5 +1,5 @@
---
-title: "6. 동기식/비동기식 I/O의 차이와 활용 사례"
+title: "동기식/비동기식 I/O의 차이와 활용 사례"
description: "동기식/비동기식 I/O의 차이와 활용 사례"
date: 2025-09-09
update: 2025-09-09
@@ -66,7 +66,7 @@ IO를 다루는 방법에는 동기, 비동기에 대한 개념이 등장합니
## 동기식 I/O
-
+
@@ -78,7 +78,7 @@ I/O작업이 완료되면 인터럽트를 통해 완료를 알리게 됩니다.
## 비동기식 I/O
-
+
비동기식IO는 IO요청이 발생하였을 떄 이전 비동기 설명처럼 IO요청을 기다리지 않는 방식입니다.
프로그램이 IO 작업을 요청하고, 그 작업이 완료되기를 기다리지 않고 즉시 다음 작업으로 넘어가는 방식입니다.
diff --git "a/contents/posts/operation-system/6/\353\217\231\352\270\260\354\213\235IO.png" b/contents/posts/operation-system/6/synchronous_io.png
similarity index 100%
rename from "contents/posts/operation-system/6/\353\217\231\352\270\260\354\213\235IO.png"
rename to contents/posts/operation-system/6/synchronous_io.png
diff --git a/contents/posts/operation-system/7/index.md b/contents/posts/operation-system/7/index.md
index 2bcb74f..e8c172f 100644
--- a/contents/posts/operation-system/7/index.md
+++ b/contents/posts/operation-system/7/index.md
@@ -1,5 +1,5 @@
---
-title: "7. 프로세스와 PCB 그리고 메모리 구조에 대해서 알아보기"
+title: "프로세스와 PCB 그리고 메모리 구조에 대해서 알아보기"
description: "프로세스와 PCB 그리고 메모리 구조에 대해서 알아보기"
date: 2025-09-10
update: 2025-09-10
@@ -19,7 +19,7 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
-
+
위 사진처럼 보이는 것보다 더 많은 프로세스가 작동하고 있는데, 여기서 사용자가 볼 수 있는 프로세스를 포그라운드 프로세스 라며 명하며,
@@ -68,7 +68,7 @@ PCB는 커널 영역에 생성되고, 수많은 프로세스를 PCB를 통해
### 프로세스 ID
-
+
프로세스 ID(PID)는 프로세스를 식별하기 위해 존재하는 고유 ID입니다. 메모장을 두개 킨다고 할지라도 다른 프로세스ID가
만들어지는 것처럼 중복된 활동이여도 하나의 프로세스는 고유한 ID를 가지게 됩니다.
@@ -109,7 +109,7 @@ PCB는 커널 영역에 생성되고, 수많은 프로세스를 PCB를 통해
프로세스가 생성되면 커널 영역에 PCB가 생성됩니다. 그렇다면 커널 영역이 아닌 사용자 영역에는 어떤 데이터가 들어갈까요?
-
+
[사진출처](https://www.programmersought.com/article/98613694619/)
diff --git "a/contents/posts/operation-system/7/\353\251\224\353\252\250\353\246\254\352\265\254\354\241\260.png" b/contents/posts/operation-system/7/memory_model.png
similarity index 100%
rename from "contents/posts/operation-system/7/\353\251\224\353\252\250\353\246\254\352\265\254\354\241\260.png"
rename to contents/posts/operation-system/7/memory_model.png
diff --git "a/contents/posts/operation-system/7/\355\224\204\353\241\234\354\204\270\354\212\244ID.png" b/contents/posts/operation-system/7/process_id.png
similarity index 100%
rename from "contents/posts/operation-system/7/\355\224\204\353\241\234\354\204\270\354\212\244ID.png"
rename to contents/posts/operation-system/7/process_id.png
diff --git "a/contents/posts/operation-system/7/\354\213\244\355\226\211\354\244\221\354\235\270 \355\224\204\353\241\234\354\204\270\354\212\244.png" b/contents/posts/operation-system/7/process_in_mac.png
similarity index 100%
rename from "contents/posts/operation-system/7/\354\213\244\355\226\211\354\244\221\354\235\270 \355\224\204\353\241\234\354\204\270\354\212\244.png"
rename to contents/posts/operation-system/7/process_in_mac.png
diff --git "a/contents/posts/operation-system/8/\353\254\270\353\247\245\352\265\220\355\231\230.png" b/contents/posts/operation-system/8/context_switching.png
similarity index 100%
rename from "contents/posts/operation-system/8/\353\254\270\353\247\245\352\265\220\355\231\230.png"
rename to contents/posts/operation-system/8/context_switching.png
diff --git a/contents/posts/operation-system/8/index.md b/contents/posts/operation-system/8/index.md
index b131ffa..aab5ec4 100644
--- a/contents/posts/operation-system/8/index.md
+++ b/contents/posts/operation-system/8/index.md
@@ -1,5 +1,5 @@
---
-title: "8. 문맥교환 그리고 프로세스 상태 변화, 프로세스 계층과 생성 방식을 알아보기"
+title: "문맥교환 그리고 프로세스 상태 변화, 프로세스 계층과 생성 방식을 알아보기"
description: "프로세스와 PCB 그리고 메모리 구조에 대해서 알아보기"
date: 2025-09-11
update: 2025-09-11
@@ -22,7 +22,7 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
-
+
[사진출처](https://yoongrammer.tistory.com/53)
결국 프로세스 A에서 B로 프로세스가 넘어가는 순간에 프로세스 A정보를 백업하고 그작업이 끝난다면
@@ -45,7 +45,7 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
프로세스 상태는 크게 다섯가지로 나뉠 수 있습니다.
-
+
[사진출처](https://thebook.io/080367/0021/)
@@ -100,7 +100,7 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
-
+
[사진 출처: 혼자 공부하는 운영체제 저자:강민철]
diff --git "a/contents/posts/operation-system/8/\355\224\204\353\241\234\354\204\270\354\212\244 \352\263\204\354\270\265 \352\265\254\354\241\260.png" b/contents/posts/operation-system/8/process_layer.png
similarity index 100%
rename from "contents/posts/operation-system/8/\355\224\204\353\241\234\354\204\270\354\212\244 \352\263\204\354\270\265 \352\265\254\354\241\260.png"
rename to contents/posts/operation-system/8/process_layer.png
diff --git "a/contents/posts/operation-system/8/\355\224\204\353\241\234\354\204\270\354\212\244 \354\203\201\355\203\234 \354\240\204\354\235\264\353\217\204.png" b/contents/posts/operation-system/8/process_state.png
similarity index 100%
rename from "contents/posts/operation-system/8/\355\224\204\353\241\234\354\204\270\354\212\244 \354\203\201\355\203\234 \354\240\204\354\235\264\353\217\204.png"
rename to contents/posts/operation-system/8/process_state.png
diff --git "a/contents/posts/operation-system/9/TCB\355\231\225\354\236\245.png" b/contents/posts/operation-system/9/TCB3.png
similarity index 100%
rename from "contents/posts/operation-system/9/TCB\355\231\225\354\236\245.png"
rename to contents/posts/operation-system/9/TCB3.png
diff --git a/contents/posts/operation-system/9/index.md b/contents/posts/operation-system/9/index.md
index e0e774a..8d44fc5 100644
--- a/contents/posts/operation-system/9/index.md
+++ b/contents/posts/operation-system/9/index.md
@@ -1,5 +1,5 @@
---
-title: "9. 쓰레드의 개념, 메모리 공유 구조 및 TCB"
+title: "쓰레드의 개념, 메모리 공유 구조 및 TCB"
description: "쓰레드의 개념, 메모리 공유 구조 및 TCB"
date: 2025-09-12
update: 2025-09-12
@@ -12,7 +12,7 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
---
-
+
@@ -34,7 +34,7 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
전통적인 CPU는 하나의 프로세스만 처리할 수 있었습니다. 메모장, 워드, 게임등 많은 프로세스가 하나의 실행
흐름을 가지고 한 번의 하나의 부분만 실행되는 프로세스입니다.
-
+
이런 프로세스를 단일 스레드 프로세스라고 부릅니다.
@@ -43,7 +43,7 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
하지만, 스레드라는 개념이 도입되면서 하나의 프로세스가 한 번에 여러가지 일을 동시에 처리하는 것이 가능해졌습니다.
프로세스를 구성하는 명령어를 동시에 처리하는것이 가능해졌습니다.
-
+
@@ -59,7 +59,7 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
---
-
+
스레드의 메모리 구조를 이해하기 위해서는 이전 프로세서의 구조를 상기해봐야 합니다.
@@ -74,7 +74,7 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
-
+
[사진출처](https://gmlwjd9405.github.io/2017/10/01/basic-concepts-of-development-os.html)
@@ -113,7 +113,7 @@ series: "프로세스와 쓰레드에 대해서 알아보기"
-
+
diff --git "a/contents/posts/operation-system/9/\353\251\224\353\252\250\353\246\254\352\265\254\354\241\260.png" b/contents/posts/operation-system/9/memory_model.png
similarity index 100%
rename from "contents/posts/operation-system/9/\353\251\224\353\252\250\353\246\254\352\265\254\354\241\260.png"
rename to contents/posts/operation-system/9/memory_model.png
diff --git "a/contents/posts/operation-system/9/\353\251\200\355\213\260\354\212\244\353\240\210\353\223\234 \355\224\204\353\241\234\354\204\270\354\212\244.png" b/contents/posts/operation-system/9/multi_thread_process.png
similarity index 100%
rename from "contents/posts/operation-system/9/\353\251\200\355\213\260\354\212\244\353\240\210\353\223\234 \355\224\204\353\241\234\354\204\270\354\212\244.png"
rename to contents/posts/operation-system/9/multi_thread_process.png
diff --git "a/contents/posts/operation-system/9/\353\213\250\354\235\274\354\212\244\353\240\210\353\223\234 \355\224\204\353\241\234\354\204\270\354\212\244.png" b/contents/posts/operation-system/9/single_process.png
similarity index 100%
rename from "contents/posts/operation-system/9/\353\213\250\354\235\274\354\212\244\353\240\210\353\223\234 \355\224\204\353\241\234\354\204\270\354\212\244.png"
rename to contents/posts/operation-system/9/single_process.png
diff --git "a/contents/posts/operation-system/9/\354\212\244\353\240\210\353\223\234.png" b/contents/posts/operation-system/9/thread.png
similarity index 100%
rename from "contents/posts/operation-system/9/\354\212\244\353\240\210\353\223\234.png"
rename to contents/posts/operation-system/9/thread.png
diff --git "a/contents/posts/operation-system/9/\354\212\244\353\240\210\353\223\234\354\236\220\354\233\220\352\263\265\354\234\240.png" b/contents/posts/operation-system/9/thread_resource.png
similarity index 100%
rename from "contents/posts/operation-system/9/\354\212\244\353\240\210\353\223\234\354\236\220\354\233\220\352\263\265\354\234\240.png"
rename to contents/posts/operation-system/9/thread_resource.png
diff --git a/public/1/index.html b/public/1/index.html
index e2649ff..bd132dc 100644
--- a/public/1/index.html
+++ b/public/1/index.html
@@ -1,6 +1,6 @@
"},this.getStyleTags=function(){return e.sealed?x(2):e._emitSheetCSS()},this.getStyleElement=function(){var t;if(e.sealed)return x(2);var n=((t={})[E]="",t["data-styled-version"]="5.3.11",t.dangerouslySetInnerHTML={__html:e.instance.toString()},t),r=H();return r&&(n.nonce=r),[o.createElement("style",h({},n,{key:"sc-0-0"}))]},this.seal=function(){e.sealed=!0},this.instance=new G({isServer:!0}),this.sealed=!1}var t=e.prototype;return t.collectStyles=function(e){return this.sealed?x(2):o.createElement(pe,{sheet:this.instance},e)},t.interleaveWithNodeStream=function(e){return x(3)},e}(),We=function(e){var t=o.forwardRef(function(t,n){var r=(0,o.useContext)(Ne),a=e.defaultProps,i=Ee(t,r,a);return o.createElement(e,h({},t,{theme:i,ref:n}))});return d()(t,e),t.displayName="WithTheme("+w(e)+")",t},qe=function(){return(0,o.useContext)(Ne)},Be={StyleSheet:G,masterSheet:se},ze=Le},2799:function(e,t){"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,o=n?Symbol.for("react.portal"):60106,a=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,s=n?Symbol.for("react.profiler"):60114,c=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,l=n?Symbol.for("react.async_mode"):60111,p=n?Symbol.for("react.concurrent_mode"):60111,f=n?Symbol.for("react.forward_ref"):60112,d=n?Symbol.for("react.suspense"):60113,h=n?Symbol.for("react.suspense_list"):60120,m=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,y=n?Symbol.for("react.block"):60121,v=n?Symbol.for("react.fundamental"):60117,b=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function S(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case l:case p:case a:case s:case i:case d:return e;default:switch(e=e&&e.$$typeof){case u:case f:case g:case m:case c:return e;default:return t}}case o:return t}}}function E(e){return S(e)===p}t.AsyncMode=l,t.ConcurrentMode=p,t.ContextConsumer=u,t.ContextProvider=c,t.Element=r,t.ForwardRef=f,t.Fragment=a,t.Lazy=g,t.Memo=m,t.Portal=o,t.Profiler=s,t.StrictMode=i,t.Suspense=d,t.isAsyncMode=function(e){return E(e)||S(e)===l},t.isConcurrentMode=E,t.isContextConsumer=function(e){return S(e)===u},t.isContextProvider=function(e){return S(e)===c},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return S(e)===f},t.isFragment=function(e){return S(e)===a},t.isLazy=function(e){return S(e)===g},t.isMemo=function(e){return S(e)===m},t.isPortal=function(e){return S(e)===o},t.isProfiler=function(e){return S(e)===s},t.isStrictMode=function(e){return S(e)===i},t.isSuspense=function(e){return S(e)===d},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===p||e===s||e===i||e===d||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===m||e.$$typeof===c||e.$$typeof===u||e.$$typeof===f||e.$$typeof===v||e.$$typeof===b||e.$$typeof===w||e.$$typeof===y)},t.typeOf=S},2833:function(e){e.exports=function(e,t,n,r){var o=n?n.call(r,e,t):void 0;if(void 0!==o)return!!o;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var a=Object.keys(e),i=Object.keys(t);if(a.length!==i.length)return!1;for(var s=Object.prototype.hasOwnProperty.bind(t),c=0;c(null==e?void 0:e.forward)||[])}},3662:function(e,t,n){"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}n.d(t,{A:function(){return r}})},3697:function(e,t,n){"use strict";n.r(t),n.d(t,{onClientEntry:function(){return c}});var r=n(4794),o=n(382),a=n.n(o);const i=e=>"/"===e[0]?e:`/${e}`,s=(e,t)=>n=>{if(window.___failedResources)return!0;if((e=>0!==e.button||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey)(n))return!0;if((e=>e.defaultPrevented)(n))return!0;const o=(e=>{for(;e.parentNode;e=e.parentNode)if("a"===e.nodeName.toLowerCase())return e;return null})(n.target);if(null==o)return!0;if(!0===(s=o).hasAttribute("download")||!1===(e=>!1===e.hasAttribute("target")||null==e.target||["_self",""].includes(e.target)||"_parent"===e.target&&(!e.ownerDocument.defaultView.parent||e.ownerDocument.defaultView.parent===e.ownerDocument.defaultView)||"_top"===e.target&&(!e.ownerDocument.defaultView.top||e.ownerDocument.defaultView.top===e.ownerDocument.defaultView))(s))return!0;var s;const c=document.createElement("a");""!==o.href&&(c.href=o.href),"SVGAnimatedString"in window&&o.href instanceof SVGAnimatedString&&(c.href=o.href.animVal);const u=document.createElement("a");if(u.href=window.location.href,!1===((e,t)=>e.protocol===t.protocol&&e.host===t.host)(u,c))return!0;const l=new RegExp(`^${a()((0,r.withPrefix)("/"))}`);if(((e,t)=>!1===t.test(i(e.pathname))||-1!==e.pathname.search(/^.*\.((?!htm)[a-z0-9]{1,5})$/i))(c,l))return!0;if(((e,t)=>""!==t.hash&&(""===t.pathname||t.pathname===e.pathname))(u,c))return!0;if(t.excludePattern){if(new RegExp(t.excludePattern).test(c.pathname))return!0}n.preventDefault();const p=i(c.pathname).replace(l,"/");return e(`${p}${c.search}${c.hash}`),!1};const c=function(e,t){void 0===t&&(t={}),function(e,t,n){const r=s(n,t);e.addEventListener("click",r)}(window,t,e=>{(0,r.navigate)(e)})}},3721:function(e,t,n){"use strict";t.__esModule=!0,t.useScrollRestoration=function(e){var t=(0,a.useLocation)(),n=(0,o.useContext)(r.ScrollContext),i=(0,o.useRef)(null);return(0,o.useLayoutEffect)(function(){if(i.current){var r=n.read(t,e);i.current.scrollTo(0,r||0)}},[t.key]),{ref:i,onScroll:function(){i.current&&n.save(t,e,i.current.scrollTop)}}};var r=n(3215),o=n(6540),a=n(6462)},3785:function(e,t,n){"use strict";var r=n(4994);t.__esModule=!0,t.onInitialClientRender=t.wrapRootElement=void 0;var o=r(n(6540)),a=n(134),i=r(n(6305)),s=n(8919);t.wrapRootElement=function(e,t){var n,r=e.element;void 0===t&&(t={});var c=window[null!==(n=t.windowKey)&&void 0!==n?n:s.DEFAULT_OPTIONS.windowKey],u=(0,i.default)(c);return o.default.createElement(a.Provider,{store:u},r)};t.onInitialClientRender=function(e,t){var n;if(void 0===t&&(t={}),Boolean(null!==(n=t.cleanupOnClient)&&void 0!==n?n:s.DEFAULT_OPTIONS.cleanupOnClient)){var r,o=null!==(r=t.windowKey)&&void 0!==r?r:s.DEFAULT_OPTIONS.windowKey;delete window[o];var a=document.getElementById(s.SCRIPT_ELEMENT_ID);a&&a.parentNode.removeChild(a)}}},4146:function(e,t,n){"use strict";var r=n(4363),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function c(e){return r.isMemo(e)?i:s[e.$$typeof]||o}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=i;var u=Object.defineProperty,l=Object.getOwnPropertyNames,p=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,d=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var o=d(n);o&&o!==h&&e(t,o,r)}var i=l(n);p&&(i=i.concat(p(n)));for(var s=c(t),m=c(n),g=0;ge.length)&&(t=e.length);for(var n=0,r=Array(t);n((e,t)=>{const{forward:n=[],...r}=e||{},o=JSON.stringify(r,(e,t)=>("function"==typeof t&&(t=String(t)).startsWith(e+"(")&&(t="function "+t),t));return["!(function(w,p,f,c){",Object.keys(r).length>0?`c=w[p]=Object.assign(w[p]||{},${o});`:"c=w[p]=w[p]||{};","c[f]=(c[f]||[])",n.length>0?`.concat(${JSON.stringify(n)})`:"","})(window,'partytown','forward');",t].join("")})(e,'/* Partytown 0.7.6 - MIT builder.io */\n!function(t,e,n,i,r,o,a,d,s,c,p,l){function u(){l||(l=1,"/"==(a=(o.lib||"/~partytown/")+(o.debug?"debug/":""))[0]&&(s=e.querySelectorAll(\'script[type="text/partytown"]\'),i!=t?i.dispatchEvent(new CustomEvent("pt1",{detail:t})):(d=setTimeout(f,1e4),e.addEventListener("pt0",w),r?h(1):n.serviceWorker?n.serviceWorker.register(a+(o.swPath||"partytown-sw.js"),{scope:a}).then((function(t){t.active?h():t.installing&&t.installing.addEventListener("statechange",(function(t){"activated"==t.target.state&&h()}))}),console.error):f())))}function h(t){c=e.createElement(t?"script":"iframe"),t||(c.setAttribute("style","display:block;width:0;height:0;border:0;visibility:hidden"),c.setAttribute("aria-hidden",!0)),c.src=a+"partytown-"+(t?"atomics.js?v=0.7.6":"sandbox-sw.html?"+Date.now()),e.body.appendChild(c)}function f(n,r){for(w(),i==t&&(o.forward||[]).map((function(e){delete t[e.split(".")[0]]})),n=0;n{let{sliceId:t,children:n}=e;const r=[h.createElement("slice-start",{id:`${t}-1`}),h.createElement("slice-end",{id:`${t}-1`})];return n&&(r.push(n),r.push(h.createElement("slice-start",{id:`${t}-2`}),h.createElement("slice-end",{id:`${t}-2`}))),r},v=e=>{let{sliceName:t,allowEmpty:n,children:r,...o}=e;const a=(0,h.useContext)(g.Jr),i=(0,h.useContext)(g.hr),s=a[t];if(!s){if(n)return null;throw new Error(`Slice "${s}" for "${t}" slot not found`)}const c=((e,t)=>Object.keys(t).length?`${e}-${(0,m.U)(t)}`:e)(s,o);let u=i[c];return u?r&&(u.hasChildren=!0):i[c]=u={props:o,sliceName:s,hasChildren:!!r},h.createElement(y,{sliceId:c},r)},b=e=>{let{sliceName:t,allowEmpty:n,children:r,...o}=e;const a=(0,h.useContext)(g.Jr),i=(0,h.useContext)(g.dd),s=a[t],c=i.get(s);if(!c){if(n)return null;throw new Error(`Slice "${s}" for "${t}" slot not found`)}return h.createElement(c.component,Object.assign({sliceContext:c.sliceContext,data:c.data},o),r)};function w(e){{const t={...e,sliceName:e.alias};delete t.alias,delete t.__renderedByLocation;const n=(0,h.useContext)(g.j$),r=E(e);if(Object.keys(r).length)throw new S("browser"===n.renderEnvironment,t.sliceName,r,e.__renderedByLocation);if("server"===n.renderEnvironment)return h.createElement(v,t);if("browser"===n.renderEnvironment)return h.createElement(b,t);if("engines"===n.renderEnvironment||"dev-ssr"===n.renderEnvironment)return h.createElement(b,t);if("slices"===n.renderEnvironment){let t="";try{t=`\n\nSlice component "${n.sliceRoot.name}" (${n.sliceRoot.componentPath}) tried to render `}catch{}throw new Error(`Nested slices are not supported.${t}\n\nSee https://gatsbyjs.com/docs/reference/built-in-components/gatsby-slice#nested-slices`)}throw new Error(`Slice context "${n.renderEnvironment}" is not supported.`)}}let S=function(e){function t(n,r,o,a){var i;const s=Object.entries(o).map(e=>{let[t,n]=e;return`not serializable "${n}" type passed to "${t}" prop`}).join(", "),c="SlicePropsError";let u="",l="";if(n){const e=h.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactDebugCurrentFrame.getCurrentStack().trim().split("\n").slice(1);e[0]=e[0].trim(),u="\n"+e.join("\n"),l=`Slice "${r}" was passed props that are not serializable (${s}).`}else{l=`${c}: Slice "${r}" was passed props that are not serializable (${s}).`;u=`${l}\n${(new Error).stack.trim().split("\n").slice(2).join("\n")}`}return(i=e.call(this,l)||this).name=c,u?i.stack=u:Error.captureStackTrace(i,t),a&&(i.forcedLocation={...a,functionName:"Slice"}),i}return(0,u.A)(t,e),t}(d(Error));const E=function(e,t,n,r){void 0===t&&(t={}),void 0===n&&(n=[]),void 0===r&&(r=null);for(const[o,a]of Object.entries(e)){if(null==a||!r&&"children"===o)continue;const e=r?`${r}.${o}`:o;"function"==typeof a?t[e]=typeof a:"object"==typeof a&&n.indexOf(a)<=0&&(n.push(a),E(a,t,n,e))}return t};var C=n(5535);const P=r.Ay.enqueue;function k(){throw new Error("It appears like Gatsby is misconfigured. Gatsby related `graphql` calls are supposed to only be evaluated at compile time, and then compiled away. Unfortunately, something went wrong and the query was left in the compiled code.\n\nUnless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.")}},4994:function(e){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},5535:function(e,t,n){"use strict";n.r(t),n.d(t,{Script:function(){return h},ScriptStrategy:function(){return u},collectedScriptsByPage:function(){return s},scriptCache:function(){return f},scriptCallbackCache:function(){return d}});var r=n(6540),o=n(6462);function a(){return a=Object.assign?Object.assign.bind():function(e){for(var t=1;ti.get(e)||[],set(e,t){const n=i.get(e)||[];n.push(t),i.set(e,n)},delete(e){i.delete(e)}},c="undefined"!=typeof self&&self.requestIdleCallback&&self.requestIdleCallback.bind(window)||function(e){const t=Date.now();return setTimeout(function(){e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-t))}})},1)};var u,l;(l=u||(u={})).postHydrate="post-hydrate",l.idle="idle",l.offMainThread="off-main-thread";const p=new Set(["src","strategy","dangerouslySetInnerHTML","children","onLoad","onError"]),f=new Set,d=new Map;function h(e){return r.createElement(o.Location,null,()=>r.createElement(m,e))}function m(e){const{src:t,strategy:n=u.postHydrate}=e||{},{pathname:i}=(0,o.useLocation)();if((0,r.useEffect)(()=>{let t;switch(n){case u.postHydrate:t=g(e);break;case u.idle:c(()=>{t=g(e)});break;case u.offMainThread:{const t=v(e);s.set(i,t)}}return()=>{const{script:e,loadCallback:n,errorCallback:r}=t||{};n&&(null==e||e.removeEventListener("load",n)),r&&(null==e||e.removeEventListener("error",r)),null==e||e.remove()}},[]),n===u.offMainThread){const o=y(e),c=v(e);return"undefined"==typeof window&&s.set(i,c),r.createElement("script",o?a({type:"text/partytown","data-strategy":n,crossOrigin:"anonymous"},c,{dangerouslySetInnerHTML:{__html:y(e)}}):a({type:"text/partytown",src:b(t),"data-strategy":n,crossOrigin:"anonymous"},c))}return null}function g(e){const{id:t,src:n,strategy:r=u.postHydrate,onLoad:o,onError:i}=e||{},s=t||n,c=["load","error"],l={load:o,error:i};if(s){for(const e of c)if(null!=l&&l[e]){var p;const t=d.get(s)||{},{callbacks:n=[]}=(null==t?void 0:t[e])||{};var h,m;n.push(null==l?void 0:l[e]),null!=t&&null!=(p=t[e])&&p.event?null==l||null==(h=l[e])||h.call(l,null==t||null==(m=t[e])?void 0:m.event):d.set(s,a({},t,{[e]:{callbacks:n}}))}if(f.has(s))return null}const g=y(e),b=v(e),S=document.createElement("script");t&&(S.id=t),S.dataset.strategy=r;for(const[a,u]of Object.entries(b))S.setAttribute(a,u);g&&(S.textContent=g),n&&(S.src=n);const E={};if(s){for(const e of c){const t=t=>w(t,s,e);S.addEventListener(e,t),E[`${e}Callback`]=t}f.add(s)}return document.body.appendChild(S),{script:S,loadCallback:E.loadCallback,errorCallback:E.errorCallback}}function y(e){const{dangerouslySetInnerHTML:t,children:n=""}=e||{},{__html:r=""}=t||{};return r||n}function v(e){const t={};for(const[n,r]of Object.entries(e))p.has(n)||(t[n]=r);return t}function b(e){if(e)return`/__third-party-proxy?url=${encodeURIComponent(e)}`}function w(e,t,n){const r=d.get(t)||{};for(const a of(null==r||null==(o=r[n])?void 0:o.callbacks)||[]){var o;a(e)}d.set(t,{[n]:{event:e}})}},5616:function(e,t,n){"use strict";var r=n(7688),o=r.DEFAULT_OPTIONS,a=r.imageClass,i=r.imageBackgroundClass,s=r.imageWrapperClass;t.onRouteUpdate=function(e,t){for(var n=Object.assign({},o,t),r=document.querySelectorAll("."+s),c=function(){var e=r[u],t=e.querySelector("."+i),o=e.querySelector("."+a),s=function(){t.style.transition="opacity 0.5s 0.5s",o.style.transition="opacity 0.5s",c()},c=function e(){t.style.opacity=0,o.style.opacity=1,o.style.color="inherit",o.style.boxShadow="inset 0px 0px 0px 400px "+n.backgroundColor,o.removeEventListener("load",s),o.removeEventListener("error",e)};o.style.opacity=0,o.addEventListener("load",s),o.addEventListener("error",c),o.complete&&c()},u=0;u{n()}),t}const d=["link","meta","style","title","base","noscript","script","html","body"];function h(e){0}function m(e,t){if(e instanceof HTMLElement&&t instanceof HTMLElement){const n=t.getAttribute("nonce");if(n&&!e.getAttribute("nonce")){const r=t.cloneNode(!0);return r.setAttribute("nonce",""),r.nonce=n,n===e.nonce&&e.isEqualNode(r)}}return e.isEqualNode(t)}function g(e,t){void 0===t&&(t={html:{},body:{}});const n=new Map,r=[];for(const u of e.childNodes){var o,a;const e=u.nodeName.toLowerCase(),l=null===(o=u.attributes)||void 0===o||null===(a=o.id)||void 0===a?void 0:a.value;if(b(u)){if(v(e))if("html"===e||"body"===e)for(const n of u.attributes){const r="style"===n.name;var i;if(t[e]={...t[e]},r||(t[e][n.name]=n.value),r)t[e].style=`${null!==(i=t[e])&&void 0!==i&&i.style?t[e].style:""}${n.value} `}else{let e=u.cloneNode(!0);if(e.setAttribute("data-gatsby-head",!0),"script"===e.nodeName.toLowerCase()&&(e=y(e)),l)if(n.has(l)){var s;const t=n.get(l);null===(s=r[t].parentNode)||void 0===s||s.removeChild(r[t]),r[t]=e}else r.push(e),n.set(l,r.length-1);else r.push(e)}else h();u.childNodes.length&&r.push.apply(r,(0,c.A)(g(u,t).validHeadNodes))}}return{validHeadNodes:r,htmlAndBodyAttributes:t}}function y(e){const t=document.createElement("script");for(const n of e.attributes)t.setAttribute(n.name,n.value);return t.innerHTML=e.innerHTML,t}function v(e){return d.includes(e)}function b(e){return 1===e.nodeType}const w=document.createElement("div"),S={html:[],body:[]},E=()=>{var e;const{validHeadNodes:t,htmlAndBodyAttributes:n}=g(w);S.html=Object.keys(n.html),S.body=Object.keys(n.body),function(e){if(!e)return;const{html:t,body:n}=e,r=document.querySelector("html");r&&Object.entries(t).forEach(e=>{let[t,n]=e;r.setAttribute(t,n)});const o=document.querySelector("body");o&&Object.entries(n).forEach(e=>{let[t,n]=e;o.setAttribute(t,n)})}(n);const r=document.querySelectorAll("[data-gatsby-head]");var o;if(0===r.length)return void(o=document.head).append.apply(o,(0,c.A)(t));const a=[];!function(e){let{oldNodes:t,newNodes:n,onStale:r,onNew:o}=e;for(const a of t){const e=n.findIndex(e=>m(e,a));-1===e?r(a):n.splice(e,1)}for(const a of n)o(a)}({oldNodes:r,newNodes:t,onStale:e=>e.parentNode.removeChild(e),onNew:e=>a.push(e)}),(e=document.head).append.apply(e,a)};function C(e){let{pageComponent:t,staticQueryResults:n,pageComponentProps:o}=e;(0,r.useEffect)(()=>{if(null!=t&&t.Head){!function(e){if("function"!=typeof e)throw new Error(`Expected "Head" export to be a function got "${typeof e}".`)}(t.Head);const{render:a}=(0,p.n)(),s=r.createElement(t.Head,{location:{pathname:(e=o).location.pathname},params:e.params,data:e.data||{},serverData:e.serverData,pageContext:e.pageContext}),c=(0,i.N)("wrapRootElement",{element:s},s,e=>{let{result:t}=e;return{element:t}}).pop();a(r.createElement(f,{callback:E},r.createElement(u.StaticQueryContext.Provider,{value:n},r.createElement(l.LocationProvider,null,c))),w)}var e;return()=>{!function(){const e=document.querySelectorAll("[data-gatsby-head]");for(const t of e)t.parentNode.removeChild(t)}(),function(e){if(!e)return;const{html:t,body:n}=e;if(t){const e=document.querySelector("html");t.forEach(t=>{e&&e.removeAttribute(t)})}if(n){const e=document.querySelector("body");n.forEach(t=>{e&&e.removeAttribute(t)})}}(S)}})}function P(e){const t={...e,params:{...(0,s.UA)(e.location.pathname),...e.pageResources.json.pageContext.__params}};let n;var o;n=e.pageResources.partialHydration?e.pageResources.partialHydration:(0,r.createElement)((o=e.pageResources.component)&&o.default||o,{...t,key:e.path||e.pageResources.page.path});C({pageComponent:e.pageResources.head,staticQueryResults:e.pageResources.staticQueryResults,pageComponentProps:t});return(0,i.N)("wrapPageElement",{element:n,props:t},n,e=>{let{result:n}=e;return{element:n,props:t}}).pop()}P.propTypes={location:a().object.isRequired,pageResources:a().object.isRequired,data:a().object,pageContext:a().object.isRequired};var k=P},6221:function(e,t,n){var r=n(5636);e.exports=function(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)},e.exports.__esModule=!0,e.exports.default=e.exports},6305:function(e,t,n){e.exports=n(8417)},6395:function(e,t){"use strict";t.T=void 0;const n=[".html",".json",".js",".map",".txt",".xml",".pdf"];t.T=(e,t="always")=>{if("/"===e)return e;const r=e.endsWith("/");return((e,t)=>{for(const n of e)if(t.endsWith(n))return!0;return!1})(n,e)?e:"always"===t?r?e:`${e}/`:"never"===t&&r?e.slice(0,-1):e}},6462:function(e,t,n){"use strict";var r;n.r(t),n.d(t,{BaseContext:function(){return g},Link:function(){return V},Location:function(){return X},LocationContext:function(){return y},LocationProvider:function(){return K},Match:function(){return ee},Redirect:function(){return P},Router:function(){return se},ServerLocation:function(){return Z},createHistory:function(){return l},createMemorySource:function(){return p},globalHistory:function(){return d},insertParams:function(){return O},isRedirect:function(){return S},match:function(){return x},navigate:function(){return h},pick:function(){return _},redirectTo:function(){return E},resolve:function(){return R},shallowCompare:function(){return H},startsWith:function(){return k},useBaseContext:function(){return v},useLocation:function(){return ue},useLocationContext:function(){return b},useMatch:function(){return fe},useNavigate:function(){return le},useParams:function(){return pe},validateRedirect:function(){return A}});var o=n(6540),a=n(5556),i=n(311);function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[n]=e[n]);return o}const u=e=>{const{search:t,hash:n,href:r,origin:o,protocol:a,host:i,hostname:s,port:c}=e.location;let{pathname:u}=e.location;return!u&&r&&f&&(u=new URL(r).pathname),{pathname:encodeURI(decodeURI(u)),search:t,hash:n,href:r,origin:o,protocol:a,host:i,hostname:s,port:c,state:e.history.state,key:e.history.state&&e.history.state.key||"initial"}},l=(e,t)=>{let n=[],r=u(e),o=!1,a=()=>{};return{get location(){return r},get transitioning(){return o},_onTransitionComplete(){o=!1,a()},listen(t){n.push(t);const o=()=>{r=u(e),t({location:r,action:"POP"})};return e.addEventListener("popstate",o),()=>{e.removeEventListener("popstate",o),n=n.filter(e=>e!==t)}},navigate(t,{state:i,replace:c=!1}={}){if("number"==typeof t)e.history.go(t);else{i=s({},i,{key:Date.now()+""});try{o||c?e.history.replaceState(i,null,t):e.history.pushState(i,null,t)}catch(n){e.location[c?"replace":"assign"](t)}}r=u(e),o=!0;const l=new Promise(e=>a=e);return n.forEach(e=>e({location:r,action:"PUSH"})),l}}},p=(e="/")=>{const t=e.indexOf("?"),n={pathname:t>-1?e.substr(0,t):e,search:t>-1?e.substr(t):""};let r=0;const o=[n],a=[null];return{get location(){return o[r]},addEventListener(e,t){},removeEventListener(e,t){},history:{get entries(){return o},get index(){return r},get state(){return a[r]},pushState(e,t,n){const[i,s=""]=n.split("?");r++,o.push({pathname:i,search:s.length?`?${s}`:s}),a.push(e)},replaceState(e,t,n){const[i,s=""]=n.split("?");o[r]={pathname:i,search:s},a[r]=e},go(e){const t=r+e;t<0||t>a.length-1||(r=t)}}}},f=!("undefined"==typeof window||!window.document||!window.document.createElement),d=l(f?window:p()),{navigate:h}=d;function m(e,t){return o.createServerContext?((e,t=null)=>(globalThis.__SERVER_CONTEXT||(globalThis.__SERVER_CONTEXT={}),globalThis.__SERVER_CONTEXT[e]||(globalThis.__SERVER_CONTEXT[e]=o.createServerContext(e,t)),globalThis.__SERVER_CONTEXT[e]))(e,t):o.createContext(t)}const g=m("Base",{baseuri:"/",basepath:"/"}),y=m("Location"),v=()=>o.useContext(g),b=()=>o.useContext(y);function w(e){this.uri=e}const S=e=>e instanceof w,E=e=>{throw new w(e)};function C(e){const{to:t,replace:n=!0,state:r,noThrow:a,baseuri:i}=e;o.useEffect(()=>{Promise.resolve().then(()=>{const o=R(t,i);h(O(o,e),{replace:n,state:r})})},[]);const s=R(t,i);return a||E(O(s,e)),null}const P=e=>{const t=b(),{baseuri:n}=v();return o.createElement(C,s({},t,{baseuri:n},e))};P.propTypes={from:a.string,to:a.string.isRequired};const k=(e,t)=>e.substr(0,t.length)===t,_=(e,t)=>{let n,r;const[o]=t.split("?"),a=M(o),s=""===a[0],c=D(e);for(let u=0,l=c.length;u dynamic segment "${r[1]}" is a reserved name. Please use a different name in path "${o.path}".`);const t=decodeURIComponent(n);p[r[1]]=t}else if(t!==n){e=!0;break}}if(!e){n={route:o,params:p,uri:"/"+a.slice(0,d).join("/")};break}}return n||r||null},x=(e,t)=>_([{path:e}],t),R=(e,t)=>{if(k(e,"/"))return e;const[n,r]=e.split("?"),[o]=t.split("?"),a=M(n),i=M(o);if(""===a[0])return L(o,r);if(!k(a[0],".")){const e=i.concat(a).join("/");return L(("/"===o?"":"/")+e,r)}const s=i.concat(a),c=[];for(let u=0,l=s.length;u{const[n,r=""]=e.split("?");let o="/"+M(n).map(e=>{const n=T.exec(e);return n?t[n[1]]:e}).join("/");const{location:{search:a=""}={}}=t,i=a.split("?")[1]||"";return o=L(o,r,i),o},A=(e,t)=>{const n=e=>N(e);return M(e).filter(n).sort().join("/")===M(t).filter(n).sort().join("/")},T=/^:(.+)/,N=e=>T.test(e),j=e=>e&&"*"===e[0],I=(e,t)=>({route:e,score:e.default?0:M(e.path).reduce((e,t)=>(e+=4,(e=>""===e)(t)?e+=1:N(t)?e+=2:j(t)?e-=5:e+=3,e),0),index:t}),D=e=>e.map(I).sort((e,t)=>e.scoret.score?-1:e.index-t.index),M=e=>e.replace(/(^\/+|\/+$)/g,"").split("/"),L=(e,...t)=>e+((t=t.filter(e=>e&&e.length>0))&&t.length>0?`?${t.join("&")}`:""),$=["uri","path"],H=(e,t)=>{const n=Object.keys(e);return n.length===Object.keys(t).length&&n.every(n=>t.hasOwnProperty(n)&&e[n]===t[n])},F=e=>e.replace(/(^\/+|\/+$)/g,""),U=e=>t=>{if(!t)return null;if(t.type===o.Fragment&&t.props.children)return o.Children.map(t.props.children,U(e));if(i(t.props.path||t.props.default||t.type===P,`: Children of must have a \`path\` or \`default\` prop, or be a \`\`. None found on element type \`${t.type}\``),i(!!(t.type!==P||t.props.from&&t.props.to),` requires both "from" and "to" props when inside a .`),i(!(t.type===P&&!A(t.props.from,t.props.to)),` has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.`),t.props.default)return{value:t,default:!0};const n=t.type===P?t.props.from:t.props.path,r="/"===n?e:`${F(e)}/${F(n)}`;return{value:t,default:t.props.default,path:t.props.children?`${F(r)}/*`:r}},W=["innerRef"],q=["to","state","replace","getProps"],B=["key"];let{forwardRef:z}=r||(r=n.t(o,2));void 0===z&&(z=e=>e);const G=()=>{},V=z((e,t)=>{let{innerRef:n}=e,r=c(e,W);const{baseuri:a}=v(),{location:i}=b(),{to:u,state:l,replace:p,getProps:f=G}=r,d=c(r,q),m=R(u,a),g=encodeURI(m),y=i.pathname===g,w=k(i.pathname,g);return o.createElement("a",s({ref:t||n,"aria-current":y?"page":void 0},d,f({isCurrent:y,isPartiallyCurrent:w,href:m,location:i}),{href:m,onClick:e=>{if(d.onClick&&d.onClick(e),(e=>!e.defaultPrevented&&0===e.button&&!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey))(e)){e.preventDefault();let t=p;if("boolean"!=typeof p&&y){const e=c(s({},i.state),B);t=H(s({},l),e)}h(m,{state:l,replace:t})}}}))});V.displayName="Link",V.propTypes={to:a.string.isRequired};class J extends o.Component{constructor(...e){super(...e),this.displayName="ReactUseErrorBoundary"}componentDidCatch(...e){this.setState({}),this.props.onError(...e)}render(){return this.props.children}}const Q=o.createContext({componentDidCatch:{current:void 0},error:void 0,setError:()=>!1});function Y({children:e}){const[t,n]=o.useState(),r=o.useRef(),a=o.useMemo(()=>({componentDidCatch:r,error:t,setError:n}),[t]);return o.createElement(Q.Provider,{value:a},o.createElement(J,{error:t,onError:(e,t)=>{n(e),null==r.current||r.current(e,t)}},e))}Y.displayName="ReactUseErrorBoundaryContext";const K=function(e){var t,n;function r(t){return o.createElement(Y,null,o.createElement(e,s({key:"WrappedComponent"},t)))}return r.displayName=`WithErrorBoundary(${null!=(t=null!=(n=e.displayName)?n:e.name)?t:"Component"})`,r}(({history:e=d,children:t})=>{const{location:n}=e,[r,a]=o.useState({location:n}),[i]=function(){const e=o.useContext(Q);e.componentDidCatch.current=void 0;const t=o.useCallback(()=>{e.setError(void 0)},[]);return[e.error,t]}();if(o.useEffect(()=>{e._onTransitionComplete()},[r.location]),o.useEffect(()=>{let t=!1;const n=e.listen(({location:e})=>{Promise.resolve().then(()=>{requestAnimationFrame(()=>{t||a({location:e})})})});return()=>{t=!0,n()}},[]),i){if(!S(i))throw i;h(i.uri,{replace:!0})}return o.createElement(y.Provider,{value:r},"function"==typeof t?t(r):t||null)}),X=({children:e})=>{const t=b();return t?e(t):o.createElement(K,null,e)},Z=({url:e,children:t})=>{const n=e.indexOf("?");let r,a="";return n>-1?(r=e.substring(0,n),a=e.substring(n)):r=e,o.createElement(y.Provider,{value:{location:{pathname:r,search:a,hash:""}}},t)},ee=({path:e,children:t})=>{const{baseuri:n}=v(),{location:r}=b(),o=R(e,n),a=x(o,r.pathname);return t({location:r,match:a?s({},a.params,{uri:a.uri,path:e}):null})},te=["uri","location","component"],ne=["children","style","component","uri","location"],re=e=>{let{uri:t,location:n,component:r}=e,a=c(e,te);return o.createElement(ae,s({},a,{component:r,uri:t,location:n}))};let oe=0;const ae=e=>{let{children:t,style:n,component:r="div",uri:a,location:i}=e,u=c(e,ne);const l=o.useRef(),p=o.useRef(!0),f=o.useRef(a),d=o.useRef(i.pathname),h=o.useRef(!1);o.useEffect(()=>(oe++,m(),()=>{oe--,0===oe&&(p.current=!0)}),[]),o.useEffect(()=>{let e=!1,t=!1;a!==f.current&&(f.current=a,e=!0),i.pathname!==d.current&&(d.current=i.pathname,t=!0),h.current=e||t&&i.pathname===a,h.current&&m()},[a,i]);const m=o.useCallback(()=>{var e;p.current?p.current=!1:(e=l.current,h.current&&e&&e.focus())},[]);return o.createElement(r,s({style:s({outline:"none"},n),tabIndex:"-1",ref:l},u),t)},ie=["location","primary","children","basepath","baseuri","component"],se=e=>{const t=v(),n=b();return o.createElement(ce,s({},t,n,e))};function ce(e){const{location:t,primary:n=!0,children:r,basepath:a,component:i="div"}=e,u=c(e,ie),l=o.Children.toArray(r).reduce((e,t)=>{const n=U(a)(t);return e.concat(n)},[]),{pathname:p}=t,f=_(l,p);if(f){const{params:e,uri:r,route:c,route:{value:l}}=f,p=c.default?a:c.path.replace(/\*$/,""),d=s({},e,{uri:r,location:t}),h=o.cloneElement(l,d,l.props.children?o.createElement(se,{location:t,primary:n},l.props.children):void 0),m=n?re:i,y=n?s({uri:r,location:t,component:i},u):u;return o.createElement(g.Provider,{value:{baseuri:r,basepath:p}},o.createElement(m,y,h))}return null}const ue=()=>{const e=b();if(!e)throw new Error("useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");return e.location},le=()=>{throw new Error("useNavigate is removed. Use import { navigate } from 'gatsby' instead")},pe=()=>{const e=v();if(!e)throw new Error("useParams hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");const t=ue(),n=x(e.basepath,t.pathname);return n?n.params:null},fe=e=>{if(!e)throw new Error("useMatch(path: string) requires an argument of a string to match against");const t=v();if(!t)throw new Error("useMatch hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");const n=ue(),r=R(e,t.baseuri),o=x(r,n.pathname);return o?s({},o.params,{uri:o.uri,path:e}):null}},6491:function(e,t,n){"use strict";n.d(t,{X:function(){return a}});const r=new Map,o=new Map;function a(e){let t=r.get(e);return t||(t=o.get(e.toLowerCase())),t}[].forEach(e=>{e.ignoreCase?o.set(e.fromPath,e):r.set(e.fromPath,e)})},6498:function(e,t,n){"use strict";var r=n(7387),o=n(20),a=n(6540),i=n(6462),s=n(7035),c=n(7231),u=n(2024),l=n(6814),p=n(6491),f=n(9369);const d={id:"gatsby-announcer",style:{position:"absolute",top:0,width:1,height:1,padding:0,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:0},"aria-live":"assertive","aria-atomic":"true"};var h=n(7078);function m(e){const t=(0,p.X)(e),{hash:n,search:r}=window.location;return null!=t&&(window.___replace(t.toPath+r+n),!0)}let g="";window.addEventListener("unhandledrejection",e=>{/loading chunk \d* failed./i.test(e.reason)&&g&&(window.location.pathname=g)});const y=(e,t)=>{m(e.pathname)||(g=e.pathname,(0,o.N)("onPreRouteUpdate",{location:e,prevLocation:t}))},v=(e,t)=>{m(e.pathname)||(0,o.N)("onRouteUpdate",{location:e,prevLocation:t})},b=function(e,t){if(void 0===t&&(t={}),"number"==typeof e)return void i.globalHistory.navigate(e);const{pathname:n,search:r,hash:a}=(0,h.Rr)(e),s=(0,p.X)(n);if(s&&(e=s.toPath+r+a),window.___swUpdated)return void(window.location=n+r+a);const c=setTimeout(()=>{f.A.emit("onDelayedLoadPageResources",{pathname:n}),(0,o.N)("onRouteUpdateDelayed",{location:window.location})},1e3);l.Ay.loadPage(n+r).then(o=>{if(!o||o.status===l.Wi.Error)return window.history.replaceState({},"",location.href),window.location=n,void clearTimeout(c);o&&o.page.webpackCompilationHash!==window.___webpackCompilationHash&&("serviceWorker"in navigator&&null!==navigator.serviceWorker.controller&&"activated"===navigator.serviceWorker.controller.state&&navigator.serviceWorker.controller.postMessage({gatsbyApi:"clearPathResources"}),window.location=n+r+a),(0,i.navigate)(e,t),clearTimeout(c)})};function w(e,t){let{location:n}=t;const{pathname:r,hash:a}=n,i=(0,o.N)("shouldUpdateScroll",{prevRouterProps:e,pathname:r,routerProps:{location:n},getSavedScrollPosition:e=>[0,this._stateStorage.read(e,e.key)]});if(i.length>0)return i[i.length-1];if(e){const{location:{pathname:t}}=e;if(t===r)return a?decodeURI(a.slice(1)):[0,0]}return!0}let S=function(e){function t(t){var n;return(n=e.call(this,t)||this).announcementRef=a.createRef(),n}(0,r.A)(t,e);var n=t.prototype;return n.componentDidUpdate=function(e,t){requestAnimationFrame(()=>{let e=`new page at ${this.props.location.pathname}`;document.title&&(e=document.title);const t=document.querySelectorAll("#gatsby-focus-wrapper h1");t&&t.length&&(e=t[0].textContent);const n=`Navigated to ${e}`;if(this.announcementRef.current){this.announcementRef.current.innerText!==n&&(this.announcementRef.current.innerText=n)}})},n.render=function(){return a.createElement("div",Object.assign({},d,{ref:this.announcementRef}))},t}(a.Component);const E=(e,t)=>{var n,r;return e.href!==t.href||(null==e||null===(n=e.state)||void 0===n?void 0:n.key)!==(null==t||null===(r=t.state)||void 0===r?void 0:r.key)};let C=function(e){function t(t){var n;return n=e.call(this,t)||this,y(t.location,null),n}(0,r.A)(t,e);var n=t.prototype;return n.componentDidMount=function(){v(this.props.location,null)},n.shouldComponentUpdate=function(e){return!!E(this.props.location,e.location)&&(y(e.location,this.props.location),!0)},n.componentDidUpdate=function(e){E(e.location,this.props.location)&&v(this.props.location,e.location)},n.render=function(){return a.createElement(a.Fragment,null,this.props.children,a.createElement(S,{location:location}))},t}(a.Component);var P=n(6017),k=n(6877);function _(e,t){for(var n in e)if(!(n in t))return!0;for(var r in t)if(e[r]!==t[r])return!0;return!1}var x=function(e){function t(t){var n;n=e.call(this)||this;const{location:r,pageResources:o}=t;return n.state={location:{...r},pageResources:o||l.Ay.loadPageSync(r.pathname+r.search,{withErrorDetails:!0})},n}(0,r.A)(t,e),t.getDerivedStateFromProps=function(e,t){let{location:n}=e;if(t.location.href!==n.href){return{pageResources:l.Ay.loadPageSync(n.pathname+n.search,{withErrorDetails:!0}),location:{...n}}}return{location:{...n}}};var n=t.prototype;return n.loadResources=function(e){l.Ay.loadPage(e).then(t=>{t&&t.status!==l.Wi.Error?this.setState({location:{...window.location},pageResources:t}):(window.history.replaceState({},"",location.href),window.location=e)})},n.shouldComponentUpdate=function(e,t){return t.pageResources?this.state.pageResources!==t.pageResources||(this.state.pageResources.component!==t.pageResources.component||(this.state.pageResources.json!==t.pageResources.json||(!(this.state.location.key===t.location.key||!t.pageResources.page||!t.pageResources.page.matchPath&&!t.pageResources.page.path)||function(e,t,n){return _(e.props,t)||_(e.state,n)}(this,e,t)))):(this.loadResources(e.location.pathname+e.location.search),!1)},n.render=function(){return this.props.children(this.state)},t}(a.Component),R=n(8797),O=n(9732);const A=new l.N5(k,[],window.pageData);(0,l.iC)(A),A.setApiRunner(o.N);const{render:T,hydrate:N}=(0,O.n)();window.asyncRequires=k,window.___emitter=f.A,window.___loader=l.Zf,i.globalHistory.listen(e=>{e.location.action=e.action}),window.___push=e=>b(e,{replace:!1}),window.___replace=e=>b(e,{replace:!0}),window.___navigate=(e,t)=>b(e,t);const j="gatsby-reload-compilation-hash-match";(0,o.v)("onClientEntry").then(()=>{(0,o.N)("registerServiceWorker").filter(Boolean).length>0&&n(626);const e=e=>a.createElement(i.BaseContext.Provider,{value:{baseuri:"/",basepath:"/"}},a.createElement(P.A,e)),t=a.createContext({}),p={renderEnvironment:"browser"};let f=function(e){function n(){return e.apply(this,arguments)||this}return(0,r.A)(n,e),n.prototype.render=function(){const{children:e}=this.props;return a.createElement(i.Location,null,n=>{let{location:r}=n;return a.createElement(x,{location:r},n=>{let{pageResources:r,location:o}=n;const i=(0,l.LE)(),s=(0,l.Rh)();return a.createElement(c.G.Provider,{value:i},a.createElement(u.j$.Provider,{value:p},a.createElement(u.dd.Provider,{value:s},a.createElement(u.Jr.Provider,{value:r.page.slicesMap},a.createElement(t.Provider,{value:{pageResources:r,location:o}},e)))))})})},n}(a.Component),d=function(n){function o(){return n.apply(this,arguments)||this}return(0,r.A)(o,n),o.prototype.render=function(){return a.createElement(t.Consumer,null,t=>{let{pageResources:n,location:r}=t;return a.createElement(C,{location:r},a.createElement(s.z_,{location:r,shouldUpdateScroll:w},a.createElement(i.Router,{basepath:"/npe",location:r,id:"gatsby-focus-wrapper"},a.createElement(e,Object.assign({path:"/404.html"===n.page.path||"/500.html"===n.page.path?(0,R.A)(r.pathname,"/npe"):encodeURI((n.page.matchPath||n.page.path).split("?")[0])},this.props,{location:r,pageResources:n},n.json)))))})},o}(a.Component);const{pagePath:h,location:m}=window;h&&"/npe"+h!==m.pathname+(h.includes("?")?m.search:"")&&!(A.findMatchPath((0,R.A)(m.pathname,"/npe"))||h.match(/^\/(404|500)(\/?|.html)$/)||h.match(/^\/offline-plugin-app-shell-fallback\/?$/))&&(0,i.navigate)("/npe"+h+(h.includes("?")?"":m.search)+m.hash,{replace:!0});const g=()=>{try{return sessionStorage}catch{return null}};l.Zf.loadPage(m.pathname+m.search).then(e=>{var t;const n=g();if(null!=e&&null!==(t=e.page)&&void 0!==t&&t.webpackCompilationHash&&e.page.webpackCompilationHash!==window.___webpackCompilationHash&&("serviceWorker"in navigator&&null!==navigator.serviceWorker.controller&&"activated"===navigator.serviceWorker.controller.state&&navigator.serviceWorker.controller.postMessage({gatsbyApi:"clearPathResources"}),n)){if(!("1"===n.getItem(j)))return n.setItem(j,"1"),void window.location.reload(!0)}if(n&&n.removeItem(j),!e||e.status===l.Wi.Error){const t=`page resources for ${m.pathname} not found. Not rendering React`;if(e&&e.error)throw console.error(t),e.error;throw new Error(t)}const r=(0,o.N)("wrapRootElement",{element:a.createElement(d,null)},a.createElement(d,null),e=>{let{result:t}=e;return{element:t}}).pop(),i=function(){const e=a.useRef(!1);return a.useEffect(()=>{e.current||(e.current=!0,performance.mark&&performance.mark("onInitialClientRender"),(0,o.N)("onInitialClientRender"))},[]),a.createElement(f,null,r)},s=document.getElementById("gatsby-focus-wrapper");let c=T;s&&s.children.length&&(c=N);const u=(0,o.N)("replaceHydrateFunction",void 0,c)[0];function p(){const e="undefined"!=typeof window?document.getElementById("___gatsby"):null;u(a.createElement(i,null),e)}const h=document;if("complete"===h.readyState||"loading"!==h.readyState&&!h.documentElement.doScroll)setTimeout(function(){p()},0);else{const e=function(){h.removeEventListener("DOMContentLoaded",e,!1),window.removeEventListener("load",e,!1),p()};h.addEventListener("DOMContentLoaded",e,!1),window.addEventListener("load",e,!1)}})})},6774:function(e,t){"use strict";var n=0,r=function(e){var t=window.decodeURI(e.replace("#",""));if(""!==t){var r=document.getElementById(t);if(r){var o=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop,a=document.documentElement.clientTop||document.body.clientTop||0,i=window.getComputedStyle(r),s=i.getPropertyValue("scroll-margin-top")||i.getPropertyValue("scroll-snap-margin-top")||"0px";return r.getBoundingClientRect().top+o-parseInt(s,10)-a-n}}return null};t.onInitialClientRender=function(e,t){t.offsetY&&(n=t.offsetY),requestAnimationFrame(function(){var e=r(window.location.hash);null!==e&&window.scrollTo(0,e)})},t.shouldUpdateScroll=function(e){var t=e.routerProps.location,n=r(t.hash);return null===n||[0,n]}},6814:function(e,t,n){"use strict";n.d(t,{Wi:function(){return p},N5:function(){return S},Ay:function(){return P},Rh:function(){return _},LE:function(){return k},Zf:function(){return C},iC:function(){return E}});var r=n(7387),o=n(4506),a=n(8163);const i=function(e){if("undefined"==typeof document)return!1;const t=document.createElement("link");try{if(t.relList&&"function"==typeof t.relList.supports)return t.relList.supports(e)}catch(n){return!1}return!1}("prefetch")?function(e,t){return new Promise((n,r)=>{if("undefined"==typeof document)return void r();const o=document.createElement("link");o.setAttribute("rel","prefetch"),o.setAttribute("href",e),Object.keys(t).forEach(e=>{o.setAttribute(e,t[e])}),o.onload=n,o.onerror=r;(document.getElementsByTagName("head")[0]||document.getElementsByName("script")[0].parentNode).appendChild(o)})}:function(e){return new Promise((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.onload=()=>{200===r.status?t():n()},r.send(null)})},s={};var c=function(e,t){return new Promise(n=>{s[e]?n():i(e,t).then(()=>{n(),s[e]=!0}).catch(()=>{})})},u=n(9369),l=n(8990);const p={Error:"error",Success:"success"},f=e=>{const[t,n]=e.split("?");var r;return`/npe/page-data/${"/"===t?"index":(r="/"===(r=t)[0]?r.slice(1):r).endsWith("/")?r.slice(0,-1):r}/page-data.json${n?`?${n}`:""}`},d=e=>e.startsWith("//");function h(e,t){return void 0===t&&(t="GET"),new Promise(n=>{const r=new XMLHttpRequest;r.open(t,e,!0),r.onreadystatechange=()=>{4==r.readyState&&n(r)},r.send(null)})}const m=/bot|crawler|spider|crawling/i,g=function(e,t,n){var r;void 0===t&&(t=null);const o={componentChunkName:e.componentChunkName,path:e.path,webpackCompilationHash:e.webpackCompilationHash,matchPath:e.matchPath,staticQueryHashes:e.staticQueryHashes,getServerDataError:e.getServerDataError,slicesMap:null!==(r=e.slicesMap)&&void 0!==r?r:{}};return{component:t,head:n,json:e.result,page:o}};function y(e){return new Promise(t=>{try{const n=e.readRoot();t(n)}catch(n){if(!Object.hasOwnProperty.call(n,"_response")||!Object.hasOwnProperty.call(n,"_status"))throw n;setTimeout(()=>{y(e).then(t)},200)}})}let v=function(){function e(e,t){this.inFlightNetworkRequests=new Map,this.pageDb=new Map,this.inFlightDb=new Map,this.staticQueryDb={},this.pageDataDb=new Map,this.partialHydrationDb=new Map,this.slicesDataDb=new Map,this.sliceInflightDb=new Map,this.slicesDb=new Map,this.isPrefetchQueueRunning=!1,this.prefetchQueued=[],this.prefetchTriggered=new Set,this.prefetchCompleted=new Set,this.loadComponent=e,(0,l.QX)(t)}var t=e.prototype;return t.memoizedGet=function(e){let t=this.inFlightNetworkRequests.get(e);return t||(t=h(e,"GET"),this.inFlightNetworkRequests.set(e,t)),t.then(t=>(this.inFlightNetworkRequests.delete(e),t)).catch(t=>{throw this.inFlightNetworkRequests.delete(e),t})},t.setApiRunner=function(e){this.apiRunner=e,this.prefetchDisabled=e("disableCorePrefetching").some(e=>e)},t.fetchPageDataJson=function(e){const{pagePath:t,retries:n=0}=e,r=f(t);return this.memoizedGet(r).then(r=>{const{status:o,responseText:a}=r;if(200===o)try{const n=JSON.parse(a);if(void 0===n.path)throw new Error("not a valid pageData response");const r=t.split("?")[1];return r&&!n.path.includes(r)&&(n.path+=`?${r}`),Object.assign(e,{status:p.Success,payload:n})}catch(i){}return 404===o||200===o?"/404.html"===t||"/500.html"===t?Object.assign(e,{status:p.Error}):this.fetchPageDataJson(Object.assign(e,{pagePath:"/404.html",notFound:!0})):500===o?this.fetchPageDataJson(Object.assign(e,{pagePath:"/500.html",internalServerError:!0})):n<3?this.fetchPageDataJson(Object.assign(e,{retries:n+1})):Object.assign(e,{status:p.Error})})},t.fetchPartialHydrationJson=function(e){const{pagePath:t,retries:n=0}=e,r=f(t).replace(".json","-rsc.json");return this.memoizedGet(r).then(r=>{const{status:o,responseText:a}=r;if(200===o)try{return Object.assign(e,{status:p.Success,payload:a})}catch(i){}return 404===o||200===o?"/404.html"===t||"/500.html"===t?Object.assign(e,{status:p.Error}):this.fetchPartialHydrationJson(Object.assign(e,{pagePath:"/404.html",notFound:!0})):500===o?this.fetchPartialHydrationJson(Object.assign(e,{pagePath:"/500.html",internalServerError:!0})):n<3?this.fetchPartialHydrationJson(Object.assign(e,{retries:n+1})):Object.assign(e,{status:p.Error})})},t.loadPageDataJson=function(e){const t=(0,l.Hh)(e);if(this.pageDataDb.has(t)){const e=this.pageDataDb.get(t);return Promise.resolve(e)}return this.fetchPageDataJson({pagePath:t}).then(e=>(this.pageDataDb.set(t,e),e))},t.loadPartialHydrationJson=function(e){const t=(0,l.Hh)(e);if(this.partialHydrationDb.has(t)){const e=this.partialHydrationDb.get(t);return Promise.resolve(e)}return this.fetchPartialHydrationJson({pagePath:t}).then(e=>(this.partialHydrationDb.set(t,e),e))},t.loadSliceDataJson=function(e){if(this.slicesDataDb.has(e)){const t=this.slicesDataDb.get(e);return Promise.resolve({sliceName:e,jsonPayload:t})}return h(`/npe/slice-data/${e}.json`,"GET").then(t=>{const n=JSON.parse(t.responseText);return this.slicesDataDb.set(e,n),{sliceName:e,jsonPayload:n}})},t.findMatchPath=function(e){return(0,l.Yl)(e)},t.loadPage=function(e){const t=(0,l.Hh)(e);if(this.pageDb.has(t)){const e=this.pageDb.get(t);return e.error?Promise.resolve({error:e.error,status:e.status}):Promise.resolve(e.payload)}if(this.inFlightDb.has(t))return this.inFlightDb.get(t);const n=[this.loadAppData(),this.loadPageDataJson(t)];const r=Promise.all(n).then(e=>{const[n,r,i]=e;if(r.status===p.Error||(null==i?void 0:i.status)===p.Error)return{status:p.Error};let s=r.payload;const{componentChunkName:c,staticQueryHashes:l=[],slicesMap:f={}}=s,d={},h=Array.from(new Set(Object.values(f))),m=e=>{if(this.slicesDb.has(e.name))return this.slicesDb.get(e.name);if(this.sliceInflightDb.has(e.name))return this.sliceInflightDb.get(e.name);const t=this.loadComponent(e.componentChunkName).then(t=>{return{component:(n=t,n&&n.default||n),sliceContext:e.result.sliceContext,data:e.result.data};var n});return this.sliceInflightDb.set(e.name,t),t.then(t=>{this.slicesDb.set(e.name,t),this.sliceInflightDb.delete(e.name)}),t};return Promise.all(h.map(e=>this.loadSliceDataJson(e))).then(e=>{const f=[],h=(0,o.A)(l);for(const{jsonPayload:t,sliceName:n}of Object.values(e)){f.push({name:n,...t});for(const e of t.staticQueryHashes)h.includes(e)||h.push(e)}const v=[Promise.all(f.map(m)),this.loadComponent(c,"head")];v.push(this.loadComponent(c));const b=Promise.all(v).then(e=>{const[t,o,c]=e;d.createdAt=new Date;for(const n of t)(!n||n instanceof Error)&&(d.status=p.Error,d.error=n);let u;if((!c||c instanceof Error)&&(d.status=p.Error,d.error=c),d.status!==p.Error){if(d.status=p.Success,!0!==r.notFound&&!0!==(null==i?void 0:i.notFound)||(d.notFound=!0),s=Object.assign(s,{webpackCompilationHash:n?n.webpackCompilationHash:""}),"string"==typeof(null==i?void 0:i.payload)){u=g(s,null,o),u.partialHydration=i.payload;const e=new ReadableStream({start(e){const t=new TextEncoder;e.enqueue(t.encode(i.payload))},pull(e){e.close()},cancel(){}});return y((0,a.createFromReadableStream)(e)).then(e=>(u.partialHydration=e,u))}u=g(s,c,o)}return u}),w=Promise.all(h.map(e=>{if(this.staticQueryDb[e]){const t=this.staticQueryDb[e];return{staticQueryHash:e,jsonPayload:t}}return this.memoizedGet(`/npe/page-data/sq/d/${e}.json`).then(t=>{const n=JSON.parse(t.responseText);return{staticQueryHash:e,jsonPayload:n}}).catch(()=>{throw new Error(`We couldn't load "/npe/page-data/sq/d/${e}.json"`)})})).then(e=>{const t={};return e.forEach(e=>{let{staticQueryHash:n,jsonPayload:r}=e;t[n]=r,this.staticQueryDb[n]=r}),t});return Promise.all([b,w]).then(e=>{let n,[r,o]=e;return r&&(n={...r,staticQueryResults:o},d.payload=n,u.A.emit("onPostLoadPageResources",{page:n,pageResources:n})),this.pageDb.set(t,d),d.error?{error:d.error,status:d.status}:n}).catch(e=>({error:e,status:p.Error}))})});return r.then(()=>{this.inFlightDb.delete(t)}).catch(e=>{throw this.inFlightDb.delete(t),e}),this.inFlightDb.set(t,r),r},t.loadPageSync=function(e,t){void 0===t&&(t={});const n=(0,l.Hh)(e);if(this.pageDb.has(n)){var r;const e=this.pageDb.get(n);if(e.payload)return e.payload;if(null!==(r=t)&&void 0!==r&&r.withErrorDetails)return{error:e.error,status:e.status}}},t.shouldPrefetch=function(e){return!!(()=>{if("connection"in navigator&&void 0!==navigator.connection){if((navigator.connection.effectiveType||"").includes("2g"))return!1;if(navigator.connection.saveData)return!1}return!0})()&&((!navigator.userAgent||!m.test(navigator.userAgent))&&!this.pageDb.has(e))},t.prefetch=function(e){if(!this.shouldPrefetch(e))return{then:e=>e(!1),abort:()=>{}};if(this.prefetchTriggered.has(e))return{then:e=>e(!0),abort:()=>{}};const t={resolve:null,reject:null,promise:null};t.promise=new Promise((e,n)=>{t.resolve=e,t.reject=n}),this.prefetchQueued.push([e,t]);const n=new AbortController;return n.signal.addEventListener("abort",()=>{const t=this.prefetchQueued.findIndex(t=>{let[n]=t;return n===e});-1!==t&&this.prefetchQueued.splice(t,1)}),this.isPrefetchQueueRunning||(this.isPrefetchQueueRunning=!0,setTimeout(()=>{this._processNextPrefetchBatch()},3e3)),{then:(e,n)=>t.promise.then(e,n),abort:n.abort.bind(n)}},t._processNextPrefetchBatch=function(){(window.requestIdleCallback||(e=>setTimeout(e,0)))(()=>{const e=this.prefetchQueued.splice(0,4),t=Promise.all(e.map(e=>{let[t,n]=e;return this.prefetchTriggered.has(t)||(this.apiRunner("onPrefetchPathname",{pathname:t}),this.prefetchTriggered.add(t)),this.prefetchDisabled?n.resolve(!1):this.doPrefetch((0,l.Hh)(t)).then(()=>{this.prefetchCompleted.has(t)||(this.apiRunner("onPostPrefetchPathname",{pathname:t}),this.prefetchCompleted.add(t)),n.resolve(!0)})}));this.prefetchQueued.length?t.then(()=>{setTimeout(()=>{this._processNextPrefetchBatch()},3e3)}):this.isPrefetchQueueRunning=!1})},t.doPrefetch=function(e){const t=f(e);return c(t,{crossOrigin:"anonymous",as:"fetch"}).then(()=>this.loadPageDataJson(e))},t.hovering=function(e){this.loadPage(e)},t.getResourceURLsForPathname=function(e){const t=(0,l.Hh)(e),n=this.pageDataDb.get(t);if(n){const e=g(n.payload);return[].concat((0,o.A)(b(e.page.componentChunkName)),[f(t)])}return null},t.isPageNotFound=function(e){const t=(0,l.Hh)(e),n=this.pageDb.get(t);return!n||n.notFound},t.loadAppData=function(e){return void 0===e&&(e=0),this.memoizedGet("/npe/page-data/app-data.json").then(t=>{const{status:n,responseText:r}=t;let o;if(200!==n&&e<3)return this.loadAppData(e+1);if(200===n)try{const e=JSON.parse(r);if(void 0===e.webpackCompilationHash)throw new Error("not a valid app-data response");o=e}catch(a){}return o})},e}();const b=e=>(window.___chunkMapping[e]||[]).map(e=>"/npe"+e);let w,S=function(e){function t(t,n,r){var o;return o=e.call(this,function(e,n){if(void 0===n&&(n="components"),!t[n="components"][e])throw new Error(`We couldn't find the correct component chunk with the name "${e}"`);return t[n][e]().catch(e=>e)},n)||this,r&&o.pageDataDb.set((0,l.Hh)(r.path),{pagePath:r.path,payload:r,status:"success"}),o}(0,r.A)(t,e);var n=t.prototype;return n.doPrefetch=function(t){return e.prototype.doPrefetch.call(this,t).then(e=>{if(e.status!==p.Success)return Promise.resolve();const t=e.payload,n=t.componentChunkName,r=b(n);return Promise.all(r.map(c)).then(()=>t)})},n.loadPageDataJson=function(t){return e.prototype.loadPageDataJson.call(this,t).then(e=>e.notFound?d(t)?e:h(t,"HEAD").then(t=>200===t.status?{status:p.Error}:e):e)},n.loadPartialHydrationJson=function(t){return e.prototype.loadPartialHydrationJson.call(this,t).then(e=>e.notFound?d(t)?e:h(t,"HEAD").then(t=>200===t.status?{status:p.Error}:e):e)},t}(v);const E=e=>{w=e},C={enqueue:e=>w.prefetch(e),getResourceURLsForPathname:e=>w.getResourceURLsForPathname(e),loadPage:e=>w.loadPage(e),loadPageSync:function(e,t){return void 0===t&&(t={}),w.loadPageSync(e,t)},prefetch:e=>w.prefetch(e),isPageNotFound:e=>w.isPageNotFound(e),hovering:e=>w.hovering(e),loadAppData:()=>w.loadAppData()};var P=C;function k(){return w?w.staticQueryDb:{}}function _(){return w?w.slicesDb:{}}},6877:function(e,t,n){t.components={"component---src-pages-404-jsx":()=>Promise.all([n.e(379),n.e(223),n.e(415)]).then(n.bind(n,3729)),"component---src-pages-about-jsx":()=>Promise.all([n.e(593),n.e(379),n.e(602),n.e(351),n.e(453),n.e(223),n.e(951),n.e(150),n.e(96)]).then(n.bind(n,2470)),"component---src-pages-index-jsx":()=>Promise.all([n.e(379),n.e(602),n.e(223),n.e(951),n.e(529),n.e(279)]).then(n.bind(n,7352)),"component---src-pages-search-jsx":()=>Promise.all([n.e(379),n.e(223),n.e(765)]).then(n.bind(n,7392)),"component---src-pages-series-jsx":()=>Promise.all([n.e(379),n.e(223),n.e(951),n.e(529),n.e(126)]).then(n.bind(n,5144)),"component---src-pages-tags-jsx":()=>Promise.all([n.e(379),n.e(223),n.e(951),n.e(529),n.e(898)]).then(n.bind(n,7989)),"component---src-templates-post-jsx":()=>Promise.all([n.e(593),n.e(379),n.e(602),n.e(351),n.e(453),n.e(223),n.e(951),n.e(150),n.e(240)]).then(n.bind(n,4256)),"component---src-templates-series-jsx":()=>Promise.all([n.e(379),n.e(223),n.e(249)]).then(n.bind(n,4689))}},7035:function(e,t,n){"use strict";t.RV=t.z_=void 0;var r=n(3215);t.z_=r.ScrollHandler;var o=n(3721);t.RV=o.useScrollRestoration},7078:function(e,t,n){"use strict";n.d(t,{Fe:function(){return d},N_:function(){return E},Rr:function(){return c},Zf:function(){return v},oo:function(){return C}});var r=n(5556),o=n(6540),a=n(6462),i=n(6395);function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t{if("string"==typeof e)return!(e=>u.test(e))(e)},p=()=>"/npe",f=()=>"/npe";function d(e,t=p()){var n;if(!l(e))return e;if(e.startsWith("./")||e.startsWith("../"))return e;const r=null!=(n=null!=t?t:f())?n:"/";return`${null!=r&&r.endsWith("/")?r.slice(0,-1):r}${e.startsWith("/")?e:`/${e}`}`}const h=e=>null==e?void 0:e.startsWith("/");function m(e,t){const{pathname:n,search:r,hash:o}=c(e);return`${(0,i.T)(n,t)}${r}${o}`}const g=(e,t)=>"number"==typeof e?e:l(e)?h(e)?function(e){const t=d(e),n="always";return m(t,n)}(e):function(e,t){if(h(e))return e;const n="always",r=(0,a.resolve)(e,t);return m(r,n)}(e,t):e,y=["to","getProps","onClick","onMouseEnter","activeClassName","activeStyle","innerRef","partiallyActive","state","replace","_location"];function v(e){return d(e,f())}const b={activeClassName:r.string,activeStyle:r.object,partiallyActive:r.bool};function w(e){return o.createElement(a.Location,null,({location:t})=>o.createElement(S,s({},e,{_location:t})))}class S extends o.Component{constructor(e){super(e),this.defaultGetProps=({isPartiallyCurrent:e,isCurrent:t})=>(this.props.partiallyActive?e:t)?{className:[this.props.className,this.props.activeClassName].filter(Boolean).join(" "),style:s({},this.props.style,this.props.activeStyle)}:null;let t=!1;"undefined"!=typeof window&&window.IntersectionObserver&&(t=!0),this.state={IOSupported:t},this.abortPrefetch=null,this.handleRef=this.handleRef.bind(this)}_prefetch(){let e=window.location.pathname+window.location.search;this.props._location&&this.props._location.pathname&&(e=this.props._location.pathname+this.props._location.search);const t=c(g(this.props.to,e)),n=t.pathname+t.search;if(e!==n)return ___loader.enqueue(n)}componentWillUnmount(){if(!this.io)return;const{instance:e,el:t}=this.io;this.abortPrefetch&&this.abortPrefetch.abort(),e.unobserve(t),e.disconnect()}handleRef(e){this.props.innerRef&&Object.prototype.hasOwnProperty.call(this.props.innerRef,"current")?this.props.innerRef.current=e:this.props.innerRef&&this.props.innerRef(e),this.state.IOSupported&&e&&(this.io=((e,t)=>{const n=new window.IntersectionObserver(n=>{n.forEach(n=>{e===n.target&&t(n.isIntersecting||n.intersectionRatio>0)})});return n.observe(e),{instance:n,el:e}})(e,e=>{e?this.abortPrefetch=this._prefetch():this.abortPrefetch&&this.abortPrefetch.abort()}))}render(){const e=this.props,{to:t,getProps:n=this.defaultGetProps,onClick:r,onMouseEnter:i,state:u,replace:p,_location:f}=e,d=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,y),h=g(t,f.pathname);return l(h)?o.createElement(a.Link,s({to:h,state:u,getProps:n,innerRef:this.handleRef,onMouseEnter:e=>{i&&i(e);const t=c(h);___loader.hovering(t.pathname+t.search)},onClick:e=>{if(r&&r(e),!(0!==e.button||this.props.target||e.defaultPrevented||e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)){e.preventDefault();let t=p;const n=encodeURI(h)===f.pathname;"boolean"!=typeof p&&n&&(t=!0),window.___navigate(h,{state:u,replace:t})}return!0}},d)):o.createElement("a",s({href:h},d))}}S.propTypes=s({},b,{onClick:r.func,to:r.string.isRequired,replace:r.bool,state:r.object});const E=o.forwardRef((e,t)=>o.createElement(w,s({innerRef:t},e))),C=(e,t)=>{window.___navigate(g(e,window.location.pathname),t)}},7231:function(e,t,n){"use strict";n.d(t,{de:function(){return c},G:function(){return o},GR:function(){return u}});var r=n(6540);const o=(a="StaticQuery",i={},r.createServerContext?function(e,t){return void 0===t&&(t=null),globalThis.__SERVER_CONTEXT||(globalThis.__SERVER_CONTEXT={}),globalThis.__SERVER_CONTEXT[e]||(globalThis.__SERVER_CONTEXT[e]=r.createServerContext(e,t)),globalThis.__SERVER_CONTEXT[e]}(a,i):r.createContext(i));var a,i;function s(e){let{staticQueryData:t,data:n,query:o,render:a}=e;const i=n?n.data:t[o]&&t[o].data;return r.createElement(r.Fragment,null,i&&a(i),!i&&r.createElement("div",null,"Loading (StaticQuery)"))}const c=e=>{const{data:t,query:n,render:a,children:i}=e;return r.createElement(o.Consumer,null,e=>r.createElement(s,{data:t,query:n,render:a||i,staticQueryData:e}))},u=e=>{var t;r.useContext;const n=r.useContext(o);if(isNaN(Number(e)))throw new Error(`useStaticQuery was called with a string but expects to be called using \`graphql\`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql\`${e}\`);\n`);if(null!==(t=n[e])&&void 0!==t&&t.data)return n[e].data;throw new Error("The result of this StaticQuery could not be fetched.\n\nThis is likely a bug in Gatsby and if refreshing the page does not fix it, please open an issue in https://github.com/gatsbyjs/gatsby/issues")}},7387:function(e,t,n){"use strict";n.d(t,{A:function(){return o}});var r=n(3662);function o(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,(0,r.A)(e,t)}},7688:function(e,t){"use strict";t.DEFAULT_OPTIONS={maxWidth:650,wrapperStyle:"",backgroundColor:"white",linkImagesToOriginal:!0,showCaptions:!1,markdownCaptions:!1,withWebp:!1,withAvif:!1,tracedSVG:!1,loading:"lazy",decoding:"async",disableBgImageOnAlpha:!1,disableBgImage:!1},t.EMPTY_ALT="GATSBY_EMPTY_ALT",t.imageClass="gatsby-resp-image-image",t.imageWrapperClass="gatsby-resp-image-wrapper",t.imageBackgroundClass="gatsby-resp-image-background-image"},7914:function(e,t,n){"use strict";n.r(t),n.d(t,{onRouteUpdate:function(){return r}});n(4794),n(4598);const r=function(e,t){let{location:n}=e}},8108:function(e,t,n){n(2962)},8163:function(e,t,n){"use strict";e.exports=n(207)},8417:function(e,t,n){"use strict";function r(e){return"Minified Redux error #"+e+"; visit https://redux.js.org/Errors?code="+e+" for the full message or use the non-minified dev environment for full errors. "}n.r(t),n.d(t,{default:function(){return p}});var o="function"==typeof Symbol&&Symbol.observable||"@@observable",a=function(){return Math.random().toString(36).substring(7).split("").join(".")},i={INIT:"@@redux/INIT"+a(),REPLACE:"@@redux/REPLACE"+a(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+a()}};function s(e){if("object"!=typeof e||null===e)return!1;for(var t=e;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function c(e,t,n){var a;if("function"==typeof t&&"function"==typeof n||"function"==typeof n&&"function"==typeof arguments[3])throw new Error(r(0));if("function"==typeof t&&void 0===n&&(n=t,t=void 0),void 0!==n){if("function"!=typeof n)throw new Error(r(1));return n(c)(e,t)}if("function"!=typeof e)throw new Error(r(2));var u=e,l=t,p=[],f=p,d=!1;function h(){f===p&&(f=p.slice())}function m(){if(d)throw new Error(r(3));return l}function g(e){if("function"!=typeof e)throw new Error(r(4));if(d)throw new Error(r(5));var t=!0;return h(),f.push(e),function(){if(t){if(d)throw new Error(r(6));t=!1,h();var n=f.indexOf(e);f.splice(n,1),p=null}}}function y(e){if(!s(e))throw new Error(r(7));if(void 0===e.type)throw new Error(r(8));if(d)throw new Error(r(9));try{d=!0,l=u(l,e)}finally{d=!1}for(var t=p=f,n=0;nc(l,e)},8493:function(e,t,n){"use strict";var r=n(6540);var o="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},a=r.useState,i=r.useEffect,s=r.useLayoutEffect,c=r.useDebugValue;function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!o(e,n)}catch(r){return!0}}var l="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=a({inst:{value:n,getSnapshot:t}}),o=r[0].inst,l=r[1];return s(function(){o.value=n,o.getSnapshot=t,u(o)&&l({inst:o})},[e,n,t]),i(function(){return u(o)&&l({inst:o}),e(function(){u(o)&&l({inst:o})})},[e]),c(n),n};t.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:l},8797:function(e,t,n){"use strict";function r(e,t){return void 0===t&&(t=""),t?e===t?"/":e.startsWith(`${t}/`)?e.slice(t.length):e:e}n.d(t,{A:function(){return r}})},8919:function(e,t){"use strict";t.__esModule=!0,t.DEFAULT_OPTIONS=t.SCRIPT_ELEMENT_ID=void 0;t.SCRIPT_ELEMENT_ID="redux-ssr";t.DEFAULT_OPTIONS={serialize:{space:0,isJSON:!0,unsafe:!1,ignoreFunction:!0},cleanupOnClient:!0,windowKey:"__PRELOADED_STATE__"}},8989:function(e,t){"use strict";var n,r=Symbol.for("react.element"),o=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),c=Symbol.for("react.provider"),u=Symbol.for("react.context"),l=Symbol.for("react.server_context"),p=Symbol.for("react.forward_ref"),f=Symbol.for("react.suspense"),d=Symbol.for("react.suspense_list"),h=Symbol.for("react.memo"),m=Symbol.for("react.lazy"),g=Symbol.for("react.offscreen");function y(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case a:case s:case i:case f:case d:return e;default:switch(e=e&&e.$$typeof){case l:case u:case p:case m:case h:case c:return e;default:return t}}case o:return t}}}n=Symbol.for("react.module.reference"),t.isContextConsumer=function(e){return y(e)===u}},8990:function(e,t,n){"use strict";n.d(t,{Yl:function(){return f},Hh:function(){return h},UA:function(){return d},QX:function(){return p}});var r=n(6462),o=n(8797),a=e=>{if(void 0===e)return e;let[t,n=""]=e.split("?");return n&&(n="?"+n),"/"===t?"/"+n:"/"===t.charAt(t.length-1)?t.slice(0,-1)+n:t+n},i=n(6491);const s=new Map;let c=[];const u=e=>{let t=e;if(-1!==e.indexOf("?")){const[n,r]=e.split("?");t=`${n}?${encodeURIComponent(r)}`}const n=decodeURIComponent(t);return(0,o.A)(n,decodeURIComponent("/npe")).split("#")[0]};function l(e){return e.startsWith("/")||e.startsWith("https://")||e.startsWith("http://")?e:new URL(e,window.location.href+(window.location.href.endsWith("/")?"":"/")).pathname}const p=e=>{c=e},f=e=>{const t=m(e),n=c.map(e=>{let{path:t,matchPath:n}=e;return{path:n,originalPath:t}}),o=(0,r.pick)(n,t);return o?a(o.route.originalPath):null},d=e=>{const t=m(e),n=c.map(e=>{let{path:t,matchPath:n}=e;return{path:n,originalPath:t}}),o=(0,r.pick)(n,t);return o?o.params:{}},h=e=>{const t=u(l(e));if(s.has(t))return s.get(t);const n=(0,i.X)(e);if(n)return h(n.toPath);let r=f(t);return r||(r=m(e)),s.set(t,r),r},m=e=>{let t=u(l(e));return"/index.html"===t&&(t="/"),t=a(t),t}},9242:function(e,t,n){"use strict";e.exports=n(2162)},9300:function(e,t,n){"use strict";t.__esModule=!0,t.injectPartytownSnippet=function(e){if(!e.length)return;const t=document.querySelector("script[data-partytown]"),n=document.querySelector('iframe[src*="~partytown/partytown-sandbox-sw"]');t&&t.remove();n&&n.remove();const a=(0,o.getForwards)(e),i=document.createElement("script");i.dataset.partytown="",i.innerHTML=(0,r.partytownSnippet)({forward:a}),document.head.appendChild(i)};var r=n(4656),o=n(3309)},9369:function(e,t,n){"use strict";n.d(t,{A:function(){return r}});var r=function(e){return e=e||Object.create(null),{on:function(t,n){(e[t]||(e[t]=[])).push(n)},off:function(t,n){e[t]&&e[t].splice(e[t].indexOf(n)>>>0,1)},emit:function(t,n){(e[t]||[]).slice().map(function(e){e(n)}),(e["*"]||[]).slice().map(function(e){e(t,n)})}}}()},9377:function(e,t,n){e.exports=[{plugin:n(3697),options:{plugins:[]}},{plugin:n(3785),options:{plugins:[],pathToCreateStoreModule:"./src/reducers/createStore",serialize:{space:0,isJSON:!0,unsafe:!1,ignoreFunction:!0},cleanupOnClient:!0,windowKey:"__PRELOADED_STATE__"}},{plugin:n(2039),options:{plugins:[],displayName:!0,fileName:!0,minify:!0,namespace:"",transpileTemplateLiterals:!0,topLevelImportPaths:[],pure:!1,disableVendorPrefixes:!1}},{plugin:n(7914),options:{plugins:[],name:"CATCH NPE",short_name:"CATCH NPE",description:"CATCH NPE tech blog",start_url:"/",background_color:"#ffffff",theme_color:"#ced4da",display:"standalone",icon:"static/favicon.png",legacy:!0,theme_color_in_head:!0,cache_busting_mode:"query",crossOrigin:"anonymous",include_favicon:!0,cacheDigest:"a3797e645e79b21302dc98c81ba92b2c"}},{plugin:n(5616),options:{plugins:[],maxWidth:680,loading:"lazy",wrapperStyle:"margin-bottom: 16px;",quality:100,showCaptions:!0,linkImagesToOriginal:!0,markdownCaptions:!1,backgroundColor:"white",withWebp:!1,withAvif:!1,decoding:"async",disableBgImageOnAlpha:!1,disableBgImage:!1}},{plugin:n(6774),options:{plugins:[],icon:'',className:"heading-anchor",maintainCase:!0,removeAccents:!0,elements:["h1","h2","h3","h4","h5","h6"],offsetY:0}},{plugin:n(8108),options:{plugins:[]}},{plugin:n(2311),options:{plugins:[]}}]},9732:function(e,t,n){"use strict";n.d(t,{n:function(){return o}});const r=new WeakMap;function o(){const e=n(5338);return{render:(t,n)=>{let o=r.get(n);o||r.set(n,o=e.createRoot(n)),o.render(t)},hydrate:(t,n)=>e.hydrateRoot(n,t)}}},9829:function(e,t,n){"use strict";n.d(t,{h:function(){return i},nA:function(){return s}});const r={theme:"light"},o="setLight",a="setDark",i={type:o,data:{theme:"light"}},s={type:a,data:{theme:"dark"}};t.Ay=function(e,t){switch(void 0===e&&(e=r),t.type){case o:return{...e,theme:"light"};case a:return{...e,theme:"dark"};default:return{...e}}}},9888:function(e,t,n){"use strict";e.exports=n(8493)}},function(e){e.O(0,[593,869],function(){return t=6498,e(e.s=t);var t});e.O()}]);
-//# sourceMappingURL=app-6ad6b3ba41313fcc3e4a.js.map
\ No newline at end of file
diff --git a/public/app-6ad6b3ba41313fcc3e4a.js.LICENSE.txt b/public/app-6ad6b3ba41313fcc3e4a.js.LICENSE.txt
deleted file mode 100644
index a2110cb..0000000
--- a/public/app-6ad6b3ba41313fcc3e4a.js.LICENSE.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * @license React
- * react-is.production.min.js
- *
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-/**
- * @license React
- * react-server-dom-webpack.production.min.js
- *
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-/**
- * @license React
- * use-sync-external-store-shim.production.js
- *
- * Copyright (c) Meta Platforms, Inc. and affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-/**
- * @license React
- * use-sync-external-store-shim/with-selector.production.js
- *
- * Copyright (c) Meta Platforms, Inc. and affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-/** @license React v16.13.1
- * react-is.production.min.js
- *
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
diff --git a/public/app-6ad6b3ba41313fcc3e4a.js.map b/public/app-6ad6b3ba41313fcc3e4a.js.map
deleted file mode 100644
index a38c7d0..0000000
--- a/public/app-6ad6b3ba41313fcc3e4a.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"app-6ad6b3ba41313fcc3e4a.js","mappings":";oHAAA,MAAMA,EAAUC,EAAQ,OAClB,2BAAEC,EAA0B,SAAEC,EAAQ,aAAEC,GAC5CH,EAAAA,MAAAA,GAEFI,EAAQ,EAAY,SAACC,EAAKC,EAAWC,EAAeC,QAAtB,IAAJF,IAAAA,EAAO,CAAC,GAYhC,IAAIG,EAAUV,EAAQW,IAAIC,IACxB,IAAKA,EAAOA,OAAON,GACjB,OAGFC,EAAKL,2BAA6BA,EAClCK,EAAKJ,SAAWA,EAChBI,EAAKH,aAAeA,EAEpB,MAAMS,EAASD,EAAOA,OAAON,GAAKC,EAAMK,EAAOE,SAI/C,OAHID,GAAUJ,IACZF,EAAOE,EAAa,CAAEF,OAAMM,SAAQD,YAE/BC,IAMT,OAFAH,EAAUA,EAAQK,OAAOF,QAA4B,IAAXA,GAEtCH,EAAQM,OAAS,EACZN,EACEF,EACF,CAACA,GAED,EAEX,EAEAH,EAAQ,EAAiB,CAACC,EAAKC,EAAMC,IACnCR,EAAQiB,OACN,CAACC,EAAUC,IACTA,EAAKP,OAAON,GACRY,EAASE,KAAK,IAAMD,EAAKP,OAAON,GAAKC,EAAMY,EAAKL,UAChDI,EACNG,QAAQC,U,geC7CZ,IAAIC,EAJJ,SAA0BC,GACxBA,GACF,EAIO,MAEMC,EAAW,IAAMF,E,cCR9B,MAAMG,EAAaC,OAAOC,IAAI,uBACxBC,EAA2B,oBAAfC,WAA6BA,WAE/C,CAAC,EAED,SAASC,IACP,IAAIC,EAEJ,IAAK,gBAAqB,MAAO,CAAC,EAClC,MAAMC,EAAkD,OAApCD,EAAiBH,EAAGH,IAAuBM,EAAiBH,EAAGH,GAAc,IAAIQ,IACrG,IAAIC,EAAcF,EAAWG,IAAI,iBAYjC,OAVKD,IACHA,EAAc,gBAAoB,MAMlCF,EAAWI,IAAI,gBAAqBF,IAG/BA,CACT,CAEO,MAAMG,EAAiCP,IChBvC,SAASQ,EAAuBC,EAAUF,GAC/C,OAAO,WAOL,OANqB,IAAAG,YAAWD,EAOlC,CACF,CAkBO,MAAM,EAA+BD,ICtC/BG,EAAiB,KAC5B,MAAM,IAAIC,MAAM,0BCGlB,IAAIC,EAAmCF,EAChC,MAIDG,EAAc,CAACC,EAAGC,IAAMD,IAAMC,EAS7B,SAASC,EAAmBR,EAAUF,GAC3C,MAAMW,EAAkBT,IAAYF,EAAoB,EAAyBC,EAAuBC,GACxG,OAAO,SAAqBU,EAAUC,EAAsB,CAAC,GAC3D,MAAM,WACJC,EAAaP,EAAW,eACxBQ,EAA0B,UAC1BC,GACiC,mBAAxBH,EAAqC,CAC9CC,WAAYD,GACVA,EAgBJ,MAAM,MACJI,EAAK,aACLC,EAAY,eACZC,EACAJ,eAAgBK,EAChBJ,UAAWK,GACTV,IAEEW,IADW,IAAAC,SAAO,IACA,IAAAC,aAAY,CAClC,CAACZ,EAASa,MAAMC,GAuDd,OAtDiBd,EAASc,EAuD5B,GAEAd,EAASa,MAAO,CAACb,EAAUQ,EAAsBL,KAC7CY,EAAgBrB,EAAiCY,EAAaU,aAAcX,EAAMY,SAAUV,GAAkBF,EAAMY,SAAUP,EAAiBR,GAErJ,OADA,IAAAgB,eAAcH,GACPA,CACT,CACF,CAyBO,MAAMI,EAA2BrB,IC5IxC,SAASsB,IACP,OAAOA,EAAWC,OAAOC,OAASD,OAAOC,OAAOC,OAAS,SAAUC,GACjE,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAU5D,OAAQ2D,IAAK,CACzC,IAAIE,EAAID,UAAUD,GAClB,IAAK,IAAIG,KAAKD,GAAG,CAAG,GAAEE,eAAeC,KAAKH,EAAGC,KAAOJ,EAAEI,GAAKD,EAAEC,GAC/D,CACA,OAAOJ,CACT,EAAGJ,EAASW,MAAM,KAAML,UAC1B,CCRA,SAASM,EAA8BJ,EAAGH,GACxC,GAAI,MAAQG,EAAG,MAAO,CAAC,EACvB,IAAID,EAAI,CAAC,EACT,IAAK,IAAIH,KAAKI,EAAG,GAAI,CAAC,EAAEC,eAAeC,KAAKF,EAAGJ,GAAI,CACjD,IAAK,IAAMC,EAAEQ,QAAQT,GAAI,SACzBG,EAAEH,GAAKI,EAAEJ,EACX,CACA,OAAOG,CACT,C,iCCPA,MAAMO,EAAY,CAAC,sBAAuB,yBAA0B,kBAE7D,SAASC,EAA8BC,EAAiBC,EAAoBC,EAAYC,GAAU,eACvGC,EAAc,iBACdC,EAAgB,mBAChBC,IAEA,IACI5B,EACA6B,EACAC,EACAC,EACAC,EALAC,GAAoB,EAuCxB,SAASC,EAAsBC,EAAWC,GACxC,MAAMC,GAAgBV,EAAiBS,EAAcP,GAC/CS,GAAgBZ,EAAeS,EAAWnC,EAAOoC,EAAcP,GAGrE,OAFA7B,EAAQmC,EACRN,EAAWO,EACPC,GAAgBC,GA1BpBR,EAAaR,EAAgBtB,EAAO6B,GAChCN,EAAmBgB,oBAAmBR,EAAgBR,EAAmBE,EAAUI,IACvFG,EAAcR,EAAWM,EAAYC,EAAeF,GAC7CG,GAwBHK,GApBAf,EAAgBiB,oBAAmBT,EAAaR,EAAgBtB,EAAO6B,IACvEN,EAAmBgB,oBAAmBR,EAAgBR,EAAmBE,EAAUI,IACvFG,EAAcR,EAAWM,EAAYC,EAAeF,GAC7CG,GAkBHM,EAfN,WACE,MAAME,EAAiBlB,EAAgBtB,EAAO6B,GACxCY,GAAqBb,EAAmBY,EAAgBV,GAG9D,OAFAA,EAAaU,EACTC,IAAmBT,EAAcR,EAAWM,EAAYC,EAAeF,IACpEG,CACT,CAS2BU,GAClBV,CACT,CAEA,OAAO,SAAgCG,EAAWC,GAChD,OAAOH,EAAoBC,EAAsBC,EAAWC,IA3C5DpC,EA2C4FmC,EA1C5FN,EA0CuGO,EAzCvGN,EAAaR,EAAgBtB,EAAO6B,GACpCE,EAAgBR,EAAmBE,EAAUI,GAC7CG,EAAcR,EAAWM,EAAYC,EAAeF,GACpDI,GAAoB,EACbD,EAsCT,CACF,CC5DO,SAASW,EAKhBC,GACE,OAAO,SAA8BnB,GACnC,MAAMoB,EAAWD,EAAYnB,GAE7B,SAASqB,IACP,OAAOD,CACT,CAGA,OADAC,EAAiBP,mBAAoB,EAC9BO,CACT,CACF,CASO,SAASC,EAAqBC,GACnC,OAAOA,EAAWT,kBAAoBU,QAAQD,EAAWT,mBAA2C,IAAtBS,EAAWhG,MAC3F,CAaO,SAASkG,EAAmBF,EAAYG,GAC7C,OAAO,SAA2B1B,GAAU,YAC1C2B,IAEA,MAAMC,EAAQ,SAAyBC,EAAiBzB,GACtD,OAAOwB,EAAMd,kBAAoBc,EAAML,WAAWM,EAAiBzB,GAAYwB,EAAML,WAAWM,OAAiBC,EACnH,EAoBA,OAjBAF,EAAMd,mBAAoB,EAE1Bc,EAAML,WAAa,SAAgCM,EAAiBzB,GAClEwB,EAAML,WAAaA,EACnBK,EAAMd,kBAAoBQ,EAAqBC,GAC/C,IAAIQ,EAAQH,EAAMC,EAAiBzB,GASnC,MAPqB,mBAAV2B,IACTH,EAAML,WAAaQ,EACnBH,EAAMd,kBAAoBQ,EAAqBS,GAC/CA,EAAQH,EAAMC,EAAiBzB,IAI1B2B,CACT,EAEOH,CACT,CACF,CCrEO,SAASI,EAAwBC,EAAK3D,GAC3C,MAAO,CAAC0B,EAAU3E,KAChB,MAAM,IAAI6B,MAAM,gCAAgC+E,SAAW3D,wCAA2CjD,EAAQ6G,yBAElH,CCDO,SAASC,EAAkB9B,EAAYC,EAAeF,GAE3D,OAAOvB,EAAS,CAAC,EAAGuB,EAAUC,EAAYC,EAC5C,CCkEA,MAAM8B,EAAgB,CACpB,MAAAC,GAAU,EAEV1F,IAAK,IAAM,IAEN,SAAS2F,EAAmBxE,EAAOyE,GACxC,IAAIC,EACAC,EAAYL,EAEZM,EAAsB,EAEtBC,GAAiB,EAoBrB,SAASC,IACH7E,EAAa8E,eACf9E,EAAa8E,eAEjB,CAMA,SAASC,IACPJ,IAEKF,IACHA,EAAcD,EAAYA,EAAU9D,aAAamE,GAAuB9E,EAAMiF,UAAUH,GACxFH,EAlHN,WACE,MAAM3G,EAAQE,IACd,IAAIgH,EAAQ,KACRC,EAAO,KACX,MAAO,CACL,KAAAC,GACEF,EAAQ,KACRC,EAAO,IACT,EAEA,MAAAZ,GACEvG,EAAM,KACJ,IAAIqH,EAAWH,EAEf,KAAOG,GACLA,EAASpH,WACToH,EAAWA,EAASzH,MAG1B,EAEA,GAAAiB,GACE,IAAI8F,EAAY,GACZU,EAAWH,EAEf,KAAOG,GACLV,EAAUW,KAAKD,GACfA,EAAWA,EAASzH,KAGtB,OAAO+G,CACT,EAEA,SAAAM,CAAUhH,GACR,IAAIsH,GAAe,EACfF,EAAWF,EAAO,CACpBlH,WACAL,KAAM,KACN4H,KAAML,GASR,OANIE,EAASG,KACXH,EAASG,KAAK5H,KAAOyH,EAErBH,EAAQG,EAGH,WACAE,GAA0B,OAAVL,IACrBK,GAAe,EAEXF,EAASzH,KACXyH,EAASzH,KAAK4H,KAAOH,EAASG,KAE9BL,EAAOE,EAASG,KAGdH,EAASG,KACXH,EAASG,KAAK5H,KAAOyH,EAASzH,KAE9BsH,EAAQG,EAASzH,KAErB,CACF,EAGJ,CAgDkB6H,GAEhB,CAEA,SAASC,IACPd,IAEIF,GAAuC,IAAxBE,IACjBF,IACAA,OAAcV,EACdW,EAAUS,QACVT,EAAYL,EAEhB,CAgBA,MAAMrE,EAAe,CACnBU,aA/DF,SAAsB0E,GACpBL,IACA,MAAMW,EAAkBhB,EAAUM,UAAUI,GAE5C,IAAIO,GAAU,EACd,MAAO,KACAA,IACHA,GAAU,EACVD,IACAD,KAGN,EAoDEG,iBAlDF,WACElB,EAAUJ,QACZ,EAiDEO,sBACAS,aA1CF,WACE,OAAOV,CACT,EAyCEG,aAnBF,WACOH,IACHA,GAAiB,EACjBG,IAEJ,EAeEU,eAbF,WACMb,IACFA,GAAiB,EACjBa,IAEJ,EASEI,aAAc,IAAMnB,GAEtB,OAAO1E,CACT,CCnJO,MACM8F,IADiC,oBAAXC,aAAqD,IAApBA,OAAOC,eAAqE,IAAlCD,OAAOC,SAASC,eACzE,kBAAwB,YCX7E,SAASC,EAAGC,EAAGC,GACb,OAAID,IAAMC,EACK,IAAND,GAAiB,IAANC,GAAW,EAAID,GAAM,EAAIC,EAEpCD,GAAMA,GAAKC,GAAMA,CAE5B,CAEe,SAASC,EAAaC,EAAMC,GACzC,GAAIL,EAAGI,EAAMC,GAAO,OAAO,EAE3B,GAAoB,iBAATD,GAA8B,OAATA,GAAiC,iBAATC,GAA8B,OAATA,EAC3E,OAAO,EAGT,MAAMC,EAAQzF,OAAO0F,KAAKH,GACpBI,EAAQ3F,OAAO0F,KAAKF,GAC1B,GAAIC,EAAMhJ,SAAWkJ,EAAMlJ,OAAQ,OAAO,EAE1C,IAAK,IAAImJ,EAAI,EAAGA,EAAIH,EAAMhJ,OAAQmJ,IAChC,IAAK5F,OAAO6F,UAAUrF,eAAeC,KAAK+E,EAAMC,EAAMG,MAAQT,EAAGI,EAAKE,EAAMG,IAAKJ,EAAKC,EAAMG,KAC1F,OAAO,EAIX,OAAO,CACT,CCxBA,MAAM,EAAY,CAAC,0BAgBnB,IAAIE,EAAuB3H,EACpB,MAKD4H,EAAwB,CAAC,KAAM,MAoBrC,SAASC,EAAoBC,EAAkBC,EAAgBC,EAAmBC,EAClFC,EAA2BxB,GAEzBoB,EAAiBK,QAAUF,EAC3BD,EAAkBG,SAAU,EAExBD,EAA0BC,UAC5BD,EAA0BC,QAAU,KACpCzB,IAEJ,CAmFA,SAAS0B,EAAYhI,EAAGC,GACtB,OAAOD,IAAMC,CACf,CA8QA,MAlPA,SAAiBuC,EAAiBC,EAAoBC,GAAY,KAGhEuF,EAAI,eACJrF,EAAiBoF,EAAW,iBAC5BnF,EAAmBkE,EAAY,mBAC/BjE,EAAqBiE,EAAY,oBACjCmB,EAAsBnB,EAAY,WAElCoB,GAAa,EAAK,QAElBzI,EAAUF,GACR,CAAC,GAQH,MAAM4I,EAAU1I,EACV2I,EC1LD,SAAgC7F,GACrC,OAAQA,EAAkF,mBAApBA,EACtE4B,EAAmB5B,GAAsCmC,EAAwBnC,EAAiB,mBADxEqB,EAAuB,KAAM,CAAG,GAE5D,CDuL8ByE,CAAuB9F,GAC7C+F,EE1LD,SAAmC9F,GACxC,OAAOA,GAAoD,iBAAvBA,EAAkCoB,EAAuBlB,GCJhF,SAA4B6F,EAAgB7F,GACzD,MAAM8F,EAAsB,CAAC,EAE7B,IAAK,MAAMC,KAAOF,EAAgB,CAChC,MAAMG,EAAgBH,EAAeE,GAER,mBAAlBC,IACTF,EAAoBC,GAAO,IAAIjL,IAASkF,EAASgG,KAAiBlL,IAEtE,CAEA,OAAOgL,CACT,CDPEG,CAAmBnG,EAAoBE,IAAcF,EAEjB,mBAAvBA,EACb2B,EAAmB3B,GAA4CkC,EAAwBlC,EAAoB,sBAHjCoB,EAAuBlB,IAAY,CAC3GA,aAGJ,CFoLiCkG,CAA0BpG,GACnDqG,EJjKD,SAA2BpG,GAChC,OAAQA,EAA6D,mBAAfA,EAvBjD,SAA4BA,GACjC,OAAO,SAA6BC,GAAU,YAC5C2B,EAAW,oBACX4D,IAEA,IACIhF,EADA6F,GAAa,EAEjB,OAAO,SAAyB/F,EAAYC,EAAeF,GACzD,MAAMiG,EAAkBtG,EAAWM,EAAYC,EAAeF,GAU9D,OARIgG,EACGb,EAAoBc,EAAiB9F,KAAcA,EAAc8F,IAEtED,GAAa,EACb7F,EAAc8F,GAIT9F,CACT,CACF,CACF,CAEoF+F,CAAmBvG,GAAciC,EAAwBjC,EAAY,cAAlI,IAAMoC,CAC7B,CI+JyBoE,CAAkBxG,GACnCyG,EAA2BhF,QAAQ3B,GAuNzC,OArNwB4G,IAKtB,MAAMvE,EAAuBuE,EAAiB9E,aAAe8E,EAAiBnI,MAAQ,YAChFqD,EAAc,WAAWO,KACzBwE,EAAyB,CAC7BF,2BACA7E,cACAO,uBACAuE,mBAEAf,sBAEAE,yBACAO,iBACAlG,iBACAE,qBACAD,mBACAqF,uBAGF,SAASoB,EAAgB5E,GACvB,MAAO6E,EAAcC,EAAwB3B,GAAgB,UAAc,KAIzE,MAAM,uBACJ2B,GACE9E,EACEmD,EAAezF,EAA8BsC,EAAO,GAE1D,MAAO,CAACA,EAAMhF,QAAS8J,EAAwB3B,IAC9C,CAACnD,IACE+E,EAAe,UAAc,IAG1BF,GAAgBA,EAAaG,WACpC,IAAAC,mBAAgC,gBAAoBJ,EAAaG,SAAU,OAASH,EAAenB,EAClG,CAACmB,EAAcnB,IAEZwB,EAAe,aAAiBH,GAIhCI,EAAwB1F,QAAQO,EAAMjE,QAAU0D,QAAQO,EAAMjE,MAAMY,WAAa8C,QAAQO,EAAMjE,MAAMkC,UACrGmH,EAA0B3F,QAAQyF,IAAiBzF,QAAQyF,EAAanJ,OAO9E,MAAMA,EAAQoJ,EAAwBnF,EAAMjE,MAAQmJ,EAAanJ,MAC3DE,EAAiBmJ,EAA0BF,EAAajJ,eAAiBF,EAAMY,SAC/E0I,EAAqB,UAAc,IPvLhC,SAAmCpH,EAAUqH,GAC1D,IAAI,oBACF3B,EAAmB,uBACnBE,EAAsB,eACtBO,GACEkB,EACAhM,EAAUoE,EAA8B4H,EAAM1H,GAUlD,OAAOC,EARiB8F,EAAoB1F,EAAU3E,GAC3BuK,EAAuB5F,EAAU3E,GACzC8K,EAAenG,EAAU3E,GAM0C2E,EAAU3E,EAClG,COyKe,CAAuByC,EAAMkC,SAAU0G,GAC7C,CAAC5I,KACGC,EAAc4F,GAAoB,UAAc,KACrD,IAAK6C,EAA0B,OAAO3B,EAGtC,MAAM9G,EAAeuE,EAAmBxE,EAAOoJ,OAAwBpF,EAAYmF,EAAalJ,cAK1F4F,EAAmB5F,EAAa4F,iBAAiB3E,KAAKjB,GAC5D,MAAO,CAACA,EAAc4F,IACrB,CAAC7F,EAAOoJ,EAAuBD,IAG5BK,EAAyB,UAAc,IACvCJ,EAIKD,EAKFpI,EAAS,CAAC,EAAGoI,EAAc,CAChClJ,iBAED,CAACmJ,EAAuBD,EAAclJ,IAEnCiH,EAAiB,WACjBD,EAAmB,SAAaG,GAChCC,EAA4B,WAC5BF,EAAoB,UAAa,GAEjCsC,GADuB,UAAa,GACxB,UAAa,IACzBC,EAAkC,WACxC3D,EAA0B,KACxB0D,EAAUnC,SAAU,EACb,KACLmC,EAAUnC,SAAU,IAErB,IACH,MAAMqC,EAA2B,UAAc,IAC5B,IAOXtC,EAA0BC,SAAWF,IAAiBH,EAAiBK,QAClED,EAA0BC,QAO5BgC,EAAmBtJ,EAAMY,WAAYwG,GAI7C,CAACpH,EAAOoH,IAILwC,EAAoB,UAAc,IACpBC,GACX5J,EAxQf,SAA0ByI,EAA0B1I,EAAOC,EAAcqJ,EAAoBrC,EAAkBC,EAAgBC,EAAmBsC,EAAWpC,EAA2BxB,EACxLiE,GAEE,IAAKpB,EAA0B,MAAO,OAEtC,IAAIqB,GAAiB,EACjBC,EAAkB,KAEtB,MAAMC,EAAkB,KACtB,GAAIF,IAAmBN,EAAUnC,QAG/B,OAIF,MAAM4C,EAAmBlK,EAAMY,WAC/B,IAAIuJ,EAAeC,EAEnB,IAGED,EAAgBb,EAAmBY,EAAkBjD,EAAiBK,QACxE,CAAE,MAAOlG,GACPgJ,EAAQhJ,EACR4I,EAAkB5I,CACpB,CAEKgJ,IACHJ,EAAkB,MAIhBG,IAAkBjD,EAAeI,QAC9BH,EAAkBG,SACrBzB,KAOFqB,EAAeI,QAAU6C,EACzB9C,EAA0BC,QAAU6C,EACpChD,EAAkBG,SAAU,EAG5BwC,MA0BJ,OArBA7J,EAAa8E,cAAgBkF,EAC7BhK,EAAa+E,eAGbiF,IAE2B,KAKzB,GAJAF,GAAiB,EACjB9J,EAAayF,iBACbzF,EAAa8E,cAAgB,KAEzBiF,EAMF,MAAMA,EAKZ,CAkMiBK,CAAiB3B,EAA0B1I,EAAOC,EACzDqJ,EAAoBrC,EAAkBC,EAAgBC,EAAmBsC,EAAWpC,EAA2BxB,EAAkBgE,GAJxH,OAQV,CAAC5J,IApSV,IAA2CqK,EAAYC,EAAYC,EAsS7D,IAAIC,EAtSiCH,EAqSHtD,EArSeuD,EAqSM,CAACtD,EAAkBC,EAAgBC,EAAmBC,EAAcC,EAA2BxB,GApS1JE,EAA0B,IAAMuE,KAAcC,GAAaC,GAuSvD,IACEC,EAAmB3D,EACnB8C,EAEAD,EAA0BzJ,EAAiB,IAAMoJ,EAAmBpJ,IAAkBkH,GAAgBuC,EACxG,CAAE,MAAOe,GAMP,MALIhB,EAAgCpC,UAElCoD,EAAIC,SAAW,4DAA4DjB,EAAgCpC,QAAQsD,aAG/GF,CACR,CAEA3E,EAA0B,KACxB2D,EAAgCpC,aAAUtD,EAC1CqD,EAA0BC,aAAUtD,EACpCkD,EAAeI,QAAUmD,IAI3B,MAAMI,EAA2B,UAAc,IAI3C,gBAAoBlC,EAAkB5H,EAAS,CAAC,EAAG0J,EAAkB,CACnEK,IAAK/B,KAGR,CAACA,EAAwBJ,EAAkB8B,IAe9C,OAZsB,UAAc,IAC9B/B,EAIkB,gBAAoBM,EAAa+B,SAAU,CAC7DC,MAAOxB,GACNqB,GAGEA,EACN,CAAC7B,EAAc6B,EAA0BrB,GAE9C,CAEA,MAGMyB,EAHW,OAAWpC,GAO5B,GAHAoC,EAAQtC,iBAAmBA,EAC3BsC,EAAQpH,YAAcgF,EAAgBhF,YAAcA,EAEhD6D,EAAY,CACd,MAOMwD,EAPa,aAAiB,SAA2BjH,EAAO6G,GAEpE,OAAoB,gBAAoBG,EAASlK,EAAS,CAAC,EAAGkD,EAAO,CACnE8E,uBAAwB+B,IAE5B,GAKA,OAFAI,EAAUrH,YAAcA,EACxBqH,EAAUvC,iBAAmBA,EACtB,IAAauC,EAAWvC,EACjC,CAEA,OAAO,IAAasC,EAAStC,GAIjC,EIxWA,MA1CA,UAAkB,MAChB3I,EAAK,QACLf,EAAO,SACPkM,EAAQ,YACRC,EAAW,eACXtL,EAAiB,OAAM,UACvBC,EAAY,SAEZ,MAAMoJ,EAAe,UAAc,KACjC,MAAMlJ,EAAeuE,EAAmBxE,GACxC,MAAO,CACLA,QACAC,eACAC,eAAgBkL,EAAc,IAAMA,OAAcpH,EAClDlE,iBACAC,cAED,CAACC,EAAOoL,EAAatL,EAAgBC,IAClCsL,EAAgB,UAAc,IAAMrL,EAAMY,WAAY,CAACZ,IAC7D+F,EAA0B,KACxB,MAAM,aACJ9F,GACEkJ,EAQJ,OAPAlJ,EAAa8E,cAAgB9E,EAAa4F,iBAC1C5F,EAAa+E,eAETqG,IAAkBrL,EAAMY,YAC1BX,EAAa4F,mBAGR,KACL5F,EAAayF,iBACbzF,EAAa8E,mBAAgBf,IAE9B,CAACmF,EAAckC,IAClB,MAAM1D,EAAU1I,GAAWF,EAE3B,OAAoB,gBAAoB4I,EAAQoD,SAAU,CACxDC,MAAO7B,GACNgC,EACL,ECpCO,SAASG,EAAgBrM,EAAUF,GACxC,MAAMW,EACNT,IAAYF,EAAoB,EAChCC,EAAuBC,GACvB,OAAO,WACL,MAAM,MACJe,GACEN,IAEJ,OAAOM,CACT,CACF,CAiBO,MAAM,EAAwBsL,IC5B9B,SAASC,EAAmBtM,EAAUF,GAC3C,MAAMyM,EACNvM,IAAYF,EAAoB,EAAkBuM,EAAgBrM,GAClE,OAAO,WAGL,OAFcuM,IAEDtJ,QACf,CACF,CAuBO,MAAMuJ,EAA2BF,IhBnCHG,MJEbC,EIFaD,EiBIf,EAAArM,iCjBHpBA,EAAmCqM,EUaJA,KAC/B5E,EAAuB4E,GOVzBE,CAAkB,EAAA9E,sBrBHM6E,EqBMf,0BrBN2B3N,EAAQ2N,C,uCsBE3BE,EAAE,EAAQ,MAASC,EAAE,CAACC,QAAO,GAAI5K,EAAE,IAAIxC,IAAIqN,EAAE5N,OAAOC,IAAI,iBAAiB4N,EAAE7N,OAAOC,IAAI,cAAckD,EAAEnD,OAAOC,IAAI,uBAAuBiD,EAAEuK,EAAEK,mDAAmDC,gBAAkF,SAASC,EAAE7M,EAAEC,EAAE6M,GAAGC,KAAKC,QAAQhN,EAAE+M,KAAKE,OAAOhN,EAAE8M,KAAKG,UAAUJ,CAAC,CACjW,SAASK,EAAEnN,GAAG,OAAOA,EAAEgN,SAAS,KAAK,EAAE,OAAOhN,EAAEiN,OAAO,KAAK,EAAE,IAAIhN,EAAEmN,KAAKC,MAAMrN,EAAEiN,OAAOjN,EAAEkN,UAAUI,WAAuB,OAAZtN,EAAEgN,QAAQ,EAAShN,EAAEiN,OAAOhN,EAAE,KAAK,EAAa,IAAI,IAAI6M,GAAnB7M,EAAED,EAAEiN,QAAmBM,OAAOC,EAAE,EAAEA,EAAEV,EAAE5O,OAAOsP,IAAI,CAAC,IAAI3L,EAAED,EAAEtC,IAAIwN,EAAEU,IAAI,GAAG,OAAO3L,EAAE,MAAMA,CAAE,CAAyG,OAAxGiL,EAAEW,EAAoBxN,EAAEyN,IAAIzN,EAAE,MAAMA,EAAEgB,KAAK6L,EAAE,KAAK7M,EAAEgB,KAAK6L,EAAEa,WAAWb,EAAEc,QAAQd,EAAEA,EAAE7M,EAAEgB,MAAMjB,EAAEgN,QAAQ,EAAShN,EAAEiN,OAAOhN,EAAE,KAAK,EAAE,MAAMD,EAAE,QAAQ,MAAMA,EAAEiN,OAAQ,CAAC,SAASpG,IAAoB,OAAOsG,EAAjBrG,EAAEiG,KAAK,GAAc,CAAC,SAASc,EAAE7N,EAAEC,GAAG,OAAO,IAAI4M,EAAE,EAAE5M,EAAED,EAAE,CAC3d,SAAS8N,EAAE9N,GAAG,GAAG,OAAOA,EAAE,IAAI,IAAIC,EAAE,EAAEA,EAAED,EAAE9B,OAAO+B,KAAI,EAAGD,EAAEC,KAAK,CAAC,SAAS8N,EAAE/N,EAAEC,GAAG,GAAG,IAAID,EAAEgN,QAAQ,CAAC,IAAIF,EAAE9M,EAAEiN,OAAOjN,EAAEgN,QAAQ,EAAEhN,EAAEiN,OAAOhN,EAAE6N,EAAEhB,EAAE,CAAC,CAAC,SAASkB,EAAEhO,EAAEC,GAAGD,EAAEiO,QAAQC,QAAQ,SAASlO,GAAG+N,EAAE/N,EAAEC,EAAE,EAAE,CAAC,SAAS6G,EAAE9G,EAAEC,GAAG,IAAI6M,EAAE9M,EAAEiO,QAAQT,EAAEV,EAAExN,IAAIW,GAAqC,OAAlCuN,IAAIA,EAAE,IAAIX,EAAE,EAAE,KAAK7M,GAAG8M,EAAEvN,IAAIU,EAAEuN,IAAWA,CAAC,CAC3B,SAASW,EAAEnO,GAAGgO,EAAEhO,EAAEH,MAAM,sBAAsB,CAC7S,SAASuO,EAAEpO,EAAEC,GAAG,GAAG,KAAKA,EAAE,CAAC,IAAI6M,EAAE7M,EAAE,GAAGuN,EAAEvN,EAAEoC,QAAQ,IAAI,GAAGR,EAAEwM,SAASpO,EAAEqO,UAAU,EAAEd,GAAG,IAAuB,OAAnBA,EAAEvN,EAAEqO,UAAUd,EAAE,GAAUV,GAAG,IAAK,KAAiBA,GAAb7M,EAAED,EAAEiO,SAAa3O,IAAIuC,IAAI,IAAIiL,EAAEE,UAAUhN,EAAE8M,EAAEG,OAAOH,EAAEE,QAAQ,EAAEF,EAAEG,OAAOO,EAAEM,EAAE9N,IAAIC,EAAEV,IAAIsC,EAAE,IAAIgL,EAAE,EAAEW,EAAExN,IAAI,MAAM,IAAK,IAAgB8M,GAAZ7M,EAAED,EAAEiO,SAAY3O,IAAIuC,GAAG2L,EAAEJ,KAAKC,MAAMG,EAAExN,EAAEsN,WAAW,IAAIiB,EAAEvO,EAAEwO,eAAqCD,GAAtBf,EAAEe,EAAEA,EAAEf,EAAEE,IAAIF,EAAEvM,MAAMuM,GAAMD,OAAO,IAAI,IAAIkB,EAAE,EAAEA,EAAEF,EAAErQ,OAAOuQ,IAAI,CAAC,IAAIC,EAAEH,EAAEE,GAAG,QAAG,IAAS7M,EAAEtC,IAAIoP,GAAG,CAAC,IAAIC,EAAE,IAAuBD,GAAGE,EAAEhN,EAAErC,IAAIoC,KAAKC,EAAE8M,EAAE,MAAMG,EAAEjN,EAAErC,IAAIoC,KAAKC,EAAE8M,GAAGC,EAAErQ,KAAKsQ,EAAEC,GAAGjN,EAAErC,IAAImP,EACxfC,EAAE,CAAC,CAAC7B,EAAE,IAAIA,EAAEE,UAAUhN,EAAE8M,EAAEG,OAAOH,EAAEE,QAAQ,EAAEF,EAAEG,OAAOO,EAAEM,EAAE9N,IAAIC,EAAEV,IAAIsC,EAAE,IAAIgL,EAAE,EAAEW,EAAExN,IAAI,MAAM,IAAK,IAAIA,EAAEiO,QAAQ1O,IAAIsC,EAAEgM,EAAE7N,EAL2G,SAAWA,GAA2C,OAAxC+B,EAAE/B,KAAK+B,EAAE/B,GAAGsM,EAAEwC,oBAAoB9O,EAAEgC,IAAWD,EAAE/B,EAAE,CAK1K+O,CAAEvB,GAAGhC,WAAW,MAAM,IAAK,IAAIsB,EAAEM,KAAKC,MAAMG,GAAGxN,EAAEiO,QAAQ1O,IAAIsC,EAAEgM,EAAE7N,EAAEnB,OAAOC,IAAIgO,KAAK,MAAM,IAAK,IAAI7M,EAAEmN,KAAKC,MAAMG,IAAGV,EAAEjN,MAAMI,EAAEmL,UAAWC,MAAMpL,EAAEoL,OAAmBmC,GAAbvN,EAAED,EAAEiO,SAAa3O,IAAIuC,IAAIkM,EAAEP,EAAEV,GAAG7M,EAAEV,IAAIsC,EAAE,IAAIgL,EAAE,EAAEC,EAAE9M,IAAI,MAAM,QAAQ,MAAMH,MAAM,8EAA+E,CAAC,CAC5a,SAASmP,EAAEhP,GAAG,OAAO,SAASC,EAAE6M,GAAG,MAAM,iBAAkBA,EAH3D,SAAW9M,EAAEC,EAAE6M,GAAG,OAAOA,EAAE,IAAI,IAAK,IAAI,MAAG,MAAMA,EAASL,EAAK,MAAMK,EAAE,IAAI,MAAMA,EAAE,GAAUA,EAAEwB,UAAU,GAAiDnB,EAAhBnN,EAAE8G,EAAE9G,EAAhCqO,SAASvB,EAAEwB,UAAU,GAAG,MAAyB,IAAK,IAAI,OAAqCtO,EAAE8G,EAAE9G,EAAhCqO,SAASvB,EAAEwB,UAAU,GAAG,KAAa,CAACW,SAASvC,EAAEwC,SAASlP,EAAEmP,MAAMhC,GAAG,OAAOL,CAAC,CAGjMsC,CAAEpP,EAAE+M,EAAKD,GAAG,iBAAkBA,GAAG,OAAOA,EAAKA,EAAE,KAAKL,EAAE,CAACwC,SAASxC,EAAE4C,KAAKvC,EAAE,GAAGpE,IAAIoE,EAAE,GAAGvB,IAAI,KAAK7G,MAAMoI,EAAE,GAAGwC,OAAO,MAAMxC,EAAKA,CAAC,CAAC,CAAC,SAASyC,EAAEvP,GAAG,IAAIC,EAAE,IAAIuP,YAAiH,OAA3FxP,EAAE,CAACwO,eAAexO,EAAEiO,QAA5B,IAAI7O,IAAkCqQ,SAAS5I,EAAE6I,YAAY,GAAGC,eAAe1P,IAAKqN,UAAU0B,EAAEhP,GAAUA,CAAC,CAC5U,SAAS4P,EAAE5P,EAAEC,GAAqR,SAASuN,EAAEvN,GAAG+N,EAAEhO,EAAEC,EAAE,CAAC,IAAI4B,EAAE5B,EAAE4P,YAAYhO,EAAEiO,OAAOxR,KAApU,SAASwO,EAAE7M,GAAG,IAAIwO,EAAExO,EAAEwL,MAAM,IAAGxL,EAAE8P,KAAc,CAAC9P,EAAEwO,EAAEA,EAAEzO,EAAE2P,eAAe,IAAI,IAAIjB,EAAEzO,EAAEoC,QAAQ,KAAK,EAAEqM,GAAG,CAAC,IAAIH,EAAEvO,EAAE0P,YAAgBd,EAAE3O,EAAE+P,SAAS,EAAEtB,GAAGE,EAAEH,EAAEwB,OAAOrB,GAAGR,EAAEpO,EAAEuO,EAAEK,GAAG5O,EAAE0P,YAAY,GAAqBhB,GAAlBzO,EAAEA,EAAE+P,SAAStB,EAAE,IAAOrM,QAAQ,GAAG,CAA8B,OAA7BrC,EAAE0P,aAAajB,EAAEwB,OAAOhQ,EAAEsM,GAAU1K,EAAEiO,OAAOxR,KAAKwO,EAAEU,EAAE,CAA1OW,EAAEnO,EAAyO,EAA0DwN,EAAE,CAPKX,EAAEvF,UAAUhJ,KAAK,SAAS0B,GAAG,IAAI+M,KAAKC,SAAS,OAAOD,KAAKE,SAASF,KAAKE,OAAO,IAAIF,KAAKE,OAAOlH,KAAK/F,IAAIA,GAAG,EAQ9czC,EAAQ2S,yBAAyB,SAASlQ,EAAEC,GAA+C,OAAP2P,EAArC3P,EAAEsP,EAAEtP,GAAGA,EAAEkQ,UAAUlQ,EAAEkQ,UAAU,MAAUnQ,GAAUC,CAAC,C,+BC+BnGmQ,EAAO7S,QA5BS,SAAS8S,EAAWC,EAAQtQ,EAAGC,EAAG6M,EAAGU,EAAG3L,EAAG0M,GAOzD,IAAK8B,EAAW,CACd,IAAIxF,EACJ,QAAepG,IAAX6L,EACFzF,EAAQ,IAAIhL,MACV,qIAGG,CACL,IAAIpC,EAAO,CAACuC,EAAGC,EAAG6M,EAAGU,EAAG3L,EAAG0M,GACvBgC,EAAW,GACf1F,EAAQ,IAAIhL,MACVyQ,EAAOE,QAAQ,MAAO,WAAa,OAAO/S,EAAK8S,IAAa,KAExDtP,KAAO,qBACf,CAGA,MADA4J,EAAM4F,YAAc,EACd5F,CACR,CACF,C,+BC5CA,IAAI6F,EAAmB,sBAEvBN,EAAO7S,QAAU,SAAUoT,GAC1B,GAAmB,iBAARA,EACV,MAAM,IAAIC,UAAU,qBAGrB,OAAOD,EAAIH,QAAQE,EAAkB,OACtC,C,sDCP+B,WAA7BjK,OAAOoK,SAASC,UACa,cAA7BrK,OAAOoK,SAASE,SAEhBC,QAAQnG,MACN,gFAEO,kBAAmBoG,WAC5BA,UAAUC,cACPC,SAAS,cACT7S,KAAK,SAAU8S,GACdA,EAAIC,iBAAiB,cAAe,MAClCC,EAAAA,EAAAA,GAAU,6BAA8B,CAAEJ,cAAeE,IAGzD,MAAMG,EAAmBH,EAAII,WAC7BR,QAAQS,IAAI,mBAAoBF,GAChCA,EAAiBF,iBAAiB,cAAe,KAC/C,OAAQE,EAAiBrQ,OACvB,IAAK,YACC+P,UAAUC,cAAcQ,YAK1BjL,OAAOkL,cAAe,GAEtBL,EAAAA,EAAAA,GAAU,6BAA8B,CAAEJ,cAAeE,IAGrD3K,OAAOmL,qBACTZ,QAAQS,IAAI,4CACZhL,OAAOoK,SAASgB,YAKlBb,QAAQS,IAAI,sCAKZH,EAAAA,EAAAA,GAAU,2BAA4B,CAAEJ,cAAeE,KAEzD,MAEF,IAAK,YACHJ,QAAQnG,MAAM,oDACdyG,EAAAA,EAAAA,GAAU,2BAA4B,CAAEJ,cAAeE,IACvD,MAEF,IAAK,aACHE,EAAAA,EAAAA,GAAU,wBAAyB,CAAEJ,cAAeE,QAK9D,GACCU,MAAM,SAAUjQ,GACfmP,QAAQnG,MAAM,4CAA6ChJ,EAC7D,E,oBC9DJtE,EAAQ,EAAsB,IAAM,E,4ECwBpC,UAlByByM,IAAmB,IAAlB,SAAE6G,GAAU7G,EACpC,MAAM+H,EAAgBC,EAAAA,GAAO1U,aAAauT,EAASoB,UACnD,OAAKF,EAGEG,EAAAA,cAAoBC,EAAAA,EAAsB,CAC/CtB,WACAkB,mBACGA,EAAcK,OALV,K,2JCPX,MAAMC,EAAuBH,EAAAA,cAAoB,CAAC,GAC5CI,EAAgBJ,EAAAA,cAAoB,CAAC,GACrCK,EAAmBL,EAAAA,cAAoB,CAAC,GACxCM,EAAqBN,EAAAA,cAAoB,CAAC,E,oCCHhD,IACIO,EADyBtV,EAAQ,KACxBuV,CAAuBvV,EAAQ,OACxCwV,EAAoBxV,EAAQ,MAEhCI,EAAQqV,gBAAkB,SAAU5I,EAAM6I,GACxC,IAAIC,EAAU9I,EAAK8I,QACnB,OAAoBL,EAAO7E,QAAQjH,cAAcgM,EAAkBI,kBAAmB,CACpFC,uBAA+H,KAAvGH,aAAqD,EAASA,EAAcG,wBACnGF,EACL,C,oCCAA,IAAIZ,EAAQ,EAAQ,MAClBe,EAAO,EAAQ,MAIjB,IAAIC,EAAW,mBAAsBzR,OAAOmF,GAAKnF,OAAOmF,GAHxD,SAAYC,EAAGC,GACb,OAAQD,IAAMC,IAAM,IAAMD,GAAK,EAAIA,GAAM,EAAIC,IAAQD,GAAMA,GAAKC,GAAMA,CACxE,EAEES,EAAuB0L,EAAK1L,qBAC5BxG,EAASmR,EAAMnR,OACfoS,EAAYjB,EAAMiB,UAClBC,EAAUlB,EAAMkB,QAChB9R,EAAgB4Q,EAAM5Q,cACxB/D,EAAQuC,iCAAmC,SACzC4F,EACA2N,EACAC,EACAlT,EACAmT,GAEA,IAAIC,EAAUzS,EAAO,MACrB,GAAI,OAASyS,EAAQzL,QAAS,CAC5B,IAAI0L,EAAO,CAAEC,UAAU,EAAIjI,MAAO,MAClC+H,EAAQzL,QAAU0L,CACpB,MAAOA,EAAOD,EAAQzL,QACtByL,EAAUJ,EACR,WACE,SAASO,EAAiBC,GACxB,IAAKC,EAAS,CAIZ,GAHAA,GAAU,EACVC,EAAmBF,EACnBA,EAAexT,EAASwT,QACpB,IAAWL,GAAWE,EAAKC,SAAU,CACvC,IAAIK,EAAmBN,EAAKhI,MAC5B,GAAI8H,EAAQQ,EAAkBH,GAC5B,OAAQI,EAAoBD,CAChC,CACA,OAAQC,EAAoBJ,CAC9B,CAEA,GADAG,EAAmBC,EACfd,EAASY,EAAkBF,GAAe,OAAOG,EACrD,IAAIE,EAAgB7T,EAASwT,GAC7B,YAAI,IAAWL,GAAWA,EAAQQ,EAAkBE,IAC1CH,EAAmBF,EAAeG,IAC5CD,EAAmBF,EACXI,EAAoBC,EAC9B,CACA,IACEH,EACAE,EAFEH,GAAU,EAGZK,OACE,IAAWZ,EAAoB,KAAOA,EAC1C,MAAO,CACL,WACE,OAAOK,EAAiBN,IAC1B,EACA,OAASa,OACL,EACA,WACE,OAAOP,EAAiBO,IAC1B,EAER,EACA,CAACb,EAAaC,EAAmBlT,EAAUmT,IAE7C,IAAI9H,EAAQlE,EAAqB7B,EAAW8N,EAAQ,GAAIA,EAAQ,IAShE,OARAL,EACE,WACEM,EAAKC,UAAW,EAChBD,EAAKhI,MAAQA,CACf,EACA,CAACA,IAEHnK,EAAcmK,GACPA,CACT,C,oCClFAlO,EAAQoQ,YAAa,EACrBpQ,EAAQ4W,2BAAwB,EACZ,EAAQ,MACE,EAAQ,MAgBtC5W,EAAQ4W,sBAdsB,M,mBCH9B/D,EAAO7S,QAJP,SAAgCsE,GAC9B,QAAI,IAAWA,EAAG,MAAM,IAAIuS,eAAe,6DAC3C,OAAOvS,CACT,EACyCuO,EAAO7S,QAAQoQ,YAAa,EAAMyC,EAAO7S,QAAiB,QAAI6S,EAAO7S,O,uBCJxFqR,MAKpBwB,EAAO7S,SALaqR,EAKWzR,EAAQ,OALRyR,EAAEhB,SAAYgB,C,+oBCsmB/C,MAtmBA,SAAqByF,GACnB,SAASC,EAAE9G,EAAGV,EAAGjL,EAAG4M,EAAGzO,GACrB,IAAK,IAAgC0M,EAAGgC,EAAiBpC,EAAuExF,EAAmCiH,EAA1Ja,EAAI,EAAG3O,EAAI,EAAG4M,EAAI,EAAGjL,EAAI,EAASiF,EAAI,EAAG+I,EAAI,EAAMb,EAAIzC,EAAII,EAAI,EAAGH,EAAI,EAAGvK,EAAI,EAAGuN,EAAI,EAAGxN,EAAI,EAAG4M,EAAI9M,EAAE3D,OAAQ2Q,EAAIF,EAAI,EAAMJ,EAAI,GAAI9B,EAAI,GAAI0B,EAAI,GAAIC,EAAI,GAAO7B,EAAIoC,GAAI,CAI5K,GAHAD,EAAI7M,EAAE0S,WAAWhI,GACjBA,IAAMsC,GAAK,IAAM5O,EAAI2B,EAAIiL,EAAI+B,IAAM,IAAM3O,IAAMyO,EAAI,KAAOzO,EAAI,GAAK,IAAK2B,EAAIiL,EAAI+B,EAAI,EAAGD,IAAKE,KAExF,IAAM5O,EAAI2B,EAAIiL,EAAI+B,EAAG,CACvB,GAAIrC,IAAMsC,IAAM,EAAI7M,IAAMuM,EAAIA,EAAEiC,QAAQgE,EAAG,KAAM,EAAIjG,EAAEkG,OAAOvW,QAAS,CACrE,OAAQwQ,GACN,KAAK,GACL,KAAK,EACL,KAAK,GACL,KAAK,GACL,KAAK,GACH,MAEF,QACEH,GAAK1M,EAAE6S,OAAOnI,GAGlBmC,EAAI,EACN,CAEA,OAAQA,GACN,KAAK,IAKH,IAHAhC,GADA6B,EAAIA,EAAEkG,QACAF,WAAW,GACjBjI,EAAI,EAECvK,IAAMwK,EAAGA,EAAIoC,GAAI,CACpB,OAAQD,EAAI7M,EAAE0S,WAAWhI,IACvB,KAAK,IACHD,IACA,MAEF,KAAK,IACHA,IACA,MAEF,KAAK,GACH,OAAQoC,EAAI7M,EAAE0S,WAAWhI,EAAI,IAC3B,KAAK,GACL,KAAK,GACHvM,EAAG,CACD,IAAK+O,EAAIxC,EAAI,EAAGwC,EAAIF,IAAKE,EACvB,OAAQlN,EAAE0S,WAAWxF,IACnB,KAAK,GACH,GAAI,KAAOL,GAAK,KAAO7M,EAAE0S,WAAWxF,EAAI,IAAMxC,EAAI,IAAMwC,EAAG,CACzDxC,EAAIwC,EAAI,EACR,MAAM/O,CACR,CAEA,MAEF,KAAK,GACH,GAAI,KAAO0O,EAAG,CACZnC,EAAIwC,EAAI,EACR,MAAM/O,CACR,EAKNuM,EAAIwC,CACN,EAIJ,MAEF,KAAK,GACHL,IAEF,KAAK,GACHA,IAEF,KAAK,GACL,KAAK,GACH,KAAOnC,IAAMsC,GAAKhN,EAAE0S,WAAWhI,KAAOmC,KAK1C,GAAI,IAAMpC,EAAG,MACbC,GACF,CAKA,GAHAD,EAAIzK,EAAEyM,UAAUvM,EAAGwK,GACnB,IAAMG,IAAMA,GAAK6B,EAAIA,EAAEiC,QAAQmE,EAAI,IAAIF,QAAQF,WAAW,IAGnD,KADC7H,EACN,CAIE,OAHA,EAAI1K,IAAMuM,EAAIA,EAAEiC,QAAQgE,EAAG,KAC3B9F,EAAIH,EAAEgG,WAAW,IAGf,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,GACHvS,EAAI8K,EACJ,MAEF,QACE9K,EAAI4S,EAMR,GAFA7S,GADAuK,EAAIgI,EAAExH,EAAG9K,EAAGsK,EAAGoC,EAAG1O,EAAI,IAChB9B,OACN,EAAI4P,IAAsBC,EAAIiB,EAAE,EAAG1C,EAAzBtK,EAAI6S,EAAED,EAAGrG,EAAGgB,GAAmBzC,EAAGkB,EAAGH,EAAG9L,EAAG2M,EAAG1O,EAAGyO,GAAIF,EAAIvM,EAAE8S,KAAK,SAAK,IAAW/G,GAAK,KAAOhM,GAAKuK,EAAIyB,EAAE0G,QAAQvW,UAAYwQ,EAAI,EAAGpC,EAAI,KAC5I,EAAIvK,EAAG,OAAQ2M,GACjB,KAAK,IACHH,EAAIA,EAAEiC,QAAQuE,EAAIC,GAEpB,KAAK,IACL,KAAK,IACL,KAAK,GACH1I,EAAIiC,EAAI,IAAMjC,EAAI,IAClB,MAEF,KAAK,IAEHA,GADAiC,EAAIA,EAAEiC,QAAQyE,EAAI,UACV,IAAM3I,EAAI,IAClBA,EAAI,IAAMa,GAAK,IAAMA,GAAK+H,EAAE,IAAM5I,EAAG,GAAK,YAAcA,EAAI,IAAMA,EAAI,IAAMA,EAC5E,MAEF,QACEA,EAAIiC,EAAIjC,EAAG,MAAQmC,IAAWhC,GAAKH,EAAVA,EAAa,SACnCA,EAAI,EACN,MAGLA,EAAIgI,EAAExH,EAAG+H,EAAE/H,EAAGyB,EAAGgB,GAAIjD,EAAGmC,EAAGzO,EAAI,GAGnCmO,GAAK7B,EACLA,EAAIiD,EAAIvN,EAAI+M,EAAIrC,EAAI,EACpB6B,EAAI,GACJG,EAAI7M,EAAE0S,aAAahI,GACnB,MAEF,KAAK,IACL,KAAK,GAEH,GAAI,GAAKxK,GADTwM,GAAK,EAAIvM,EAAIuM,EAAEiC,QAAQgE,EAAG,IAAMjG,GAAGkG,QACpBvW,QAAS,OAAQ,IAAM6Q,IAAMrC,EAAI6B,EAAEgG,WAAW,GAAI,KAAO7H,GAAK,GAAKA,GAAK,IAAMA,KAAO3K,GAAKwM,EAAIA,EAAEiC,QAAQ,IAAK,MAAMtS,QAAS,EAAI4P,QAAK,KAAYC,EAAIiB,EAAE,EAAGT,EAAGzB,EAAGU,EAAGQ,EAAGH,EAAGpB,EAAEvO,OAAQuQ,EAAGzO,EAAGyO,KAAO,KAAO1M,GAAKwM,EAAIR,EAAE0G,QAAQvW,UAAYqQ,EAAI,QAAa7B,EAAI6B,EAAEgG,WAAW,GAAI7F,EAAIH,EAAEgG,WAAW,GAAI7H,GAC9S,KAAK,EACH,MAEF,KAAK,GACH,GAAI,MAAQgC,GAAK,KAAOA,EAAG,CACzBN,GAAKG,EAAI1M,EAAE6S,OAAOnI,GAClB,KACF,CAEF,QACE,KAAOgC,EAAEgG,WAAWxS,EAAI,KAAO0K,GAAK0I,EAAE5G,EAAG7B,EAAGgC,EAAGH,EAAEgG,WAAW,KAEhEhF,EAAIvN,EAAI+M,EAAIrC,EAAI,EAChB6B,EAAI,GACJG,EAAI7M,EAAE0S,aAAahI,GAEzB,CAEA,OAAQmC,GACN,KAAK,GACL,KAAK,GACH,KAAOzO,EAAIA,EAAI,EAAI,IAAM,EAAIyM,GAAK,MAAQ+B,GAAK,EAAIF,EAAErQ,SAAW8D,EAAI,EAAGuM,GAAK,MAC5E,EAAIT,EAAIsH,GAAKpG,EAAE,EAAGT,EAAGzB,EAAGU,EAAGQ,EAAGH,EAAGpB,EAAEvO,OAAQuQ,EAAGzO,EAAGyO,GACjDZ,EAAI,EACJG,IACA,MAEF,KAAK,GACL,KAAK,IACH,GAAI,IAAM/N,EAAI2B,EAAIiL,EAAI+B,EAAG,CACvBf,IACA,KACF,CAEF,QAIE,OAHAA,IACA/G,EAAIjF,EAAE6S,OAAOnI,GAELmC,GACN,KAAK,EACL,KAAK,GACH,GAAI,IAAM9M,EAAIgN,EAAI3O,EAAG,OAAQ4G,GAC3B,KAAK,GACL,KAAK,GACL,KAAK,EACL,KAAK,GACHC,EAAI,GACJ,MAEF,QACE,KAAO4H,IAAM5H,EAAI,KAErB,MAEF,KAAK,EACHA,EAAI,MACJ,MAEF,KAAK,GACHA,EAAI,MACJ,MAEF,KAAK,GACHA,EAAI,MACJ,MAEF,KAAK,GACH,IAAMlF,EAAI3B,EAAI2O,IAAM5M,EAAIuN,EAAI,EAAGzI,EAAI,KAAOA,GAC1C,MAEF,KAAK,IACH,GAAI,IAAMlF,EAAI3B,EAAI2O,EAAIQ,GAAK,EAAIL,EAAG,OAAQxC,EAAIwC,GAC5C,KAAK,EACH,MAAQlI,GAAK,KAAOhF,EAAE0S,WAAWhI,EAAI,KAAO6C,EAAIvI,GAElD,KAAK,EACH,MAAQ+I,IAAMR,EAAIQ,GAEtB,MAEF,KAAK,GACH,IAAMhO,EAAI3B,EAAI2O,IAAMG,EAAIxC,GACxB,MAEF,KAAK,GACH,IAAMtM,EAAI4M,EAAIjL,EAAIgN,IAAM5M,EAAI,EAAG8E,GAAK,MACpC,MAEF,KAAK,GACL,KAAK,GACH,IAAM7G,IAAM2B,EAAIA,IAAM8M,EAAI,EAAI,IAAM9M,EAAI8M,EAAI9M,GAC5C,MAEF,KAAK,GACH,IAAMA,EAAI3B,EAAI4M,GAAK+B,IACnB,MAEF,KAAK,GACH,IAAMhN,EAAI3B,EAAI4M,GAAK+B,IACnB,MAEF,KAAK,GACH,IAAMhN,EAAI3B,EAAI2O,GAAK/B,IACnB,MAEF,KAAK,GACH,GAAI,IAAMjL,EAAI3B,EAAI2O,EAAG,CACnB,GAAI,IAAMlC,EAAG,GAAQ,EAAI7F,EAAI,EAAI+I,GAC1B,UAIHlD,EAAI,EAERG,GACF,CAEA,MAEF,KAAK,GACH,IAAM5M,EAAI4M,EAAIjL,EAAIgN,EAAIG,EAAIzC,IAAMA,EAAI,GACpC,MAEF,KAAK,GACL,KAAK,GACH,KAAM,EAAI1K,EAAIgN,EAAI/B,GAAI,OAAQ5M,GAC5B,KAAK,EACH,OAAQ,EAAIyO,EAAI,EAAI7M,EAAE0S,WAAWhI,EAAI,IACnC,KAAK,IACHtM,EAAI,GACJ,MAEF,KAAK,IACH8B,EAAIwK,EAAGtM,EAAI,GAGf,MAEF,KAAK,GACH,KAAOyO,GAAK,KAAO7H,GAAK9E,EAAI,IAAMwK,IAAM,KAAO1K,EAAE0S,WAAWxS,EAAI,KAAO0K,GAAK5K,EAAEyM,UAAUvM,EAAGwK,EAAI,IAAKzF,EAAI,GAAI7G,EAAI,IAIxH,IAAMA,IAAMsO,GAAKzH,GAGrB8I,EAAI/I,EACJA,EAAI6H,EACJnC,GACF,CAIA,GAAI,GAFJxK,EAAI0K,EAAEvO,QAEK,CAET,GADA8D,EAAI8K,EACA,EAAIgB,SAA2C,KAArCC,EAAIiB,EAAE,EAAGvC,EAAGzK,EAAGwL,EAAGQ,EAAGH,EAAG9L,EAAG0M,EAAGzO,EAAGyO,KAAoB,KAAOhC,EAAIsB,GAAG7P,QAAS,OAAOkQ,EAAI3B,EAAI0B,EAGzG,GAFA1B,EAAIzK,EAAE8S,KAAK,KAAO,IAAMrI,EAAI,IAExB,IAAMU,EAAIiC,EAAG,CAGf,OAFA,IAAMjC,GAAK+H,EAAEzI,EAAG,KAAO2C,EAAI,GAEnBA,GACN,KAAK,IACH3C,EAAIA,EAAE+D,QAAQ6E,EAAI,YAAc5I,EAChC,MAEF,KAAK,IACHA,EAAIA,EAAE+D,QAAQ8E,EAAG,sBAAwB7I,EAAE+D,QAAQ8E,EAAG,aAAe7I,EAAE+D,QAAQ8E,EAAG,iBAAmB7I,EAGzG2C,EAAI,CACN,CACF,CAEA,OAAOhB,EAAI3B,EAAI0B,CACjB,CAEA,SAAS0G,EAAErH,EAAGV,EAAGjL,GACf,IAAI4M,EAAI3B,EAAE2H,OAAOc,MAAMC,GACvB1I,EAAI2B,EACJ,IAAIzO,EAAIyO,EAAEvQ,OACN0Q,EAAIpB,EAAEtP,OAEV,OAAQ0Q,GACN,KAAK,EACL,KAAK,EACH,IAAI3O,EAAI,EAER,IAAKuN,EAAI,IAAMoB,EAAI,GAAKpB,EAAE,GAAK,IAAKvN,EAAID,IAAKC,EAC3C6M,EAAE7M,GAAKwV,EAAEjI,EAAGV,EAAE7M,GAAI4B,GAAG4S,OAGvB,MAEF,QACE,IAAI5H,EAAI5M,EAAI,EAEZ,IAAK6M,EAAI,GAAI7M,EAAID,IAAKC,EACpB,IAAK,IAAI2B,EAAI,EAAGA,EAAIgN,IAAKhN,EACvBkL,EAAED,KAAO4I,EAAEjI,EAAE5L,GAAK,IAAK6M,EAAExO,GAAI4B,GAAG4S,OAMxC,OAAO3H,CACT,CAEA,SAAS2I,EAAEjI,EAAGV,EAAGjL,GACf,IAAI4M,EAAI3B,EAAEyH,WAAW,GAGrB,OAFA,GAAK9F,IAAMA,GAAK3B,EAAIA,EAAE2H,QAAQF,WAAW,IAEjC9F,GACN,KAAK,GACH,OAAO3B,EAAE0D,QAAQrC,EAAG,KAAOX,EAAEiH,QAE/B,KAAK,GACH,OAAOjH,EAAEiH,OAAS3H,EAAE0D,QAAQrC,EAAG,KAAOX,EAAEiH,QAE1C,QACE,GAAI,EAAI,EAAI5S,GAAK,EAAIiL,EAAEzK,QAAQ,MAAO,OAAOyK,EAAE0D,QAAQrC,GAAI,KAAOX,EAAE+G,WAAW,GAAK,GAAK,MAAQ/G,EAAEiH,QAGvG,OAAOjH,EAAIV,CACb,CAEA,SAASqI,EAAE3H,EAAGV,EAAGjL,EAAG4M,GAClB,IAAIzO,EAAIwN,EAAI,IACRoB,EAAI,EAAI9B,EAAI,EAAIjL,EAAI,EAAI4M,EAE5B,GAAI,MAAQG,EAAG,CACbpB,EAAIxN,EAAEqC,QAAQ,IAAK,GAAK,EACxB,IAAIpC,EAAID,EAAEsO,UAAUd,EAAGxN,EAAE9B,OAAS,GAAGuW,OAErC,OADAxU,EAAID,EAAEsO,UAAU,EAAGd,GAAGiH,OAASxU,EAAI,IAC5B,IAAMkN,GAAK,IAAMA,GAAK+H,EAAEjV,EAAG,GAAK,WAAaA,EAAIA,EAAIA,CAC9D,CAEA,GAAI,IAAMkN,GAAK,IAAMA,IAAM+H,EAAElV,EAAG,GAAI,OAAOA,EAE3C,OAAQ4O,GACN,KAAK,KACH,OAAO,KAAO5O,EAAEuU,WAAW,IAAM,WAAavU,EAAIA,EAAIA,EAExD,KAAK,IACH,OAAO,MAAQA,EAAEuU,WAAW,GAAK,WAAavU,EAAIA,EAAIA,EAExD,KAAK,IACH,OAAO,MAAQA,EAAEuU,WAAW,GAAK,WAAavU,EAAIA,EAAIA,EAExD,KAAK,KACH,GAAI,MAAQA,EAAEuU,WAAW,GAAI,MAE/B,KAAK,IACL,KAAK,IACH,MAAO,WAAavU,EAAIA,EAE1B,KAAK,IACH,MAAO,WAAaA,EAAI,QAAUA,EAAIA,EAExC,KAAK,KACL,KAAK,IACH,MAAO,WAAaA,EAAI,QAAUA,EAAI,OAASA,EAAIA,EAErD,KAAK,IACH,GAAI,KAAOA,EAAEuU,WAAW,GAAI,MAAO,WAAavU,EAAIA,EACpD,GAAI,EAAIA,EAAEqC,QAAQ,aAAc,IAAK,OAAOrC,EAAEwQ,QAAQkF,EAAI,gBAAkB1V,EAC5E,MAEF,KAAK,IACH,GAAI,KAAOA,EAAEuU,WAAW,GAAI,OAAQvU,EAAEuU,WAAW,IAC/C,KAAK,IACH,MAAO,eAAiBvU,EAAEwQ,QAAQ,QAAS,IAAM,WAAaxQ,EAAI,OAASA,EAAEwQ,QAAQ,OAAQ,YAAcxQ,EAE7G,KAAK,IACH,MAAO,WAAaA,EAAI,OAASA,EAAEwQ,QAAQ,SAAU,YAAcxQ,EAErE,KAAK,GACH,MAAO,WAAaA,EAAI,OAASA,EAAEwQ,QAAQ,QAAS,kBAAoBxQ,EAE5E,MAAO,WAAaA,EAAI,OAASA,EAAIA,EAEvC,KAAK,IACH,MAAO,WAAaA,EAAI,YAAcA,EAAIA,EAE5C,KAAK,KACH,GAAI,KAAOA,EAAEuU,WAAW,GAAI,MAE5B,MAAO,oBADPtU,EAAID,EAAEsO,UAAUtO,EAAEqC,QAAQ,IAAK,KAAKmO,QAAQ,QAAS,IAAIA,QAAQ,gBAAiB,YAClD,WAAaxQ,EAAI,gBAAkBC,EAAID,EAEzE,KAAK,KACH,OAAO2V,EAAGC,KAAK5V,GAAKA,EAAEwQ,QAAQqF,EAAI,aAAe7V,EAAEwQ,QAAQqF,EAAI,UAAY7V,EAAIA,EAEjF,KAAK,IAIH,OAFA8M,GADA7M,EAAID,EAAEsO,UAAU,IAAImG,QACdpS,QAAQ,KAAO,EAEbpC,EAAEsU,WAAW,GAAKtU,EAAEsU,WAAWzH,IACrC,KAAK,IACH7M,EAAID,EAAEwQ,QAAQpC,EAAG,MACjB,MAEF,KAAK,IACHnO,EAAID,EAAEwQ,QAAQpC,EAAG,SACjB,MAEF,KAAK,IACHnO,EAAID,EAAEwQ,QAAQpC,EAAG,MACjB,MAEF,QACE,OAAOpO,EAGX,MAAO,WAAaA,EAAI,OAASC,EAAID,EAEvC,KAAK,KACH,IAAK,IAAMA,EAAEqC,QAAQ,SAAU,GAAI,MAErC,KAAK,IAIH,OAHAyK,GAAK9M,EAAIwN,GAAGtP,OAAS,GAGb0Q,GAFR3O,GAAK,KAAOD,EAAEuU,WAAWzH,GAAK9M,EAAEsO,UAAU,EAAGxB,GAAK9M,GAAGsO,UAAUd,EAAEnL,QAAQ,IAAK,GAAK,GAAGoS,QAExEF,WAAW,IAAwB,EAAlBtU,EAAEsU,WAAW,KAC1C,KAAK,IACH,GAAI,IAAMtU,EAAEsU,WAAW,GAAI,MAE7B,KAAK,IACHvU,EAAIA,EAAEwQ,QAAQvQ,EAAG,WAAaA,GAAK,IAAMD,EACzC,MAEF,KAAK,IACL,KAAK,IACHA,EAAIA,EAAEwQ,QAAQvQ,EAAG,YAAc,IAAM2O,EAAI,UAAY,IAAM,OAAS,IAAM5O,EAAEwQ,QAAQvQ,EAAG,WAAaA,GAAK,IAAMD,EAAEwQ,QAAQvQ,EAAG,OAASA,EAAI,OAAS,IAAMD,EAG5J,OAAOA,EAAI,IAEb,KAAK,IACH,GAAI,KAAOA,EAAEuU,WAAW,GAAI,OAAQvU,EAAEuU,WAAW,IAC/C,KAAK,IACH,OAAOtU,EAAID,EAAEwQ,QAAQ,SAAU,IAAK,WAAaxQ,EAAI,eAAiBC,EAAI,YAAcA,EAAID,EAE9F,KAAK,IACH,MAAO,WAAaA,EAAI,iBAAmBA,EAAEwQ,QAAQsF,EAAI,IAAM9V,EAEjE,QACE,MAAO,WAAaA,EAAI,qBAAuBA,EAAEwQ,QAAQ,gBAAiB,IAAIA,QAAQsF,EAAI,IAAM9V,EAEpG,MAEF,KAAK,IACL,KAAK,IACH,GAAI,KAAOA,EAAEuU,WAAW,IAAM,MAAQvU,EAAEuU,WAAW,GAAI,MAEzD,KAAK,IACL,KAAK,IACH,IAAI,IAAOwB,EAAGH,KAAKpI,GAAI,OAAO,OAASvN,EAAIuN,EAAEc,UAAUd,EAAEnL,QAAQ,KAAO,IAAIkS,WAAW,GAAKY,EAAE3H,EAAEgD,QAAQ,UAAW,kBAAmB1D,EAAGjL,EAAG4M,GAAG+B,QAAQ,kBAAmB,YAAcxQ,EAAEwQ,QAAQvQ,EAAG,WAAaA,GAAKD,EAAEwQ,QAAQvQ,EAAG,QAAUA,EAAEuQ,QAAQ,QAAS,KAAOxQ,EACxQ,MAEF,KAAK,IACH,GAAIA,EAAI,WAAaA,GAAK,MAAQA,EAAEuU,WAAW,GAAK,OAASvU,EAAI,IAAMA,EAAG,MAAQ6B,EAAI4M,GAAK,MAAQzO,EAAEuU,WAAW,KAAO,EAAIvU,EAAEqC,QAAQ,YAAa,IAAK,OAAOrC,EAAEsO,UAAU,EAAGtO,EAAEqC,QAAQ,IAAK,IAAM,GAAGmO,QAAQwF,EAAI,gBAAkBhW,EAGvO,OAAOA,CACT,CAEA,SAASkV,EAAE1H,EAAGV,GACZ,IAAIjL,EAAI2L,EAAEnL,QAAQ,IAAMyK,EAAI,IAAM,KAC9B2B,EAAIjB,EAAEc,UAAU,EAAG,IAAMxB,EAAIjL,EAAI,IAErC,OADAA,EAAI2L,EAAEc,UAAUzM,EAAI,EAAG2L,EAAEtP,OAAS,GAC3B+X,EAAE,IAAMnJ,EAAI2B,EAAIA,EAAE+B,QAAQ0F,EAAI,MAAOrU,EAAGiL,EACjD,CAEA,SAASkI,EAAGxH,EAAGV,GACb,IAAIjL,EAAIsT,EAAErI,EAAGA,EAAEyH,WAAW,GAAIzH,EAAEyH,WAAW,GAAIzH,EAAEyH,WAAW,IAC5D,OAAO1S,IAAMiL,EAAI,IAAMjL,EAAE2O,QAAQ2F,EAAI,YAAY7H,UAAU,GAAK,IAAMxB,EAAI,GAC5E,CAEA,SAASkC,EAAExB,EAAGV,EAAGjL,EAAG4M,EAAGzO,EAAG4O,EAAG3O,EAAG4M,EAAGjL,EAAG8K,GACpC,IAAK,IAAkBS,EAAduB,EAAI,EAAG7H,EAAIiG,EAAM4B,EAAIZ,IAAKY,EACjC,OAAQvB,EAAIiJ,EAAE1H,GAAGxM,KAAKyM,EAAGnB,EAAG3G,EAAGhF,EAAG4M,EAAGzO,EAAG4O,EAAG3O,EAAG4M,EAAGjL,EAAG8K,IAClD,UAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,KACH,MAEF,QACE7F,EAAIsG,EAIV,GAAItG,IAAMiG,EAAG,OAAOjG,CACtB,CAkBA,SAASwP,EAAE7I,GAGT,YADA,KADAA,EAAIA,EAAE8I,UACWL,EAAI,KAAMzI,EAAI,mBAAsBA,EAAIL,EAAI,GAAKA,EAAI,EAAG8I,EAAIzI,GAAKL,EAAI,GAC/EkJ,CACT,CAEA,SAAS1H,EAAEnB,EAAGV,GACZ,IAAIjL,EAAI2L,EAKR,GAJA,GAAK3L,EAAE0S,WAAW,KAAO1S,EAAIA,EAAE4S,QAE/B5S,EAAI,CADAA,GAGA,EAAIiM,EAAG,CACT,IAAIW,EAAIO,GAAG,EAAGlC,EAAGjL,EAAGA,EAAGmM,EAAGH,EAAG,EAAG,EAAG,EAAG,QACtC,IAAWY,GAAK,iBAAoBA,IAAM3B,EAAI2B,EAChD,CAEA,IAAIzO,EAAIsU,EAAEM,EAAG/S,EAAGiL,EAAG,EAAG,GAKtB,OAJA,EAAIgB,SAAmD,KAA7CW,EAAIO,GAAG,EAAGhP,EAAG6B,EAAGA,EAAGmM,EAAGH,EAAG7N,EAAE9B,OAAQ,EAAG,EAAG,MAAqB8B,EAAIyO,IAE5EW,EAAI,EACJvB,EAAIG,EAAI,EACDhO,CACT,CAEA,IAAI2U,EAAK,QACLH,EAAI,YACJqB,EAAK,OACLF,EAAK,UACLK,EAAK,sBACLR,EAAK,SACLrH,EAAI,oBACJ8G,EAAK,qBACLK,EAAI,aACJD,EAAK,gBACLjH,EAAI,qBACJ2G,EAAK,kBACLoB,EAAK,eACLL,EAAK,eACLI,EAAK,8BACLH,EAAK,mCACLL,EAAK,sBACL7H,EAAI,EACJG,EAAI,EACJoB,EAAI,EACJjC,EAAI,EACJyH,EAAI,GACJwB,EAAI,GACJtI,EAAI,EACJmI,EAAI,KACJb,EAAI,EAKR,OAHAzG,EAAE4H,IApEF,SAASC,EAAEhJ,GACT,OAAQA,GACN,UAAK,EACL,KAAK,KACHM,EAAIsI,EAAElY,OAAS,EACf,MAEF,QACE,GAAI,mBAAsBsP,EAAG4I,EAAEtI,KAAON,OAAO,GAAI,iBAAoBA,EAAG,IAAK,IAAIV,EAAI,EAAGjL,EAAI2L,EAAEtP,OAAQ4O,EAAIjL,IAAKiL,EAC7G0J,EAAEhJ,EAAEV,SACCsI,EAAU,IAAJ5H,EAGjB,OAAOgJ,CACT,EAuDA7H,EAAEpP,IAAM8W,OACR,IAAWhC,GAAKgC,EAAEhC,GACX1F,CACT,ECnjBA,EAjDmB,CACjB8H,wBAAyB,EACzBC,kBAAmB,EACnBC,iBAAkB,EAClBC,iBAAkB,EAClBC,QAAS,EACTC,aAAc,EACdC,gBAAiB,EACjBC,YAAa,EACbC,QAAS,EACTC,KAAM,EACNC,SAAU,EACVC,aAAc,EACdC,WAAY,EACZC,aAAc,EACdC,UAAW,EACXC,QAAS,EACTC,WAAY,EACZC,YAAa,EACbC,aAAc,EACdC,WAAY,EACZC,cAAe,EACfC,eAAgB,EAChBC,gBAAiB,EACjBC,UAAW,EACXC,cAAe,EACfC,aAAc,EACdC,iBAAkB,EAClBC,WAAY,EACZC,WAAY,EACZC,QAAS,EACTC,MAAO,EACPC,QAAS,EACTC,QAAS,EACTC,OAAQ,EACRC,OAAQ,EACRC,KAAM,EACNC,gBAAiB,EAEjBC,YAAa,EACbC,aAAc,EACdC,YAAa,EACbC,gBAAiB,EACjBC,iBAAkB,EAClBC,iBAAkB,EAClBC,cAAe,EACfC,YAAa,GC9Cf,SAASC,EAAQnN,GACf,IAAIoN,EAAQ9X,OAAO+X,OAAO,MAC1B,OAAO,SAAU5U,GAEf,YADmBH,IAAf8U,EAAM3U,KAAoB2U,EAAM3U,GAAOuH,EAAGvH,IACvC2U,EAAM3U,EACf,CACF,CCHA,IAAI6U,EAAkB,gjIAElBC,EAA6BJ,EAAQ,SAAUK,GACjD,OAAOF,EAAgB7D,KAAK+D,IAAgC,MAAvBA,EAAKpF,WAAW,IAE3B,MAAvBoF,EAAKpF,WAAW,IAEhBoF,EAAKpF,WAAW,GAAK,EAC1B,G,mBCXsX,SAASzN,IAAI,OAAOA,EAAErF,OAAOC,QAAQ,SAASG,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAED,UAAU5D,OAAO6D,IAAI,CAAC,IAAIH,EAAEE,UAAUC,GAAG,IAAI,IAAIC,KAAKJ,EAAEH,OAAO6F,UAAUrF,eAAeC,KAAKN,EAAEI,KAAKH,EAAEG,GAAGJ,EAAEI,GAAG,CAAC,OAAOH,CAAC,GAAGM,MAAM4K,KAAKjL,UAAU,CAAC,IAAI+K,EAAE,SAAShL,EAAEE,GAAG,IAAI,IAAIH,EAAE,CAACC,EAAE,IAAIG,EAAE,EAAE4X,EAAE7X,EAAE7D,OAAO8D,EAAE4X,EAAE5X,GAAG,EAAEJ,EAAEmE,KAAKhE,EAAEC,GAAGH,EAAEG,EAAE,IAAI,OAAOJ,CAAC,EAAE8M,EAAE,SAAS3M,GAAG,OAAO,OAAOA,GAAG,iBAAiBA,GAAG,qBAAqBA,EAAE8X,SAAS9X,EAAE8X,WAAWpY,OAAO6F,UAAUuS,SAAS3X,KAAKH,OAAM,YAAEA,EAAE,EAAEqU,EAAE3U,OAAOqY,OAAO,IAAI3M,EAAE1L,OAAOqY,OAAO,CAAC,GAAG,SAAS1K,EAAEvN,GAAG,MAAM,mBAAmBA,CAAC,CAAC,SAAS5B,EAAE4B,GAAG,OAAkEA,EAAEyC,aAAazC,EAAEZ,MAAM,WAAW,CAAC,SAAS8Y,EAAElY,GAAG,OAAOA,GAAG,iBAAiBA,EAAEmY,iBAAiB,CAAC,IAAIxF,EAAE,oBAAoByF,cAAS,IAAS,KAAc,GAAYC,mBAAmB,GAAYC,UAAU,cAAcrM,EAAE,SAASC,EAAE,oBAAoBtH,QAAQ,gBAAgBA,OAAO8I,EAAEpL,QAAQ,kBAAkBiW,kBAAkBA,kBAAkB,oBAAoBH,cAAS,IAAS,UAAc,IAAS,GAAYI,6BAA6B,KAAK,GAAYA,4BAA4B,UAAU,GAAYA,6BAA6B,GAAYA,iCAA4B,IAAS,GAAYD,mBAAmB,KAAK,GAAYA,oBAAkB,UAAU,GAAYA,mBAAmB,GAAYA,qBAAwDjF,EAAE,CAAC,EAAi5G,SAASnH,EAAEnM,GAAG,IAAI,IAAIE,EAAED,UAAU5D,OAAO0D,EAAE,IAAI0Y,MAAMvY,EAAE,EAAEA,EAAE,EAAE,GAAGC,EAAE,EAAEA,EAAED,EAAEC,IAAIJ,EAAEI,EAAE,GAAGF,UAAUE,GAAG,MAAyC,IAAInC,MAAM,+CAA+CgC,EAAE,0BAA0BD,EAAE1D,OAAO,EAAE,UAAU0D,EAAEkT,KAAK,MAAM,IAAuD,CAAC,IAAIyF,EAAE,WAAW,SAAS1Y,EAAEA,GAAGkL,KAAKyN,WAAW,IAAIC,YAAY,KAAK1N,KAAK7O,OAAO,IAAI6O,KAAK2N,IAAI7Y,CAAC,CAAC,IAAIE,EAAEF,EAAEyF,UAAU,OAAOvF,EAAE4Y,aAAa,SAAS9Y,GAAG,IAAI,IAAIE,EAAE,EAAEH,EAAE,EAAEA,EAAEC,EAAED,IAAIG,GAAGgL,KAAKyN,WAAW5Y,GAAG,OAAOG,CAAC,EAAEA,EAAE6Y,YAAY,SAAS/Y,EAAEE,GAAG,GAAGF,GAAGkL,KAAKyN,WAAWtc,OAAO,CAAC,IAAI,IAAI0D,EAAEmL,KAAKyN,WAAWxY,EAAEJ,EAAE1D,OAAO0b,EAAE5X,EAAEH,GAAG+X,IAAIA,IAAI,GAAG,GAAG5L,EAAE,GAAG,GAAGnM,GAAGkL,KAAKyN,WAAW,IAAIC,YAAYb,GAAG7M,KAAKyN,WAAWjb,IAAIqC,GAAGmL,KAAK7O,OAAO0b,EAAE,IAAI,IAAIiB,EAAE7Y,EAAE6Y,EAAEjB,EAAEiB,IAAI9N,KAAKyN,WAAWK,GAAG,CAAC,CAAC,IAAI,IAAIxT,EAAE0F,KAAK4N,aAAa9Y,EAAE,GAAG7B,EAAE,EAAE8M,EAAE/K,EAAE7D,OAAO8B,EAAE8M,EAAE9M,IAAI+M,KAAK2N,IAAII,WAAWzT,EAAEtF,EAAE/B,MAAM+M,KAAKyN,WAAW3Y,KAAKwF,IAAI,EAAEtF,EAAEgZ,WAAW,SAASlZ,GAAG,GAAGA,EAAEkL,KAAK7O,OAAO,CAAC,IAAI6D,EAAEgL,KAAKyN,WAAW3Y,GAAGD,EAAEmL,KAAK4N,aAAa9Y,GAAGG,EAAEJ,EAAEG,EAAEgL,KAAKyN,WAAW3Y,GAAG,EAAE,IAAI,IAAI+X,EAAEhY,EAAEgY,EAAE5X,EAAE4X,IAAI7M,KAAK2N,IAAIM,WAAWpZ,EAAE,CAAC,EAAEG,EAAEkZ,SAAS,SAASpZ,GAAG,IAAIE,EAAE,GAAG,GAAGF,GAAGkL,KAAK7O,QAAQ,IAAI6O,KAAKyN,WAAW3Y,GAAG,OAAOE,EAAE,IAAI,IAAIH,EAAEmL,KAAKyN,WAAW3Y,GAAGG,EAAE+K,KAAK4N,aAAa9Y,GAAG+X,EAAE5X,EAAEJ,EAAEiZ,EAAE7Y,EAAE6Y,EAAEjB,EAAEiB,IAAI9Y,GAAGgL,KAAK2N,IAAIQ,QAAQL,GAAG,YAAY,OAAO9Y,CAAC,EAAEF,CAAC,CAAh5B,GAAo5B2U,EAAE,IAAIpX,IAAIyH,EAAE,IAAIzH,IAAIkN,EAAE,EAAE6O,EAAE,SAAStZ,GAAG,GAAG2U,EAAE4E,IAAIvZ,GAAG,OAAO2U,EAAElX,IAAIuC,GAAG,KAAKgF,EAAEuU,IAAI9O,IAAIA,IAAI,IAAIvK,EAAEuK,IAAI,OAA0EkK,EAAEjX,IAAIsC,EAAEE,GAAG8E,EAAEtH,IAAIwC,EAAEF,GAAGE,CAAC,EAAE4M,EAAE,SAAS9M,GAAG,OAAOgF,EAAEvH,IAAIuC,EAAE,EAAEgM,EAAE,SAAShM,EAAEE,GAAGA,GAAGuK,IAAIA,EAAEvK,EAAE,GAAGyU,EAAEjX,IAAIsC,EAAEE,GAAG8E,EAAEtH,IAAIwC,EAAEF,EAAE,EAAEyS,EAAE,SAASE,EAAE,kCAAkCpG,EAAE,IAAIiN,OAAO,IAAI7G,EAAE,gDAAgDU,EAAE,SAASrT,EAAEE,EAAEH,GAAG,IAAI,IAAII,EAAE4X,EAAEhY,EAAE2T,MAAM,KAAKsF,EAAE,EAAExT,EAAEuS,EAAE1b,OAAO2c,EAAExT,EAAEwT,KAAK7Y,EAAE4X,EAAEiB,KAAKhZ,EAAEyZ,aAAavZ,EAAEC,EAAE,EAAEmM,EAAE,SAAStM,EAAEE,GAAG,IAAI,IAAIH,GAAGG,EAAEwZ,aAAa,IAAIhG,MAAM,aAAavT,EAAE,GAAG4X,EAAE,EAAEiB,EAAEjZ,EAAE1D,OAAO0b,EAAEiB,EAAEjB,IAAI,CAAC,IAAIvS,EAAEzF,EAAEgY,GAAGnF,OAAO,GAAGpN,EAAE,CAAC,IAAIrH,EAAEqH,EAAEmU,MAAMpN,GAAG,GAAGpO,EAAE,CAAC,IAAI8M,EAAE,EAAEuB,SAASrO,EAAE,GAAG,IAAI+O,EAAE/O,EAAE,GAAG,IAAI8M,IAAIe,EAAEkB,EAAEjC,GAAGoI,EAAErT,EAAEkN,EAAE/O,EAAE,IAAI6B,EAAE4Z,SAASb,YAAY9N,EAAE9K,IAAIA,EAAE9D,OAAO,CAAC,MAAM8D,EAAE+D,KAAKsB,EAAE,CAAC,CAAC,EAAE+N,EAAE,WAAW,OAA4C,IAAsB,EAAE1I,EAAE,SAAS7K,GAAG,IAAIE,EAAE2E,SAASgV,KAAK9Z,EAAEC,GAAGE,EAAEC,EAAE0E,SAASC,cAAc,SAASiT,EAAE,SAAS/X,GAAG,IAAI,IAAIE,EAAEF,EAAE8Z,WAAW/Z,EAAEG,EAAE7D,OAAO0D,GAAG,EAAEA,IAAI,CAAC,IAAII,EAAED,EAAEH,GAAG,GAAGI,GAAG,IAAIA,EAAE4Z,UAAU5Z,EAAE6Z,aAAarH,GAAG,OAAOxS,CAAC,CAAC,CAApH,CAAsHJ,GAAGiZ,OAAE,IAASjB,EAAEA,EAAEkC,YAAY,KAAK9Z,EAAE+Z,aAAavH,EAAE,UAAUxS,EAAE+Z,aAAa,sBAAsB,UAAU,IAAI1U,EAAE+N,IAAI,OAAO/N,GAAGrF,EAAE+Z,aAAa,QAAQ1U,GAAGzF,EAAEoa,aAAaha,EAAE6Y,GAAG7Y,CAAC,EAAEgN,EAAE,WAAW,SAASnN,EAAEA,GAAG,IAAIE,EAAEgL,KAAK+F,QAAQpG,EAAE7K,GAAGE,EAAEka,YAAYvV,SAASwV,eAAe,KAAKnP,KAAKoP,MAAM,SAASta,GAAG,GAAGA,EAAEsa,MAAM,OAAOta,EAAEsa,MAAM,IAAI,IAAIpa,EAAE2E,SAAS0V,YAAYxa,EAAE,EAAEI,EAAED,EAAE7D,OAAO0D,EAAEI,EAAEJ,IAAI,CAAC,IAAIgY,EAAE7X,EAAEH,GAAG,GAAGgY,EAAEyC,YAAYxa,EAAE,OAAO+X,CAAC,CAAC5L,EAAE,GAAG,CAAzI,CAA2IjM,GAAGgL,KAAK7O,OAAO,CAAC,CAAC,IAAI6D,EAAEF,EAAEyF,UAAU,OAAOvF,EAAE+Y,WAAW,SAASjZ,EAAEE,GAAG,IAAI,OAAOgL,KAAKoP,MAAMrB,WAAW/Y,EAAEF,GAAGkL,KAAK7O,UAAS,CAAE,CAAC,MAAM2D,GAAG,OAAM,CAAE,CAAC,EAAEE,EAAEiZ,WAAW,SAASnZ,GAAGkL,KAAKoP,MAAMnB,WAAWnZ,GAAGkL,KAAK7O,QAAQ,EAAE6D,EAAEmZ,QAAQ,SAASrZ,GAAG,IAAIE,EAAEgL,KAAKoP,MAAMG,SAASza,GAAG,YAAO,IAASE,GAAG,iBAAiBA,EAAEwa,QAAQxa,EAAEwa,QAAQ,EAAE,EAAE1a,CAAC,CAAnjB,GAAujB2a,EAAE,WAAW,SAAS3a,EAAEA,GAAG,IAAIE,EAAEgL,KAAK+F,QAAQpG,EAAE7K,GAAGkL,KAAK0P,MAAM1a,EAAE4Z,WAAW5O,KAAK7O,OAAO,CAAC,CAAC,IAAI6D,EAAEF,EAAEyF,UAAU,OAAOvF,EAAE+Y,WAAW,SAASjZ,EAAEE,GAAG,GAAGF,GAAGkL,KAAK7O,QAAQ2D,GAAG,EAAE,CAAC,IAAID,EAAE8E,SAASwV,eAAena,GAAGC,EAAE+K,KAAK0P,MAAM5a,GAAG,OAAOkL,KAAK+F,QAAQkJ,aAAapa,EAAEI,GAAG,MAAM+K,KAAK7O,UAAS,CAAE,CAAC,OAAM,CAAE,EAAE6D,EAAEiZ,WAAW,SAASnZ,GAAGkL,KAAK+F,QAAQ4J,YAAY3P,KAAK0P,MAAM5a,IAAIkL,KAAK7O,QAAQ,EAAE6D,EAAEmZ,QAAQ,SAASrZ,GAAG,OAAOA,EAAEkL,KAAK7O,OAAO6O,KAAK0P,MAAM5a,GAAG0Z,YAAY,EAAE,EAAE1Z,CAAC,CAAtb,GAA0bwS,EAAE,WAAW,SAASxS,EAAEA,GAAGkL,KAAK4P,MAAM,GAAG5P,KAAK7O,OAAO,CAAC,CAAC,IAAI6D,EAAEF,EAAEyF,UAAU,OAAOvF,EAAE+Y,WAAW,SAASjZ,EAAEE,GAAG,OAAOF,GAAGkL,KAAK7O,SAAS6O,KAAK4P,MAAMC,OAAO/a,EAAE,EAAEE,GAAGgL,KAAK7O,UAAS,EAAG,EAAE6D,EAAEiZ,WAAW,SAASnZ,GAAGkL,KAAK4P,MAAMC,OAAO/a,EAAE,GAAGkL,KAAK7O,QAAQ,EAAE6D,EAAEmZ,QAAQ,SAASrZ,GAAG,OAAOA,EAAEkL,KAAK7O,OAAO6O,KAAK4P,MAAM9a,GAAG,EAAE,EAAEA,CAAC,CAA1S,GAA8SwU,EAAEtI,EAAEc,EAAE,CAACgO,UAAU9O,EAAE+O,mBAAmBvN,GAAGsF,EAAE,WAAW,SAAShT,EAAEA,EAAEE,EAAEH,QAAG,IAASC,IAAIA,EAAEsL,QAAG,IAASpL,IAAIA,EAAE,CAAC,GAAGgL,KAAK/O,QAAQ8I,EAAE,CAAC,EAAE+H,EAAE,CAAC,EAAEhN,GAAGkL,KAAKgQ,GAAGhb,EAAEgL,KAAKiQ,MAAM,IAAI5d,IAAIwC,GAAGmL,KAAKkQ,SAASpb,EAAEgb,UAAU9P,KAAKkQ,QAAQlP,GAAGsI,IAAIA,GAAE,EAAG,SAASxU,GAAG,IAAI,IAAIE,EAAE2E,SAASwW,iBAAiB5I,GAAG1S,EAAE,EAAEI,EAAED,EAAE7D,OAAO0D,EAAEI,EAAEJ,IAAI,CAAC,IAAIgY,EAAE7X,EAAEH,GAAGgY,GAAG,WAAWA,EAAEuD,aAAa3I,KAAKrG,EAAEtM,EAAE+X,GAAGA,EAAEwD,YAAYxD,EAAEwD,WAAWV,YAAY9C,GAAG,CAAC,CAA1K,CAA4K7M,MAAM,CAAClL,EAAEwb,WAAW,SAASxb,GAAG,OAAOsZ,EAAEtZ,EAAE,EAAE,IAAIE,EAAEF,EAAEyF,UAAU,OAAOvF,EAAEub,uBAAuB,SAASvb,EAAEH,GAAG,YAAO,IAASA,IAAIA,GAAE,GAAI,IAAIC,EAAEiF,EAAE,CAAC,EAAEiG,KAAK/O,QAAQ,CAAC,EAAE+D,GAAGgL,KAAKgQ,GAAGnb,GAAGmL,KAAKiQ,YAAO,EAAO,EAAEjb,EAAEwb,mBAAmB,SAAS1b,GAAG,OAAOkL,KAAKgQ,GAAGlb,IAAIkL,KAAKgQ,GAAGlb,IAAI,GAAG,CAAC,EAAEE,EAAE0Z,OAAO,WAAW,OAAO1O,KAAK2N,MAAM3N,KAAK2N,KAAK9Y,GAAGG,EAAEgL,KAAK/O,SAAS6e,SAAS7a,EAAED,EAAE+a,kBAAkBlD,EAAE7X,EAAEyb,OAAO3b,EAAED,EAAE,IAAIyS,EAAEuF,GAAG5X,EAAE,IAAIgN,EAAE4K,GAAG,IAAI4C,EAAE5C,GAAG,IAAIW,EAAE1Y,KAAK,IAAIA,EAAEE,EAAEH,EAAEI,EAAE4X,CAAC,EAAE7X,EAAE0b,aAAa,SAAS5b,EAAEE,GAAG,OAAOgL,KAAKiQ,MAAM5B,IAAIvZ,IAAIkL,KAAKiQ,MAAM1d,IAAIuC,GAAGuZ,IAAIrZ,EAAE,EAAEA,EAAEuZ,aAAa,SAASzZ,EAAEE,GAAG,GAAGoZ,EAAEtZ,GAAGkL,KAAKiQ,MAAM5B,IAAIvZ,GAAGkL,KAAKiQ,MAAM1d,IAAIuC,GAAG6b,IAAI3b,OAAO,CAAC,IAAIH,EAAE,IAAI+b,IAAI/b,EAAE8b,IAAI3b,GAAGgL,KAAKiQ,MAAMzd,IAAIsC,EAAED,EAAE,CAAC,EAAEG,EAAE6Y,YAAY,SAAS/Y,EAAEE,EAAEH,GAAGmL,KAAKuO,aAAazZ,EAAEE,GAAGgL,KAAK0O,SAASb,YAAYO,EAAEtZ,GAAGD,EAAE,EAAEG,EAAE6b,WAAW,SAAS/b,GAAGkL,KAAKiQ,MAAM5B,IAAIvZ,IAAIkL,KAAKiQ,MAAM1d,IAAIuC,GAAGgE,OAAO,EAAE9D,EAAE8b,WAAW,SAAShc,GAAGkL,KAAK0O,SAASV,WAAWI,EAAEtZ,IAAIkL,KAAK6Q,WAAW/b,EAAE,EAAEE,EAAE+b,SAAS,WAAW/Q,KAAK2N,SAAI,CAAM,EAAE3Y,EAAE8X,SAAS,WAAW,OAAO,SAAShY,GAAG,IAAI,IAAIE,EAAEF,EAAE4Z,SAAS7Z,EAAEG,EAAE7D,OAAO8D,EAAE,GAAG4X,EAAE,EAAEA,EAAEhY,EAAEgY,IAAI,CAAC,IAAIiB,EAAElM,EAAEiL,GAAG,QAAG,IAASiB,EAAE,CAAC,IAAIxT,EAAExF,EAAEmb,MAAM1d,IAAIub,GAAG7a,EAAE+B,EAAEkZ,SAASrB,GAAG,GAAGvS,GAAGrH,GAAGqH,EAAE0W,KAAK,CAAC,IAAIjR,EAAE0H,EAAE,KAAKoF,EAAE,QAAQiB,EAAE,KAAK9L,EAAE,QAAG,IAAS1H,GAAGA,EAAE6G,QAAQ,SAAUrM,GAAGA,EAAE3D,OAAO,IAAI6Q,GAAGlN,EAAE,IAAK,GAAGG,GAAG,GAAGhC,EAAE8M,EAAE,aAAaiC,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO/M,CAAC,CAA/R,CAAiS+K,KAAK,EAAElL,CAAC,CAAzjD,GAA6jD4T,EAAE,WAAW7F,EAAE,SAAS/N,GAAG,OAAOmc,OAAOC,aAAapc,GAAGA,EAAE,GAAG,GAAG,IAAI,EAAE,SAASyT,EAAEzT,GAAG,IAAIE,EAAEH,EAAE,GAAG,IAAIG,EAAEmc,KAAKC,IAAItc,GAAGE,EAAE,GAAGA,EAAEA,EAAE,GAAG,EAAEH,EAAEgO,EAAE7N,EAAE,IAAIH,EAAE,OAAOgO,EAAE7N,EAAE,IAAIH,GAAG4O,QAAQiF,EAAE,QAAQ,CAAC,IAAI2I,EAAG,SAASvc,EAAEE,GAAG,IAAI,IAAIH,EAAEG,EAAE7D,OAAO0D,GAAGC,EAAE,GAAGA,EAAEE,EAAEwS,aAAa3S,GAAG,OAAOC,CAAC,EAAEwc,EAAG,SAASxc,GAAG,OAAOuc,EAAG,KAAKvc,EAAE,EAAE,SAASyc,EAAGzc,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAEF,EAAE3D,OAAO6D,GAAG,EAAE,CAAC,IAAIH,EAAEC,EAAEE,GAAG,GAAGqN,EAAExN,KAAKmY,EAAEnY,GAAG,OAAM,CAAE,CAAC,OAAM,CAAE,CAAC,IAAI2c,EAAGF,EAAG,UAAUG,GAAG,WAAW,SAAS3c,EAAEA,EAAEE,EAAEH,GAAGmL,KAAK4P,MAAM9a,EAAEkL,KAAK0R,cAAc,GAAG1R,KAAK2R,eAA+C,IAAS9c,GAAGA,EAAE8c,WAAWJ,EAAGzc,GAAGkL,KAAK4R,YAAY5c,EAAEgL,KAAK6R,SAASR,EAAGG,EAAGxc,GAAGgL,KAAK8R,UAAUjd,EAAEiT,EAAEwI,WAAWtb,EAAE,CAAC,OAAOF,EAAEyF,UAAUwX,wBAAwB,SAASjd,EAAEE,EAAEH,GAAG,IAAII,EAAE+K,KAAK4R,YAAY/E,EAAE,GAAG,GAAG7M,KAAK8R,WAAWjF,EAAE7T,KAAKgH,KAAK8R,UAAUC,wBAAwBjd,EAAEE,EAAEH,IAAImL,KAAK2R,WAAW9c,EAAEmd,KAAK,GAAGhS,KAAK0R,eAAe1c,EAAE0b,aAAazb,EAAE+K,KAAK0R,eAAe7E,EAAE7T,KAAKgH,KAAK0R,mBAAmB,CAAC,IAAI5D,EAAEmE,GAAGjS,KAAK4P,MAAM9a,EAAEE,EAAEH,GAAGkT,KAAK,IAAIzN,EAAEiO,EAAE8I,EAAGrR,KAAK6R,SAAS/D,KAAK,GAAG,IAAI9Y,EAAE0b,aAAazb,EAAEqF,GAAG,CAAC,IAAIrH,EAAE4B,EAAEiZ,EAAE,IAAIxT,OAAE,EAAOrF,GAAGD,EAAE6Y,YAAY5Y,EAAEqF,EAAErH,EAAE,CAAC4Z,EAAE7T,KAAKsB,GAAG0F,KAAK0R,cAAcpX,CAAC,KAAK,CAAC,IAAI,IAAIyF,EAAEC,KAAK4P,MAAMze,OAAO6Q,EAAEqP,EAAGrR,KAAK6R,SAAShd,EAAEmd,MAAMxS,EAAE,GAAGiB,EAAE,EAAEA,EAAEV,EAAEU,IAAI,CAAC,IAAIiB,EAAE1B,KAAK4P,MAAMnP,GAAG,GAAG,iBAAiBiB,EAAElC,GAAGkC,OAA0D,GAAGA,EAAE,CAAC,IAAIhC,EAAEuS,GAAGvQ,EAAE5M,EAAEE,EAAEH,GAAG2M,EAAE+L,MAAM2E,QAAQxS,GAAGA,EAAEqI,KAAK,IAAIrI,EAAEsC,EAAEqP,EAAGrP,EAAER,EAAEf,GAAGjB,GAAGgC,CAAC,CAAC,CAAC,GAAGhC,EAAE,CAAC,IAAIqC,EAAE0G,EAAEvG,IAAI,GAAG,IAAIhN,EAAE0b,aAAazb,EAAE4M,GAAG,CAAC,IAAI9H,EAAElF,EAAE2K,EAAE,IAAIqC,OAAE,EAAO5M,GAAGD,EAAE6Y,YAAY5Y,EAAE4M,EAAE9H,EAAE,CAAC8S,EAAE7T,KAAK6I,EAAE,CAAC,CAAC,OAAOgL,EAAE9E,KAAK,IAAI,EAAEjT,CAAC,CAArhC,GAAyhCqd,GAAG,gBAAgBC,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,SAASC,GAAGvd,GAAG,IAAIE,EAAEH,EAAEI,EAAE4X,EAAEiB,OAAE,IAAShZ,EAAEsL,EAAEtL,EAAEwF,EAAEwT,EAAE7c,QAAQgC,OAAE,IAASqH,EAAE8F,EAAE9F,EAAEyF,EAAE+N,EAAE3d,QAAQ6R,OAAE,IAASjC,EAAEsJ,EAAEtJ,EAAEP,EAAE,IAAI,EAAEvM,GAAGwN,EAAE,GAAGf,EAAE,SAAS5K,GAAG,SAASE,EAAEA,GAAG,GAAGA,EAAE,IAAIF,EAAEE,EAAE,IAAI,CAAC,MAAMF,GAAG,CAAC,CAAC,OAAO,SAASD,EAAEI,EAAE4X,EAAEiB,EAAExT,EAAErH,EAAE8M,EAAEiC,EAAExC,EAAEiB,GAAG,OAAO5L,GAAG,KAAK,EAAE,GAAG,IAAI2K,GAAG,KAAKvK,EAAEuS,WAAW,GAAG,OAAO1S,EAAEG,EAAE,KAAK,GAAG,MAAM,KAAK,EAAE,GAAG,IAAI+M,EAAE,OAAO/M,EAAE,QAAQ,MAAM,KAAK,EAAE,OAAO+M,GAAG,KAAK,IAAI,KAAK,IAAI,OAAOlN,EAAE+X,EAAE,GAAG5X,GAAG,GAAG,QAAQ,OAAOA,GAAG,IAAIwL,EAAE,QAAQ,IAAI,KAAK,EAAExL,EAAEuT,MAAM,UAAUrH,QAAQnM,GAAG,CAAC,CAA5U,CAA8U,SAAUF,GAAG2L,EAAEzH,KAAKlE,EAAG,GAAG0M,EAAE,SAAS1M,EAAEG,EAAE6Y,GAAG,OAAO,IAAI7Y,IAAI,IAAImd,GAAG9c,QAAQwY,EAAEjZ,EAAE1D,UAAU2c,EAAEW,MAAM5B,GAAG/X,EAAE,IAAIE,CAAC,EAAE,SAAS6M,EAAE/M,EAAEgZ,EAAExT,EAAErH,QAAG,IAASA,IAAIA,EAAE,KAAK,IAAI8M,EAAEjL,EAAE2O,QAAQ0O,GAAG,IAAInQ,EAAE8L,GAAGxT,EAAEA,EAAE,IAAIwT,EAAE,MAAM/N,EAAE,KAAKA,EAAE,OAAO/K,EAAE/B,EAAE4B,EAAEiZ,EAAE7Y,EAAE,IAAIqZ,OAAO,KAAKzZ,EAAE,MAAM,KAAKgY,EAAE,IAAIyB,OAAO,MAAMzZ,EAAE,YAAY2K,EAAElF,IAAIwT,EAAE,GAAGA,EAAE9L,EAAE,CAAC,OAAOxC,EAAEgK,IAAI,GAAG8I,OAAOtQ,EAAE,CAAC,SAASlN,EAAEE,EAAE6X,GAAG,IAAI/X,GAAG+X,EAAE1b,QAAQ0b,EAAE,GAAG0F,YAAY1d,GAAG,IAAIgY,EAAE,GAAGA,EAAE,GAAGpJ,QAAQxO,EAAEuM,GAAG,EAAE9B,EAAE,SAAS5K,GAAG,IAAI,IAAIA,EAAE,CAAC,IAAIE,EAAEyL,EAAE,OAAOA,EAAE,GAAGzL,CAAC,CAAC,KAAK6M,EAAEmQ,KAAKhQ,EAAE7Q,OAAO6Q,EAAE5Q,OAAO,SAAU0D,EAAEE,GAAG,OAAOA,EAAEd,MAAM+M,EAAE,IAAIoQ,EAAGvc,EAAEE,EAAEd,KAAM,EAAE,MAAM4Y,WAAW,GAAGjL,CAAC,CAAC,IAAI2Q,GAAG,kBAAkBC,GAAGD,GAAG7V,SAAS+V,GAAG,kBAAkBC,IAAID,GAAG/V,SAAS,IAAImL,GAAG8K,GAAGP,KAAK,SAASQ,KAAK,OAAO,gBAAEL,KAAKG,EAAE,CAAC,SAASG,KAAK,OAAO,gBAAEJ,KAAKE,EAAE,CAAC,SAASG,GAAGje,GAAG,IAAIE,GAAE,cAAEF,EAAEke,eAAene,EAAEG,EAAE,GAAG8Y,EAAE9Y,EAAE,GAAG+K,EAAE8S,KAAK7Q,GAAE,aAAE,WAAY,IAAIhN,EAAE+K,EAAE,OAAOjL,EAAEsa,MAAMpa,EAAEF,EAAEsa,MAAMta,EAAE2b,SAASzb,EAAEA,EAAEub,uBAAuB,CAACE,OAAO3b,EAAE2b,SAAQ,IAAK3b,EAAEme,wBAAwBje,EAAEA,EAAEub,uBAAuB,CAACR,mBAAkB,KAAM/a,CAAE,EAAE,CAACF,EAAEme,sBAAsBne,EAAEsa,MAAMta,EAAE2b,SAASjR,GAAE,aAAE,WAAY,OAAO6S,GAAG,CAACphB,QAAQ,CAACsY,QAAQzU,EAAEmR,uBAAuB9V,QAAQ0E,GAAI,EAAE,CAACC,EAAEmR,sBAAsBpR,IAAI,OAAO,eAAE,WAAY,IAAEA,EAAEC,EAAEke,gBAAgBlF,EAAEhZ,EAAEke,cAAe,EAAE,CAACle,EAAEke,gBAAgB,gBAAgBR,GAAG/T,SAAS,CAACC,MAAMsD,GAAG,gBAAgB0Q,GAAGjU,SAAS,CAACC,MAAMc,GAAmE1K,EAAE+J,UAAU,CAAC,IAAIqU,GAAG,WAAW,SAASpe,EAAEA,EAAEE,GAAG,IAAIH,EAAEmL,KAAKA,KAAKmT,OAAO,SAASre,EAAEE,QAAG,IAASA,IAAIA,EAAE4d,IAAI,IAAI3d,EAAEJ,EAAEX,KAAKc,EAAEgd,KAAKld,EAAE4b,aAAa7b,EAAE8L,GAAG1L,IAAIH,EAAE+Y,YAAYhZ,EAAE8L,GAAG1L,EAAED,EAAEH,EAAE+a,MAAM3a,EAAE,cAAc,EAAE+K,KAAK8M,SAAS,WAAW,OAAO7L,EAAE,GAAGgQ,OAAOpc,EAAEX,MAAM,EAAE8L,KAAK9L,KAAKY,EAAEkL,KAAKW,GAAG,gBAAgB7L,EAAEkL,KAAK4P,MAAM5a,CAAC,CAAC,OAAOF,EAAEyF,UAAU6Y,QAAQ,SAASte,GAAG,YAAO,IAASA,IAAIA,EAAE8d,IAAI5S,KAAK9L,KAAKY,EAAEkd,IAAI,EAAEld,CAAC,CAA7W,GAAiXue,GAAG,UAAUC,GAAG,WAAWC,GAAG,OAAOC,GAAG,SAAS1e,GAAG,MAAM,IAAIA,EAAE2e,aAAa,EAAE,SAASC,GAAG5e,GAAG,OAAOue,GAAGxK,KAAK/T,GAAGA,EAAE2O,QAAQ6P,GAAGE,IAAI/P,QAAQ8P,GAAG,QAAQze,CAAC,CAAC,IAAI6e,GAAG,SAAS7e,GAAG,OAAO,MAAMA,IAAG,IAAKA,GAAG,KAAKA,CAAC,EAAE,SAASmd,GAAGnd,EAAED,EAAEI,EAAE4X,GAAG,GAAGU,MAAM2E,QAAQpd,GAAG,CAAC,IAAI,IAAIgZ,EAAExT,EAAE,GAAGrH,EAAE,EAAE8M,EAAEjL,EAAE3D,OAAO8B,EAAE8M,EAAE9M,GAAG,EAAE,MAAM6a,EAAEmE,GAAGnd,EAAE7B,GAAG4B,EAAEI,EAAE4X,MAAMU,MAAM2E,QAAQpE,GAAGxT,EAAEtB,KAAK5D,MAAMkF,EAAEwT,GAAGxT,EAAEtB,KAAK8U,IAAI,OAAOxT,CAAC,CAAC,OAAGqZ,GAAG7e,GAAS,GAAMkY,EAAElY,GAAS,IAAIA,EAAEmY,kBAAqB5K,EAAEvN,GAAO,mBAAmB0K,EAAE1K,IAAI0K,EAAEjF,WAAWiF,EAAEjF,UAAUqZ,mBAAmB/e,EAASC,EAAoQmd,GAA5Pnd,EAAED,GAA+PA,EAAEI,EAAE4X,GAAgB/X,aAAaoe,GAAGje,GAAGH,EAAEqe,OAAOle,EAAE4X,GAAG/X,EAAEse,QAAQvG,IAAI/X,EAAE6M,EAAE7M,GAAG,SAASA,EAAEE,EAAEH,GAAG,IAAII,EAAE4X,EAAEiB,EAAE,GAAG,IAAI,IAAIxT,KAAKtF,EAAEA,EAAEE,eAAeoF,KAAKqZ,GAAG3e,EAAEsF,MAAMiT,MAAM2E,QAAQld,EAAEsF,KAAKtF,EAAEsF,GAAGuZ,OAAOxR,EAAErN,EAAEsF,IAAIwT,EAAE9U,KAAK0a,GAAGpZ,GAAG,IAAItF,EAAEsF,GAAG,KAAKqH,EAAE3M,EAAEsF,IAAIwT,EAAE9U,KAAK5D,MAAM0Y,EAAEhZ,EAAEE,EAAEsF,GAAGA,IAAIwT,EAAE9U,KAAK0a,GAAGpZ,GAAG,MAAMrF,EAAEqF,GAAE,OAAOuS,EAAE7X,EAAEsF,KAAK,kBAAkBuS,GAAG,KAAKA,EAAE,GAAG,iBAAiBA,GAAG,IAAIA,GAAG5X,KAAK,GAAGA,EAAE6e,WAAW,MAAM7C,OAAOpE,GAAGnF,OAAOmF,EAAE,MAAM,OAAM,OAAOhY,EAAE,CAACA,EAAE,MAAMyd,OAAOxE,EAAE,CAAC,MAAMA,CAAC,CAAjX,CAAmXhZ,GAAGA,EAAEgY,WAAzsB,IAAkRtN,CAAic,CAAC,IAAIuU,GAAG,SAASjf,GAAG,OAAOyY,MAAM2E,QAAQpd,KAAKA,EAAE+e,OAAM,GAAI/e,CAAC,EAAE,SAASkf,GAAGlf,GAAG,IAAI,IAAIE,EAAED,UAAU5D,OAAO0D,EAAE,IAAI0Y,MAAMvY,EAAE,EAAEA,EAAE,EAAE,GAAGC,EAAE,EAAEA,EAAED,EAAEC,IAAIJ,EAAEI,EAAE,GAAGF,UAAUE,GAAG,OAAOoN,EAAEvN,IAAI6M,EAAE7M,GAAGif,GAAG9B,GAAGnS,EAAEuJ,EAAE,CAACvU,GAAGwd,OAAOzd,MAAM,IAAIA,EAAE1D,QAAQ,IAAI2D,EAAE3D,QAAQ,iBAAiB2D,EAAE,GAAGA,EAAEif,GAAG9B,GAAGnS,EAAEhL,EAAED,IAAI,CAAgC,IAAI+b,IAAnC,IAAqrBqD,GAAG,SAASnf,EAAEE,EAAEH,GAAG,YAAO,IAASA,IAAIA,EAAEuL,GAAGtL,EAAEof,QAAQrf,EAAEqf,OAAOpf,EAAEof,OAAOlf,GAAGH,EAAEqf,KAAK,EAAEC,GAAG,wCAAwCC,GAAG,WAAW,SAASC,GAAGvf,GAAG,OAAOA,EAAE2O,QAAQ0Q,GAAG,KAAK1Q,QAAQ2Q,GAAG,GAAG,CAAC,IAAIE,GAAG,SAASxf,GAAG,OAAOyT,EAAE+I,EAAGxc,KAAK,EAAE,EAAE,SAASyf,GAAGzf,GAAG,MAAM,iBAAiBA,IAAI,CAA6E,CAAC,IAAI0f,GAAG,SAAS1f,GAAG,MAAM,mBAAmBA,GAAG,iBAAiBA,GAAG,OAAOA,IAAIyY,MAAM2E,QAAQpd,EAAE,EAAE2f,GAAG,SAAS3f,GAAG,MAAM,cAAcA,GAAG,gBAAgBA,GAAG,cAAcA,CAAC,EAAE,SAAS4f,GAAG5f,EAAEE,EAAEH,GAAG,IAAII,EAAEH,EAAED,GAAG2f,GAAGxf,IAAIwf,GAAGvf,GAAG0f,GAAG1f,EAAED,GAAGF,EAAED,GAAGG,CAAC,CAAC,SAAS2f,GAAG7f,GAAG,IAAI,IAAIE,EAAED,UAAU5D,OAAO0D,EAAE,IAAI0Y,MAAMvY,EAAE,EAAEA,EAAE,EAAE,GAAGC,EAAE,EAAEA,EAAED,EAAEC,IAAIJ,EAAEI,EAAE,GAAGF,UAAUE,GAAG,IAAI,IAAI4X,EAAE,EAAEiB,EAAEjZ,EAAEgY,EAAEiB,EAAE3c,OAAO0b,IAAI,CAAC,IAAIvS,EAAEwT,EAAEjB,GAAG,GAAG2H,GAAGla,GAAG,IAAI,IAAIrH,KAAKqH,EAAEma,GAAGxhB,IAAIyhB,GAAG5f,EAAEwF,EAAErH,GAAGA,EAAE,CAAC,OAAO6B,CAAC,CAAC,IAAI8f,GAAG,kBAAkBC,GAAGD,GAAGjY,SAAS,SAASmY,GAAGhgB,GAAG,IAAIE,GAAE,gBAAE4f,IAAI/f,GAAE,aAAE,WAAY,OAAO,SAASC,EAAEE,GAAG,OAAIF,EAAkBuN,EAAEvN,GAAUA,EAAEE,GAA4GuY,MAAM2E,QAAQpd,IAAI,iBAAiBA,EAAEmM,EAAE,GAAGjM,EAAE+E,EAAE,CAAC,EAAE/E,EAAE,CAAC,EAAEF,GAAGA,EAA5LmM,EAAE,GAA2L,CAAxN,CAA0NnM,EAAEof,MAAMlf,EAAG,EAAE,CAACF,EAAEof,MAAMlf,IAAI,OAAOF,EAAE+J,SAAS,gBAAgB+V,GAAGnW,SAAS,CAACC,MAAM7J,GAAGC,EAAE+J,UAAU,IAAI,CAAC,IAAIkW,GAAG,CAAC,EAAE,SAASC,GAAGlgB,EAAEE,EAAEH,GAAG,IAAIgY,EAAEG,EAAElY,GAAGwF,GAAGia,GAAGzf,GAAG7B,EAAE+B,EAAEigB,MAAMlV,OAAE,IAAS9M,EAAEoW,EAAEpW,EAAEuM,EAAExK,EAAE4c,YAAYnR,OAAE,IAASjB,EAAE,SAAS1K,EAAEE,GAAG,IAAIH,EAAE,iBAAiBC,EAAE,KAAKuf,GAAGvf,GAAGigB,GAAGlgB,IAAIkgB,GAAGlgB,IAAI,GAAG,EAAE,IAAII,EAAEJ,EAAE,IAAIyf,GAAG,SAASzf,EAAEkgB,GAAGlgB,IAAI,OAAOG,EAAEA,EAAE,IAAIC,EAAEA,CAAC,CAAxH,CAA0HD,EAAEuC,YAAYvC,EAAEkgB,mBAAmB1V,EAAEkC,EAAE1M,EAAEuC,YAAYmI,OAAE,IAASgC,EAAE,SAAS5M,GAAG,OAAOyf,GAAGzf,GAAG,UAAUA,EAAE,UAAU5B,EAAE4B,GAAG,GAAG,CAAvD,CAAyDA,GAAG4M,EAAE5B,EAAE9K,EAAEuC,aAAavC,EAAE4c,YAAYyC,GAAGrf,EAAEuC,aAAa,IAAIvC,EAAE4c,YAAY5c,EAAE4c,aAAanR,EAAEkB,EAAEkL,GAAG/X,EAAEmgB,MAAM1H,MAAMhT,UAAU+X,OAAOxd,EAAEmgB,MAAMlV,GAAG7O,OAAOkG,SAAS2I,EAAE0H,EAAEzS,EAAEmgB,kBAAkBtI,GAAG/X,EAAEqgB,oBAAoB1N,EAAEzS,EAAEmgB,kBAAkB,SAAStgB,EAAEI,EAAE4X,GAAG,OAAO/X,EAAEqgB,kBAAkBtgB,EAAEI,EAAE4X,IAAI7X,EAAEmgB,kBAAkBtgB,EAAEI,EAAE4X,EAAE,EAAE/X,EAAEqgB,mBAAmB,IAAIpU,EAAEC,EAAE,IAAIyQ,GAAG5c,EAAEiL,EAAE+M,EAAE/X,EAAEsgB,oBAAe,GAAQ5S,EAAExB,EAAE2Q,UAAU,IAAI5R,EAAE5O,OAAOiX,EAAE,SAAStT,EAAEE,GAAG,OAAO,SAASF,EAAEE,EAAEH,EAAEI,GAAG,IAAI4X,EAAE/X,EAAEmgB,MAAM3a,EAAExF,EAAEsgB,eAAeniB,EAAE6B,EAAEugB,aAAatV,EAAEjL,EAAEwgB,mBAAmB9V,EAAE1K,EAAEqgB,kBAAkB1U,EAAE3L,EAAEmY,kBAAkBvL,EAAE5M,EAAE2b,OAAO/Q,EAAE,SAAS5K,EAAEE,EAAEH,QAAG,IAASC,IAAIA,EAAEsL,GAAG,IAAInL,EAAE8E,EAAE,CAAC,EAAE/E,EAAE,CAACkf,MAAMpf,IAAI+X,EAAE,CAAC,EAAE,OAAOhY,EAAEsM,QAAQ,SAAUrM,GAAG,IAAIE,EAAEH,EAAEiZ,EAAExT,EAAExF,EAAE,IAAIE,KAAKqN,EAAE/H,KAAKA,EAAEA,EAAErF,IAAIqF,EAAErF,EAAED,GAAG6X,EAAE7X,GAAG,cAAcA,GAAGH,EAAEgY,EAAE7X,GAAG8Y,EAAExT,EAAEtF,GAAGH,GAAGiZ,EAAEjZ,EAAE,IAAIiZ,EAAEjZ,GAAGiZ,GAAGxT,EAAEtF,EAAG,GAAG,CAACC,EAAE4X,EAAE,CAA9M,CAAgNoH,GAAGjf,GAAE,gBAAE4f,IAAI3hB,IAAImN,EAAEpL,EAAE6X,GAAGhL,EAAEnC,EAAE,GAAGI,EAAEJ,EAAE,GAAGiC,EAAE,SAAS7M,EAAEE,EAAEH,GAAK,IAAIgY,EAAEgG,KAAK/E,EAAEgF,KAA2E,OAApE9d,EAAEF,EAAEid,wBAAwB3R,EAAEyM,EAAEiB,GAAGhZ,EAAEid,wBAAwBld,EAAEgY,EAAEiB,EAA2D,CAAlK,CAAoKxT,EAAErF,EAAE4M,GAAmEwH,EAAExU,EAAE3B,EAAE4M,EAAEyV,KAAKvgB,EAAEugB,KAAKzV,EAAE0V,IAAIxgB,EAAEwgB,IAAI9T,EAAEsL,EAAEuH,GAAGrhB,GAAGuU,EAAE3H,IAAI9K,EAAE+E,EAAE,CAAC,EAAE/E,EAAE,CAAC,EAAE8K,GAAG9K,EAAE+L,EAAE,CAAC,EAAE,IAAI,IAAIC,KAAKyG,EAAE,MAAMzG,EAAE,IAAI,OAAOA,IAAI,gBAAgBA,EAAED,EAAEyU,GAAG/N,EAAEzG,IAAIxB,EAAEA,EAAEwB,EAAE,EAAE9N,IAAI8Z,GAAG,EAAEhM,MAAMD,EAAEC,GAAGyG,EAAEzG,KAAK,OAAOhM,EAAEygB,OAAO3V,EAAE2V,QAAQzgB,EAAEygB,QAAQ1U,EAAE0U,MAAM1b,EAAE,CAAC,EAAE/E,EAAEygB,MAAM,CAAC,EAAE3V,EAAE2V,QAAQ1U,EAAE2U,UAAUnI,MAAMhT,UAAU+X,OAAOvS,EAAEU,EAAEkB,IAAIlB,EAAEkB,EAAE,KAAK3M,EAAE0gB,UAAU5V,EAAE4V,WAAWxkB,OAAOkG,SAAS2Q,KAAK,KAAKhH,EAAEvC,IAAI6K,GAAE,mBAAEnW,EAAE6N,EAAE,CAA59B,CAA89BA,EAAEjM,EAAEE,EAAEwN,EAAE,EAAE,OAAO4F,EAAE7Q,YAAYmI,GAAGqB,EAAE,aAAaqH,IAAI6M,MAAMtT,EAAEZ,EAAEqU,eAAepU,EAAED,EAAExJ,YAAYmI,EAAEqB,EAAEoU,kBAAkB1N,EAAE1G,EAAEuU,mBAAmBzI,EAAEU,MAAMhT,UAAU+X,OAAOxd,EAAEwgB,mBAAmBxgB,EAAEmY,mBAAmB5D,EAAEtI,EAAEkM,kBAAkBnN,EAAEiB,EAAE0P,OAAO5D,EAAE/X,EAAE2b,OAAO3b,EAAEiM,EAAE4U,cAAc,SAAS7gB,GAAG,IAAIG,EAAED,EAAE4c,YAAY/E,EAAE,SAAS/X,EAAEE,GAAG,GAAG,MAAMF,EAAE,MAAM,CAAC,EAAE,IAAID,EAAEI,EAAE4X,EAAE,CAAC,EAAEiB,EAAEpZ,OAAO0F,KAAKtF,GAAG,IAAIG,EAAE,EAAEA,EAAE6Y,EAAE3c,OAAO8D,IAAIJ,EAAEiZ,EAAE7Y,GAAGD,EAAEM,QAAQT,IAAI,IAAIgY,EAAEhY,GAAGC,EAAED,IAAI,OAAOgY,CAAC,CAAnI,CAAqI7X,EAAE,CAAC,gBAAgB8Y,EAAE7Y,GAAGA,EAAE,KAAKsf,GAAGzf,GAAGA,EAAEuf,GAAGnhB,EAAE4B,KAAK,OAAOkgB,GAAGlgB,EAAEiF,EAAE,CAAC,EAAE8S,EAAE,CAACoI,MAAMtT,EAAEiQ,YAAY9D,IAAIjZ,EAAE,EAAEH,OAAOkhB,eAAe7U,EAAE,eAAe,CAACxO,IAAI,WAAW,OAAOyN,KAAK6V,mBAAmB,EAAErjB,IAAI,SAASwC,GAAGgL,KAAK6V,oBAAoBhJ,EAAE8H,GAAG,CAAC,EAAE7f,EAAEugB,aAAargB,GAAGA,CAAC,IAA+hBN,OAAOkhB,eAAe7U,EAAE,WAAW,CAACrC,MAAM,WAAW,MAAM,IAAIqC,EAAEkM,iBAAiB,IAAI3S,GAAG,IAAEyG,EAAEjM,EAAE,CAACmgB,OAAM,EAAGG,gBAAe,EAAG7d,aAAY,EAAG+d,oBAAmB,EAAGH,mBAAkB,EAAGlI,mBAAkB,EAAGwD,QAAO,EAAGkF,eAAc,IAAK5U,CAAC,CAAC,IAAI+U,GAAG,SAAShhB,GAAG,OAAO,SAASA,EAAEE,EAAEC,EAAE4X,GAAG,QAAG,IAASA,IAAIA,EAAEzM,KAAI,wBAAEnL,GAAG,OAAOgM,EAAE,EAAEgQ,OAAOhc,IAAI,IAAI6Y,EAAE,WAAW,OAAO9Y,EAAEC,EAAE4X,EAAEmH,GAAG5e,WAAM,EAAOL,WAAW,EAAE,OAAO+Y,EAAEiI,WAAW,SAASlhB,GAAG,OAAOC,EAAEE,EAAEC,EAAE8E,EAAE,CAAC,EAAE8S,EAAE,CAAC,EAAEhY,GAAG,EAAEiZ,EAAEmH,MAAM,SAASpgB,GAAG,OAAOC,EAAEE,EAAEC,EAAE8E,EAAE,CAAC,EAAE8S,EAAE,CAACoI,MAAM1H,MAAMhT,UAAU+X,OAAOzF,EAAEoI,MAAMpgB,GAAG3D,OAAOkG,WAAW,EAAE0W,CAAC,CAAhS,CAAkSkH,GAAGlgB,EAAE,EAAE,CAAC,IAAI,OAAO,UAAU,OAAO,UAAU,QAAQ,QAAQ,IAAI,OAAO,MAAM,MAAM,MAAM,aAAa,OAAO,KAAK,SAAS,SAAS,UAAU,OAAO,OAAO,MAAM,WAAW,OAAO,WAAW,KAAK,MAAM,UAAU,MAAM,SAAS,MAAM,KAAK,KAAK,KAAK,QAAQ,WAAW,aAAa,SAAS,SAAS,OAAO,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,OAAO,SAAS,SAAS,KAAK,OAAO,IAAI,SAAS,MAAM,QAAQ,MAAM,MAAM,SAAS,QAAQ,SAAS,KAAK,OAAO,OAAO,MAAM,OAAO,UAAU,OAAO,WAAW,OAAO,QAAQ,MAAM,WAAW,SAAS,KAAK,WAAW,SAAS,SAAS,IAAI,QAAQ,UAAU,MAAM,WAAW,IAAI,KAAK,KAAK,OAAO,IAAI,OAAO,SAAS,UAAU,SAAS,QAAQ,SAAS,OAAO,SAAS,QAAQ,MAAM,UAAU,MAAM,QAAQ,QAAQ,KAAK,WAAW,QAAQ,KAAK,QAAQ,OAAO,QAAQ,KAAK,QAAQ,IAAI,KAAK,MAAM,QAAQ,MAAM,SAAS,WAAW,OAAO,UAAU,gBAAgB,IAAI,QAAQ,OAAO,iBAAiB,SAAS,OAAO,OAAO,UAAU,UAAU,WAAW,iBAAiB,OAAO,OAAO,MAAM,OAAO,WAAW,SAASqM,QAAQ,SAAUrM,GAAGghB,GAAGhhB,GAAGghB,GAAGhhB,EAAG,GAAG,IAAIkhB,GAAG,WAAW,SAASlhB,EAAEA,EAAEE,GAAGgL,KAAK4P,MAAM9a,EAAEkL,KAAK4R,YAAY5c,EAAEgL,KAAK2R,SAASJ,EAAGzc,GAAGgT,EAAEwI,WAAWtQ,KAAK4R,YAAY,EAAE,CAAC,IAAI5c,EAAEF,EAAEyF,UAAU,OAAOvF,EAAEihB,aAAa,SAASnhB,EAAEE,EAAEH,EAAEI,GAAG,IAAI4X,EAAE5X,EAAEgd,GAAGjS,KAAK4P,MAAM5a,EAAEH,EAAEI,GAAG8S,KAAK,IAAI,IAAI+F,EAAE9N,KAAK4R,YAAY9c,EAAED,EAAEgZ,YAAYC,EAAEA,EAAEjB,EAAE,EAAE7X,EAAEkhB,aAAa,SAASphB,EAAEE,GAAGA,EAAE8b,WAAW9Q,KAAK4R,YAAY9c,EAAE,EAAEE,EAAEmhB,aAAa,SAASrhB,EAAEE,EAAEH,EAAEI,GAAGH,EAAE,GAAGgT,EAAEwI,WAAWtQ,KAAK4R,YAAY9c,GAAGkL,KAAKkW,aAAaphB,EAAED,GAAGmL,KAAKiW,aAAanhB,EAAEE,EAAEH,EAAEI,EAAE,EAAEH,CAAC,CAAzb,GAA6b,SAASshB,GAAGthB,GAAG,IAAI,IAAIE,EAAED,UAAU5D,OAAO0D,EAAE,IAAI0Y,MAAMvY,EAAE,EAAEA,EAAE,EAAE,GAAG6X,EAAE,EAAEA,EAAE7X,EAAE6X,IAAIhY,EAAEgY,EAAE,GAAG9X,UAAU8X,GAAG,IAAIvS,EAAE0Z,GAAG5e,WAAM,EAAO,CAACN,GAAGwd,OAAOzd,IAAI5B,EAAE,aAAaqhB,GAAGjU,KAAKgW,UAAU/b,IAAI0H,EAAE,IAAIgU,GAAG1b,EAAErH,GAAG,SAASwN,EAAE3L,GAAG,IAAIE,EAAE6d,KAAKhe,EAAEie,KAAKjG,GAAE,gBAAE+H,IAAInU,GAAE,YAAEzL,EAAEwb,mBAAmBvd,IAAI+H,QAAQ,OAAyoBhG,EAAEkb,QAAQxO,EAAEjB,EAAE3L,EAAEE,EAAE6X,EAAEhY,IAAG,qBAAE,WAAY,IAAIG,EAAEkb,OAAO,OAAOxO,EAAEjB,EAAE3L,EAAEE,EAAE6X,EAAEhY,GAAG,WAAW,OAAOmN,EAAEkU,aAAazV,EAAEzL,EAAE,CAAE,EAAE,CAACyL,EAAE3L,EAAEE,EAAE6X,EAAEhY,IAAI,IAAI,CAAC,SAAS6M,EAAE5M,EAAEE,EAAEH,EAAEI,EAAE4X,GAAG,GAAG7K,EAAE2P,SAAS3P,EAAEmU,aAAarhB,EAAEsT,EAAEvT,EAAEgY,OAAO,CAAC,IAAIiB,EAAE/T,EAAE,CAAC,EAAE/E,EAAE,CAACkf,MAAMD,GAAGjf,EAAEC,EAAEwL,EAAE4U,gBAAgBrT,EAAEmU,aAAarhB,EAAEgZ,EAAEjZ,EAAEgY,EAAE,CAAC,CAAC,OAAiD,OAAOpM,EAAE,CAAC,SAAS6V,GAAGxhB,GAA0O,IAAI,IAAIE,EAAED,UAAU5D,OAAO0D,EAAE,IAAI0Y,MAAMvY,EAAE,EAAEA,EAAE,EAAE,GAAGC,EAAE,EAAEA,EAAED,EAAEC,IAAIJ,EAAEI,EAAE,GAAGF,UAAUE,GAAG,IAAI4X,EAAEmH,GAAG5e,WAAM,EAAO,CAACN,GAAGwd,OAAOzd,IAAIkT,KAAK,IAAI+F,EAAEwG,GAAGzH,GAAG,OAAO,IAAIqG,GAAGpF,EAAEjB,EAAE,CAAC,IAAI0J,GAAG,WAAW,SAASzhB,IAAI,IAAIA,EAAEkL,KAAKA,KAAKwW,cAAc,WAAW,IAAIxhB,EAAEF,EAAE2hB,SAAS3J,WAAW,IAAI9X,EAAE,MAAM,GAAG,IAAIH,EAAEwT,IAAI,MAAM,UAAU,CAACxT,GAAG,UAAUA,EAAE,IAAI4S,EAAE,UAAU,gCAAgCvW,OAAOkG,SAAS2Q,KAAK,KAAK,IAAI/S,EAAE,UAAU,EAAEgL,KAAK0W,aAAa,WAAW,OAAO5hB,EAAE6hB,OAAO1V,EAAE,GAAGnM,EAAE0hB,eAAe,EAAExW,KAAK4W,gBAAgB,WAAW,IAAI5hB,EAAE,GAAGF,EAAE6hB,OAAO,OAAO1V,EAAE,GAAG,IAAIpM,IAAIG,EAAE,CAAC,GAAGyS,GAAG,GAAGzS,EAAE,uBAAuB,SAASA,EAAE6hB,wBAAwB,CAACC,OAAOhiB,EAAE2hB,SAAS3J,YAAY9X,GAAG6X,EAAExE,IAAI,OAAOwE,IAAIhY,EAAEkiB,MAAMlK,GAAG,CAAC,gBAAgB,QAAQ9S,EAAE,CAAC,EAAElF,EAAE,CAAC8G,IAAI,YAAY,EAAEqE,KAAKgX,KAAK,WAAWliB,EAAE6hB,QAAO,CAAE,EAAE3W,KAAKyW,SAAS,IAAI3O,EAAE,CAACgI,UAAS,IAAK9P,KAAK2W,QAAO,CAAE,CAAC,IAAI3hB,EAAEF,EAAEyF,UAAU,OAAOvF,EAAEiiB,cAAc,SAASniB,GAAG,OAAOkL,KAAK2W,OAAO1V,EAAE,GAAG,gBAAgB8R,GAAG,CAAC3D,MAAMpP,KAAKyW,UAAU3hB,EAAE,EAAEE,EAAEkiB,yBAAyB,SAASpiB,GAAG,OAAOmM,EAAE,EAAE,EAAEnM,CAAC,CAAzzB,GAA6zBqiB,GAAG,SAASriB,GAAG,IAAIE,EAAE,aAAa,SAAUA,EAAEH,GAAG,IAAIgY,GAAE,gBAAE+H,IAAIta,EAAExF,EAAEugB,aAAapiB,EAAEghB,GAAGjf,EAAE6X,EAAEvS,GAAG,OAAuM,gBAAgBxF,EAAEiF,EAAE,CAAC,EAAE/E,EAAE,CAACkf,MAAMjhB,EAAEuL,IAAI3J,IAAK,GAAG,OAAO,IAAEG,EAAEF,GAAGE,EAAEuC,YAAY,aAAarE,EAAE4B,GAAG,IAAIE,CAAC,EAAEoiB,GAAG,WAAW,OAAO,gBAAExC,GAAG,EAAEyC,GAAG,CAACC,WAAWxP,EAAEyP,YAAY5E,IAA05B,K,kCCS18zB,IAAIzf,EAAE,mBAAoBpB,QAAQA,OAAOC,IAAIgO,EAAE7M,EAAEpB,OAAOC,IAAI,iBAAiB,MAAM0O,EAAEvN,EAAEpB,OAAOC,IAAI,gBAAgB,MAAM+C,EAAE5B,EAAEpB,OAAOC,IAAI,kBAAkB,MAAMyP,EAAEtO,EAAEpB,OAAOC,IAAI,qBAAqB,MAAM4P,EAAEzO,EAAEpB,OAAOC,IAAI,kBAAkB,MAAM2P,EAAExO,EAAEpB,OAAOC,IAAI,kBAAkB,MAAMwN,EAAErM,EAAEpB,OAAOC,IAAI,iBAAiB,MAAMyN,EAAEtM,EAAEpB,OAAOC,IAAI,oBAAoB,MAAM8P,EAAE3O,EAAEpB,OAAOC,IAAI,yBAAyB,MAAM8C,EAAE3B,EAAEpB,OAAOC,IAAI,qBAAqB,MAAM2N,EAAExM,EAAEpB,OAAOC,IAAI,kBAAkB,MAAM4N,EAAEzM,EACpfpB,OAAOC,IAAI,uBAAuB,MAAMkD,EAAE/B,EAAEpB,OAAOC,IAAI,cAAc,MAAMiD,EAAE9B,EAAEpB,OAAOC,IAAI,cAAc,MAAM+N,EAAE5M,EAAEpB,OAAOC,IAAI,eAAe,MAAMqO,EAAElN,EAAEpB,OAAOC,IAAI,qBAAqB,MAAM+H,EAAE5G,EAAEpB,OAAOC,IAAI,mBAAmB,MAAMgI,EAAE7G,EAAEpB,OAAOC,IAAI,eAAe,MAClQ,SAAS+O,EAAE7N,GAAG,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAI+O,EAAE/O,EAAEiP,SAAS,OAAOF,GAAG,KAAKjC,EAAE,OAAO9M,EAAEA,EAAEqP,MAAQ,KAAK9C,EAAE,KAAKqC,EAAE,KAAK/M,EAAE,KAAK6M,EAAE,KAAKH,EAAE,KAAK9B,EAAE,OAAOzM,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAEiP,UAAY,KAAK3C,EAAE,KAAK1K,EAAE,KAAKG,EAAE,KAAKC,EAAE,KAAKyM,EAAE,OAAOzO,EAAE,QAAQ,OAAO+O,GAAG,KAAKvB,EAAE,OAAOuB,EAAE,CAAC,CAAC,SAASjB,EAAE9N,GAAG,OAAO6N,EAAE7N,KAAK4O,CAAC,CAACrR,EAAQgnB,UAAUhY,EAAEhP,EAAQinB,eAAe5V,EAAErR,EAAQknB,gBAAgBnY,EAAE/O,EAAQmnB,gBAAgBjW,EAAElR,EAAQonB,QAAQ7X,EAAEvP,EAAQqnB,WAAWhjB,EAAErE,EAAQsnB,SAAShjB,EAAEtE,EAAQunB,KAAK/iB,EAAExE,EAAQwnB,KAAK/iB,EAAEzE,EAAQynB,OAAOxX,EAChfjQ,EAAQ0nB,SAASvW,EAAEnR,EAAQ2nB,WAAW3W,EAAEhR,EAAQ4nB,SAAS1Y,EAAElP,EAAQ6nB,YAAY,SAASplB,GAAG,OAAO8N,EAAE9N,IAAI6N,EAAE7N,KAAKuM,CAAC,EAAEhP,EAAQ8nB,iBAAiBvX,EAAEvQ,EAAQoM,kBAAkB,SAAS3J,GAAG,OAAO6N,EAAE7N,KAAKsM,CAAC,EAAE/O,EAAQ+nB,kBAAkB,SAAStlB,GAAG,OAAO6N,EAAE7N,KAAKyO,CAAC,EAAElR,EAAQgoB,UAAU,SAASvlB,GAAG,MAAM,iBAAkBA,GAAG,OAAOA,GAAGA,EAAEiP,WAAWnC,CAAC,EAAEvP,EAAQioB,aAAa,SAASxlB,GAAG,OAAO6N,EAAE7N,KAAK4B,CAAC,EAAErE,EAAQkoB,WAAW,SAASzlB,GAAG,OAAO6N,EAAE7N,KAAK6B,CAAC,EAAEtE,EAAQmoB,OAAO,SAAS1lB,GAAG,OAAO6N,EAAE7N,KAAK+B,CAAC,EAC1dxE,EAAQooB,OAAO,SAAS3lB,GAAG,OAAO6N,EAAE7N,KAAKgC,CAAC,EAAEzE,EAAQqoB,SAAS,SAAS5lB,GAAG,OAAO6N,EAAE7N,KAAKwN,CAAC,EAAEjQ,EAAQsoB,WAAW,SAAS7lB,GAAG,OAAO6N,EAAE7N,KAAK0O,CAAC,EAAEnR,EAAQuoB,aAAa,SAAS9lB,GAAG,OAAO6N,EAAE7N,KAAKuO,CAAC,EAAEhR,EAAQwoB,WAAW,SAAS/lB,GAAG,OAAO6N,EAAE7N,KAAKyM,CAAC,EAC1OlP,EAAQyoB,mBAAmB,SAAShmB,GAAG,MAAM,iBAAkBA,GAAG,mBAAoBA,GAAGA,IAAI6B,GAAG7B,IAAI4O,GAAG5O,IAAI0O,GAAG1O,IAAIuO,GAAGvO,IAAIyM,GAAGzM,IAAI0M,GAAG,iBAAkB1M,GAAG,OAAOA,IAAIA,EAAEiP,WAAWlN,GAAG/B,EAAEiP,WAAWjN,GAAGhC,EAAEiP,WAAWR,GAAGzO,EAAEiP,WAAW3C,GAAGtM,EAAEiP,WAAWrN,GAAG5B,EAAEiP,WAAW9B,GAAGnN,EAAEiP,WAAWpI,GAAG7G,EAAEiP,WAAWnI,GAAG9G,EAAEiP,WAAWpC,EAAE,EAAEtP,EAAQ0oB,OAAOpY,C,mBCZnUuC,EAAO7S,QAAU,SAAsByJ,EAAMC,EAAMif,EAASC,GAC1D,IAAIC,EAAMF,EAAUA,EAAQhkB,KAAKikB,EAAgBnf,EAAMC,QAAQ,EAE/D,QAAY,IAARmf,EACF,QAASA,EAGX,GAAIpf,IAASC,EACX,OAAO,EAGT,GAAoB,iBAATD,IAAsBA,GAAwB,iBAATC,IAAsBA,EACpE,OAAO,EAGT,IAAIC,EAAQzF,OAAO0F,KAAKH,GACpBI,EAAQ3F,OAAO0F,KAAKF,GAExB,GAAIC,EAAMhJ,SAAWkJ,EAAMlJ,OACzB,OAAO,EAMT,IAHA,IAAImoB,EAAkB5kB,OAAO6F,UAAUrF,eAAeN,KAAKsF,GAGlDqf,EAAM,EAAGA,EAAMpf,EAAMhJ,OAAQooB,IAAO,CAC3C,IAAI5d,EAAMxB,EAAMof,GAEhB,IAAKD,EAAgB3d,GACnB,OAAO,EAGT,IAAI6d,EAASvf,EAAK0B,GACd8d,EAASvf,EAAKyB,GAIlB,IAAY,KAFZ0d,EAAMF,EAAUA,EAAQhkB,KAAKikB,EAAgBI,EAAQC,EAAQ9d,QAAO,SAEtC,IAAR0d,GAAkBG,IAAWC,EACjD,OAAO,CAEX,CAEA,OAAO,CACT,C,8EC3CA,IAAI9T,EAAyB,EAAQ,MACrCnV,EAAQoQ,YAAa,EACrBpQ,EAAQkpB,cAAgBlpB,EAAQmpB,mBAAgB,EAChD,IAAIC,EAA0BjU,EAAuB,EAAQ,OACzDkU,EAAkBlU,EAAuB,EAAQ,OACjDR,EAIJ,SAAiC2U,EAAKC,GAAe,IAAKA,GAAeD,GAAOA,EAAIlZ,WAAc,OAAOkZ,EAAO,GAAY,OAARA,GAA+B,iBAARA,GAAmC,mBAARA,EAAsB,MAAO,CAAEjZ,QAASiZ,GAAS,IAAItN,EAAQwN,EAAyBD,GAAc,GAAIvN,GAASA,EAAM6B,IAAIyL,GAAQ,OAAOtN,EAAMja,IAAIunB,GAAQ,IAAIG,EAAS,CAAC,EAAOC,EAAwBxlB,OAAOkhB,gBAAkBlhB,OAAOylB,yBAA0B,IAAK,IAAIxe,KAAOme,EAAO,GAAY,YAARne,GAAqBjH,OAAO6F,UAAUrF,eAAeC,KAAK2kB,EAAKne,GAAM,CAAE,IAAIye,EAAOF,EAAwBxlB,OAAOylB,yBAAyBL,EAAKne,GAAO,KAAUye,IAASA,EAAK7nB,KAAO6nB,EAAK5nB,KAAQkC,OAAOkhB,eAAeqE,EAAQte,EAAKye,GAAgBH,EAAOte,GAAOme,EAAIne,EAAQ,CAAIse,EAAOpZ,QAAUiZ,EAAStN,GAASA,EAAMha,IAAIsnB,EAAKG,GAAW,OAAOA,CAAQ,CAJvxBI,CAAwB,EAAQ,OACxCC,EAAa3U,EAAuB,EAAQ,OAC5C4U,EAAkB,EAAQ,MAC9B,SAASP,EAAyBD,GAAe,GAAuB,mBAAZS,QAAwB,OAAO,KAAM,IAAIC,EAAoB,IAAID,QAAeE,EAAmB,IAAIF,QAAW,OAAQR,EAA2B,SAAkCD,GAAe,OAAOA,EAAcW,EAAmBD,CAAmB,GAAGV,EAAc,CAE9U,IAAIJ,EAA6BxU,EAAMwV,cAAc,IAAIJ,EAAgBK,gBACzEpqB,EAAQmpB,cAAgBA,EACxBA,EAAcpiB,YAAc,sBAC5B,IAAImiB,EAA6B,SAAUmB,GAEzC,SAASnB,IAEP,IADA,IAAIoB,EACKC,EAAOhmB,UAAU5D,OAAQT,EAAO,IAAI6c,MAAMwN,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EtqB,EAAKsqB,GAAQjmB,UAAUimB,GAiCzB,OA/BAF,EAAQD,EAAiB1lB,KAAKC,MAAMylB,EAAkB,CAAC7a,MAAMsS,OAAO5hB,KAAUsP,MACxEib,cAAgB,IAAIV,EAAgBK,eAC1CE,EAAMI,YAAa,EACnBJ,EAAMK,oBAAsB,EAC5BL,EAAMM,eAAiB,WACrBN,EAAMK,oBAAsBzhB,OAAO2hB,QAC9BP,EAAMI,aACTJ,EAAMI,YAAa,EACnBI,sBAAsBR,EAAMS,YAAY3mB,MAAK,EAAIglB,EAAwB/Y,SAASia,KAEtF,EACAA,EAAMU,aAAe,SAAUC,EAAUC,GACnCZ,EAAMa,mBAAmBD,EAAWZ,EAAMnjB,QAC5C+B,OAAOkiB,SAAS,EAAGH,EAEvB,EACAX,EAAMe,aAAe,SAAU7J,EAAM0J,GACnC,IAAII,EAAOniB,SAASoiB,eAAe/J,EAAKzQ,UAAU,IAC9Cua,GAAQhB,EAAMa,mBAAmBD,EAAWZ,EAAMnjB,QACpDmkB,EAAKE,gBAET,EACAlB,EAAMa,mBAAqB,SAAUM,EAAiBC,GACpD,IAAIP,EAAqBb,EAAMnjB,MAAMgkB,mBACrC,OAAKA,GAKEA,EAAmBxmB,MAAK,EAAIykB,EAAwB/Y,SAASia,GAAQmB,EAAiBC,EAC/F,EACOpB,CACT,EAtCA,EAAIjB,EAAgBhZ,SAAS6Y,EAAemB,GAuC5C,IAAIsB,EAASzC,EAAcnf,UA2D3B,OA1DA4hB,EAAOZ,YAAc,WACnB,IAAI5f,EAAMqE,KAAKrI,MAAMmM,SAASnI,KAAO,KACjCA,GACFqE,KAAKib,cAAcmB,KAAKpc,KAAKrI,MAAMmM,SAAUnI,EAAKqE,KAAKmb,qBAEzDnb,KAAKkb,YAAa,CACpB,EACAiB,EAAOE,kBAAoB,WAEzB,IAAIC,EADJ5iB,OAAO4K,iBAAiB,SAAUtE,KAAKob,gBAEvC,IAAImB,EAAuBvc,KAAKrI,MAAMmM,SACpCnI,EAAM4gB,EAAqB5gB,IAC3BqW,EAAOuK,EAAqBvK,KAC1BrW,IACF2gB,EAAiBtc,KAAKib,cAAclY,KAAK/C,KAAKrI,MAAMmM,SAAUnI,IAM5DqW,EACFhS,KAAK6b,aAAaW,UAAUxK,QAAOta,GAC1B4kB,GACTtc,KAAKwb,aAAac,OAAgB5kB,EAEtC,EACAykB,EAAOM,qBAAuB,WAC5B/iB,OAAOgjB,oBAAoB,SAAU1c,KAAKob,eAC5C,EACAe,EAAOQ,mBAAqB,SAA4BjB,GACtD,IAGIY,EAHAM,EAAwB5c,KAAKrI,MAAMmM,SACrCkO,EAAO4K,EAAsB5K,KAC7BrW,EAAMihB,EAAsBjhB,IAE1BA,IACF2gB,EAAiBtc,KAAKib,cAAclY,KAAK/C,KAAKrI,MAAMmM,SAAUnI,IAY5DqW,EACFhS,KAAK6b,aAAaW,UAAUxK,GAAO0J,GAEnC1b,KAAKwb,aAAac,EAAgBZ,EAEtC,EACAS,EAAOU,OAAS,WACd,OAAoB1X,EAAMvL,cAAc+f,EAAclb,SAAU,CAC9DC,MAAOsB,KAAKib,eACXjb,KAAKrI,MAAMkH,SAChB,EACO6a,CACT,CApGiC,CAoG/BvU,EAAM2X,WACRtsB,EAAQkpB,cAAgBA,EACxBA,EAAcqD,UAAY,CACxBpB,mBAAoBrB,EAAWzZ,QAAQmc,KACvCne,SAAUyb,EAAWzZ,QAAQkF,QAAQkX,WACrCnZ,SAAUwW,EAAWzZ,QAAQqc,OAAOD,W,kCCtHtCzsB,EAAQoQ,YAAa,EACrBpQ,EAAQ2sB,YACR,SAAqBC,GACnB,OAAOA,aAA2D,EAASA,EAAiBC,QAAQC,IAAWA,aAAuC,EAASA,EAAOC,UAAY,GACpL,C,oCCNA,SAASC,EAAgBxoB,EAAGF,GAC1B,OAAO0oB,EAAkB9oB,OAAO+oB,eAAiB/oB,OAAO+oB,eAAe7oB,OAAS,SAAUI,EAAGF,GAC3F,OAAOE,EAAE0oB,UAAY5oB,EAAGE,CAC1B,EAAGwoB,EAAgBxoB,EAAGF,EACxB,C,sJCFO,MAGM6oB,EAAkBzY,GAA4B,MAAhBA,EAAS,GAAaA,EAAW,IAAIA,IA8EnE0Y,EAA2BA,CAACC,EAAa/X,IAAkBgY,IACtE,GAAIpkB,OAAOmL,mBAAoB,OAAO,EACtC,GAnFqCiZ,IAA0B,IAAjBA,EAAMC,QAAgBD,EAAME,QAAUF,EAAMG,SAAWH,EAAMI,SAAWJ,EAAMK,SAmFxHC,CAAwBN,GAAQ,OAAO,EAC3C,GAhF2CA,IAASA,EAAMO,iBAgFtDC,CAA8BR,GAAQ,OAAO,EACjD,MAAMS,EAhFyBzC,KAC/B,KAAOA,EAAKzL,WAAYyL,EAAOA,EAAKzL,WAClC,GAAoC,MAAhCyL,EAAK0C,SAAS/K,cAChB,OAAOqI,EAGX,OAAO,MA0Ee2C,CAAkBX,EAAMrN,QAC9C,GAAqB,MAAjB8N,EAAuB,OAAO,EAClC,IA5CkC,KALKG,EAiDTH,GA5CzBzP,aAAa,cAKwB,IAnCG4P,KACb,IAAlCA,EAAO5P,aAAa,WAUH,MAAjB4P,EAAOjO,QAKP,CAAC,QAAS,IAAIkO,SAASD,EAAOjO,SAIZ,YAAlBiO,EAAOjO,UAA0BiO,EAAOE,cAAcC,YAAYC,QAElEJ,EAAOE,cAAcC,YAAYC,SAAWJ,EAAOE,cAAcC,cAAkC,SAAlBH,EAAOjO,UAAuBiO,EAAOE,cAAcC,YAAYE,KAEhJL,EAAOE,cAAcC,YAAYE,MAAQL,EAAOE,cAAcC,aAW9DG,CAAgCN,GAuCgB,OAAO,EAjDdA,MAqDvC,MAAMO,EAActlB,SAASC,cAAc,KAIhB,KAAvB2kB,EAAcW,OAChBD,EAAYC,KAAOX,EAAcW,MAE/B,sBAAuBxlB,QAAU6kB,EAAcW,gBAAgBC,oBACjEF,EAAYC,KAAOX,EAAcW,KAAKE,SASxC,MAAMC,EAAS1lB,SAASC,cAAc,KAEtC,GADAylB,EAAOH,KAAOxlB,OAAOoK,SAASob,MACmB,IA3DhBI,EAACD,EAAQJ,IAAgBI,EAAOtb,WAAakb,EAAYlb,UAC5Fsb,EAAOE,OAASN,EAAYM,KA0DtBD,CAAoBD,EAAQJ,GAAwB,OAAO,EAG/D,MAAMO,EAAiB,IAAIlR,OAAO,IAAImR,KAAmBC,EAAAA,EAAAA,YAAW,SACpE,GA7DmCC,EAACV,EAAaO,KAagB,IAA/DA,EAAe3W,KAAK8U,EAAgBsB,EAAY/Z,aAKS,IAAzD+Z,EAAY/Z,SAAS0a,OAjBQ,iCA4D3BD,CAAsBV,EAAaO,GAAiB,OAAO,EAC/D,GAzCkCK,EAACR,EAAQJ,IAAqC,KAArBA,EAAYjN,OAKhD,KAAzBiN,EAAY/Z,UACZ+Z,EAAY/Z,WAAama,EAAOna,UAmC1B2a,CAAqBR,EAAQJ,GAAc,OAAO,EACtD,GAAInZ,EAAcga,eAAgB,CAEhC,GADqB,IAAIxR,OAAOxI,EAAcga,gBAC7BjX,KAAKoW,EAAY/Z,UAChC,OAAO,CAEX,CACA4Y,EAAMiC,iBAIN,MAAMC,EAAsBrC,EAAgBsB,EAAY/Z,UAAUzB,QAAQ+b,EAAgB,KAE1F,OADA3B,EAAY,GAAGmC,IAAsBf,EAAYW,SAASX,EAAYjN,SAC/D,GChIF,MAAMiO,EAAgB,SAACjT,EAAGlH,QAAa,IAAbA,IAAAA,EAAgB,CAAC,GDkInC,SAAUoa,EAAMpa,EAAeqa,GAC5C,MAAMC,EAAexC,EAAyBuC,EAAIra,GAClDoa,EAAK5b,iBAAiB,QAAS8b,EAEjC,CCrIEC,CAAW3mB,OAAQoM,EAAeoZ,KAChCoB,EAAAA,EAAAA,UAASpB,IAEb,C,oCCJA1uB,EAAQoQ,YAAa,EACrBpQ,EAAQ+vB,qBAIR,SAA8BC,GAC5B,IAAI1c,GAAW,EAAI2c,EAAaC,eAC5BvsB,GAAQ,EAAIuR,EAAO9S,YAAY+tB,EAAehH,eAC9Cnb,GAAM,EAAIkH,EAAO1R,QAAQ,MAO7B,OANA,EAAI0R,EAAOkb,iBAAiB,WAC1B,GAAIpiB,EAAIxD,QAAS,CACf,IAAIygB,EAAWtnB,EAAM4O,KAAKe,EAAU0c,GACpChiB,EAAIxD,QAAQ4gB,SAAS,EAAGH,GAAY,EACtC,CACF,EAAG,CAAC3X,EAASnI,MACN,CACL6C,IAAKA,EACLqiB,SAAU,WACJriB,EAAIxD,SACN7G,EAAMioB,KAAKtY,EAAU0c,EAAYhiB,EAAIxD,QAAQ8lB,UAEjD,EAEJ,EArBA,IAAIH,EAAiB,EAAQ,MACzBjb,EAAS,EAAQ,MACjB+a,EAAe,EAAQ,K,oCCJ3B,IAAI9a,EAAyBvV,EAAQ,MAErCI,EAAQoQ,YAAa,EACrBpQ,EAAQ4W,sBAAwB5W,EAAQqV,qBAAkB,EAE1D,IAAIH,EAASC,EAAuBvV,EAAQ,OAExC2wB,EAAc3wB,EAAQ,KAEtB4wB,EAAerb,EAAuBvV,EAAQ,OAE9C6wB,EAAa7wB,EAAQ,MAkBzBI,EAAQqV,gBAhBc,SAAyB5I,EAAM6I,GACnD,IAAIob,EAEAnb,EAAU9I,EAAK8I,aAEG,IAAlBD,IACFA,EAAgB,CAAC,GAGnB,IAAIqb,EAAiBznB,OAA6D,QAArDwnB,EAAwBpb,EAAcsb,iBAAiD,IAA1BF,EAAmCA,EAAwBD,EAAWI,gBAAgBD,WAC5K1tB,GAAQ,EAAIstB,EAAangB,SAASsgB,GACtC,OAAoBzb,EAAO7E,QAAQjH,cAAcmnB,EAAYtiB,SAAU,CACrE/K,MAAOA,GACNqS,EACL,EA0BAvV,EAAQ4W,sBAtBoB,SAA+B4F,EAAGlH,GAC5D,IAAIwb,EAQJ,QANsB,IAAlBxb,IACFA,EAAgB,CAAC,GAGC1O,QAAoE,QAA3DkqB,EAAwBxb,EAAcyb,uBAAuD,IAA1BD,EAAmCA,EAAwBL,EAAWI,gBAAgBE,iBAEnK,CACjB,IAAIC,EAEAJ,EAAmE,QAAtDI,EAAyB1b,EAAcsb,iBAAkD,IAA3BI,EAAoCA,EAAyBP,EAAWI,gBAAgBD,iBAChK1nB,OAAO0nB,GACd,IAAIK,EAAmB9nB,SAASoiB,eAAekF,EAAWS,mBAEtDD,GACFA,EAAiBpR,WAAWV,YAAY8R,EAE5C,CACF,C,oCCnDA,IAAIE,EAAU,EAAQ,MAMlBC,EAAgB,CAClBC,mBAAmB,EACnBC,aAAa,EACbC,cAAc,EACd1M,cAAc,EACd9d,aAAa,EACbyqB,iBAAiB,EACjBC,0BAA0B,EAC1BC,0BAA0B,EAC1BC,QAAQ,EACRpF,WAAW,EACXza,MAAM,GAEJ8f,EAAgB,CAClBluB,MAAM,EACN/C,QAAQ,EACRoJ,WAAW,EACX8nB,QAAQ,EACRC,QAAQ,EACRvtB,WAAW,EACXwtB,OAAO,GASLC,EAAe,CACjB,UAAY,EACZrJ,SAAS,EACT9D,cAAc,EACd9d,aAAa,EACbwlB,WAAW,EACXza,MAAM,GAEJmgB,EAAe,CAAC,EAIpB,SAASC,EAAWC,GAElB,OAAIhB,EAAQ/I,OAAO+J,GACVH,EAIFC,EAAaE,EAAoB,WAAMf,CAChD,CAXAa,EAAad,EAAQ9J,YAhBK,CACxB,UAAY,EACZgF,QAAQ,EACRxH,cAAc,EACd9d,aAAa,EACbwlB,WAAW,GAYb0F,EAAad,EAAQ3J,MAAQwK,EAY7B,IAAI5M,EAAiBlhB,OAAOkhB,eACxBgN,EAAsBluB,OAAOkuB,oBAC7BC,EAAwBnuB,OAAOmuB,sBAC/B1I,EAA2BzlB,OAAOylB,yBAClC2I,EAAiBpuB,OAAOouB,eACxBC,EAAkBruB,OAAO6F,UAsC7B8I,EAAO7S,QArCP,SAASwyB,EAAqBC,EAAiBC,EAAiBC,GAC9D,GAA+B,iBAApBD,EAA8B,CAEvC,GAAIH,EAAiB,CACnB,IAAIK,EAAqBN,EAAeI,GAEpCE,GAAsBA,IAAuBL,GAC/CC,EAAqBC,EAAiBG,EAAoBD,EAE9D,CAEA,IAAI/oB,EAAOwoB,EAAoBM,GAE3BL,IACFzoB,EAAOA,EAAKkY,OAAOuQ,EAAsBK,KAM3C,IAHA,IAAIG,EAAgBX,EAAWO,GAC3BK,EAAgBZ,EAAWQ,GAEtB5oB,EAAI,EAAGA,EAAIF,EAAKjJ,SAAUmJ,EAAG,CACpC,IAAIqB,EAAMvB,EAAKE,GAEf,KAAK8nB,EAAczmB,IAAUwnB,GAAaA,EAAUxnB,IAAW2nB,GAAiBA,EAAc3nB,IAAW0nB,GAAiBA,EAAc1nB,IAAO,CAC7I,IAAI4nB,EAAapJ,EAAyB+I,EAAiBvnB,GAE3D,IAEEia,EAAeqN,EAAiBtnB,EAAK4nB,EACvC,CAAE,MAAOzuB,GAAI,CACf,CACF,CACF,CAEA,OAAOmuB,CACT,C,kCClGAzyB,EAAQoQ,YAAa,EACrBpQ,EAAQoqB,oBAAiB,EACzB,IACI4I,EAA6B,gCAC7B5I,EAA8B,WAChC,SAASA,IAAkB,CAC3B,IAAIuB,EAASvB,EAAergB,UAqC5B,OApCA4hB,EAAOpZ,KAAO,SAAce,EAAUnI,GACpC,IAAI8nB,EAAWzjB,KAAK0jB,YAAY5f,EAAUnI,GAC1C,IACE,IAAI+C,EAAQhF,OAAOiqB,eAAeC,QAAQH,GAC1C,OAAO/kB,EAAQ2B,KAAKC,MAAM5B,GAAS,CACrC,CAAE,MAAO5J,GAIP,OAAI4E,QAAUA,OAAO8pB,IAA+B9pB,OAAO8pB,GAA4BC,GAC9E/pB,OAAO8pB,GAA4BC,GAErC,CACT,CACF,EACAtH,EAAOC,KAAO,SAActY,EAAUnI,EAAK+C,GACzC,IAAI+kB,EAAWzjB,KAAK0jB,YAAY5f,EAAUnI,GACtCkoB,EAAcxjB,KAAKgW,UAAU3X,GACjC,IACEhF,OAAOiqB,eAAeG,QAAQL,EAAUI,EAC1C,CAAE,MAAO/uB,GACH4E,QAAUA,OAAO8pB,KAGnB9pB,OAAO8pB,GAA8B,CAAC,GAFtC9pB,OAAO8pB,GAA4BC,GAAYpjB,KAAKC,MAAMujB,EAQ9D,CACF,EACA1H,EAAOuH,YAAc,SAAqB5f,EAAUnI,GAClD,IAAIooB,EAtCe,YAsCwBjgB,EAASoB,SACpD,OAAOvJ,QAA6CooB,EAAeA,EAAe,IAAMpoB,CAC1F,EACOif,CACT,CAxCkC,GAyClCpqB,EAAQoqB,eAAiBA,C,oCC5CvBvX,EAAO7S,QAAU,EAAjB,K,oCCHF,SAASwzB,EAAkB/uB,EAAGhC,IAC3B,MAAQA,GAAKA,EAAIgC,EAAE9D,UAAY8B,EAAIgC,EAAE9D,QACtC,IAAK,IAAI2D,EAAI,EAAGD,EAAI0Y,MAAMta,GAAI6B,EAAI7B,EAAG6B,IAAKD,EAAEC,GAAKG,EAAEH,GACnD,OAAOD,CACT,CCAA,SAASovB,EAAmBhvB,GAC1B,OCJF,SAA4BA,GAC1B,GAAIsY,MAAM2E,QAAQjd,GAAI,OAAO,EAAiBA,EAChD,CDES,CAAkBA,IEL3B,SAA0BA,GACxB,GAAI,oBAAsBnD,QAAU,MAAQmD,EAAEnD,OAAOoyB,WAAa,MAAQjvB,EAAE,cAAe,OAAOsY,MAAM4W,KAAKlvB,EAC/G,CFGiC,CAAgBA,IGJjD,SAAqCA,EAAGhC,GACtC,GAAIgC,EAAG,CACL,GAAI,iBAAmBA,EAAG,OAAO,EAAiBA,EAAGhC,GACrD,IAAI+B,EAAI,CAAC,EAAE8X,SAAS3X,KAAKF,GAAGmvB,MAAM,GAAI,GACtC,MAAO,WAAapvB,GAAKC,EAAEovB,cAAgBrvB,EAAIC,EAAEovB,YAAYnwB,MAAO,QAAUc,GAAK,QAAUA,EAAIuY,MAAM4W,KAAKlvB,GAAK,cAAgBD,GAAK,2CAA2C6T,KAAK7T,GAAK,EAAiBC,EAAGhC,QAAK,CACtN,CACF,CHFuD,CAA2BgC,IILlF,WACE,MAAM,IAAI4O,UAAU,uIACtB,CJGwF,EACxF,C,mEKFA,IAAIygB,EAAUl0B,EAAQ,K,kCCFtBsE,OAAOkhB,eAAeplB,EAAS,aAA/B,CAA+CkO,OAAO,IA6CtDlO,EAAQ+zB,YAVY,iBAWpB/zB,EAAQg0B,iBAHkBC,GAvCJ,EAACA,EAAQC,KAC3B,MAAM,QAAEnH,EAAU,MAAOoH,GAAmBF,GAAU,CAAC,EACjDG,EAAYvkB,KAAKgW,UAAUsO,EAAgB,CAACplB,EAAGO,KAChC,mBAANA,IACPA,EAAImR,OAAOnR,IACLgU,WAAWvU,EAAI,OACjBO,EAAI,YAAcA,GAGnBA,IAEX,MAAO,CACH,uBACApL,OAAO0F,KAAKuqB,GAAgBxzB,OAAS,EAC/B,iCAAiCyzB,MACjC,mBACN,kBACArH,EAAQpsB,OAAS,EAAI,WAAWkP,KAAKgW,UAAUkH,MAAc,GAC7D,oCACAmH,GACF3c,KAAK,KAmB0B8c,CAAcJ,EAzC1B,k7C,oCCDvBphB,EAAO7S,QAAU,EAAjB,K,+0BCHF,SAASs0B,EAAgB9vB,GACvB,OAAO8vB,EAAkBpwB,OAAO+oB,eAAiB/oB,OAAOouB,eAAeluB,OAAS,SAAUI,GACxF,OAAOA,EAAE0oB,WAAahpB,OAAOouB,eAAe9tB,EAC9C,EAAG8vB,EAAgB9vB,EACrB,C,cCJA,SAAS+vB,IACP,IACE,IAAI/vB,GAAKoC,QAAQmD,UAAUyqB,QAAQ7vB,KAAK8vB,QAAQC,UAAU9tB,QAAS,GAAI,WAAa,GACtF,CAAE,MAAOpC,GAAI,CACb,OAAQ+vB,EAA4B,WAClC,QAAS/vB,CACX,IACF,CCHA,SAASmwB,EAAiBnwB,GACxB,IAAIC,EAAI,mBAAqB5C,IAAM,IAAIA,SAAQ,EAC/C,OAAO8yB,EAAmB,SAA0BnwB,GAClD,GAAI,OAASA,ICPjB,SAA2BA,GACzB,IACE,OAAQ,IAAMowB,SAAStY,SAAS3X,KAAKH,GAAGM,QAAQ,gBAClD,CAAE,MAAOT,GACP,MAAO,mBAAqBG,CAC9B,CACF,CDCuB,CAAiBA,GAAI,OAAOA,EAC/C,GAAI,mBAAqBA,EAAG,MAAM,IAAI6O,UAAU,sDAChD,QAAI,IAAW5O,EAAG,CAChB,GAAIA,EAAEoZ,IAAIrZ,GAAI,OAAOC,EAAE1C,IAAIyC,GAC3BC,EAAEzC,IAAIwC,EAAGqwB,EACX,CACA,SAASA,IACP,OEZN,SAAoBrwB,EAAGF,EAAGG,GACxB,GAAI,IAA4B,OAAOgwB,QAAQC,UAAU9vB,MAAM,KAAML,WACrE,IAAI8X,EAAI,CAAC,MACTA,EAAE7T,KAAK5D,MAAMyX,EAAG/X,GAChB,IAAI4K,EAAI,IAAK1K,EAAEJ,KAAKQ,MAAMJ,EAAG6X,IAC7B,OAAO5X,IAAK,EAAAwoB,EAAA,GAAe/d,EAAGzK,EAAEsF,WAAYmF,CAC9C,CFMa,CAAU1K,EAAGD,UAAW,EAAeiL,MAAMqkB,YACtD,CACA,OAAOgB,EAAQ9qB,UAAY7F,OAAO+X,OAAOzX,EAAEuF,UAAW,CACpD8pB,YAAa,CACX3lB,MAAO2mB,EACPC,YAAY,EACZC,UAAU,EACVC,cAAc,MAEd,EAAA/H,EAAA,GAAe4H,EAASrwB,EAC9B,EAAGmwB,EAAiBnwB,EACtB,C,iCGvBO,MAAMywB,EAAsBxoB,IAA4B,IAA3B,QAAEyoB,EAAO,SAAE7mB,GAAU5B,EACvD,MAAM0oB,EAAW,CACfxgB,EAAAA,cAAoB,cAAe,CACjCxE,GAAI,GAAG+kB,QAETvgB,EAAAA,cAAoB,YAAa,CAC/BxE,GAAI,GAAG+kB,SAkBX,OAdI7mB,IAGF8mB,EAAS3sB,KAAK6F,GACd8mB,EAAS3sB,KACPmM,EAAAA,cAAoB,cAAe,CACjCxE,GAAI,GAAG+kB,QAETvgB,EAAAA,cAAoB,YAAa,CAC/BxE,GAAI,GAAG+kB,UAKNC,GCZIC,EAAc3oB,IAKpB,IALqB,UAC1B4oB,EAAS,WACTC,EAAU,SACVjnB,KACGknB,GACJ9oB,EACC,MAAM+oB,GAAYpzB,EAAAA,EAAAA,YAAW4S,EAAAA,IACvBygB,GAAcrzB,EAAAA,EAAAA,YAAW6S,EAAAA,IACzBygB,EAAoBF,EAAUH,GAEpC,IAAKK,EAAmB,CACtB,GAAIJ,EACF,OAAO,KAEP,MAAM,IAAIhzB,MACR,UAAUozB,WAA2BL,oBAG3C,CAEA,MAAMH,EA7BWS,EAACN,EAAWE,IACxBrxB,OAAO0F,KAAK2rB,GAAY50B,OAKtB,GAAG00B,MADUO,EAAAA,EAAAA,GAAoBL,KAH/BF,EA2BOM,CAAWD,EAAmBH,GAG9C,IAAIM,EAAaJ,EAAYP,GAa7B,OAZKW,EAOCxnB,IACFwnB,EAAWC,aAAc,GAP3BL,EAAYP,GAAWW,EAAa,CAClC1uB,MAAOouB,EACPF,UAAWK,EACXI,cAAeznB,GAQZsG,EAAAA,cAACsgB,EAAmB,CAACC,QAASA,GAAU7mB,IC/CpC0nB,EAActpB,IAKpB,IALqB,UAC1B4oB,EAAS,WACTC,EAAU,SACVjnB,KACGknB,GACJ9oB,EACC,MAAM+oB,GAAYpzB,EAAAA,EAAAA,YAAW4S,EAAAA,IACvBghB,GAAmB5zB,EAAAA,EAAAA,YAAW0S,EAAAA,IAC9B4gB,EAAoBF,EAAUH,GAC9BzB,EAAQoC,EAAiBj0B,IAAI2zB,GAEnC,IAAK9B,EAAO,CACV,GAAI0B,EACF,OAAO,KAEP,MAAM,IAAIhzB,MACR,UAAUozB,WAA2BL,oBAG3C,CAEA,OACE1gB,EAAAA,cAACif,EAAMzB,UAASjuB,OAAAC,OAAA,CACd8xB,aAAcrC,EAAMqC,aACpBC,KAAMtC,EAAMsC,MACRX,GAEHlnB,ICvBA,SAAS8nB,EAAMhvB,GACW,CAE7B,MAAMivB,EAAgB,IACjBjvB,EACHkuB,UAAWluB,EAAMkvB,cAEZD,EAAcC,aACdD,EAAcE,qBAErB,MAAMC,GAAgBn0B,EAAAA,EAAAA,YAAW2S,EAAAA,IAG3ByhB,EAAaC,EAAmBtvB,GACtC,GAAIjD,OAAO0F,KAAK4sB,GAAY71B,OAC1B,MAAM,IAAI+1B,EAC4B,YAApCH,EAAcI,kBACdP,EAAcf,UACdmB,EACArvB,EAAMmvB,sBAIV,GAAwC,WAApCC,EAAcI,kBAChB,OAAOhiB,EAAAA,cAACygB,EAAgBgB,GACnB,GAAwC,YAApCG,EAAcI,kBAEvB,OAAOhiB,EAAAA,cAACohB,EAAgBK,GACnB,GAC+B,YAApCG,EAAcI,mBACsB,YAApCJ,EAAcI,kBAGd,OAAOhiB,EAAAA,cAACohB,EAAgBK,GACnB,GAAwC,WAApCG,EAAcI,kBAAgC,CAGvD,IAAIC,EAA2B,GAI/B,IACEA,EAA2B,wBAAwBL,EAAcM,UAAUnzB,UAAU6yB,EAAcM,UAAUC,gDAAgD3vB,EAAMkvB,UACrK,CAAE,MACA,CAGF,MAAM,IAAI/zB,MACR,mCAAmCs0B,8FAEvC,CACE,MAAM,IAAIt0B,MACR,kBAAkBi0B,EAAcI,uCAGtC,CAGF,CAAC,IAEKD,EAAe,SAAAK,GACnB,SAAAL,EAAYM,EAAW3B,EAAWmB,EAAYS,GAAqB,IAAD3M,EAChE,MAAM4M,EAAShzB,OAAOizB,QAAQX,GAC3Bl2B,IACCmM,IAAA,IAAEtB,EAAK+C,GAAMzB,EAAA,MACX,qBAAqByB,sBAA0B/C,YAElDoM,KAAK,MAEF7T,EAAO,kBACb,IAAIoK,EAAQ,GACRD,EAAU,GAEd,GAAImpB,EAAW,CAGb,MAIMI,EAHJziB,EAAAA,mDAAyD0iB,uBAAuBC,kBAGrDpgB,OAAOc,MAAM,MAAM4b,MAAM,GACtDwD,EAAW,GAAKA,EAAW,GAAGlgB,OAC9BpJ,EAAQ,KAAOspB,EAAW7f,KAAK,MAE/B1J,EAAU,UAAUwnB,kDAA0D6B,KAChF,KAAO,CAELrpB,EAAU,GAAGnK,aAAgB2xB,kDAA0D6B,MAEvFppB,EAAQ,GAAGD,OADQ,IAAIvL,OAAQwL,MAAMoJ,OAAOc,MAAM,MAAM4b,MAAM,GAC5Brc,KAAK,OACzC,CAYC,OAVD+S,EAAAyM,EAAApyB,KAAA,KAAMkJ,IAAQ,MACTnK,KAAOA,EACRoK,EACFwc,EAAKxc,MAAQA,EAEbxL,MAAMi1B,kBAAiBjN,EAAOoM,GAG5BO,IACF3M,EAAKkN,eAAiB,IAAKP,EAAoBQ,aAAc,UAC9DnN,CACH,CAAC,OAAAoN,EAAAA,EAAAA,GAAAhB,EAAAK,GAAAL,CAAA,CA3CkB,CA2ClB/B,EA3C2BryB,QA8C9B,MAAMm0B,EAAqB,SACzBtvB,EACA+vB,EACAS,EACAC,QAFM,IAANV,IAAAA,EAAS,CAAC,QACC,IAAXS,IAAAA,EAAc,SACV,IAAJC,IAAAA,EAAO,MAGP,IAAK,MAAOl0B,EAAMwK,KAAUhK,OAAOizB,QAAQhwB,GAAQ,CACjD,GACE+G,UAEE0pB,GAAiB,aAATl0B,EAEV,SAGF,MAAMm0B,EAAWD,EAAO,GAAGA,KAAQl0B,IAASA,EAEvB,mBAAVwK,EACTgpB,EAAOW,UAAmB3pB,EACA,iBAAVA,GAAsBypB,EAAY7yB,QAAQoJ,IAAU,IACpEypB,EAAYnvB,KAAK0F,GACjBuoB,EAAmBvoB,EAAOgpB,EAAQS,EAAaE,GAEnD,CAEA,OAAOX,CACT,E,cC1IA,MAAMY,EAAmBrjB,EAAAA,GAAOsjB,QAEhC,SAASC,IACP,MAAM,IAAI11B,MACR,6UAKJ,C,mBCNAuQ,EAAO7S,QALP,SAAgCsE,GAC9B,OAAOA,GAAKA,EAAE8L,WAAa9L,EAAI,CAC7B,QAAWA,EAEf,EACyCuO,EAAO7S,QAAQoQ,YAAa,EAAMyC,EAAO7S,QAAiB,QAAI6S,EAAO7S,O,kQCJN,SAASqc,IAAI,OAAOA,EAAEnY,OAAOC,OAAOD,OAAOC,OAAOC,OAAO,SAASI,GAAG,IAAI,IAAIF,EAAE,EAAEA,EAAEC,UAAU5D,OAAO2D,IAAI,CAAC,IAAID,EAAEE,UAAUD,GAAG,IAAI,IAAIG,KAAKJ,EAAEH,OAAO6F,UAAUrF,eAAeC,KAAKN,EAAEI,KAAKD,EAAEC,GAAGJ,EAAEI,GAAG,CAAC,OAAOD,CAAC,EAAE6X,EAAEzX,MAAM4K,KAAKjL,UAAU,CAAC,MAAM9B,EAAE,IAAIZ,IAAImN,EAAE,CAACjN,IAAIyC,GAAG/B,EAAEV,IAAIyC,IAAI,GAAG,GAAAxC,CAAIwC,EAAEF,GAAG,MAAMD,EAAE5B,EAAEV,IAAIyC,IAAI,GAAGH,EAAEmE,KAAKlE,GAAG7B,EAAET,IAAIwC,EAAEH,EAAE,EAAE,OAAOG,GAAG/B,EAAEw1B,OAAOzzB,EAAE,GAAG8Y,EAAE,oBAAoB4a,MAAMA,KAAKC,qBAAqBD,KAAKC,oBAAoB/zB,KAAK8E,SAAS,SAAS1E,GAAG,MAAMF,EAAE8zB,KAAKC,MAAM,OAAOC,WAAW,WAAW9zB,EAAE,CAAC+zB,YAAW,EAAGC,cAAc,WAAW,OAAO7X,KAAK8X,IAAI,EAAE,IAAIL,KAAKC,MAAM/zB,GAAG,GAAG,EAAE,EAAE,EAAE,IAAIiL,EAAY/K,KAAiF+K,IAAIA,EAAE,CAAC,IAAnFmpB,YAAY,eAAel0B,EAAEm0B,KAAK,OAAOn0B,EAAEo0B,cAAc,kBAA8B,MAAM9uB,EAAE,IAAIsW,IAAI,CAAC,MAAM,WAAW,0BAA0B,WAAW,SAAS,YAAY5O,EAAE,IAAI4O,IAAInQ,EAAE,IAAIpO,IAAI,SAASmP,EAAE1M,GAAgB,OAAO,gBAAgB,WAAE,KAAK,IAAiB,gBAAgB4K,EAAE5K,GAAG,CAAC,SAAS4K,EAAE7K,GAAG,MAAMw0B,IAAIp2B,EAAEq2B,SAAShvB,EAAEyF,EAAEmpB,aAAar0B,GAAG,CAAC,GAAGqQ,SAASlD,IAAG,mBAAI,IAAG,eAAE,KAAK,IAAIhN,EAAE,OAAOsF,GAAG,KAAKyF,EAAEmpB,YAAYl0B,EAAE+E,EAAElF,GAAG,MAAM,KAAKkL,EAAEopB,KAAKrb,EAAE,KAAK9Y,EAAE+E,EAAElF,KAAK,MAAM,KAAKkL,EAAEqpB,cAAc,CAAC,MAAMp0B,EAAE9B,EAAE2B,GAAG2K,EAAEhN,IAAIwP,EAAEhN,EAAE,EAAE,MAAM,KAAK,MAAMsoB,OAAOxoB,EAAEy0B,aAAa10B,EAAE20B,cAAcv0B,GAAGD,GAAG,CAAC,EAAEH,IAAI,MAAMC,GAAGA,EAAE4nB,oBAAoB,OAAO7nB,IAAII,IAAI,MAAMH,GAAGA,EAAE4nB,oBAAoB,QAAQznB,IAAI,MAAMH,GAAGA,EAAE20B,WAAW,IAAInvB,IAAIyF,EAAEqpB,cAAc,CAAC,MAAMt0B,EAAE+M,EAAEhN,GAAGI,EAAE/B,EAAE2B,GAAG,MAAM,oBAAoB6E,QAAQ8F,EAAEhN,IAAIwP,EAAE/M,GAAgB,gBAAgB,SAASH,EAAE+X,EAAE,CAACvK,KAAK,iBAAiB,gBAAgBhI,EAAEovB,YAAY,aAAaz0B,EAAE,CAAC4hB,wBAAwB,CAACC,OAAOjV,EAAEhN,MAAMgY,EAAE,CAACvK,KAAK,iBAAiB+mB,IAAI3nB,EAAEzO,GAAG,gBAAgBqH,EAAEovB,YAAY,aAAaz0B,GAAG,CAAC,OAAO,IAAI,CAAC,SAAS8E,EAAE/E,GAAG,MAAM2L,GAAG7L,EAAEu0B,IAAIx0B,EAAEy0B,SAASr0B,EAAE8K,EAAEmpB,YAAYS,OAAO12B,EAAE22B,QAAQpqB,GAAGxK,GAAG,CAAC,EAAE8Y,EAAEhZ,GAAGD,EAAEyF,EAAE,CAAC,OAAO,SAASkH,EAAE,CAACqoB,KAAK52B,EAAE6K,MAAM0B,GAAG,GAAGsO,EAAE,CAAC,IAAI,MAAM9Y,KAAKsF,EAAE,GAAG,MAAMkH,GAAGA,EAAExM,GAAG,CAAC,IAAI0K,EAAE,MAAM5K,EAAE2L,EAAElO,IAAIub,IAAI,CAAC,GAAGgc,UAAUj1B,EAAE,KAAK,MAAMC,OAAE,EAAOA,EAAEE,KAAK,CAAC,EAAE,IAAI+E,EAAE2H,EAAE7M,EAAEmE,KAAK,MAAMwI,OAAE,EAAOA,EAAExM,IAAI,MAAMF,GAAG,OAAO4K,EAAE5K,EAAEE,KAAK0K,EAAEoe,MAAM,MAAMtc,GAAG,OAAOzH,EAAEyH,EAAExM,KAAK+E,EAAE5E,KAAKqM,EAAE,MAAM1M,GAAG,OAAO4M,EAAE5M,EAAEE,SAAI,EAAO0M,EAAEoc,OAAOrd,EAAEjO,IAAIsb,EAAEjB,EAAE,CAAC,EAAE/X,EAAE,CAAC,CAACE,GAAG,CAAC80B,UAAUj1B,KAAK,CAAC,GAAGmN,EAAEqM,IAAIP,GAAG,OAAO,IAAI,CAAC,MAAMhO,EAAE+B,EAAE7M,GAAGuK,EAAErM,EAAE8B,GAAGoL,EAAEzG,SAASC,cAAc,UAAU9E,IAAIsL,EAAEO,GAAG7L,GAAGsL,EAAE2pB,QAAQT,SAASr0B,EAAE,IAAI,MAAMD,EAAEF,KAAKJ,OAAOizB,QAAQpoB,GAAGa,EAAE4O,aAAaha,EAAEF,GAAGgL,IAAIM,EAAEoO,YAAY1O,GAAGjL,IAAIuL,EAAEipB,IAAIx0B,GAAG,MAAMmM,EAAE,CAAC,EAAE,GAAG8M,EAAE,CAAC,IAAI,MAAM9Y,KAAKsF,EAAE,CAAC,MAAMxF,EAAEA,GAAG6M,EAAE7M,EAAEgZ,EAAE9Y,GAAGoL,EAAEkE,iBAAiBtP,EAAEF,GAAGkM,EAAE,GAAGhM,aAAaF,CAAC,CAACkN,EAAE2O,IAAI7C,EAAE,CAAC,OAAOnU,SAASqwB,KAAK9a,YAAY9O,GAAG,CAACkd,OAAOld,EAAEmpB,aAAavoB,EAAEuoB,aAAaC,cAAcxoB,EAAEwoB,cAAc,CAAC,SAAS3nB,EAAE7M,GAAG,MAAM6hB,wBAAwB/hB,EAAE+J,SAAShK,EAAE,IAAIG,GAAG,CAAC,GAAG8hB,OAAO7hB,EAAE,IAAIH,GAAG,CAAC,EAAE,OAAOG,GAAGJ,CAAC,CAAC,SAAS3B,EAAE8B,GAAG,MAAMF,EAAE,CAAC,EAAE,IAAI,MAAMD,EAAEI,KAAKP,OAAOizB,QAAQ3yB,GAAGsF,EAAE+T,IAAIxZ,KAAKC,EAAED,GAAGI,GAAG,OAAOH,CAAC,CAAC,SAAS4M,EAAE1M,GAAG,GAAGA,EAAE,MAAM,4BAA4Bi1B,mBAAmBj1B,IAAI,CAAC,SAAS2M,EAAE3M,EAAEF,EAAED,GAAG,MAAMI,EAAEwL,EAAElO,IAAIuC,IAAI,CAAC,EAAE,IAAI,MAAMA,KAAK,MAAMG,GAAG,OAAO4X,EAAE5X,EAAEJ,SAAI,EAAOgY,EAAEid,YAAY,GAAG,CAAC,IAAIjd,EAAE/X,EAAEE,EAAE,CAACyL,EAAEjO,IAAIsC,EAAE,CAAC,CAACD,GAAG,CAACipB,MAAM9oB,IAAI,C,oCCCp5F,IAAIk1B,EAAW95B,EAAQ,MACrBixB,EAAkB6I,EAAS7I,gBAC3B8I,EAAaD,EAASC,WACtBC,EAAuBF,EAASE,qBAChCC,EAAoBH,EAASG,kBAC/B75B,EAAQ85B,cAAgB,SAAUC,EAAoBzkB,GA8BpD,IA7BA,IAAI7U,EAAUyD,OAAOC,OAAO,CAAC,EAAG0sB,EAAiBvb,GAC7C0kB,EAAgB7wB,SAASwW,iBAAiB,IAAMka,GAIhDI,EAAQ,WACV,IAAIC,EAAeF,EAAclwB,GAC7BqwB,EAAoBD,EAAaE,cAAc,IAAMR,GACrDS,EAAeH,EAAaE,cAAc,IAAMT,GAChDW,EAAc,WAChBH,EAAkBlV,MAAMsV,WAAa,oBACrCF,EAAapV,MAAMsV,WAAa,eAChCC,GACF,EACIA,EAAkB,SAASA,IAC7BL,EAAkBlV,MAAMlK,QAAU,EAClCsf,EAAapV,MAAMlK,QAAU,EAC7Bsf,EAAapV,MAAMwV,MAAQ,UAC3BJ,EAAapV,MAAMyV,UAAY,2BAA6Bj6B,EAAQk6B,gBACpEN,EAAanO,oBAAoB,OAAQoO,GACzCD,EAAanO,oBAAoB,QAASsO,EAC5C,EACAH,EAAapV,MAAMlK,QAAU,EAC7Bsf,EAAavmB,iBAAiB,OAAQwmB,GACtCD,EAAavmB,iBAAiB,QAAS0mB,GACnCH,EAAaO,UACfJ,GAEJ,EACS1wB,EAAI,EAAGA,EAAIkwB,EAAcr5B,OAAQmJ,IACxCmwB,GAEJ,C,mBCxCA,SAASjN,EAAgBxoB,EAAGF,GAC1B,OAAOuO,EAAO7S,QAAUgtB,EAAkB9oB,OAAO+oB,eAAiB/oB,OAAO+oB,eAAe7oB,OAAS,SAAUI,EAAGF,GAC5G,OAAOE,EAAE0oB,UAAY5oB,EAAGE,CAC1B,EAAGqO,EAAO7S,QAAQoQ,YAAa,EAAMyC,EAAO7S,QAAiB,QAAI6S,EAAO7S,QAASgtB,EAAgBxoB,EAAGF,EACtG,CACAuO,EAAO7S,QAAUgtB,EAAiBna,EAAO7S,QAAQoQ,YAAa,EAAMyC,EAAO7S,QAAiB,QAAI6S,EAAO7S,O,+JCAhG,SAAS66B,EAAoBpuB,GAA0B,IAAzB,SAAE4B,EAAQ,SAAElN,GAAUsL,EAKzD,OAJAmJ,EAAAA,EAAAA,WAAU,KACRzU,MAGKkN,CACT,CCXO,MAAMysB,EAAmB,CAC9B,OACA,OACA,QACA,QACA,OACA,WACA,SACA,OACA,QCqCK,SAASC,EAAkBC,GAC5Bte,CAIN,CAsBO,SAASue,EAAYC,EAAQC,GAClC,GAAID,aAAkBE,aAAeD,aAAkBC,YAAa,CAClE,MAAM7U,EAAQ4U,EAAOvb,aAAa,SAGlC,GAAI2G,IAAU2U,EAAOtb,aAAa,SAAU,CAC1C,MAAMyb,EAAWF,EAAOG,WAAU,GAGlC,OAFAD,EAAS7c,aAAa,QAAS,IAC/B6c,EAAS9U,MAAQA,EACVA,IAAU2U,EAAO3U,OAAS2U,EAAOD,YAAYI,EACtD,CACF,CAEA,OAAOH,EAAOD,YAAYE,EAC5B,CAsBO,SAASI,EACdC,EACAC,QAAqB,IAArBA,IAAAA,EAAwB,CACtBC,KAAM,CAAC,EACPlC,KAAM,CAAC,IAGT,MAAMmC,EAAU,IAAI95B,IACd+5B,EAAiB,GAGvB,IAAK,MAAMtQ,KAAQkQ,EAASpd,WAAY,CAAC,IAADyd,EAAAC,EACtC,MAAM9N,EAAW1C,EAAK0C,SAAS/K,cACzB9S,EAAoB,QAAlB0rB,EAAGvQ,EAAKyQ,kBAAU,IAAAF,GAAI,QAAJC,EAAfD,EAAiB1rB,UAAE,IAAA2rB,OAAJ,EAAfA,EAAqB5tB,MAEhC,GAAK8tB,EAAc1Q,GAAnB,CAEA,GAAI2Q,EAAgBjO,GAElB,GAAiB,SAAbA,GAAoC,SAAbA,EACzB,IAAK,MAAMkO,KAAa5Q,EAAKyQ,WAAY,CACvC,MAAMI,EAAsC,UAAnBD,EAAUx4B,KAYZ,IAAD04B,EAAtB,GATAX,EAAsBzN,GAAY,IAC7ByN,EAAsBzN,IAGtBmO,IACHV,EAAsBzN,GAAUkO,EAAUx4B,MAAQw4B,EAAUhuB,OAI1DiuB,EACFV,EAAsBzN,GAAU/I,MAAQ,GACP,QAA/BmX,EAAAX,EAAsBzN,UAAS,IAAAoO,GAA/BA,EAAiCnX,MAC7BwW,EAAsBzN,GAAU/I,MAChC,KACHiX,EAAUhuB,QAEjB,KACK,CACL,IAAImuB,EAAa/Q,EAAKgQ,WAAU,GAQhC,GAPAe,EAAW7d,aAAa,oBAAoB,GAGF,WAAtC6d,EAAWrO,SAAS/K,gBACtBoZ,EAAaC,EAAcD,IAGzBlsB,EACF,GAAKwrB,EAAQ9d,IAAI1N,GAGV,CAAC,IAADosB,EACL,MAAMC,EAAgCb,EAAQ55B,IAAIoO,GAGtC,QAFZosB,EAAAX,EACEY,GACA3c,kBAAU,IAAA0c,GAFZA,EAEcpd,YACZyc,EAAeY,IAEjBZ,EAAeY,GAAiCH,CAClD,MAVET,EAAepzB,KAAK6zB,GACpBV,EAAQ35B,IAAImO,EAAIyrB,EAAej7B,OAAS,QAW1Ci7B,EAAepzB,KAAK6zB,EAExB,MAEAtB,IAGEzP,EAAKlN,WAAWzd,QAClBi7B,EAAepzB,KAAI5D,MAAnBg3B,GAAcnI,EAAAA,EAAAA,GACT8H,EAA+BjQ,EAAMmQ,GACrCG,gBA3D2B,CA8DpC,CAEA,MAAO,CAAEA,iBAAgBH,wBAC3B,CAEA,SAASa,EAAchR,GACrB,MAAMwB,EAAS3jB,SAASC,cAAc,UACtC,IAAK,MAAMqzB,KAAQnR,EAAKyQ,WACtBjP,EAAOtO,aAAaie,EAAK/4B,KAAM+4B,EAAKvuB,OAItC,OAFA4e,EAAO4P,UAAYpR,EAAKoR,UAEjB5P,CACT,CAEO,SAASmP,EAAgBjO,GAC9B,OAAO8M,EAAiB3M,SAASH,EACnC,CAKO,SAASgO,EAAc1Q,GAC5B,OAAyB,IAAlBA,EAAKjN,QACd,CCjMA,MAAMse,EAAaxzB,SAASC,cAAc,OACpCwzB,EAA8B,CAClClB,KAAM,GACNlC,KAAM,IAGFqD,EAAiBA,KAAO,IAADC,EAC3B,MAAM,eAAElB,EAAc,sBAAEH,GACtBF,EAA+BoB,GAEjCC,EAA4BlB,KAAOx3B,OAAO0F,KAAK6xB,EAAsBC,MACrEkB,EAA4BpD,KAAOt1B,OAAO0F,KAAK6xB,EAAsBjC,MDkMhE,SAAoCiC,GACzC,IAAKA,EAAuB,OAE5B,MAAM,KAAEC,EAAI,KAAElC,GAASiC,EAEjBsB,EAAc5zB,SAASixB,cAAc,QACvC2C,GACF74B,OAAOizB,QAAQuE,GAAM/qB,QAAQqsB,IAAsC,IAApCC,EAAeC,GAAeF,EAC3DD,EAAYve,aAAaye,EAAeC,KAI5C,MAAMC,EAAch0B,SAASixB,cAAc,QACvC+C,GACFj5B,OAAOizB,QAAQqC,GAAM7oB,QAAQysB,IAAsC,IAApCH,EAAeC,GAAeE,EAC3DD,EAAY3e,aAAaye,EAAeC,IAG9C,CClNEG,CAA2B5B,GAM3B,MAAM6B,EAAuBn0B,SAASwW,iBAAiB,sBAEf,IAAD4d,EAAvC,GAAoC,IAAhCD,EAAqB38B,OAEvB,YADA48B,EAAAp0B,SAASgV,MAAKqf,OAAM54B,MAAA24B,GAAA9J,EAAAA,EAAAA,GAAImI,IAI1B,MAAM6B,EAAe,ID8ChB,SAAkBhxB,GAA0C,IAAzC,SAAEixB,EAAQ,SAAEC,EAAQ,QAAEC,EAAO,MAAEC,GAAOpxB,EAC9D,IAAK,MAAMqxB,KAAuBJ,EAAU,CAC1C,MAAMK,EAAkBJ,EAASK,UAAU15B,GACzC22B,EAAY32B,EAAGw5B,KAGQ,IAArBC,EACFH,EAAQE,GAGRH,EAASte,OAAO0e,EAAiB,EAErC,CAGA,IAAK,MAAME,KAAWN,EACpBE,EAAMI,EAEV,CC/DEC,CAAU,CACRR,SAAUJ,EACVK,SAAU/B,EACVgC,QAAStS,GAAQA,EAAKzL,WAAWV,YAAYmM,GAC7CuS,MAAOvS,GAAQmS,EAAaj1B,KAAK8iB,MAGnCwR,EAAA3zB,SAASgV,MAAKqf,OAAM54B,MAAAk4B,EAAIW,IAmCnB,SAASU,EAAqB1xB,GAIjC,IAJkC,cACpC2xB,EAAa,mBACbC,EAAkB,mBAClBC,GACD7xB,GACCmJ,EAAAA,EAAAA,WAAU,KACR,GAAIwoB,SAAAA,EAAeG,KAAM,EDvEtB,SAA6BpgB,GAClC,GAAoB,mBAATA,EACT,MAAM,IAAI7b,MACR,uDAAuD6b,MAE7D,CCmEMqgB,CAAoBJ,EAAcG,MAElC,MAAM,OAAElS,IAAWoS,EAAAA,EAAAA,KAEbC,EACJ/pB,EAAAA,cAACypB,EAAcG,KD3Fd,CACLjrB,SAAU,CACRoB,UAH0BiqB,EC4FgBL,GDzF1BhrB,SAASoB,UAE3BkqB,OAAQD,EAAMC,OACd1I,KAAMyI,EAAMzI,MAAQ,CAAC,EACrB2I,WAAYF,EAAME,WAClBC,YAAaH,EAAMG,cCuFXC,GAAkBhrB,EAAAA,EAAAA,GACtB,kBACA,CAAEwB,QAASmpB,GACXA,EACA1B,IAAiB,IAAhB,OAAEx8B,GAAQw8B,EACT,MAAO,CAAEznB,QAAS/U,KAEpBw+B,MAEF3S,EAIE1X,EAAAA,cAACkmB,EAAoB,CAAC15B,SAAU07B,GAC9BloB,EAAAA,cAACsqB,EAAAA,mBAAmBhxB,SAAQ,CAACC,MAAOmwB,GAClC1pB,EAAAA,cAACuqB,EAAAA,iBAAgB,KAAEH,KAGvBpC,EAEJ,CDnHG,IAAyBgC,ECqH5B,MAAO,MD4FJ,WACL,MAAMQ,EAAgBh2B,SAASwW,iBAAiB,sBAChD,IAAK,MAAM2L,KAAQ6T,EACjB7T,EAAKzL,WAAWV,YAAYmM,EAEhC,CChGM8T,GDsHC,SAAqCC,GAC1C,IAAKA,EAA0B,OAE/B,MAAM,KAAE3D,EAAI,KAAElC,GAAS6F,EAEvB,GAAI3D,EAAM,CACR,MAAMqB,EAAc5zB,SAASixB,cAAc,QAC3CsB,EAAK/qB,QAAQssB,IACPF,GACFA,EAAYuC,gBAAgBrC,IAGlC,CAEA,GAAIzD,EAAM,CACR,MAAM2D,EAAch0B,SAASixB,cAAc,QAC3CZ,EAAK7oB,QAAQssB,IACPE,GACFA,EAAYmC,gBAAgBrC,IAGlC,CACF,CC3IMsC,CAA4B3C,KAGlC,CCzHA,SAAS4C,EAAar4B,GACpB,MAAMm3B,EAAqB,IACtBn3B,EACHy3B,OAAQ,KACHa,EAAAA,EAAAA,IAAgBt4B,EAAMmM,SAASoB,aAC/BvN,EAAMqN,cAAcK,KAAKiqB,YAAYY,WAM5C,IAAIC,EAFkBtuB,MAIpBsuB,EADEx4B,EAAMqN,cAAcorB,iBACRz4B,EAAMqN,cAAcorB,kBAEpBx2B,EAAAA,EAAAA,gBANMiI,EAMsBlK,EAAMqN,cAAc2d,YAN/B9gB,EAAEhB,SAAYgB,EAM6B,IACrEitB,EACHnzB,IAAKhE,EAAMywB,MAAQzwB,EAAMqN,cAAcqrB,KAAKjI,OAMhDuG,EAAsB,CACpBC,cAHoBj3B,EAAMqN,cAAc2J,KAIxCkgB,mBAAoBl3B,EAAMqN,cAAc6pB,mBACxCC,uBAeF,OAZoBvqB,EAAAA,EAAAA,GAClB,kBACA,CACEwB,QAASoqB,EACTx4B,MAAOm3B,GAETqB,EACAlzB,IAAiB,IAAhB,OAAEjM,GAAQiM,EACT,MAAO,CAAE8I,QAAS/U,EAAQ2G,MAAOm3B,KAEnCU,KAGJ,CAEAQ,EAAajT,UAAY,CACvBjZ,SAAUwsB,IAAAA,OAAiBrT,WAC3BjY,cAAesrB,IAAAA,OAAiBrT,WAChCyJ,KAAM4J,IAAAA,OACNhB,YAAagB,IAAAA,OAAiBrT,YAGhC,O,uBC1DA,IAAIQ,EAAiB,EAAQ,MAI7Bpa,EAAO7S,QAHP,SAAwBwE,EAAG6X,GACzB7X,EAAEuF,UAAY7F,OAAO+X,OAAOI,EAAEtS,WAAYvF,EAAEuF,UAAU8pB,YAAcrvB,EAAGyoB,EAAezoB,EAAG6X,EAC3F,EACiCxJ,EAAO7S,QAAQoQ,YAAa,EAAMyC,EAAO7S,QAAiB,QAAI6S,EAAO7S,O,uBCJtG6S,EAAO7S,QAAU,EAAjB6S,K,kCCGA7S,EAAQ,OAA2B,EACnC,MAMM+/B,EAAW,CAAC,QAAS,QAAS,MAAO,OAAQ,OAAQ,OAAQ,QAenE//B,EAAQ,EAdyB,CAAC2+B,EAAOqB,EAAS,YAChD,GAAc,MAAVrB,EAAe,OAAOA,EAC1B,MAAMsB,EAAmBtB,EAAMuB,SAAS,KACxC,MAVuB,EAACH,EAAUpB,KAClC,IAAK,MAAMwB,KAAUJ,EACnB,GAAIpB,EAAMuB,SAASC,GAAS,OAAO,EAErC,OAAO,GAMHC,CAAiBL,EAAUpB,GACtBA,EAEM,WAAXqB,EACKC,EAAmBtB,EAAQ,GAAGA,KAExB,UAAXqB,GACKC,EAAmBtB,EAAM/K,MAAM,GAAI,GAErC+K,E,m/BCvBuF,SAAStiB,IAAI,OAAOA,EAAEnY,OAAOC,OAAOD,OAAOC,OAAOC,OAAO,SAASE,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAED,UAAU5D,OAAO6D,IAAI,CAAC,IAAIC,EAAEF,UAAUC,GAAG,IAAI,IAAIH,KAAKI,EAAEP,OAAO6F,UAAUrF,eAAeC,KAAKF,EAAEJ,KAAKC,EAAED,GAAGI,EAAEJ,GAAG,CAAC,OAAOC,CAAC,EAAE+X,EAAEzX,MAAM4K,KAAKjL,UAAU,CAAC,SAAS9B,EAAE6B,EAAEE,GAAG,GAAG,MAAMF,EAAE,MAAM,CAAC,EAAE,IAAIG,EAAEJ,EAAEgY,EAAE,CAAC,EAAE5Z,EAAEyB,OAAO0F,KAAKtF,GAAG,IAAID,EAAE,EAAEA,EAAE5B,EAAE9B,OAAO0D,IAAIG,EAAEM,QAAQL,EAAEhC,EAAE4B,KAAK,IAAIgY,EAAE5X,GAAGH,EAAEG,IAAI,OAAO4X,CAAC,CAAC,MAAMiB,EAAEhZ,IAAI,MAAM8qB,OAAO5qB,EAAEgd,KAAK/c,EAAEiqB,KAAKrqB,EAAEwqB,OAAOxS,EAAE9I,SAAS9Q,EAAEssB,KAAKzR,EAAE9J,SAAS1J,EAAEu2B,KAAK9wB,GAAGjL,EAAEgP,SAAS,IAAIoB,SAAS1F,GAAG1K,EAAEgP,SAAS,OAAOtE,GAAG3K,GAAGmN,IAAIxC,EAAE,IAAIsxB,IAAIj8B,GAAGqQ,UAAU,CAACA,SAAS6rB,UAAUvU,UAAUhd,IAAIogB,OAAO5qB,EAAEgd,KAAK/c,EAAEiqB,KAAKrqB,EAAEwqB,OAAOxS,EAAE9I,SAAS9Q,EAAEssB,KAAKzR,EAAE9J,SAAS1J,EAAEu2B,KAAK9wB,EAAE5L,MAAMW,EAAEk8B,QAAQ78B,MAAMwH,IAAI7G,EAAEk8B,QAAQ78B,OAAOW,EAAEk8B,QAAQ78B,MAAMwH,KAAK,YAAYrB,EAAE,CAACxF,EAAEE,KAAK,IAAIC,EAAE,GAAGJ,EAAEiZ,EAAEhZ,GAAG7B,GAAE,EAAGqH,EAAE,OAAO,MAAM,CAAC,YAAIwJ,GAAW,OAAOjP,CAAC,EAAE,iBAAIo8B,GAAgB,OAAOh+B,CAAC,EAAE,qBAAAi+B,GAAwBj+B,GAAE,EAAGqH,GAAG,EAAE,MAAA62B,CAAOn8B,GAAGC,EAAE+D,KAAKhE,GAAG,MAAM6X,EAAE,KAAKhY,EAAEiZ,EAAEhZ,GAAGE,EAAE,CAAC8O,SAASjP,EAAEu8B,OAAO,SAAS,OAAOt8B,EAAEwP,iBAAiB,WAAWuI,GAAG,KAAK/X,EAAE4nB,oBAAoB,WAAW7P,GAAG5X,EAAEA,EAAE/D,OAAO4D,GAAGA,IAAIE,GAAG,EAAE,QAAAsrB,CAAStrB,GAAGb,MAAM4L,EAAE0D,QAAQzB,GAAE,GAAI,CAAC,GAAG,GAAG,iBAAiBhN,EAAEF,EAAEk8B,QAAQK,GAAGr8B,OAAO,CAAC+K,EAAE8M,EAAE,CAAC,EAAE9M,EAAE,CAACpE,IAAIitB,KAAKC,MAAM,KAAK,IAAI51B,GAAG+O,EAAElN,EAAEk8B,QAAQM,aAAavxB,EAAE,KAAK/K,GAAGF,EAAEk8B,QAAQO,UAAUxxB,EAAE,KAAK/K,EAAE,CAAC,MAAMC,GAAGH,EAAEgP,SAAS9B,EAAE,UAAU,UAAUhN,EAAE,CAAC,CAACH,EAAEiZ,EAAEhZ,GAAG7B,GAAE,EAAG,MAAMuM,EAAE,IAAIhO,QAAQsD,GAAGwF,EAAExF,GAAG,OAAOG,EAAEkM,QAAQrM,GAAGA,EAAE,CAACgP,SAASjP,EAAEu8B,OAAO,UAAU5xB,CAAC,IAAIO,EAAE,CAACjL,EAAE,OAAO,MAAME,EAAEF,EAAEQ,QAAQ,KAAKL,EAAE,CAACiQ,SAASlQ,GAAG,EAAEF,EAAE08B,OAAO,EAAEx8B,GAAGF,EAAE8qB,OAAO5qB,GAAG,EAAEF,EAAE08B,OAAOx8B,GAAG,IAAI,IAAIH,EAAE,EAAE,MAAMgY,EAAE,CAAC5X,GAAGhC,EAAE,CAAC,MAAM,MAAM,CAAC,YAAI6Q,GAAW,OAAO+I,EAAEhY,EAAE,EAAE,gBAAAyP,CAAiBxP,EAAEE,GAAG,EAAE,mBAAA0nB,CAAoB5nB,EAAEE,GAAG,EAAEg8B,QAAQ,CAAC,WAAIrJ,GAAU,OAAO9a,CAAC,EAAE,SAAI4kB,GAAQ,OAAO58B,CAAC,EAAE,SAAIV,GAAQ,OAAOlB,EAAE4B,EAAE,EAAE,SAAA08B,CAAUz8B,EAAEE,EAAEC,GAAG,MAAM6Y,EAAExT,EAAE,IAAIrF,EAAEuT,MAAM,KAAK3T,IAAIgY,EAAE7T,KAAK,CAACkM,SAAS4I,EAAE8R,OAAOtlB,EAAEnJ,OAAO,IAAImJ,IAAIA,IAAIrH,EAAE+F,KAAKlE,EAAE,EAAE,YAAAw8B,CAAax8B,EAAEE,EAAEC,GAAG,MAAM6Y,EAAExT,EAAE,IAAIrF,EAAEuT,MAAM,KAAKqE,EAAEhY,GAAG,CAACqQ,SAAS4I,EAAE8R,OAAOtlB,GAAGrH,EAAE4B,GAAGC,CAAC,EAAE,EAAAu8B,CAAGv8B,GAAG,MAAME,EAAEH,EAAEC,EAAEE,EAAE,GAAGA,EAAE/B,EAAE9B,OAAO,IAAI0D,EAAEG,EAAE,KAAKgN,IAAI,oBAAoBtI,SAASA,OAAOC,WAAWD,OAAOC,SAASC,eAAe4F,EAAElF,EAAE0H,EAAEtI,OAAOqG,MAAMugB,SAAS5gB,GAAGF,EAAE,SAASkC,EAAE5M,EAAEG,GAAG,OAAO,EAAE8M,oBAAoB,EAAEjN,EAAEG,EAAE,QAAQhD,WAAWy/B,mBAAmBz/B,WAAWy/B,iBAAiB,CAAC,GAAGz/B,WAAWy/B,iBAAiB58B,KAAK7C,WAAWy/B,iBAAiB58B,GAAG,EAAEiN,oBAAoBjN,EAAEG,IAAIhD,WAAWy/B,iBAAiB58B,IAApM,CAAyMA,EAAEG,GAAG,gBAAgBA,EAAE,CAAC,MAAM4M,EAAEH,EAAE,OAAO,CAACiwB,QAAQ,IAAIC,SAAS,MAAMnxB,EAAEiB,EAAE,YAAYF,EAAE,IAAI,aAAaK,GAAG9H,EAAE,IAAI,aAAa0G,GAAG,SAAS4B,EAAEvN,GAAGkL,KAAK6xB,IAAI/8B,CAAC,CAAC,MAAM6M,EAAE7M,GAAGA,aAAauN,EAAEvC,EAAEhL,IAAI,MAAM,IAAIuN,EAAEvN,IAAI,SAAS5B,EAAE8B,GAAG,MAAM88B,GAAG78B,EAAEwO,QAAQ5O,GAAE,EAAGV,MAAM0Y,EAAEklB,QAAQ9+B,EAAE0+B,QAAQ7jB,GAAG9Y,EAAE,YAAY,KAAKxD,QAAQC,UAAUF,KAAK,KAAK,MAAMuD,EAAEyK,EAAEtK,EAAE6Y,GAAGpO,EAAE0I,EAAEtT,EAAEE,GAAG,CAACyO,QAAQ5O,EAAEV,MAAM0Y,OAAO,IAAI,MAAMvS,EAAEiF,EAAEtK,EAAE6Y,GAAG,OAAO7a,GAAG6M,EAAEsI,EAAE9N,EAAEtF,IAAI,IAAI,CAAC,MAAMkU,EAAElU,IAAI,MAAMC,EAAE8E,KAAK43B,QAAQ98B,GAAG2M,IAAiB,OAAO,gBAAgBtO,EAAE2Z,EAAE,CAAC,EAAE5X,EAAE,CAAC08B,QAAQ98B,GAAGG,KAAKkU,EAAE6T,UAAU,CAACoH,KAAK,SAAS2N,GAAG,SAAS7U,YAAY,MAAMjc,EAAE,CAAClM,EAAEE,IAAIF,EAAE08B,OAAO,EAAEx8B,EAAE7D,UAAU6D,EAAEoL,EAAE,CAACtL,EAAEE,KAAK,IAAIC,EAAE4X,EAAE,MAAM5Z,GAAG+B,EAAEwT,MAAM,KAAKsF,EAAErG,EAAExU,GAAGqH,EAAE,KAAKwT,EAAE,GAAG/N,EAAEyN,EAAE1Y,GAAG,IAAI,IAAIA,EAAE,EAAE7B,EAAE8M,EAAE5O,OAAO2D,EAAE7B,EAAE6B,IAAI,CAAC,IAAI7B,GAAE,EAAG,MAAM+O,EAAEjC,EAAEjL,GAAGk9B,MAAM,GAAGhwB,EAAEnB,QAAQ,CAACgM,EAAE,CAACmlB,MAAMhwB,EAAEotB,OAAO,CAAC,EAAEyC,IAAI78B,GAAG,QAAQ,CAAC,MAAMwK,EAAEiI,EAAEzF,EAAEomB,MAAM1oB,EAAE,CAAC,EAAEgC,EAAEyP,KAAK8X,IAAInb,EAAE3c,OAAOqO,EAAErO,QAAQ,IAAI0Q,EAAE,EAAE,KAAKA,EAAEH,EAAEG,IAAI,CAAC,MAAM/M,EAAE0K,EAAEqC,GAAG7M,EAAE8Y,EAAEjM,GAAG,GAAG4N,EAAE3a,GAAG,CAAC4K,EAAE5K,EAAEsvB,MAAM,IAAI,KAAKtW,EAAEsW,MAAMviB,GAAG/Q,IAAImhC,oBAAoBlqB,KAAK,KAAK,KAAK,CAAC,QAAG,IAAS/S,EAAE,CAAC/B,GAAE,EAAG,KAAK,CAAC,MAAMgC,EAAE4S,EAAEqqB,KAAKp9B,GAAG,GAAGG,IAAIqF,EAAE,CAAC,MAAMxF,GAAG,IAAIwU,EAAEhU,QAAQL,EAAE,IAAI,EAAEH,EAAE,6BAA6BG,EAAE,gEAAgE+M,EAAEomB,UAAU,MAAMvb,EAAEolB,mBAAmBj9B,GAAG0K,EAAEzK,EAAE,IAAI4X,CAAC,MAAM,GAAG/X,IAAIE,EAAE,CAAC/B,GAAE,EAAG,KAAK,CAAC,CAAC,IAAIA,EAAE,CAACgC,EAAE,CAAC+8B,MAAMhwB,EAAEotB,OAAO1vB,EAAEmyB,IAAI,IAAI/jB,EAAEsW,MAAM,EAAEviB,GAAGkG,KAAK,MAAM,KAAK,CAAC,CAAC,OAAO9S,GAAG4X,GAAG,MAAM/S,EAAE,CAAChF,EAAEE,IAAIoL,EAAE,CAAC,CAACgoB,KAAKtzB,IAAIE,GAAGuK,EAAE,CAACzK,EAAEE,KAAK,GAAGgM,EAAElM,EAAE,KAAK,OAAOA,EAAE,MAAMG,EAAEJ,GAAGC,EAAE0T,MAAM,MAAMqE,GAAG7X,EAAEwT,MAAM,KAAKvV,EAAEwU,EAAExS,GAAG6Y,EAAErG,EAAEoF,GAAG,GAAG,KAAK5Z,EAAE,GAAG,OAAOkV,EAAE0E,EAAEhY,GAAG,IAAImM,EAAE/N,EAAE,GAAG,KAAK,CAAC,MAAM6B,EAAEgZ,EAAEwE,OAAOrf,GAAG8U,KAAK,KAAK,OAAOI,GAAG,MAAM0E,EAAE,GAAG,KAAK/X,EAAED,EAAE,CAAC,MAAMyF,EAAEwT,EAAEwE,OAAOrf,GAAG8M,EAAE,GAAG,IAAI,IAAIjL,EAAE,EAAEE,EAAEsF,EAAEnJ,OAAO2D,EAAEE,EAAEF,IAAI,CAAC,MAAME,EAAEsF,EAAExF,GAAG,OAAOE,EAAE+K,EAAEyvB,MAAM,MAAMx6B,GAAG+K,EAAE/G,KAAKhE,EAAE,CAAC,OAAOmT,EAAE,IAAIpI,EAAEgI,KAAK,KAAKlT,IAAIuT,EAAE,CAACtT,EAAEE,KAAK,MAAMC,EAAEJ,EAAE,IAAIC,EAAE0T,MAAM,KAAK,IAAIqE,EAAE,IAAIpF,EAAExS,GAAGnE,IAAIgE,IAAI,MAAMG,EAAE4S,EAAEqqB,KAAKp9B,GAAG,OAAOG,EAAED,EAAEC,EAAE,IAAIH,IAAIiT,KAAK,KAAK,MAAMjE,UAAU8b,OAAO3sB,EAAE,IAAI,CAAC,GAAG+B,EAAE8Y,EAAE7a,EAAEuV,MAAM,KAAK,IAAI,GAAG,OAAOqE,EAAE1E,EAAE0E,EAAEhY,EAAEiZ,GAAGjB,GAAGpD,EAAE,CAAC3U,EAAEE,KAAK,MAAMC,EAAEH,GAAGkY,EAAElY,GAAG,OAAO2S,EAAE3S,GAAG5D,OAAO+D,GAAGk9B,OAAOpqB,KAAK,OAAON,EAAEzS,GAAG9D,OAAO+D,GAAGk9B,OAAOpqB,KAAK,MAAMF,EAAE,SAASmF,EAAElY,GAAG+S,EAAEgB,KAAK/T,GAAG2a,EAAE3a,GAAGA,GAAG,MAAMA,EAAE,GAAGuU,EAAE,CAACvU,EAAEE,KAAI,CAAEg9B,MAAMl9B,EAAEs9B,MAAMt9B,EAAE+L,QAAQ,EAAE4G,EAAE3S,EAAEszB,MAAMh3B,OAAO,CAAC0D,EAAEE,KAAKF,GAAG,EAAE,CAACA,GAAG,KAAKA,EAAT,CAAYE,GAAGF,GAAG,EAAEkY,EAAEhY,GAAGF,GAAG,EAAE2a,EAAEza,GAAGF,GAAG,EAAEA,GAAG,EAAEA,GAAG,GAAG28B,MAAMz8B,IAAIwY,EAAE1Y,GAAGA,EAAEhE,IAAIuY,GAAG8oB,KAAK,CAACr9B,EAAEE,IAAIF,EAAEs9B,MAAMp9B,EAAEo9B,MAAM,EAAEt9B,EAAEs9B,MAAMp9B,EAAEo9B,OAAO,EAAEt9B,EAAE28B,MAAMz8B,EAAEy8B,OAAOhqB,EAAE3S,GAAGA,EAAE2O,QAAQ,eAAe,IAAI+E,MAAM,KAAKL,EAAE,CAACrT,KAAKE,IAAIF,IAAIE,EAAEA,EAAE9D,OAAO4D,GAAGA,GAAGA,EAAE3D,OAAO,KAAK6D,EAAE7D,OAAO,EAAE,IAAI6D,EAAE+S,KAAK,OAAO,IAAIuB,EAAE,CAAC,MAAM,QAAQrI,EAAE,CAACnM,EAAEE,KAAK,MAAMC,EAAEP,OAAO0F,KAAKtF,GAAG,OAAOG,EAAE9D,SAASuD,OAAO0F,KAAKpF,GAAG7D,QAAQ8D,EAAEo9B,MAAMp9B,GAAGD,EAAEE,eAAeD,IAAIH,EAAEG,KAAKD,EAAEC,KAAKsS,EAAEzS,GAAGA,EAAE2O,QAAQ,eAAe,IAAIjB,EAAExN,GAAGC,IAAI,IAAIA,EAAE,OAAO,KAAK,GAAGA,EAAEqN,OAAO,YAAYrN,EAAE0C,MAAMkH,SAAS,OAAO,WAAW/N,IAAImE,EAAE0C,MAAMkH,SAAS2D,EAAExN,IAAI,GAAG,EAAEC,EAAE0C,MAAMywB,MAAMnzB,EAAE0C,MAAMkJ,SAAS5L,EAAEqN,OAAO4G,EAAE,iIAAiIjU,EAAEqN,UAAU,KAAKrN,EAAEqN,OAAO4G,GAAGjU,EAAE0C,MAAMwsB,MAAMlvB,EAAE0C,MAAMm6B,IAAI,mBAAmB78B,EAAE0C,MAAMwsB,aAAalvB,EAAE0C,MAAMm6B,qEAAqE,IAAI78B,EAAEqN,OAAO4G,IAAIO,EAAExU,EAAE0C,MAAMwsB,KAAKlvB,EAAE0C,MAAMm6B,KAAK,mBAAmB78B,EAAE0C,MAAMwsB,YAAYlvB,EAAE0C,MAAMm6B,kGAAkG78B,EAAE0C,MAAMkJ,QAAQ,MAAM,CAACnC,MAAMzJ,EAAE4L,SAAQ,GAAI,MAAMgM,EAAE5X,EAAEqN,OAAO4G,EAAEjU,EAAE0C,MAAMwsB,KAAKlvB,EAAE0C,MAAMywB,KAAKn1B,EAAE,MAAM4Z,EAAE7X,EAAE,GAAGuS,EAAEvS,MAAMuS,EAAEsF,KAAK,MAAM,CAACnO,MAAMzJ,EAAE4L,QAAQ5L,EAAE0C,MAAMkJ,QAAQunB,KAAKnzB,EAAE0C,MAAMkH,SAAS,GAAG0I,EAAEtU,OAAOA,IAAImb,EAAE,CAAC,YAAYzO,EAAE,CAAC,KAAK,QAAQ,UAAU,YAAYmI,EAAE,CAAC,OAAO,IAAI1M,WAAWwG,GAAG,qBAAE,IAASA,IAAIA,EAAE9M,GAAGA,GAAG,MAAM+N,EAAE,OAAO9B,EAAEa,EAAE,CAAC5M,EAAEC,KAAK,IAAIq9B,SAASz9B,GAAGG,EAAE8Y,EAAE7a,EAAE+B,EAAEoZ,GAAG,MAAMujB,QAAQr3B,GAAGkH,KAAKsC,SAAS/D,GAAGhG,KAAK+3B,GAAG9vB,EAAE7N,MAAMqL,EAAEiE,QAAQ/B,EAAE6wB,SAAS1wB,EAAEgB,GAAGiL,EAAErN,EAAExN,EAAE6a,EAAEnO,GAAG0C,EAAE9C,EAAEyC,EAAE1H,GAAGqH,EAAEovB,UAAU1uB,GAAGvC,EAAEC,EAAEmF,WAAWvD,EAAEzO,EAAE8N,EAAEjB,EAAEmF,SAASvD,GAAgB,OAAO,gBAAgB,IAAIkL,EAAE,CAACrO,IAAIvJ,GAAGJ,EAAE,eAAeiL,EAAE,YAAO,GAAQW,EAAEoB,EAAE,CAAC2wB,UAAU1yB,EAAE2yB,mBAAmBv/B,EAAEgsB,KAAK7c,EAAEyB,SAAS/D,IAAI,CAACmf,KAAK7c,EAAEqwB,QAAQ59B,IAAI,GAAG2L,EAAEiyB,SAASjyB,EAAEiyB,QAAQ59B,GAAG,CAACA,IAAIA,EAAEupB,kBAAkB,IAAIvpB,EAAEipB,UAAUjpB,EAAEopB,SAASppB,EAAEkpB,QAAQlpB,EAAEmpB,SAASnpB,EAAEqpB,UAA3E,CAAsFrpB,GAAG,CAACA,EAAEirB,iBAAiB,IAAI/qB,EAAE0M,EAAE,GAAG,kBAAkBA,GAAG5B,EAAE,CAAC,MAAMhL,EAAE7B,EAAE4Z,EAAE,CAAC,EAAE9M,EAAE5L,OAAO2T,GAAG9S,EAAEiM,EAAE4L,EAAE,CAAC,EAAErN,GAAG1K,EAAE,CAAC4K,EAAE2C,EAAE,CAAClO,MAAMqL,EAAEiE,QAAQzO,GAAG,QAAQ+L,EAAExJ,YAAY,OAAOwJ,EAAEgc,UAAU,CAAC+U,GAAG,SAAS7U,YAAY,MAAM7b,UAAU,YAAY,WAAAijB,IAAevvB,GAAG69B,SAAS79B,GAAGkL,KAAKzI,YAAY,uBAAuB,CAAC,iBAAAq7B,IAAqB99B,GAAGkL,KAAK6yB,SAAS,CAAC,GAAG7yB,KAAKrI,MAAMiyB,WAAW90B,EAAE,CAAC,MAAA+nB,GAAS,OAAO7c,KAAKrI,MAAMkH,QAAQ,EAAE,MAAMyI,EAAE,gBAAgB,CAACsrB,kBAAkB,CAAC53B,aAAQ,GAAQ8C,WAAM,EAAOg1B,SAAS,KAAI,IAAK,SAAS7wB,GAAGpD,SAAS7J,IAAI,MAAMC,EAAEJ,GAAG,aAAagY,EAAE,WAAW5Z,EAAE,UAAU,KAAI,CAAE2/B,kBAAkB/lB,EAAE/O,MAAM7I,EAAE69B,SAASj+B,IAAI,CAACI,IAAiB,OAAO,gBAAgBqS,EAAE7I,SAAS,CAACC,MAAMzL,GAAgB,gBAAgBmO,EAAE,CAACtD,MAAM7I,EAAE20B,QAAQ,CAAC90B,EAAEE,KAAKH,EAAEC,GAAG,MAAM+X,EAAE7R,SAAS6R,EAAE7R,QAAQlG,EAAEE,KAAKA,GAAG,CAACiN,EAAE1K,YAAY,+BAA+B,MAAMuJ,EAAE,SAAS9L,GAAG,IAAIC,EAAEJ,EAAE,SAAS5B,EAAEgC,GAAgB,OAAO,gBAAgBgN,EAAE,KAAkB,gBAAgBjN,EAAE6X,EAAE,CAAClR,IAAI,oBAAoB1G,IAAI,CAAC,OAAOhC,EAAEsE,YAAY,qBAAqB,OAAOtC,EAAE,OAAOJ,EAAEG,EAAEuC,aAAa1C,EAAEG,EAAEd,MAAMe,EAAE,eAAehC,CAAC,CAAnP,CAAqP,EAAE+9B,QAAQh8B,EAAEwK,EAAEX,SAAS5J,MAAM,MAAM6O,SAASjP,GAAGG,GAAG6X,EAAE5Z,GAAG,WAAW,CAAC6Q,SAASjP,KAAKiZ,GAAG,WAAY,MAAM7Y,EAAE,aAAaqS,GAAGrS,EAAE29B,kBAAkB53B,aAAQ,EAAO,MAAMnG,EAAE,cAAc,KAAKI,EAAE69B,cAAS,IAAS,IAAI,MAAM,CAAC79B,EAAE6I,MAAMjJ,EAAE,CAA3I,GAA+I,GAAG,YAAY,KAAKG,EAAEk8B,yBAAyB,CAACrkB,EAAE/I,WAAW,YAAY,KAAK,IAAIhP,GAAE,EAAG,MAAMG,EAAED,EAAEm8B,OAAO,EAAErtB,SAAS9O,MAAMxD,QAAQC,UAAUF,KAAK,KAAK+pB,sBAAsB,KAAKxmB,GAAG7B,EAAE,CAAC6Q,SAAS9O,UAAU,MAAM,KAAKF,GAAE,EAAGG,MAAM,IAAI6Y,EAAE,CAAC,IAAInM,EAAEmM,GAAG,MAAMA,EAAEpO,EAAEoO,EAAE+jB,IAAI,CAACpuB,SAAQ,GAAI,CAAc,OAAO,gBAAgBhD,EAAEhC,SAAS,CAACC,MAAMmO,GAAG,mBAAmB5X,EAAEA,EAAE4X,GAAG5X,GAAG,QAAQoM,EAAE,EAAExC,SAAS7J,MAAM,MAAMC,EAAE8E,IAAI,OAAO9E,EAAED,EAAEC,GAAgB,gBAAgB6L,EAAE,KAAK9L,IAAI8M,EAAE,EAAEixB,IAAI/9B,EAAE6J,SAAS5J,MAAM,MAAMJ,EAAEG,EAAEM,QAAQ,KAAK,IAAIuX,EAAE5Z,EAAE,GAAG,OAAO4B,GAAG,GAAGgY,EAAE7X,EAAEuM,UAAU,EAAE1M,GAAG5B,EAAE+B,EAAEuM,UAAU1M,IAAIgY,EAAE7X,EAAe,gBAAgByL,EAAEhC,SAAS,CAACC,MAAM,CAACoF,SAAS,CAACoB,SAAS2H,EAAE+S,OAAO3sB,EAAE+e,KAAK,MAAM/c,IAAIsT,GAAE,EAAE6f,KAAKtzB,EAAE+J,SAAS7J,MAAM,MAAM28B,QAAQ18B,GAAGuM,KAAKsC,SAASjP,GAAGkF,IAAI9G,EAAEsM,EAAEzK,EAAEG,GAAG6Y,EAAEhU,EAAE7G,EAAE4B,EAAEqQ,UAAU,OAAOlQ,EAAE,CAAC8O,SAASjP,EAAE4Z,MAAMX,EAAEjB,EAAE,CAAC,EAAEiB,EAAEshB,OAAO,CAACyC,IAAI/jB,EAAE+jB,IAAIzJ,KAAKtzB,IAAI,QAAQuT,GAAE,CAAC,MAAM,WAAW,aAAaK,GAAE,CAAC,WAAW,QAAQ,YAAY,MAAM,YAAY2I,GAAGrc,IAAI,IAAI68B,IAAI58B,EAAE6O,SAASjP,EAAE8tB,UAAU7U,GAAG9Y,EAAEsF,EAAErH,EAAE+B,EAAEqT,IAAgB,OAAO,gBAAgBmJ,GAAG3E,EAAE,CAAC,EAAEvS,EAAE,CAACqoB,UAAU7U,EAAE+jB,IAAI58B,EAAE6O,SAASjP,MAAM,IAAIyc,GAAG,EAAE,MAAME,GAAGxc,IAAI,IAAI6J,SAAS5J,EAAEwgB,MAAM5gB,EAAE8tB,UAAU7U,EAAE,MAAM+jB,IAAIv3B,EAAEwJ,SAAS/D,GAAG/K,EAAEgN,EAAE/O,EAAE+B,EAAE0T,IAAG,MAAMlJ,EAAE,WAAWE,EAAE,UAAS,GAAIgC,EAAE,SAASpH,GAAGuH,EAAE,SAAS9B,EAAEmF,UAAUzE,EAAE,UAAS,GAAI,YAAY,KAAK6Q,KAAK9P,IAAI,KAAK8P,KAAK,IAAIA,KAAK5R,EAAE1E,SAAQ,KAAM,IAAI,YAAY,KAAK,IAAIlG,GAAE,EAAGE,GAAE,EAAGsF,IAAIoH,EAAE1G,UAAU0G,EAAE1G,QAAQV,EAAExF,GAAE,GAAIiL,EAAEmF,WAAWrD,EAAE7G,UAAU6G,EAAE7G,QAAQ+E,EAAEmF,SAASlQ,GAAE,GAAIyL,EAAEzF,QAAQlG,GAAGE,GAAG+K,EAAEmF,WAAW5K,EAAEmG,EAAEzF,SAASwG,KAAK,CAAClH,EAAEyF,IAAI,MAAMyB,EAAE,cAAc,KAAK,IAAI1M,EAAkC4K,EAAE1E,QAAQ0E,EAAE1E,SAAQ,GAAIlG,EAAE0K,EAAExE,QAAQyF,EAAEzF,SAASlG,GAAGA,EAAEk+B,UAAW,IAAiB,OAAO,gBAAgBllB,EAAEjB,EAAE,CAAC4I,MAAM5I,EAAE,CAAComB,QAAQ,QAAQp+B,GAAGq+B,SAAS,KAAK10B,IAAIgB,GAAGwC,GAAG/M,IAAIsc,GAAG,CAAC,WAAW,UAAU,WAAW,WAAW,UAAU,aAAaE,GAAGzc,IAAI,MAAMC,EAAEuM,IAAI3M,EAAEkF,IAAiB,OAAO,gBAAgBsY,GAAGxF,EAAE,CAAC,EAAE5X,EAAEJ,EAAEG,KAAK,SAASqd,GAAGrd,GAAG,MAAM8O,SAAS7O,EAAEk+B,QAAQt+B,GAAE,EAAGgK,SAASiP,EAAE8jB,SAASt3B,EAAEqoB,UAAU5iB,EAAE,OAAO/K,EAAEgN,EAAE/O,EAAE+B,EAAEuc,IAAI/R,EAAE,WAAW4zB,QAAQtlB,GAAG1c,OAAO,CAAC0D,EAAEE,KAAK,MAAMC,EAAEuN,EAAElI,EAAFkI,CAAKxN,GAAG,OAAOF,EAAEwd,OAAOrd,IAAI,KAAKiQ,SAASxF,GAAGzK,EAAEyM,EAAEtB,EAAEZ,EAAEE,GAAG,GAAGgC,EAAE,CAAC,MAAM0tB,OAAOp6B,EAAE68B,IAAI5+B,EAAE++B,MAAMlkB,EAAEkkB,OAAOtzB,MAAMc,IAAIkC,EAAEhC,EAAEoO,EAAEjN,QAAQvG,EAAEwT,EAAEsa,KAAK3kB,QAAQ,MAAM,IAAIhD,EAAEoM,EAAE,CAAC,EAAE7X,EAAE,CAAC68B,IAAI5+B,EAAE6Q,SAAS7O,IAAIuM,EAAE,eAAehC,EAAEiB,EAAEjB,EAAE7H,MAAMkH,SAAsB,gBAAgB4S,GAAG,CAAC3N,SAAS7O,EAAEk+B,QAAQt+B,GAAG2K,EAAE7H,MAAMkH,eAAU,GAAQ9E,EAAElF,EAAEwc,GAAGtR,EAAEsC,EAAExN,EAAEgY,EAAE,CAACglB,IAAI5+B,EAAE6Q,SAAS7O,EAAE0tB,UAAU5iB,GAAGiC,GAAGA,EAAe,OAAO,gBAAgBH,EAAEpD,SAAS,CAACC,MAAM,CAACizB,QAAQ1+B,EAAE2+B,SAASlyB,IAAiB,gBAAgB3F,EAAEsI,EAAEb,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM2Q,GAAG,KAAK,MAAMrd,EAAEiF,IAAI,IAAIjF,EAAE,MAAM,IAAIhC,MAAM,8JAA8J,OAAOgC,EAAEgP,UAAUsO,GAAG,KAAK,MAAM,IAAItf,MAAM,0EAA0E0f,GAAG,KAAK,MAAM1d,EAAE0M,IAAI,IAAI1M,EAAE,MAAM,IAAIhC,MAAM,4JAA4J,MAAMkC,EAAEmd,KAAKld,EAAE6E,EAAEhF,EAAE88B,SAAS58B,EAAEkQ,UAAU,OAAOjQ,EAAEA,EAAEm6B,OAAO,MAAM3c,GAAG3d,IAAI,IAAIA,EAAE,MAAM,IAAIhC,MAAM,4EAA4E,MAAMkC,EAAEwM,IAAI,IAAIxM,EAAE,MAAM,IAAIlC,MAAM,2JAA2J,MAAMmC,EAAEkd,KAAKtd,EAAE0K,EAAEzK,EAAEE,EAAE28B,SAAS1+B,EAAE6G,EAAEjF,EAAEI,EAAEiQ,UAAU,OAAOjS,EAAE4Z,EAAE,CAAC,EAAE5Z,EAAEm8B,OAAO,CAACyC,IAAI5+B,EAAE4+B,IAAIzJ,KAAKtzB,IAAI,K,oECIxrV,MAAMu+B,EAAc,IAAIhhC,IAClBihC,EAAwB,IAAIjhC,IAU3B,SAASkhC,EAAwBruB,GACtC,IAAIsuB,EAAWH,EAAY9gC,IAAI2S,GAI/B,OAHKsuB,IACHA,EAAWF,EAAsB/gC,IAAI2S,EAASuO,gBAEzC+f,CACT,C,GAdUryB,QAAQqyB,IACZA,EAASC,WACXH,EAAsB9gC,IAAIghC,EAASE,SAAUF,GAE7CH,EAAY7gC,IAAIghC,EAASE,SAAUF,I,0ICThC,MAAMG,EAAsB,CACjChzB,GAAI,mBACJ8U,MAAO,CACLgG,SAAU,WACVsD,IAAK,EACL6U,MAAO,EACPC,OAAQ,EACRC,QAAS,EACTC,SAAU,SACVC,KAAM,mBACNC,WAAY,SACZC,OAAQ,GAEV,YAAa,YACb,cAAe,Q,cCHjB,SAASC,EAAcjvB,GACrB,MAAMsuB,GAAWD,EAAAA,EAAAA,GAAwBruB,IACnC,KAAE8M,EAAI,OAAE4N,GAAWlmB,OAAOoK,SAEhC,OAAgB,MAAZ0vB,IACF95B,OAAO06B,WAAWZ,EAASa,OAASzU,EAAS5N,IACtC,EAIX,CAGA,IAAIsiB,EAAY,GAEhB56B,OAAO4K,iBAAiB,qBAAsBwZ,IACxC,6BAA6BjV,KAAKiV,EAAMyW,SACtCD,IACF56B,OAAOoK,SAASoB,SAAWovB,KAKjC,MAAME,EAAmBA,CAAC1wB,EAAU2wB,KAC7BN,EAAcrwB,EAASoB,YAC1BovB,EAAYxwB,EAASoB,UACrBX,EAAAA,EAAAA,GAAU,mBAAoB,CAAET,WAAU2wB,mBAIxCnK,EAAgBA,CAACxmB,EAAU2wB,KAC1BN,EAAcrwB,EAASoB,YAC1BX,EAAAA,EAAAA,GAAU,gBAAiB,CAAET,WAAU2wB,kBAUrCnU,EAAW,SAACwR,EAAI7gC,GAIpB,QAJ2B,IAAPA,IAAAA,EAAU,CAAC,GAIb,iBAAP6gC,EAET,YADA4C,EAAAA,cAAcpU,SAASwR,GAIzB,MAAM,SAAE5sB,EAAQ,OAAE0a,EAAM,KAAE5N,IAAS2iB,EAAAA,EAAAA,IAAU7C,GACvC0B,GAAWD,EAAAA,EAAAA,GAAwBruB,GAUzC,GANIsuB,IACF1B,EAAK0B,EAASa,OAASzU,EAAS5N,GAK9BtY,OAAOkL,aAET,YADAlL,OAAOoK,SAAWoB,EAAW0a,EAAS5N,GAMxC,MAAM4iB,EAAY9L,WAAW,KAC3B+L,EAAAA,EAAQC,KAAK,6BAA8B,CAAE5vB,cAC7CX,EAAAA,EAAAA,GAAU,uBAAwB,CAChCT,SAAUpK,OAAOoK,YAElB,KAEHmB,EAAAA,GAAO3U,SAAS4U,EAAW0a,GAAQruB,KAAKyT,IAOtC,IAAKA,GAAiBA,EAAc+vB,SAAWC,EAAAA,GAAmBliC,MAIhE,OAHA4G,OAAOs3B,QAAQM,aAAa,CAAC,EAAG,GAAIxtB,SAASob,MAC7CxlB,OAAOoK,SAAWoB,OAClB+vB,aAAaL,GAM8B5vB,GAEzCA,EAAcqrB,KAAK6E,yBACnBx7B,OAAOy7B,4BAIL,kBAAmBjxB,WACoB,OAAvCA,UAAUC,cAAcQ,YACqB,cAA7CT,UAAUC,cAAcQ,WAAWxQ,OAEnC+P,UAAUC,cAAcQ,WAAWywB,YAAY,CAC7CC,UAAW,uBAIf37B,OAAOoK,SAAWoB,EAAW0a,EAAS5N,IAG1CsjB,EAAAA,EAAAA,UAAcxD,EAAI7gC,GAClBgkC,aAAaL,IAEjB,EAEA,SAASjZ,EAAmBM,EAAehf,GAAiB,IAAf,SAAE6G,GAAU7G,EACvD,MAAM,SAAEiI,EAAQ,KAAE8M,GAASlO,EACrBjT,GAAU0T,EAAAA,EAAAA,GAAU,qBAAsB,CAC9C0X,kBAEA/W,WACAgX,YAAa,CAAEpY,YACfyxB,uBAAwB7kC,GAAQ,CAC9B,EAGAsP,KAAKib,cAAclY,KAAKrS,EAAMA,EAAKiL,QAGvC,GAAI9K,EAAQM,OAAS,EAGnB,OAAON,EAAQA,EAAQM,OAAS,GAGlC,GAAI8qB,EAAiB,CACnB,MACEnY,UAAYoB,SAAUswB,IACpBvZ,EACJ,GAAIuZ,IAAgBtwB,EAGlB,OAAO8M,EAAOwK,UAAUxK,EAAKoS,MAAM,IAAM,CAAC,EAAG,EAEjD,CACA,OAAO,CACT,CAYC,IAEKqR,EAAc,SAAA5a,GAClB,SAAA4a,EAAY99B,GAAQ,IAADmjB,EAEuB,OADxCA,EAAAD,EAAA1lB,KAAA,KAAMwC,IAAM,MACP+9B,gBAAkBvwB,EAAAA,YAAiB2V,CAC1C,EAACoN,EAAAA,EAAAA,GAAAuN,EAAA5a,GAAA,IAAAsB,EAAAsZ,EAAAl7B,UAwBA,OAxBA4hB,EAEDQ,mBAAA,SAAmBjB,EAAWia,GAC5Bra,sBAAsB,KACpB,IAAIsa,EAAW,eAAe51B,KAAKrI,MAAMmM,SAASoB,WAC9CvL,SAASk8B,QACXD,EAAWj8B,SAASk8B,OAEtB,MAAMC,EAAen8B,SAASwW,iBAAiB,4BAC3C2lB,GAAgBA,EAAa3kC,SAC/BykC,EAAWE,EAAa,GAAGtnB,aAE7B,MAAMunB,EAAkB,gBAAgBH,IACxC,GAAI51B,KAAK01B,gBAAgB16B,QAAS,CACRgF,KAAK01B,gBAAgB16B,QAAQg7B,YAC7BD,IACtB/1B,KAAK01B,gBAAgB16B,QAAQg7B,UAAYD,EAE7C,GAEJ,EAAC5Z,EAEDU,OAAA,WACE,OAAO1X,EAAAA,cAAA,MAAAzQ,OAAAC,OAAA,GAASg/B,EAAmB,CAAEn1B,IAAKwB,KAAK01B,kBACjD,EAACD,CAAA,CA5BiB,CAAStwB,EAAAA,WA+B7B,MAAM8wB,EAAuBA,CAACxB,EAAcyB,KAAkB,IAADC,EAAAC,EAC3D,OAAI3B,EAAavV,OAASgX,EAAahX,OAInCuV,SAAmB,QAAP0B,EAAZ1B,EAActgC,aAAK,IAAAgiC,OAAP,EAAZA,EAAqBx6B,QAAQu6B,SAAmB,QAAPE,EAAZF,EAAc/hC,aAAK,IAAAiiC,OAAP,EAAZA,EAAqBz6B,MAOxD,IACM06B,EAAY,SAAAC,GAChB,SAAAD,EAAY1+B,GAAQ,IAAD4+B,EAEqB,OADtCA,EAAAD,EAAAnhC,KAAA,KAAMwC,IAAM,KACZ68B,EAAiB78B,EAAMmM,SAAU,MAAKyyB,CACxC,EAACrO,EAAAA,EAAAA,GAAAmO,EAAAC,GAAA,IAAAE,EAAAH,EAAA97B,UA2BA,OA3BAi8B,EAEDna,kBAAA,WACEiO,EAActqB,KAAKrI,MAAMmM,SAAU,KACrC,EAAC0yB,EAEDC,sBAAA,SAAsBd,GACpB,QAAIM,EAAqBj2B,KAAKrI,MAAMmM,SAAU6xB,EAAU7xB,YACtD0wB,EAAiBmB,EAAU7xB,SAAU9D,KAAKrI,MAAMmM,WACzC,EAGX,EAAC0yB,EAED7Z,mBAAA,SAAmBjB,GACbua,EAAqBva,EAAU5X,SAAU9D,KAAKrI,MAAMmM,WACtDwmB,EAActqB,KAAKrI,MAAMmM,SAAU4X,EAAU5X,SAEjD,EAAC0yB,EAED3Z,OAAA,WACE,OACE1X,EAAAA,cAACA,EAAAA,SAAc,KACZnF,KAAKrI,MAAMkH,SACZsG,EAAAA,cAACswB,EAAc,CAAC3xB,SAAUA,WAGhC,EAACuyB,CAAA,CA/Be,CAASlxB,EAAAA,W,wBCxN3B,SAASuxB,EAAezjC,EAAGC,GACzB,IAAK,IAAIoH,KAAKrH,EACZ,KAAMqH,KAAKpH,GAAI,OAAO,EACvB,IAAK,IAAIyjC,KAAMzjC,EACd,GAAID,EAAE0jC,KAAQzjC,EAAEyjC,GAAK,OAAO,EAC7B,OAAO,CACV,CC8GA,MAlHqB,SAAA9b,GACnB,SAAA+b,EAAYj/B,GAAQ,IAADmjB,EACjBA,EAAAD,EAAA1lB,KAAA,OAAO,KACP,MAAM,SAAE2O,EAAQ,cAAEkB,GAAkBrN,EAQnC,OAPDmjB,EAAK3mB,MAAQ,CACX2P,SAAU,IAAKA,GACfkB,cACEA,GACAC,EAAAA,GAAO1U,aAAauT,EAASoB,SAAWpB,EAAS8b,OAAQ,CACvDiX,kBAAkB,KAEvB/b,CACH,EAACoN,EAAAA,EAAAA,GAAA0O,EAAA/b,GAAA+b,EAEM1U,yBAAP,SAA+BjlB,EAAe65B,GAAY,IAA1B,SAAEhzB,GAAU7G,EAC1C,GAAI65B,EAAUhzB,SAASob,OAASpb,EAASob,KAAM,CAQ7C,MAAO,CACLla,cARoBC,EAAAA,GAAO1U,aAC3BuT,EAASoB,SAAWpB,EAAS8b,OAC7B,CACEiX,kBAAkB,IAMpB/yB,SAAU,IAAKA,GAEnB,CAEA,MAAO,CACLA,SAAU,IAAKA,GAEnB,EAAC,IAAAqY,EAAAya,EAAAr8B,UA+EA,OA/EA4hB,EAED4a,cAAA,SAAcC,GACZ/xB,EAAAA,GAAO3U,SAAS0mC,GAASzlC,KAAKyT,IACxBA,GAAiBA,EAAc+vB,SAAWC,EAAAA,GAAmBliC,MAC/DkN,KAAK6yB,SAAS,CACZ/uB,SAAU,IAAKpK,OAAOoK,UACtBkB,mBAGFtL,OAAOs3B,QAAQM,aAAa,CAAC,EAAG,GAAIxtB,SAASob,MAC7CxlB,OAAOoK,SAAWkzB,IAGxB,EAAC7a,EAEDsa,sBAAA,SAAsBd,EAAWr/B,GAE/B,OAAKA,EAAU0O,cAkBXhF,KAAK7L,MAAM6Q,gBAAkB1O,EAAU0O,gBAIzChF,KAAK7L,MAAM6Q,cAAc2d,YAAcrsB,EAAU0O,cAAc2d,YAK7D3iB,KAAK7L,MAAM6Q,cAAcK,OAAS/O,EAAU0O,cAAcK,SAM5DrF,KAAK7L,MAAM2P,SAASnI,MAAQrF,EAAUwN,SAASnI,MAC/CrF,EAAU0O,cAAcqrB,OACvB/5B,EAAU0O,cAAcqrB,KAAK4G,YAC5B3gC,EAAU0O,cAAcqrB,KAAKjI,ODhFrC,SAA0B3R,EAAUkf,EAAWr/B,GAC7C,OAAOogC,EAAejgB,EAAS9e,MAAOg+B,IAAce,EAAejgB,EAAStiB,MAAOmC,EACpF,CCkFU4gC,CAAel3B,KAAM21B,EAAWr/B,OAvCrC0J,KAAK+2B,cACHpB,EAAU7xB,SAASoB,SAAWywB,EAAU7xB,SAAS8b,SAE5C,EAqCX,EAACzD,EAEDU,OAAA,WAiBE,OAAO7c,KAAKrI,MAAMkH,SAASmB,KAAK7L,MAClC,EAACyiC,CAAA,CA/GkB,CAASzxB,EAAAA,W,oBC6B9B,MAAMF,EAAS,IAAIkyB,EAAAA,GAAWC,E,GAA2B19B,OAAO29B,WAChEC,EAAAA,EAAAA,IAAUryB,GACVA,EAAOsyB,aAAahzB,EAAAA,GAEpB,MAAM,OAAEsY,EAAM,QAAE2a,IAAYvI,EAAAA,EAAAA,KAE5Bv1B,OAAO09B,cAAgBA,EACvB19B,OAAO+9B,WAAa5C,EAAAA,EACpBn7B,OAAOg+B,UAAYC,EAAAA,GH4HjBjD,EAAAA,cAAcvD,OAAOzgC,IACnBA,EAAKoT,SAASstB,OAAS1gC,EAAK0gC,SAG9B13B,OAAOk+B,QAAU9F,GAAMxR,EAASwR,EAAI,CAAEruB,SAAS,IAC/C/J,OAAO06B,WAAatC,GAAMxR,EAASwR,EAAI,CAAEruB,SAAS,IAClD/J,OAAOm+B,YAAc,CAAC/F,EAAI7gC,IAAYqvB,EAASwR,EAAI7gC,GG9HrD,MAAM6mC,EAAmB,wCAEzBC,EAAAA,EAAAA,GAAe,iBAAiBxmC,KAAK,MAG/BgT,EAAAA,EAAAA,GAAU,yBAAyBrT,OAAOkG,SAASjG,OAAS,GAC9Df,EAAQ,KAWV,MAAM4nC,EAAergC,GACnBwN,EAAAA,cAAC8yB,EAAAA,YAAYx5B,SAAQ,CACnBC,MAAO,CACLizB,QAAS,IACTC,SAAU,MAGZzsB,EAAAA,cAAC6qB,EAAAA,EAAiBr4B,IAIhBugC,EAAc/yB,EAAAA,cAAoB,CAAC,GAEnC4hB,EAAgB,CACpBI,kBAAmB,WACpB,IAEKgR,EAAU,SAAAtd,GAAA,SAAAsd,IAAA,OAAAtd,EAAAzlB,MAAA,KAAAL,YAAA,KAiCb,OAjCamzB,EAAAA,EAAAA,GAAAiQ,EAAAtd,GAAAsd,EAAA59B,UACdsiB,OAAA,WACE,MAAM,SAAEhe,GAAamB,KAAKrI,MAC1B,OACEwN,EAAAA,cAACizB,EAAAA,SAAQ,KACNn7B,IAAA,IAAC,SAAE6G,GAAU7G,EAAA,OACZkI,EAAAA,cAACyxB,EAAe,CAAC9yB,SAAUA,GACxB0pB,IAAkC,IAAjC,cAAExoB,EAAa,SAAElB,GAAU0pB,EAC3B,MAAMqB,GAAqBwJ,EAAAA,EAAAA,MACrBC,GAAeC,EAAAA,EAAAA,MAErB,OACEpzB,EAAAA,cAACsqB,EAAAA,EAAmBhxB,SAAQ,CAACC,MAAOmwB,GAClC1pB,EAAAA,cAACI,EAAAA,GAAc9G,SAAQ,CAACC,MAAOqoB,GAC7B5hB,EAAAA,cAACG,EAAAA,GAAqB7G,SAAQ,CAACC,MAAO45B,GACpCnzB,EAAAA,cAACK,EAAAA,GAAiB/G,SAAQ,CACxBC,MAAOsG,EAAcqrB,KAAKrK,WAE1B7gB,EAAAA,cAAC+yB,EAAYz5B,SAAQ,CACnBC,MAAO,CAAEsG,gBAAelB,aAEvBjF,UAYzB,EAACs5B,CAAA,CAjCa,CAAShzB,EAAAA,WAoCnBqzB,EAAe,SAAAlC,GAAA,SAAAkC,IAAA,OAAAlC,EAAAlhC,MAAA,KAAAL,YAAA,KAsClB,OAtCkBmzB,EAAAA,EAAAA,GAAAsQ,EAAAlC,GAAAkC,EAAAj+B,UACnBsiB,OAAA,WACE,OACE1X,EAAAA,cAAC+yB,EAAYv7B,SAAQ,KAClBixB,IAAA,IAAC,cAAE5oB,EAAa,SAAElB,GAAU8pB,EAAA,OAC3BzoB,EAAAA,cAACkxB,EAAY,CAACvyB,SAAUA,GACtBqB,EAAAA,cAACwU,EAAAA,GAAa,CACZ7V,SAAUA,EACV6X,mBAAoBA,GAEpBxW,EAAAA,cAACszB,EAAAA,OAAM,CACL7G,SAAU8G,OACV50B,SAAUA,EACVnD,GAAG,wBAEHwE,EAAAA,cAAC6yB,EAAYtjC,OAAAC,OAAA,CACXyzB,KAC8B,cAA5BpjB,EAAcqrB,KAAKjI,MACS,cAA5BpjB,EAAcqrB,KAAKjI,MACfuQ,EAAAA,EAAAA,GAAY70B,EAASoB,SAAUwzB,QAC/B3H,WAEI/rB,EAAcqrB,KAAK4G,WACnBjyB,EAAcqrB,KAAKjI,MACnB5f,MAAM,KAAK,KAGjBxI,KAAKrI,MAAK,CACdmM,SAAUA,EACVkB,cAAeA,GACXA,EAAcK,WAQlC,EAACmzB,CAAA,CAtCkB,CAASrzB,EAAAA,WAyC9B,MAAM,SAAEyzB,EAAU90B,SAAU+0B,GAAen/B,OAYzCk/B,GACAF,OAAgBE,IACdC,EAAW3zB,UAAY0zB,EAASja,SAAS,KAAOka,EAAWjZ,OAAS,OAEpE3a,EAAO6zB,eAAcH,EAAAA,EAAAA,GAAYE,EAAW3zB,SAAUwzB,UACtDE,EAASnqB,MAAM,6BACfmqB,EAASnqB,MAAM,+CAGjB6R,EAAAA,EAAAA,UACEoY,OACEE,GACEA,EAASja,SAAS,KAA2B,GAApBka,EAAWjZ,QACtCiZ,EAAW7mB,KACb,CACEvO,SAAS,IAMf,MAAMs1B,EAAoBA,KACxB,IACE,OAAOpV,cACT,CAAE,MACA,OAAO,IACT,GAGFgU,EAAAA,GAAarnC,SAASuoC,EAAW3zB,SAAW2zB,EAAWjZ,QAAQruB,KAAK8+B,IAAS,IAAD2I,EAC1E,MAAMrV,EAAiBoV,IAEvB,GACE1I,SAAU,QAAN2I,EAAJ3I,EAAMA,YAAI,IAAA2I,GAAVA,EAAY9D,wBACZ7E,EAAKA,KAAK6E,yBAA2Bx7B,OAAOy7B,4BAI1C,kBAAmBjxB,WACoB,OAAvCA,UAAUC,cAAcQ,YACqB,cAA7CT,UAAUC,cAAcQ,WAAWxQ,OAEnC+P,UAAUC,cAAcQ,WAAWywB,YAAY,CAC7CC,UAAW,uBAUX1R,GAAgB,CAGlB,KAFgE,MAA7CA,EAAeC,QAAQkU,IAKxC,OAFAnU,EAAeG,QAAQgU,EAAkB,UACzCp+B,OAAOoK,SAASgB,QAAO,EAG3B,CAOF,GAJI6e,GACFA,EAAesV,WAAWnB,IAGvBzH,GAAQA,EAAK0E,SAAWC,EAAAA,GAAmBliC,MAAO,CACrD,MAAMuL,EAAU,sBAAsBw6B,EAAW3zB,0CAIjD,GAAImrB,GAAQA,EAAKvyB,MAEf,MADAmG,QAAQnG,MAAMO,GACRgyB,EAAKvyB,MAGb,MAAM,IAAIhL,MAAMuL,EAClB,CAEA,MAAM66B,GAAW30B,EAAAA,EAAAA,GACf,kBACA,CAAEwB,QAASZ,EAAAA,cAACqzB,EAAe,OAC3BrzB,EAAAA,cAACqzB,EAAe,MAChBW,IAAiB,IAAhB,OAAEnoC,GAAQmoC,EACT,MAAO,CAAEpzB,QAAS/U,KAEpBw+B,MAEI4J,EAAM,WACV,MAAMC,EAAsBl0B,EAAAA,QAAa,GAazC,OAXAA,EAAAA,UAAgB,KACTk0B,EAAoBr+B,UACvBq+B,EAAoBr+B,SAAU,EAC1Bs+B,YAAYC,MACdD,YAAYC,KAAK,0BAGnBh1B,EAAAA,EAAAA,GAAU,2BAEX,IAEIY,EAAAA,cAACgzB,EAAU,KAAEe,EACtB,EAEMM,EAAU7/B,SAASoiB,eAAe,wBAIxC,IAAI0d,EAAkB5c,EAClB2c,GAAWA,EAAQ36B,SAAS1N,SAC9BsoC,EAAkBjC,GAGpB,MAAMkC,GAAWn1B,EAAAA,EAAAA,GACf,8BACA7M,EACA+hC,GACA,GAEF,SAASE,IACP,MAAMC,EACc,oBAAXlgC,OACHC,SAASoiB,eAAe,aACxB,KAEN2d,EAASv0B,EAAAA,cAACi0B,EAAG,MAAKQ,EACpB,CAIA,MAAMC,EAAMlgC,SACZ,GACqB,aAAnBkgC,EAAIC,YACgB,YAAnBD,EAAIC,aAA6BD,EAAIE,gBAAgBC,SAEtDlR,WAAW,WACT6Q,GACF,EAAG,OACE,CACL,MAAMM,EAAU,WACdJ,EAAInd,oBAAoB,mBAAoBud,GAAS,GACrDvgC,OAAOgjB,oBAAoB,OAAQud,GAAS,GAE5CN,GACF,EAEAE,EAAIv1B,iBAAiB,mBAAoB21B,GAAS,GAClDvgC,OAAO4K,iBAAiB,OAAQ21B,GAAS,EAC3C,K,kCC7TJ,IAAIC,EAAU,EACVC,EAAkB,SAAyBnoB,GAC7C,IAAIrR,EAAKjH,OAAO8iB,UAAUxK,EAAKvO,QAAQ,IAAK,KAC5C,GAAW,KAAP9C,EAAW,CACb,IAAIoF,EAAUpM,SAASoiB,eAAepb,GACtC,GAAIoF,EAAS,CACX,IAAI+a,EAAYpnB,OAAO0gC,aAAezgC,SAASogC,gBAAgBjZ,WAAannB,SAASqwB,KAAKlJ,UACtFuZ,EAAY1gC,SAASogC,gBAAgBM,WAAa1gC,SAASqwB,KAAKqQ,WAAa,EAC7EC,EAAiB5gC,OAAO6gC,iBAAiBx0B,GACzCy0B,EAAkBF,EAAeG,iBAAiB,sBAAwBH,EAAeG,iBAAiB,2BAA6B,MAC3I,OAAO10B,EAAQ20B,wBAAwB3b,IAAM+B,EAAYxf,SAASk5B,EAAiB,IAAMH,EAAYH,CACvG,CACF,CACA,OAAO,IACT,EACA1pC,EAAQ4W,sBAAwB,SAAU4F,EAAGlH,GACvCA,EAAco0B,UAChBA,EAAUp0B,EAAco0B,SAE1B5e,sBAAsB,WACpB,IAAIqf,EAASR,EAAgBzgC,OAAOoK,SAASkO,MAC9B,OAAX2oB,GACFjhC,OAAOkiB,SAAS,EAAG+e,EAEvB,EACF,EACAnqC,EAAQmrB,mBAAqB,SAAU1e,GACrC,IAAI6G,EAAW7G,EAAKif,YAAYpY,SAC5B62B,EAASR,EAAgBr2B,EAASkO,MACtC,OAAkB,OAAX2oB,GAAkB,CAAC,EAAGA,EAC/B,C,uPChCA,MAyDMC,EAzDU,SAAUC,GACxB,GAAwB,oBAAblhC,SACT,OAAO,EAET,MAAMmhC,EAAWnhC,SAASC,cAAc,QACxC,IACE,GAAIkhC,EAASC,SAAgD,mBAA9BD,EAASC,QAAQC,SAC9C,OAAOF,EAASC,QAAQC,SAASH,EAErC,CAAE,MAAOz8B,GACP,OAAO,CACT,CACA,OAAO,CACT,CA4CkC68B,CAAQ,YA1Cb,SAAUlI,EAAK9hC,GAC1C,OAAO,IAAIO,QAAQ,CAACC,EAASypC,KAC3B,GAAwB,oBAAbvhC,SAET,YADAuhC,IAIF,MAAMC,EAAOxhC,SAASC,cAAc,QACpCuhC,EAAKnsB,aAAa,MAAO,YACzBmsB,EAAKnsB,aAAa,OAAQ+jB,GAE1Br+B,OAAO0F,KAAKnJ,GAASkQ,QAAQxF,IAC3Bw/B,EAAKnsB,aAAarT,EAAK1K,EAAQ0K,MAGjCw/B,EAAKC,OAAS3pC,EACd0pC,EAAKE,QAAUH,GAGbvhC,SAAS2hC,qBAAqB,QAAQ,IACtC3hC,SAAS4hC,kBAAkB,UAAU,GAAGlrB,YAC5BnB,YAAYisB,IAE9B,EAE4B,SAAUpI,GACpC,OAAO,IAAIvhC,QAAQ,CAACC,EAASypC,KAC3B,MAAMM,EAAM,IAAIC,eAChBD,EAAIE,KAAK,MAAO3I,GAAK,GAErByI,EAAIJ,OAAS,KACQ,MAAfI,EAAIzG,OACNtjC,IAEAypC,KAIJM,EAAIG,KAAK,OAEb,EAMMC,EAAa,CAAC,EAkBpB,MAhBiB,SAAU7I,EAAK9hC,GAC9B,OAAO,IAAIO,QAAQC,IACbmqC,EAAW7I,GACbthC,IAIFmpC,EAA0B7H,EAAK9hC,GAC5BM,KAAK,KACJE,IACAmqC,EAAW7I,IAAO,IAEnBhuB,MAAM,SAEb,E,oBCrEO,MAAMiwB,EAAqB,CAIhCliC,MAAO,QAIP+oC,QAAS,WAWLC,EAAoB9E,IACxB,MAAO5O,EAAM2T,GAAe/E,EAAQxuB,MAAM,KAPZsF,MAS9B,MAAO,kBADoB,MAATsa,EAAe,SAPjCta,EAAa,OADiBA,EAQqCsa,GAP7D,GAAata,EAAEsW,MAAM,GAAKtW,GAC1B4iB,SAAS,KAAO5iB,EAAEsW,MAAM,GAAI,GAAKtW,mBAQrCiuB,EAAc,IAAIA,IAAgB,MAQhCC,EAAmBhF,GAAWA,EAAQljB,WAAW,MAEvD,SAASmoB,EAAQlJ,EAAKmJ,GACpB,YAD0B,IAANA,IAAAA,EAAS,OACtB,IAAI1qC,QAAQC,IACjB,MAAM+pC,EAAM,IAAIC,eAChBD,EAAIE,KAAKQ,EAAQnJ,GAAK,GACtByI,EAAIW,mBAAqB,KACD,GAAlBX,EAAI1B,YACNroC,EAAQ+pC,IAGZA,EAAIG,KAAK,OAEb,CAEA,MAgBMS,EAAY,+BAEZC,EAAkB,SAAChF,EAAU1U,EAAkBhU,GAAU,IAAD2tB,OAAlB,IAAT3Z,IAAAA,EAAY,MAC7C,MAAM0N,EAAO,CACXkM,mBAAoBlF,EAASkF,mBAC7BnU,KAAMiP,EAASjP,KACf8M,uBAAwBmC,EAASnC,uBACjC+B,UAAWI,EAASJ,UACpBuF,kBAAmBnF,EAASmF,kBAC5BC,mBAAoBpF,EAASoF,mBAC7BzW,UAA6B,QAApBsW,EAAEjF,EAASrR,iBAAS,IAAAsW,EAAAA,EAAI,CAAC,GAGpC,MAAO,CACL3Z,YACAhU,OACAtJ,KAAMgyB,EAASrmC,OACfq/B,OAEJ,EAEA,SAASqM,EAAgBC,GACvB,OAAO,IAAInrC,QAAQC,IACjB,IACE,MAAMT,EAAS2rC,EAASj6B,WACxBjR,EAAQT,EACV,CAAE,MAAOoN,GACP,IACE1J,OAAOQ,eAAeC,KAAKiJ,EAAK,eAChC1J,OAAOQ,eAAeC,KAAKiJ,EAAK,WAMhC,MAAMA,EAJN0qB,WAAW,KACT4T,EAAgBC,GAAUprC,KAAKE,IAC9B,IAIP,GAEJ,CAEO,IAAMmrC,EAAU,WACrB,SAAAA,EAAYC,EAAeC,GAAa,KAgCxCC,wBAA0B,IAAI1qC,IAhB5B2N,KAAKg9B,OAAS,IAAI3qC,IAClB2N,KAAKi9B,WAAa,IAAI5qC,IACtB2N,KAAKk9B,cAAgB,CAAC,EACtBl9B,KAAKm9B,WAAa,IAAI9qC,IACtB2N,KAAKo9B,mBAAqB,IAAI/qC,IAC9B2N,KAAKq9B,aAAe,IAAIhrC,IACxB2N,KAAKs9B,gBAAkB,IAAIjrC,IAC3B2N,KAAKu9B,SAAW,IAAIlrC,IACpB2N,KAAKw9B,wBAAyB,EAC9Bx9B,KAAKy9B,eAAiB,GACtBz9B,KAAK09B,kBAAoB,IAAI9sB,IAC7B5Q,KAAK29B,kBAAoB,IAAI/sB,IAC7B5Q,KAAK68B,cAAgBA,GACrBe,EAAAA,EAAAA,IAAcd,EAChB,CAAC,IAAA3gB,EAAAygB,EAAAriC,UAgrBA,OAhrBA4hB,EAID0hB,YAAA,SAAY9K,GACV,IAAI+K,EAAkB99B,KAAK+8B,wBAAwBxqC,IAAIwgC,GAQvD,OANK+K,IACHA,EAAkB7B,EAAQlJ,EAAK,OAC/B/yB,KAAK+8B,wBAAwBvqC,IAAIugC,EAAK+K,IAIjCA,EACJvsC,KAAKorC,IACJ38B,KAAK+8B,wBAAwBtU,OAAOsK,GAC7B4J,IAER53B,MAAM3G,IAEL,MADA4B,KAAK+8B,wBAAwBtU,OAAOsK,GAC9B30B,GAEZ,EAAC+d,EAEDob,aAAA,SAAahzB,GACXvE,KAAKuE,UAAYA,EACjBvE,KAAK+9B,iBAAmBx5B,EAAU,0BAA0By5B,KAAK/qC,GAAKA,EACxE,EAACkpB,EAED8hB,kBAAA,SAAkBC,GAChB,MAAM,SAAEtF,EAAQ,QAAEuF,EAAU,GAAMD,EAC5BnL,EAAM+I,EAAkBlD,GAC9B,OAAO54B,KAAK69B,YAAY9K,GAAKxhC,KAAKiqC,IAChC,MAAM,OAAEzG,EAAM,aAAEqJ,GAAiB5C,EAGjC,GAAe,MAAXzG,EACF,IACE,MAAMsJ,EAAch+B,KAAKC,MAAM89B,GAC/B,QAAyB1mC,IAArB2mC,EAAYjW,KACd,MAAM,IAAIt1B,MAAM,iCAGlB,MAAMipC,EAAcnD,EAASpwB,MAAM,KAAK,GAKxC,OAJIuzB,IAAgBsC,EAAYjW,KAAKzJ,SAASod,KAC5CsC,EAAYjW,MAAQ,IAAI2T,KAGnBrnC,OAAOC,OAAOupC,EAAS,CAC5BnJ,OAAQC,EAAmB6G,QAC3ByC,QAASD,GAEb,CAAE,MAAOjgC,GACP,CAKJ,OAAe,MAAX22B,GAA6B,MAAXA,EAEH,cAAb6D,GAAyC,cAAbA,EACvBlkC,OAAOC,OAAOupC,EAAS,CAC5BnJ,OAAQC,EAAmBliC,QAMxBkN,KAAKi+B,kBACVvpC,OAAOC,OAAOupC,EAAS,CAAEtF,SAAU,YAAa2F,UAAU,KAK/C,MAAXxJ,EACK/0B,KAAKi+B,kBACVvpC,OAAOC,OAAOupC,EAAS,CACrBtF,SAAU,YACV4F,qBAAqB,KAMvBL,EAAU,EACLn+B,KAAKi+B,kBACVvpC,OAAOC,OAAOupC,EAAS,CAAEC,QAASA,EAAU,KAKzCzpC,OAAOC,OAAOupC,EAAS,CAC5BnJ,OAAQC,EAAmBliC,SAGjC,EAACqpB,EAEDsiB,0BAAA,SAA0BP,GACxB,MAAM,SAAEtF,EAAQ,QAAEuF,EAAU,GAAMD,EAC5BnL,EAAM+I,EAAkBlD,GAAUn1B,QAAQ,QAAS,aACzD,OAAOzD,KAAK69B,YAAY9K,GAAKxhC,KAAKiqC,IAChC,MAAM,OAAEzG,EAAM,aAAEqJ,GAAiB5C,EAGjC,GAAe,MAAXzG,EACF,IACE,OAAOrgC,OAAOC,OAAOupC,EAAS,CAC5BnJ,OAAQC,EAAmB6G,QAC3ByC,QAASF,GAEb,CAAE,MAAOhgC,GACP,CAKJ,OAAe,MAAX22B,GAA6B,MAAXA,EAEH,cAAb6D,GAAyC,cAAbA,EACvBlkC,OAAOC,OAAOupC,EAAS,CAC5BnJ,OAAQC,EAAmBliC,QAMxBkN,KAAKy+B,0BACV/pC,OAAOC,OAAOupC,EAAS,CAAEtF,SAAU,YAAa2F,UAAU,KAK/C,MAAXxJ,EACK/0B,KAAKy+B,0BACV/pC,OAAOC,OAAOupC,EAAS,CACrBtF,SAAU,YACV4F,qBAAqB,KAMvBL,EAAU,EACLn+B,KAAKy+B,0BACV/pC,OAAOC,OAAOupC,EAAS,CAAEC,QAASA,EAAU,KAKzCzpC,OAAOC,OAAOupC,EAAS,CAC5BnJ,OAAQC,EAAmBliC,SAGjC,EAACqpB,EAEDuiB,iBAAA,SAAiB1H,GACf,MAAM4B,GAAW+F,EAAAA,EAAAA,IAAS3H,GAC1B,GAAIh3B,KAAKm9B,WAAW9uB,IAAIuqB,GAAW,CACjC,MAAMvB,EAAWr3B,KAAKm9B,WAAW5qC,IAAIqmC,GAEnC,OAAOpnC,QAAQC,QAAQ4lC,EAE3B,CAEA,OAAOr3B,KAAKi+B,kBAAkB,CAAErF,aAAYrnC,KAAK8lC,IAC/Cr3B,KAAKm9B,WAAW3qC,IAAIomC,EAAUvB,GAEvBA,GAEX,EAAClb,EAEDyiB,yBAAA,SAAyB5H,GACvB,MAAM4B,GAAW+F,EAAAA,EAAAA,IAAS3H,GAC1B,GAAIh3B,KAAKo9B,mBAAmB/uB,IAAIuqB,GAAW,CACzC,MAAMvB,EAAWr3B,KAAKo9B,mBAAmB7qC,IAAIqmC,GAE3C,OAAOpnC,QAAQC,QAAQ4lC,EAE3B,CAEA,OAAOr3B,KAAKy+B,0BAA0B,CAAE7F,aAAYrnC,KAAK8lC,IACvDr3B,KAAKo9B,mBAAmB5qC,IAAIomC,EAAUvB,GAE/BA,GAEX,EAAClb,EAED0iB,kBAAA,SAAkBhZ,GAChB,GAAI7lB,KAAKq9B,aAAahvB,IAAIwX,GAAY,CACpC,MAAMwY,EAAcr+B,KAAKq9B,aAAa9qC,IAAIszB,GAC1C,OAAOr0B,QAAQC,QAAQ,CAAEo0B,YAAWwY,eACtC,CAGA,OAAOpC,EADK,mBAAiCpW,SACzB,OAAOt0B,KAAKutC,IAC9B,MAAMT,EAAch+B,KAAKC,MAAMw+B,EAAIV,cAGnC,OADAp+B,KAAKq9B,aAAa7qC,IAAIqzB,EAAWwY,GAC1B,CAAExY,YAAWwY,gBAExB,EAACliB,EAED2c,cAAA,SAAc9B,GACZ,OAAO8B,EAAAA,EAAAA,IAAc9B,EACvB,EAEA7a,EACA7rB,SAAA,SAAS0mC,GACP,MAAM4B,GAAW+F,EAAAA,EAAAA,IAAS3H,GAC1B,GAAIh3B,KAAKg9B,OAAO3uB,IAAIuqB,GAAW,CAC7B,MAAMvI,EAAOrwB,KAAKg9B,OAAOzqC,IAAIqmC,GAE3B,OAAIvI,EAAKvyB,MACAtM,QAAQC,QAAQ,CACrBqM,MAAOuyB,EAAKvyB,MACZi3B,OAAQ1E,EAAK0E,SAIVvjC,QAAQC,QAAQ4+B,EAAKiO,QAEhC,CAEA,GAAIt+B,KAAKi9B,WAAW5uB,IAAIuqB,GACtB,OAAO54B,KAAKi9B,WAAW1qC,IAAIqmC,GAG7B,MAAMmG,EAAmB,CACvB/+B,KAAKg/B,cACLh/B,KAAK0+B,iBAAiB9F,IAOxB,MAAMkF,EAAkBtsC,QAAQytC,IAAIF,GAAkBxtC,KAAK2tC,IACzD,MAAOC,EAAiBC,EAAkBC,GAAmBH,EAE7D,GACEE,EAAiBrK,SAAWC,EAAmBliC,QAC/CusC,aAAe,EAAfA,EAAiBtK,UAAWC,EAAmBliC,MAE/C,MAAO,CACLiiC,OAAQC,EAAmBliC,OAI/B,IAAIukC,EAAW+H,EAAiBd,QAEhC,MAAM,mBACJ/B,EACAC,kBAAmB8C,EAAwB,GAAE,UAC7CtZ,EAAY,CAAC,GACXqR,EAEEkI,EAAc,CAAC,EAEfC,EAAoBjyB,MAAM4W,KAAK,IAAIvT,IAAIlc,OAAO+qC,OAAOzZ,KAErD0Z,EAAYtb,IAChB,GAAIpkB,KAAKu9B,SAASlvB,IAAI+V,EAAMlwB,MAC1B,OAAO8L,KAAKu9B,SAAShrC,IAAI6xB,EAAMlwB,MAC1B,GAAI8L,KAAKs9B,gBAAgBjvB,IAAI+V,EAAMlwB,MACxC,OAAO8L,KAAKs9B,gBAAgB/qC,IAAI6xB,EAAMlwB,MAGxC,MAAMyrC,EAAW3/B,KAAK68B,cAAczY,EAAMmY,oBAAoBhrC,KAC5DoxB,IACE,MAAO,CACLA,WAzYQ9gB,EAyYiB8gB,EAzYX9gB,GAAKA,EAAEhB,SAAYgB,GA0YjC4kB,aAAcrC,EAAMpzB,OAAOy1B,aAC3BC,KAAMtC,EAAMpzB,OAAO01B,MA3YX7kB,QAsZd,OANA7B,KAAKs9B,gBAAgB9qC,IAAI4xB,EAAMlwB,KAAMyrC,GACrCA,EAASpuC,KAAKV,IACZmP,KAAKu9B,SAAS/qC,IAAI4xB,EAAMlwB,KAAMrD,GAC9BmP,KAAKs9B,gBAAgB7U,OAAOrE,EAAMlwB,QAG7ByrC,GAGT,OAAOnuC,QAAQytC,IACbO,EAAkB1uC,IAAI+0B,GAAa7lB,KAAK6+B,kBAAkBhZ,KAC1Dt0B,KAAKquC,IACL,MAAMC,EAAS,GACTC,GAAwB7b,EAAAA,EAAAA,GAAOqb,GAErC,IAAK,MAAM,YAAEjB,EAAW,UAAExY,KAAenxB,OAAO+qC,OAAOG,GAAa,CAClEC,EAAO7mC,KAAK,CAAE9E,KAAM2xB,KAAcwY,IAClC,IAAK,MAAM0B,KAAmB1B,EAAY7B,kBACnCsD,EAAyBnhB,SAASohB,IACrCD,EAAyB9mC,KAAK+mC,EAGpC,CAEA,MAAMC,EAAoB,CACxBxuC,QAAQytC,IAAIY,EAAO/uC,IAAI4uC,IACvB1/B,KAAK68B,cAAcN,EAAoB,SAIvCyD,EAAkBhnC,KAAKgH,KAAK68B,cAAcN,IAS5C,MAAM0D,EAAyBzuC,QAAQytC,IAAIe,GAAmBzuC,KAC5D2uC,IACE,MAAOC,EAAiBC,EAAexR,GAAiBsR,EAExDX,EAAYc,UAAY,IAAIzX,KAE5B,IAAK,MAAM0X,KAAkBH,IACtBG,GAAkBA,aAA0BxtC,SAC/CysC,EAAYxK,OAASC,EAAmBliC,MACxCysC,EAAYzhC,MAAQwiC,GAYxB,IAAIt7B,EAEJ,KARI4pB,GAAiBA,aAAyB97B,SAE5CysC,EAAYxK,OAASC,EAAmBliC,MACxCysC,EAAYzhC,MAAQ8wB,GAKlB2Q,EAAYxK,SAAWC,EAAmBliC,MAAO,CAcnD,GAbAysC,EAAYxK,OAASC,EAAmB6G,SAER,IAA9BuD,EAAiBb,WACa,KAA9Bc,aAAe,EAAfA,EAAiBd,YAEjBgB,EAAYhB,UAAW,GAEzBlH,EAAW3iC,OAAOC,OAAO0iC,EAAU,CACjCnC,uBAAwBiK,EACpBA,EAAgBjK,uBAChB,KAGkC,iBAA7BmK,aAAe,EAAfA,EAAiBf,SAAsB,CAChDt5B,EAAgBq3B,EAAgBhF,EAAU,KAAM+I,GAEhDp7B,EAAcorB,iBAAmBiP,EAAgBf,QAEjD,MAAMiC,EAAiB,IAAIC,eAAe,CACxCC,KAAAA,CAAM97B,GACJ,MAAM2M,EAAK,IAAIovB,YACf/7B,EAAW4jB,QAAQjX,EAAGqvB,OAAOtB,EAAgBf,SAC/C,EACAsC,IAAAA,CAAKj8B,GAEHA,EAAWk8B,OACb,EACAC,MAAAA,GAAU,IAGZ,OAAOpE,GACLv5B,EAAAA,EAAAA,0BAAyBo9B,IACzBhvC,KAAKP,IACLgU,EAAcorB,iBAAmBp/B,EAE1BgU,GAEX,CACEA,EAAgBq3B,EACdhF,EACAzI,EACAwR,EAGN,CAGA,OAAOp7B,IAKL+7B,EAA0BvvC,QAAQytC,IACtCa,EAAyBhvC,IAAIivC,IAE3B,GAAI//B,KAAKk9B,cAAc6C,GAAkB,CACvC,MAAM1B,EAAcr+B,KAAKk9B,cAAc6C,GACvC,MAAO,CAAEA,kBAAiB1B,cAC5B,CAEA,OAAOr+B,KAAK69B,YACV,uBAAqCkC,UAEpCxuC,KAAKiqC,IACJ,MAAM6C,EAAch+B,KAAKC,MAAMk7B,EAAI4C,cACnC,MAAO,CAAE2B,kBAAiB1B,iBAE3Bt5B,MAAM,KACL,MAAM,IAAIjS,MACR,yCAAuDitC,gBAI/DxuC,KAAKs9B,IACL,MAAMmS,EAAwB,CAAC,EAO/B,OALAnS,EAAmB1tB,QAAQlE,IAAuC,IAAtC,gBAAE8iC,EAAe,YAAE1B,GAAaphC,EAC1D+jC,EAAsBjB,GAAmB1B,EACzCr+B,KAAKk9B,cAAc6C,GAAmB1B,IAGjC2C,IAGT,OACExvC,QAAQytC,IAAI,CAACgB,EAAwBc,IAClCxvC,KAAKi8B,IAA0C,IAC1C8Q,GADEt5B,EAAe6pB,GAAmBrB,EAaxC,OAXIxoB,IACFs5B,EAAU,IAAKt5B,EAAe6pB,sBAC9B0Q,EAAYjB,QAAUA,EACtBzJ,EAAAA,EAAQC,KAAK,0BAA2B,CACtCzE,KAAMiO,EACNt5B,cAAes5B,KAInBt+B,KAAKg9B,OAAOxqC,IAAIomC,EAAU2G,GAEtBA,EAAYzhC,MACP,CACLA,MAAOyhC,EAAYzhC,MACnBi3B,OAAQwK,EAAYxK,QAIjBuJ,IAGRv5B,MAAM3G,IACE,CACLN,MAAOM,EACP22B,OAAQC,EAAmBliC,aAkBvC,OAXAgrC,EACGvsC,KAAK,KACJyO,KAAKi9B,WAAWxU,OAAOmQ,KAExB7zB,MAAMjH,IAEL,MADAkC,KAAKi9B,WAAWxU,OAAOmQ,GACjB96B,IAGVkC,KAAKi9B,WAAWzqC,IAAIomC,EAAUkF,GAEvBA,CACT,EAEA3hB,EACA5rB,aAAA,SAAaymC,EAAS/lC,QAAO,IAAPA,IAAAA,EAAU,CAAC,GAC/B,MAAM2nC,GAAW+F,EAAAA,EAAAA,IAAS3H,GAC1B,GAAIh3B,KAAKg9B,OAAO3uB,IAAIuqB,GAAW,CAAC,IAADqI,EAC7B,MAAM5J,EAAWr3B,KAAKg9B,OAAOzqC,IAAIqmC,GAEjC,GAAIvB,EAASiH,QACX,OAAOjH,EAASiH,QAGlB,GAAW,QAAX2C,EAAIhwC,SAAO,IAAAgwC,GAAPA,EAASpK,iBACX,MAAO,CACL/4B,MAAOu5B,EAASv5B,MAChBi3B,OAAQsC,EAAStC,OAGvB,CAEF,EAAC5Y,EAED+kB,eAAA,SAAetI,GAEb,QAvkBkCuI,MACpC,GACE,eAAgBj9B,gBACgB,IAAzBA,UAAUk9B,WACjB,CACA,IAAKl9B,UAAUk9B,WAAWC,eAAiB,IAAI1iB,SAAS,MACtD,OAAO,EAET,GAAIza,UAAUk9B,WAAWE,SACvB,OAAO,CAEX,CACA,OAAO,GA2jBAH,OAKDj9B,UAAUq9B,YAAanF,EAAUvzB,KAAK3E,UAAUq9B,cAKhDvhC,KAAKg9B,OAAO3uB,IAAIuqB,GAKtB,EAACzc,EAEDqlB,SAAA,SAAS5I,GACP,IAAK54B,KAAKkhC,eAAetI,GACvB,MAAO,CACLrnC,KAAME,GAAWA,GAAQ,GACzBgwC,MAAOA,QAGX,GAAIzhC,KAAK09B,kBAAkBrvB,IAAIuqB,GAC7B,MAAO,CACLrnC,KAAME,GAAWA,GAAQ,GACzBgwC,MAAOA,QAIX,MAAMC,EAAQ,CACZjwC,QAAS,KACTypC,OAAQ,KACRyG,QAAS,MAEXD,EAAMC,QAAU,IAAInwC,QAAQ,CAACC,EAASypC,KACpCwG,EAAMjwC,QAAUA,EAChBiwC,EAAMxG,OAASA,IAEjBl7B,KAAKy9B,eAAezkC,KAAK,CAAC4/B,EAAU8I,IACpC,MAAME,EAAS,IAAIC,gBAgBnB,OAfAD,EAAOE,OAAOx9B,iBAAiB,QAAS,KACtC,MAAMmtB,EAAQzxB,KAAKy9B,eAAejP,UAAUZ,IAAA,IAAEluB,GAAEkuB,EAAA,OAAKluB,IAAMk5B,KAE5C,IAAXnH,GACFzxB,KAAKy9B,eAAe5tB,OAAO4hB,EAAO,KAIjCzxB,KAAKw9B,yBACRx9B,KAAKw9B,wBAAyB,EAC9B1U,WAAW,KACT9oB,KAAK+hC,6BACJ,MAGE,CACLxwC,KAAMA,CAACE,EAASypC,IAAWwG,EAAMC,QAAQpwC,KAAKE,EAASypC,GACvDuG,MAAOG,EAAOH,MAAM7sC,KAAKgtC,GAE7B,EAACzlB,EAED4lB,0BAAA,YACuBroC,OAAOivB,qBAAmB,CAAKxI,GAAM2I,WAAW3I,EAAI,KAE5D,KACX,MAAM6hB,EAAahiC,KAAKy9B,eAAe5tB,OAAO,EAAG,GAC3CoyB,EAAazwC,QAAQytC,IACzB+C,EAAWlxC,IAAIqoC,IAA2B,IAAzBP,EAAUsJ,GAAS/I,EASlC,OANKn5B,KAAK09B,kBAAkBrvB,IAAIuqB,KAC9B54B,KAAKuE,UAAU,qBAAsB,CAAEW,SAAU0zB,IACjD54B,KAAK09B,kBAAkB/sB,IAAIioB,IAIzB54B,KAAK+9B,iBACAmE,EAASzwC,SAAQ,GAGnBuO,KAAKmiC,YAAWxD,EAAAA,EAAAA,IAAS/F,IAAWrnC,KAAK,KACzCyO,KAAK29B,kBAAkBtvB,IAAIuqB,KAC9B54B,KAAKuE,UAAU,yBAA0B,CAAEW,SAAU0zB,IACrD54B,KAAK29B,kBAAkBhtB,IAAIioB,IAG7BsJ,EAASzwC,SAAQ,QAKnBuO,KAAKy9B,eAAetsC,OACtB8wC,EAAW1wC,KAAK,KACdu3B,WAAW,KACT9oB,KAAK+hC,6BACJ,OAGL/hC,KAAKw9B,wBAAyB,GAGpC,EAACrhB,EAEDgmB,WAAA,SAAWvJ,GACT,MAAMwJ,EAActG,EAAkBlD,GAsBpC,OAAOyJ,EAAeD,EAAa,CACjC1Y,YAAa,YACblU,GAAI,UACHjkB,KAAK,IAGNyO,KAAK0+B,iBAAiB9F,GAG5B,EAACzc,EAEDmmB,SAAA,SAAStL,GACPh3B,KAAK1P,SAAS0mC,EAChB,EAAC7a,EAED9rB,2BAAA,SAA2B2mC,GACzB,MAAM4B,GAAW+F,EAAAA,EAAAA,IAAS3H,GACpB3G,EAAOrwB,KAAKm9B,WAAW5qC,IAAIqmC,GACjC,GAAIvI,EAAM,CACR,MAAMrrB,EAAgBq3B,EAAgBhM,EAAKiO,SAE3C,MAAM,GAANhsB,QAAA2R,EAAAA,EAAAA,GACKse,EAAoBv9B,EAAcqrB,KAAKkM,qBAAmB,CAC7DT,EAAkBlD,IAEtB,CACE,OAAO,IAEX,EAACzc,EAEDqmB,eAAA,SAAexL,GACb,MAAM4B,GAAW+F,EAAAA,EAAAA,IAAS3H,GACpB3G,EAAOrwB,KAAKg9B,OAAOzqC,IAAIqmC,GAC7B,OAAQvI,GAAQA,EAAKkO,QACvB,EAACpiB,EAED6iB,YAAA,SAAYb,GACV,YADiB,IAAPA,IAAAA,EAAU,GACbn+B,KAAK69B,YAAY,gCAA8CtsC,KACpEiqC,IACE,MAAM,OAAEzG,EAAM,aAAEqJ,GAAiB5C,EAEjC,IAAIiH,EAEJ,GAAe,MAAX1N,GAAkBoJ,EAAU,EAE9B,OAAOn+B,KAAKg/B,YAAYb,EAAU,GAIpC,GAAe,MAAXpJ,EACF,IACE,MAAMsJ,EAAch+B,KAAKC,MAAM89B,GAC/B,QAA2C1mC,IAAvC2mC,EAAYnJ,uBACd,MAAM,IAAIpiC,MAAM,iCAGlB2vC,EAAUpE,CACZ,CAAE,MAAOjgC,GACP,CAIJ,OAAOqkC,GAGb,EAAC7F,CAAA,CA/sBoB,GAktBvB,MAAM2F,EAAsBhG,IACzB7iC,OAAOgpC,gBAAgBnG,IAAuB,IAAIzrC,IACjD6xC,GAASC,OAAkBD,GAGxB,IAkGHlsB,EAlGS0gB,EAAU,SAAA0L,GACrB,SAAA1L,EAAYC,EAAe0F,EAAYzF,GAAW,IAADvc,EA2B9C,OARDA,EAAA+nB,EAAA1tC,KAAA,KAlBsB,SAAC2tC,EAAWC,GAKhC,QAL0C,IAAVA,IAAAA,EAAa,eAKxC3L,EAHH2L,EAAa,cAGgBD,GAC7B,MAAM,IAAIhwC,MACR,+DAA+DgwC,MAInE,OACE1L,EAAc2L,GAAYD,KAEvB/9B,MAAM3G,GAAOA,EAEpB,EAEqB0+B,IAAW,KAE5BzF,GACFvc,EAAKqiB,WAAW3qC,KAAImsC,EAAAA,EAAAA,IAAStH,EAASjP,MAAO,CAC3CwQ,SAAUvB,EAASjP,KACnBkW,QAASjH,EACTtC,OAAQ,YAEXja,CACH,EAACoN,EAAAA,EAAAA,GAAAiP,EAAA0L,GAAA,IAAArM,EAAAW,EAAA58B,UAkEA,OAlEAi8B,EAED2L,WAAA,SAAWvJ,GACT,OAAOiK,EAAAtoC,UAAM4nC,WAAUhtC,KAAC,KAAAyjC,GAAUrnC,KAAKP,IACrC,GAAIA,EAAO+jC,SAAWC,EAAmB6G,QACvC,OAAOrqC,QAAQC,UAEjB,MAAM4lC,EAAWrmC,EAAOstC,QAClBwE,EAAYzL,EAASkF,mBACrByG,EAAgBT,EAAoBO,GAC1C,OAAOtxC,QAAQytC,IAAI+D,EAAclyC,IAAIuxC,IAAiB9wC,KAAK,IAAM8lC,IAErE,EAACb,EAEDkI,iBAAA,SAAiB1H,GACf,OAAO6L,EAAAtoC,UAAMmkC,iBAAgBvpC,KAAC,KAAA6hC,GAASzlC,KAAKm1B,GACtCA,EAAK6X,SACHvC,EAAiBhF,GACZtQ,EAIFuV,EAAQjF,EAAS,QAAQzlC,KAAKiqC,GAChB,MAAfA,EAAIzG,OAIC,CACLA,OAAQC,EAAmBliC,OAMxB4zB,GAGJA,EAEX,EAAC8P,EAEDoI,yBAAA,SAAyB5H,GACvB,OAAO6L,EAAAtoC,UAAMqkC,yBAAwBzpC,KAAC,KAAA6hC,GAASzlC,KAAKm1B,GAC9CA,EAAK6X,SACHvC,EAAiBhF,GACZtQ,EAIFuV,EAAQjF,EAAS,QAAQzlC,KAAKiqC,GAChB,MAAfA,EAAIzG,OAIC,CACLA,OAAQC,EAAmBliC,OAMxB4zB,GAGJA,EAEX,EAACyQ,CAAA,CA/FoB,CAASyF,GAoGzB,MAAMtF,EAAY2L,IACvBxsB,EAAWwsB,GAGAtL,EAAe,CAC1BpP,QAASyO,GAAWvgB,EAAS+qB,SAASxK,GAGtC3mC,2BAA4B2mC,GAC1BvgB,EAASpmB,2BAA2B2mC,GACtC1mC,SAAU0mC,GAAWvgB,EAASnmB,SAAS0mC,GAEvCzmC,aAAc,SAACymC,EAAS/lC,GAAY,YAAL,IAAPA,IAAAA,EAAU,CAAC,GACjCwlB,EAASlmB,aAAaymC,EAAS/lC,EAAQ,EACzCuwC,SAAUxK,GAAWvgB,EAAS+qB,SAASxK,GACvCwL,eAAgBxL,GAAWvgB,EAAS+rB,eAAexL,GACnDsL,SAAUtL,GAAWvgB,EAAS6rB,SAAStL,GACvCgI,YAAaA,IAAMvoB,EAASuoB,eAG9B,QAEO,SAAS3G,IACd,OAAI5hB,EACKA,EAASymB,cAET,CAAC,CAEZ,CAEO,SAAS3E,IACd,OAAI9hB,EACKA,EAAS8mB,SAET,CAAC,CAEZ,C,uBC98BA/sC,EAAQ0vC,WAAa,CACnB,gCAAiCgD,IAAM,+DACvC,kCAAmCC,IAAM,oHACzC,kCAAmCC,IAAM,0FACzC,mCAAoCC,IAAM,+DAC1C,mCAAoCC,IAAM,iFAC1C,iCAAkCC,IAAM,iFACxC,qCAAsCC,IAAM,qHAC5C,uCAAwCC,IAAM,+D,oCCLhDjzC,EAAQ,GAAuBA,EAAQ,QAAgB,EACvD,IAAImwB,EAAiB,EAAQ,MAC7BnwB,EAAQ,GAAgBmwB,EAAejH,cACvC,IAAIgqB,EAAwB,EAAQ,MACpClzC,EAAQ,GAAuBkzC,EAAsBnjB,oB,iNCN4J,SAASjmB,IAAI,OAAOA,EAAE5F,OAAOC,OAAOD,OAAOC,OAAOC,OAAO,SAASI,GAAG,IAAI,IAAIF,EAAE,EAAEA,EAAEC,UAAU5D,OAAO2D,IAAI,CAAC,IAAID,EAAEE,UAAUD,GAAG,IAAI,IAAIG,KAAKJ,EAAEH,OAAO6F,UAAUrF,eAAeC,KAAKN,EAAEI,KAAKD,EAAEC,GAAGJ,EAAEI,GAAG,CAAC,OAAOD,CAAC,EAAEsF,EAAElF,MAAM4K,KAAKjL,UAAU,CAAC,SAAS9B,EAAE+B,GAAG,IAAIF,EAAEE,GAAG,IAAIH,EAAE,GAAGI,EAAE,GAAG,MAAM4X,EAAE/X,EAAEQ,QAAQ,MAAM,IAAIuX,IAAI5X,EAAEH,EAAEsvB,MAAMvX,GAAG/X,EAAEA,EAAEsvB,MAAM,EAAEvX,IAAI,MAAMiB,EAAEhZ,EAAEQ,QAAQ,KAAK,OAAO,IAAIwY,IAAIjZ,EAAEC,EAAEsvB,MAAMtW,GAAGhZ,EAAEA,EAAEsvB,MAAM,EAAEtW,IAAI,CAAC5I,SAASpQ,EAAE8qB,OAAO,MAAM/qB,EAAE,GAAGA,EAAEmd,KAAK,MAAM/c,EAAE,GAAGA,EAAE,CAAC,MAAM8K,EAAE,6BAA6BP,EAAExK,IAAI,GAAG,iBAAiBA,EAAE,OAAO,CAACA,GAAG+K,EAAE8I,KAAK7T,GAAX,CAAeA,IAAI0K,EAAE,IAA+F,OAAcgC,EAAE,IAAmG,OAAgB,SAASF,EAAExM,EAAEF,EAAE4K,KAAK,IAAI7K,EAAE,IAAI2K,EAAExK,GAAG,OAAOA,EAAE,GAAGA,EAAE8e,WAAW,OAAO9e,EAAE8e,WAAW,OAAO,OAAO9e,EAAE,MAAMC,EAAE,OAAOJ,EAAE,MAAMC,EAAEA,EAAE4M,KAAK7M,EAAE,IAAI,MAAM,GAAG,MAAMI,GAAGA,EAAEy7B,SAAS,KAAKz7B,EAAEmvB,MAAM,GAAG,GAAGnvB,IAAID,EAAE8e,WAAW,KAAK9e,EAAE,IAAIA,KAAK,CAAC,MAAMgN,EAAEhN,GAAG,MAAMA,OAAE,EAAOA,EAAE8e,WAAW,KAA4E,SAASrT,EAAEzL,EAAEF,GAAG,MAAMoQ,SAASrQ,EAAE+qB,OAAO3qB,EAAE+c,KAAKnF,GAAG5Z,EAAE+B,GAAG,MAAM,IAAG,OAAEH,EAAEC,KAAKG,IAAI4X,GAAG,CAAC,MAAMhL,EAAE,CAAC7M,EAAEF,IAAI,iBAAiBE,EAAEA,EAAEwK,EAAExK,GAAGgN,EAAEhN,GAAG,SAASA,GAAG,MAAMF,EAAE0M,EAAExM,GAAGH,EAAlL,SAAwL,OAAgC4L,EAAE3L,EAAED,EAAI,CAAvE,CAAyEG,GAAG,SAASA,EAAEF,GAAG,GAAGkN,EAAEhN,GAAG,OAAOA,EAAE,MAAMC,EAA1Q,SAAgR4X,GAAE,aAAE7X,EAAEF,GAAG,OAAgC2L,EAAEoM,EAAE5X,EAAI,CAA5F,CAA8FD,EAAEF,GAAGE,EAAE+E,EAAE,CAAC,KAAK,WAAW,UAAU,eAAe,kBAAkB,cAAc,WAAW,kBAAkB,QAAQ,UAAU,aAAa,SAAS+F,EAAE9K,GAAG,OAAOwM,EAAExM,EAAE0M,IAAI,CAAC,MAAMxO,EAAE,CAACywC,gBAAgB,SAASC,YAAY,SAASC,gBAAgB,QAAQ,SAASzjC,EAAEpL,GAAgB,OAAO,gBAAgB,WAAE,KAAK,EAAE8O,SAASjP,KAAkB,gBAAgBuT,EAAE9N,EAAE,CAAC,EAAEtF,EAAE,CAAC8uC,UAAUjvC,KAAK,CAAC,MAAMuT,UAAU,YAAY,WAAAic,CAAYrvB,GAAG29B,MAAM39B,GAAGgL,KAAK+jC,gBAAgB,EAAEtR,mBAAmBz9B,EAAEw9B,UAAU19B,MAAMkL,KAAKrI,MAAMksC,gBAAgB7uC,EAAEF,GAAG,CAAC4gB,UAAU,CAAC1V,KAAKrI,MAAM+d,UAAU1V,KAAKrI,MAAMgsC,iBAAiBzyC,OAAOkG,SAAS2Q,KAAK,KAAK0N,MAAMnb,EAAE,CAAC,EAAE0F,KAAKrI,MAAM8d,MAAMzV,KAAKrI,MAAMisC,cAAc,KAAK,IAAI9uC,GAAE,EAAG,oBAAoB4E,QAAQA,OAAOsqC,uBAAuBlvC,GAAE,GAAIkL,KAAK7L,MAAM,CAAC8vC,YAAYnvC,GAAGkL,KAAKkkC,cAAc,KAAKlkC,KAAKmkC,UAAUnkC,KAAKmkC,UAAUvvC,KAAKoL,KAAK,CAAC,SAAAokC,GAAY,IAAIpvC,EAAE0E,OAAOoK,SAASoB,SAASxL,OAAOoK,SAAS8b,OAAO5f,KAAKrI,MAAMmsC,WAAW9jC,KAAKrI,MAAMmsC,UAAU5+B,WAAWlQ,EAAEgL,KAAKrI,MAAMmsC,UAAU5+B,SAASlF,KAAKrI,MAAMmsC,UAAUlkB,QAAQ,MAAM9qB,EAAE7B,EAAE4O,EAAE7B,KAAKrI,MAAMm6B,GAAG98B,IAAIH,EAAEC,EAAEoQ,SAASpQ,EAAE8qB,OAAO,GAAG5qB,IAAIH,EAAE,OAAO6iC,UAAUnP,QAAQ1zB,EAAE,CAAC,oBAAA4nB,GAAuB,IAAIzc,KAAKqkC,GAAG,OAAO,MAAM5tB,SAASzhB,EAAEsvC,GAAGxvC,GAAGkL,KAAKqkC,GAAGrkC,KAAKkkC,eAAelkC,KAAKkkC,cAAczC,QAAQzsC,EAAEuvC,UAAUzvC,GAAGE,EAAEwvC,YAAY,CAAC,SAAAL,CAAUnvC,GAAGgL,KAAKrI,MAAM26B,UAAU59B,OAAO6F,UAAUrF,eAAeC,KAAK6K,KAAKrI,MAAM26B,SAAS,WAAWtyB,KAAKrI,MAAM26B,SAASt3B,QAAQhG,EAAEgL,KAAKrI,MAAM26B,UAAUtyB,KAAKrI,MAAM26B,SAASt9B,GAAGgL,KAAK7L,MAAM8vC,aAAajvC,IAAIgL,KAAKqkC,GAAG,EAAErvC,EAAEF,KAAK,MAAMD,EAAE,IAAI6E,OAAOsqC,qBAAqBnvC,IAAIA,EAAEsM,QAAQtM,IAAIG,IAAIH,EAAE4b,QAAQ3b,EAAED,EAAE4vC,gBAAgB5vC,EAAE6vC,kBAAkB,OAAO,OAAO7vC,EAAE8vC,QAAQ3vC,GAAG,CAACyhB,SAAS5hB,EAAEyvC,GAAGtvC,EAAG,EAAtK,CAAwKA,EAAEA,IAAIA,EAAEgL,KAAKkkC,cAAclkC,KAAKokC,YAAYpkC,KAAKkkC,eAAelkC,KAAKkkC,cAAczC,UAAU,CAAC,MAAA5kB,GAAS,MAAM7nB,EAAEgL,KAAKrI,OAAOm6B,GAAGj9B,EAAE09B,SAASt9B,EAAE+K,KAAK+jC,gBAAgBrR,QAAQ5kB,EAAE82B,aAAa7kC,EAAE5L,MAAMuL,EAAE+D,QAAQ/B,EAAEoiC,UAAUtiC,GAAGxM,EAAEgN,EAAE,SAAShN,EAAEF,GAAG,GAAG,MAAME,EAAE,MAAM,CAAC,EAAE,IAAIH,EAAEI,EAAE4X,EAAE,CAAC,EAAEiB,EAAEpZ,OAAO0F,KAAKpF,GAAG,IAAIC,EAAE,EAAEA,EAAE6Y,EAAE3c,OAAO8D,IAAIH,EAAEQ,QAAQT,EAAEiZ,EAAE7Y,KAAK,IAAI4X,EAAEhY,GAAGG,EAAEH,IAAI,OAAOgY,CAAC,CAAjI,CAAmI7X,EAAE+E,GAAgNiT,EAAEnL,EAAEhN,EAAE2M,EAAE0D,UAAU,OAAO1F,EAAEwN,GAAgB,gBAAgB,OAAE1S,EAAE,CAACw3B,GAAG9kB,EAAE7Y,MAAMuL,EAAE6yB,SAASt9B,EAAEq9B,SAAStyB,KAAKmkC,UAAUS,aAAa5vC,IAAI+K,GAAGA,EAAE/K,GAAG,MAAMF,EAAE7B,EAAE+Z,GAAG0qB,UAAU4K,SAASxtC,EAAEoQ,SAASpQ,EAAE8qB,SAAS8S,QAAQ19B,IAAI,GAAG8Y,GAAGA,EAAE9Y,KAAK,IAAIA,EAAE+oB,QAAQ/d,KAAKrI,MAAM8Y,QAAQzb,EAAEqpB,kBAAkBrpB,EAAEkpB,SAASlpB,EAAEgpB,QAAQhpB,EAAEipB,SAASjpB,EAAEmpB,UAAU,CAACnpB,EAAE+qB,iBAAiB,IAAIjrB,EAAE4M,EAAE,MAAM7M,EAAEk8B,UAAU/jB,KAAKxL,EAAE0D,SAAS,kBAAkBxD,GAAG7M,IAAIC,GAAE,GAAI4E,OAAOm+B,YAAY7qB,EAAE,CAAC7Y,MAAMuL,EAAE+D,QAAQ3O,GAAG,CAAC,OAAM,IAAKkN,IAAiB,gBAAgB,IAAI1H,EAAE,CAAC4kB,KAAKlS,GAAGhL,GAAG,EAAEoG,EAAE2U,UAAUziB,EAAE,CAAC,EAAEpH,EAAE,CAACw/B,QAAQ,OAAOZ,GAAG,SAAS7U,WAAWxZ,QAAQ,OAAOtP,MAAM,WAAW,MAAMkO,EAAE,aAAa,CAACrN,EAAEH,IAAiB,gBAAgBuL,EAAE9F,EAAE,CAACg4B,SAASz9B,GAAGG,KAAK2M,EAAE,CAAC3M,EAAEF,KAAK4E,OAAOm+B,YAAYh2B,EAAE7M,EAAE0E,OAAOoK,SAASoB,UAAUpQ,G,kICGv7I,MAAM26B,GCgB+Bv7B,EDhBkB,cCgBZ2wC,EDhB2B,CAAC,ECiBjE1/B,EAAMpD,oBAjBgB,SAAC7N,EAAM2wC,GAajC,YAb6C,IAAZA,IAAAA,EAAe,MAE3C5yC,WAAWy/B,mBACdz/B,WAAWy/B,iBAAmB,CAAC,GAG5Bz/B,WAAWy/B,iBAAiBx9B,KAC/BjC,WAAWy/B,iBAAiBx9B,GAAQiR,EAAMpD,oBACxC7N,EACA2wC,IAIG5yC,WAAWy/B,iBAAiBx9B,EACrC,CAIW6N,CAAoB7N,EAAM2wC,GAG5B1/B,EAAAA,cAAoB0/B,IAL7B,IAAqC3wC,EAAM2wC,EDd3C,SAASC,EAAuB7nC,GAA4C,IAA3C,gBAAE8nC,EAAe,KAAEre,EAAI,MAAEse,EAAK,OAAEnoB,GAAQ5f,EACvE,MAAMgoC,EAAYve,EACdA,EAAKA,KACLqe,EAAgBC,IAAUD,EAAgBC,GAAOte,KAErD,OACEvhB,EAAAA,cAACA,EAAAA,SAAc,KACZ8/B,GAAapoB,EAAOooB,IACnBA,GAAa9/B,EAAAA,cAAA,WAAK,yBAG1B,CAKA,MAAM+/B,EAAcvtC,IAClB,MAAM,KAAE+uB,EAAI,MAAEse,EAAK,OAAEnoB,EAAM,SAAEhe,GAAalH,EAS1C,OACEwN,EAAAA,cAACsqB,EAAmB9yB,SAAQ,KACzBooC,GACC5/B,EAAAA,cAAC2/B,EAAuB,CACtBpe,KAAMA,EACNse,MAAOA,EACPnoB,OAAQA,GAAUhe,EAClBkmC,gBAAiBA,MAcrBI,EAAiBH,IAAU,IAADI,EAErBjgC,EAAAA,WAUT,MAAMxS,EAAUwS,EAAAA,WAAiBsqB,GAKjC,GAAI4V,MAAMC,OAAON,IACf,MAAM,IAAIlyC,MAAM,iLAIMkyC,WAIxB,GAAkB,QAAlBI,EAAIzyC,EAAQqyC,UAAM,IAAAI,GAAdA,EAAgB1e,KAClB,OAAO/zB,EAAQqyC,GAAOte,KAEtB,MAAM,IAAI5zB,MACR,wM,kFElFN,SAASo1B,EAAelzB,EAAG6X,GACzB7X,EAAEuF,UAAY7F,OAAO+X,OAAOI,EAAEtS,WAAYvF,EAAEuF,UAAU8pB,YAAcrvB,GAAG,OAAeA,EAAG6X,EAC3F,C,kCCDArc,EAAQ6wB,gBAAkB,CACxBkkB,SAAU,IACVC,aAAc,GACdra,gBAAiB,QACjBsa,sBAAsB,EACtBC,cAAc,EACdC,kBAAkB,EAClBC,UAAU,EACVC,UAAU,EACVC,WAAW,EACXC,QAAS,OACTC,SAAU,QACVC,uBAAuB,EACvBC,gBAAgB,GAElB11C,EAAQ21C,UAAY,mBACpB31C,EAAQ25B,WAAa,0BACrB35B,EAAQ65B,kBAAoB,4BAC5B75B,EAAQ45B,qBAAuB,oC,uGCfxB,MAAME,EAAgB,SAAsBrtB,EAEhD6I,GAAgB,IAFiC,SAClDhC,GACD7G,CAWD,C,uBClBA7M,EAAQ,K,oCCGNiT,EAAO7S,QAAU,EAAjB,I,oCCMF,SAAS41C,EAAuBC,GAC9B,MAAO,yBAA2BA,EAAO,4CAA8CA,EAAhF,iFACT,C,6CAGA,IAAIC,EACuB,mBAAXx0C,QAAyBA,OAAOy0C,YAAc,eAS1DC,EAAe,WACjB,OAAOr1B,KAAKs1B,SAAS35B,SAAS,IAAIvL,UAAU,GAAGiH,MAAM,IAAIT,KAAK,IAChE,EAEI2+B,EAAc,CAChBC,KAAM,eAAiBH,IACvBI,QAAS,kBAAoBJ,IAC7BK,qBAAsB,WACpB,MAAO,+BAAiCL,GAC1C,GAOF,SAASM,EAAchtB,GACrB,GAAmB,iBAARA,GAA4B,OAARA,EAAc,OAAO,EAGpD,IAFA,IAAIitB,EAAQjtB,EAE4B,OAAjCplB,OAAOouB,eAAeikB,IAC3BA,EAAQryC,OAAOouB,eAAeikB,GAGhC,OAAOryC,OAAOouB,eAAehJ,KAASitB,CACxC,CAuFA,SAASC,EAAYC,EAAS9lB,EAAgB+lB,GAC5C,IAAI1Z,EAEJ,GAA8B,mBAAnBrM,GAAqD,mBAAb+lB,GAA+C,mBAAbA,GAAmD,mBAAjBnyC,UAAU,GAC/H,MAAM,IAAIjC,MAA8CszC,EAAuB,IAQjF,GAL8B,mBAAnBjlB,QAAqD,IAAb+lB,IACjDA,EAAW/lB,EACXA,OAAiBzpB,QAGK,IAAbwvC,EAA0B,CACnC,GAAwB,mBAAbA,EACT,MAAM,IAAIp0C,MAA8CszC,EAAuB,IAGjF,OAAOc,EAASF,EAATE,CAAsBD,EAAS9lB,EACxC,CAEA,GAAuB,mBAAZ8lB,EACT,MAAM,IAAIn0C,MAA8CszC,EAAuB,IAGjF,IAAIe,EAAiBF,EACjBG,EAAejmB,EACfkmB,EAAmB,GACnBC,EAAgBD,EAChBE,GAAgB,EASpB,SAASC,IACHF,IAAkBD,IACpBC,EAAgBD,EAAiBjjB,QAErC,CAQA,SAAS9vB,IACP,GAAIizC,EACF,MAAM,IAAIz0C,MAA8CszC,EAAuB,IAGjF,OAAOgB,CACT,CA0BA,SAASzuC,EAAUI,GACjB,GAAwB,mBAAbA,EACT,MAAM,IAAIjG,MAA8CszC,EAAuB,IAGjF,GAAImB,EACF,MAAM,IAAIz0C,MAA8CszC,EAAuB,IAGjF,IAAIntC,GAAe,EAGnB,OAFAuuC,IACAF,EAActuC,KAAKD,GACZ,WACL,GAAKE,EAAL,CAIA,GAAIsuC,EACF,MAAM,IAAIz0C,MAA8CszC,EAAuB,IAGjFntC,GAAe,EACfuuC,IACA,IAAI/V,EAAQ6V,EAAchyC,QAAQyD,GAClCuuC,EAAcz3B,OAAO4hB,EAAO,GAC5B4V,EAAmB,IAVnB,CAWF,CACF,CA4BA,SAASzxC,EAASw7B,GAChB,IAAK0V,EAAc1V,GACjB,MAAM,IAAIt+B,MAA8CszC,EAAuB,IAGjF,QAA2B,IAAhBhV,EAAO9uB,KAChB,MAAM,IAAIxP,MAA8CszC,EAAuB,IAGjF,GAAImB,EACF,MAAM,IAAIz0C,MAA8CszC,EAAuB,IAGjF,IACEmB,GAAgB,EAChBH,EAAeD,EAAeC,EAAchW,EAC9C,CAAE,QACAmW,GAAgB,CAClB,CAIA,IAFA,IAAIlvC,EAAYgvC,EAAmBC,EAE1BhtC,EAAI,EAAGA,EAAIjC,EAAUlH,OAAQmJ,IAAK,EAEzCvB,EADeV,EAAUiC,KAE3B,CAEA,OAAO82B,CACT,CA4EA,OAHAx7B,EAAS,CACP0M,KAAMokC,EAAYC,QAEbnZ,EAAQ,CACb53B,SAAUA,EACV+C,UAAWA,EACXrE,SAAUA,EACVmzC,eAnEF,SAAwBC,GACtB,GAA2B,mBAAhBA,EACT,MAAM,IAAI50C,MAA8CszC,EAAuB,KAGjFe,EAAiBO,EAKjB9xC,EAAS,CACP0M,KAAMokC,EAAYE,SAEtB,IAuDSN,GA9CT,WACE,IAAIrpC,EAEA0qC,EAAiBhvC,EACrB,OAAOsE,EAAO,CASZtE,UAAW,SAAmBivC,GAC5B,GAAwB,iBAAbA,GAAsC,OAAbA,EAClC,MAAM,IAAI90C,MAA8CszC,EAAuB,KAGjF,SAASyB,IACHD,EAASt2C,MACXs2C,EAASt2C,KAAKgD,IAElB,CAIA,OAFAuzC,IAEO,CACLzvC,YAFgBuvC,EAAeE,GAInC,IACMvB,GAAgB,WACtB,OAAOtmC,IACT,EAAG/C,CACL,EAaqCuwB,CACvC,CC3XA,MAAMsa,EDifN,SAAyBC,GAIvB,IAHA,IAAIC,EAActzC,OAAO0F,KAAK2tC,GAC1BE,EAAgB,CAAC,EAEZ3tC,EAAI,EAAGA,EAAI0tC,EAAY72C,OAAQmJ,IAAK,CAC3C,IAAIqB,EAAMqsC,EAAY1tC,GAElB,EAMyB,mBAAlBytC,EAASpsC,KAClBssC,EAActsC,GAAOosC,EAASpsC,GAElC,CAEA,IASIusC,EATAC,EAAmBzzC,OAAO0F,KAAK6tC,GAWnC,KAjEF,SAA4BF,GAC1BrzC,OAAO0F,KAAK2tC,GAAU5mC,QAAQ,SAAUxF,GACtC,IAAIsrC,EAAUc,EAASpsC,GAKvB,QAA4B,IAJTsrC,OAAQvvC,EAAW,CACpC4K,KAAMokC,EAAYC,OAIlB,MAAM,IAAI7zC,MAA8CszC,EAAuB,KAGjF,QAEO,IAFIa,OAAQvvC,EAAW,CAC5B4K,KAAMokC,EAAYG,yBAElB,MAAM,IAAI/zC,MAA8CszC,EAAuB,IAEnF,EACF,CAiDIgC,CAAmBH,EACrB,CAAE,MAAOnzC,GACPozC,EAAsBpzC,CACxB,CAEA,OAAO,SAAqBX,EAAOi9B,GAKjC,QAJc,IAAVj9B,IACFA,EAAQ,CAAC,GAGP+zC,EACF,MAAMA,EAcR,IAX2C,IAQvCG,GAAa,EACb/xC,EAAY,CAAC,EAERqgC,EAAK,EAAGA,EAAKwR,EAAiBh3C,OAAQwlC,IAAM,CACnD,IAAI3b,EAAOmtB,EAAiBxR,GACxBsQ,EAAUgB,EAAcjtB,GACxBstB,EAAsBn0C,EAAM6mB,GAC5ButB,EAAkBtB,EAAQqB,EAAqBlX,GAEnD,QAA+B,IAApBmX,EAAiC,CACzBnX,GAAUA,EAAO9uB,KAClC,MAAM,IAAIxP,MAA8CszC,EAAuB,IACjF,CAEA9vC,EAAU0kB,GAAQutB,EAClBF,EAAaA,GAAcE,IAAoBD,CACjD,CAGA,OADAD,EAAaA,GAAcF,EAAiBh3C,SAAWuD,OAAO0F,KAAKjG,GAAOhD,QACtDmF,EAAYnC,CAClC,CACF,CC1jBoBq0C,CAAgB,CAClCt0B,M,QACF,KAEA,QCFA,MAFciN,GAAkB6lB,EAAYc,EAAa3mB,E,oCCQzD,IAAIhc,EAAQ,EAAQ,MAIpB,IAAIgB,EAAW,mBAAsBzR,OAAOmF,GAAKnF,OAAOmF,GAHxD,SAAYC,EAAGC,GACb,OAAQD,IAAMC,IAAM,IAAMD,GAAK,EAAIA,GAAM,EAAIC,IAAQD,GAAMA,GAAKC,GAAMA,CACxE,EAEE0uC,EAAWtjC,EAAMsjC,SACjBriC,EAAYjB,EAAMiB,UAClBwa,EAAkBzb,EAAMyb,gBACxBrsB,EAAgB4Q,EAAM5Q,cA0BxB,SAASm0C,EAAuBhiC,GAC9B,IAAIiiC,EAAoBjiC,EAAKJ,YAC7BI,EAAOA,EAAKhI,MACZ,IACE,IAAIkqC,EAAYD,IAChB,OAAQxiC,EAASO,EAAMkiC,EACzB,CAAE,MAAO9qC,GACP,OAAO,CACT,CACF,CAIA,IAAIoI,EACF,oBAAuBxM,aACvB,IAAuBA,OAAOC,eAC9B,IAAuBD,OAAOC,SAASC,cANzC,SAAgCjB,EAAW2N,GACzC,OAAOA,GACT,EArCA,SAAgC3N,EAAW2N,GACzC,IAAI5H,EAAQ4H,IACVuiC,EAAYJ,EAAS,CAAE/hC,KAAM,CAAEhI,MAAOA,EAAO4H,YAAaA,KAC1DI,EAAOmiC,EAAU,GAAGniC,KACpBoiC,EAAcD,EAAU,GAmB1B,OAlBAjoB,EACE,WACEla,EAAKhI,MAAQA,EACbgI,EAAKJ,YAAcA,EACnBoiC,EAAuBhiC,IAASoiC,EAAY,CAAEpiC,KAAMA,GACtD,EACA,CAAC/N,EAAW+F,EAAO4H,IAErBF,EACE,WAEE,OADAsiC,EAAuBhiC,IAASoiC,EAAY,CAAEpiC,KAAMA,IAC7C/N,EAAU,WACf+vC,EAAuBhiC,IAASoiC,EAAY,CAAEpiC,KAAMA,GACtD,EACF,EACA,CAAC/N,IAEHpE,EAAcmK,GACPA,CACT,EAoBAlO,EAAQgK,0BACN,IAAW2K,EAAM3K,qBAAuB2K,EAAM3K,qBAAuB0L,C,oCC5DxD,SAASyyB,EAAY/0B,EAAK2F,GACvC,YAD6C,IAANA,IAAAA,EAAS,IAC3CA,EAID3F,IAAQ2F,EACH,IAGL3F,EAAIkQ,WAAW,GAAGvK,MACb3F,EAAIwgB,MAAM7a,EAAOpY,QAGnByS,EAXEA,CAYX,C,iECjBApT,EAAQoQ,YAAa,EACrBpQ,EAAQ6wB,gBAAkB7wB,EAAQkxB,uBAAoB,EAEtDlxB,EAAQkxB,kBADgB,YAYxBlxB,EAAQ6wB,gBAVc,CACpB0nB,UAAW,CACTC,MAAO,EACPC,QAAQ,EACRC,QAAQ,EACRC,gBAAgB,GAElB5nB,iBAAiB,EACjBH,UAAW,sB,sCCL4bpf,EAAxb9O,EAAEpB,OAAOC,IAAI,iBAAiBgO,EAAEjO,OAAOC,IAAI,gBAAgB0O,EAAE3O,OAAOC,IAAI,kBAAkB+C,EAAEhD,OAAOC,IAAI,qBAAqByP,EAAE1P,OAAOC,IAAI,kBAAkB4P,EAAE7P,OAAOC,IAAI,kBAAkB2P,EAAE5P,OAAOC,IAAI,iBAAiBwN,EAAEzN,OAAOC,IAAI,wBAAwByN,EAAE1N,OAAOC,IAAI,qBAAqB8P,EAAE/P,OAAOC,IAAI,kBAAkB8C,EAAE/C,OAAOC,IAAI,uBAAuB2N,EAAE5N,OAAOC,IAAI,cAAc4N,EAAE7N,OAAOC,IAAI,cAAciD,EAAElD,OAAOC,IAAI,mBACtb,SAAS+N,EAAE7M,GAAG,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAIgC,EAAEhC,EAAEiP,SAAS,OAAOjN,GAAG,KAAK/B,EAAE,OAAOD,EAAEA,EAAEqP,MAAQ,KAAK7B,EAAE,KAAKe,EAAE,KAAK1M,EAAE,KAAK+M,EAAE,KAAKhN,EAAE,OAAO5B,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAEiP,UAAY,KAAK3C,EAAE,KAAKmC,EAAE,KAAKlC,EAAE,KAAKG,EAAE,KAAKD,EAAE,KAAKiC,EAAE,OAAO1O,EAAE,QAAQ,OAAOgC,GAAG,KAAK8K,EAAE,OAAO9K,EAAE,CAAC,CADkM+M,EAAElQ,OAAOC,IAAI,0BAE1WvB,EAAQoM,kBAAkB,SAAS3J,GAAG,OAAO6M,EAAE7M,KAAKyO,CAAC,C,qKCXnK,EAAe0nC,IACb,QAAsB1xC,IAAlB0xC,EACF,OAAOA,EAET,IAAKhhB,EAAMxI,EAAS,IAAMwpB,EAAc5gC,MAAM,KAK9C,OAJIoX,IACFA,EAAS,IAAMA,GAGJ,MAATwI,EACK,IAAMxI,EAEsB,MAAjCwI,EAAKzgB,OAAOygB,EAAKj3B,OAAS,GACrBi3B,EAAKhE,MAAM,GAAI,GAAKxE,EAEtBwI,EAAOxI,CACf,E,UCXD,MAAMypB,EAAY,IAAIh3C,IACtB,IAAIyqC,EAAa,GAEjB,MAAMwM,EAAeC,IACnB,IAAIC,EAAiBD,EAGrB,IAAoB,IAFDA,EAAYj0C,QAAQ,KAEhB,CACrB,MAAO8yB,EAAMqhB,GAAMF,EAAY/gC,MAAM,KACrCghC,EAAiB,GAAGphB,KAAQ6B,mBAAmBwf,IACjD,CAEA,MAAMvkC,EAAW+sB,mBAAmBuX,GAUpC,OAPwB7Q,EAAAA,EAAAA,GACtBzzB,EACA+sB,mBAAmByG,SAGlBlwB,MAAM,KAAK,IAKhB,SAASkhC,EAAWthB,GAElB,OACEA,EAAKtU,WAAW,MAChBsU,EAAKtU,WAAW,aAChBsU,EAAKtU,WAAW,WAETsU,EAIF,IAAI0I,IACT1I,EACA1uB,OAAOoK,SAASob,MAAQxlB,OAAOoK,SAASob,KAAKwR,SAAS,KAAO,GAAK,MAClExrB,QACJ,CAOO,MAAM04B,EAAgBl/B,IAC3Bo+B,EAAap+B,GAWFo6B,EAAgByQ,IAC3B,MAAMI,EAAkBC,EAAUL,GAE5BM,EAAY/M,EAAWhsC,IAAImM,IAA0B,IAAzB,KAAEmrB,EAAI,UAAE6O,GAAWh6B,EACnD,MAAO,CACLmrB,KAAM6O,EACN6S,aAAc1hB,KAIZA,GAAO2hB,EAAAA,EAAAA,MAAKF,EAAWF,GAE7B,OAAIvhB,EACK4hB,EAAkB5hB,EAAK4J,MAAM8X,cAG/B,MAYI7Z,EAAkBsZ,IAC7B,MAAMI,EAAkBC,EAAUL,GAE5BM,EAAY/M,EAAWhsC,IAAI08B,IAA0B,IAAzB,KAAEpF,EAAI,UAAE6O,GAAWzJ,EACnD,MAAO,CACLpF,KAAM6O,EACN6S,aAAc1hB,KAIZA,GAAO2hB,EAAAA,EAAAA,MAAKF,EAAWF,GAE7B,OAAIvhB,EACKA,EAAKgH,OAGP,CAAC,GAWGuP,EAAW4K,IACtB,MAAMI,EAAkBL,EAAaI,EAAWH,IAChD,GAAIF,EAAUh7B,IAAIs7B,GAChB,OAAON,EAAU92C,IAAIo3C,GAGvB,MAAMnW,GAAWD,EAAAA,EAAAA,GAAwBgW,GACzC,GAAI/V,EACF,OAAOmL,EAASnL,EAASa,QAG3B,IAAI4V,EAAYnR,EAAc6Q,GAQ9B,OANKM,IACHA,EAAYL,EAAUL,IAGxBF,EAAU72C,IAAIm3C,EAAiBM,GAExBA,GAUIL,EAAYL,IAGvB,IAAIU,EAFoBX,EAAaI,EAAWH,IAShD,MANkB,gBAAdU,IACFA,EAAY,KAGdA,EAAYD,EAAkBC,GAEvBA,E,oCC3JP5mC,EAAO7S,QAAU,EAAjB,K,oCCDFA,EAAQoQ,YAAa,EACrBpQ,EAAQ05C,uBAIR,SAAgC9sB,GAC9B,IAAKA,EAAiBjsB,OACpB,OAEF,MAAMg5C,EAAkBxwC,SAASixB,cAAc,0BACzCwf,EAAkBzwC,SAASixB,cAAc,kDAC3Cuf,GACFA,EAAgB1gB,SAEd2gB,GACFA,EAAgB3gB,SAElB,MAAM4gB,GAAW,EAAIC,EAAantB,aAAaC,GACzCmtB,EAAU5wC,SAASC,cAAc,UACvC2wC,EAAQxgB,QAAQygB,UAAY,GAC5BD,EAAQrd,WAAY,EAAIud,EAAajmB,kBAAkB,CACrDjH,QAAS8sB,IAEX1wC,SAASgV,KAAKO,YAAYq7B,EAC5B,EAtBA,IAAIE,EAAe,EAAQ,MACvBH,EAAe,EAAQ,K,oECF3B,MCgBA,SAAcrL,GAGb,OAFAA,EAAMA,GAAOvqC,OAAO+X,OAAO,MAEpB,CAQNi+B,GAAI,SAAYpoC,EAAc23B,IAC5BgF,EAAI38B,KAAU28B,EAAI38B,GAAQ,KAAKtJ,KAAKihC,EACtC,EASA0Q,IAAK,SAAaroC,EAAc23B,GAC3BgF,EAAI38B,IACP28B,EAAI38B,GAAMuN,OAAOovB,EAAI38B,GAAMhN,QAAQ2kC,KAAa,EAAG,EAErD,EAUAnF,KAAM,SAAcxyB,EAAcsoC,IAChC3L,EAAI38B,IAAS,IAAI8hB,QAAQtzB,IAAI,SAAUmpC,GAAWA,EAAQ2Q,EAAM,IAChE3L,EAAI,MAAQ,IAAI7a,QAAQtzB,IAAI,SAAUmpC,GAAWA,EAAQ33B,EAAMsoC,EAAM,EACvE,EAEF,CD1DgBC,E,uBEFhBxnC,EAAO7S,QAAU,CAAC,CACZO,OAAQX,EAAQ,MAChBa,QAAS,CAAC,QAAU,KACpB,CACAF,OAAQX,EAAQ,MAChBa,QAAS,CAAC,QAAU,GAAG,wBAA0B,6BAA6B,UAAY,CAAC,MAAQ,EAAE,QAAS,EAAK,QAAS,EAAM,gBAAiB,GAAM,iBAAkB,EAAK,UAAY,wBAC5L,CACAF,OAAQX,EAAQ,MAChBa,QAAS,CAAC,QAAU,GAAG,aAAc,EAAK,UAAW,EAAK,QAAS,EAAK,UAAY,GAAG,2BAA4B,EAAK,oBAAsB,GAAG,MAAO,EAAM,uBAAwB,IACtL,CACAF,OAAQX,EAAQ,MAChBa,QAAS,CAAC,QAAU,GAAG,KAAO,YAAY,WAAa,YAAY,YAAc,sBAAsB,UAAY,IAAI,iBAAmB,UAAU,YAAc,UAAU,QAAU,aAAa,KAAO,qBAAqB,QAAS,EAAK,qBAAsB,EAAK,mBAAqB,QAAQ,YAAc,YAAY,iBAAkB,EAAK,YAAc,qCACpW,CACAF,OAAQX,EAAQ,MAChBa,QAAS,CAAC,QAAU,GAAG,SAAW,IAAI,QAAU,OAAO,aAAe,uBAAuB,QAAU,IAAI,cAAe,EAAK,sBAAuB,EAAK,kBAAmB,EAAM,gBAAkB,QAAQ,UAAW,EAAM,UAAW,EAAM,SAAW,QAAQ,uBAAwB,EAAM,gBAAiB,IAClT,CACAF,OAAQX,EAAQ,MAChBa,QAAS,CAAC,QAAU,GAAG,KAAO,q2BAA+2B,UAAY,iBAAiB,cAAe,EAAK,eAAgB,EAAK,SAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,QAAU,IACxgC,CACAF,OAAQX,EAAQ,MAChBa,QAAS,CAAC,QAAU,KACpB,CACAF,OAAQX,EAAQ,MAChBa,QAAS,CAAC,QAAU,K,oECvB1B,MAAMH,EAAM,IAAI0pB,QAET,SAASyU,IACd,MAAM6b,EAAiB16C,EAAQ,MAY/B,MAAO,CAAEysB,OAVMA,CAACC,EAAWwnB,KACzB,IAAIpkB,EAAOpvB,EAAIyB,IAAI+xC,GACdpkB,GACHpvB,EAAI0B,IAAI8xC,EAAKpkB,EAAO4qB,EAAeC,WAAWzG,IAEhDpkB,EAAKrD,OAAOC,IAKG0a,QAFDA,CAAC1a,EAAWwnB,IAAOwG,EAAeE,YAAY1G,EAAIxnB,GAGpE,C,4FChBO,MAAMmuB,EAAe,CAC1B/2B,MAAO,SAIIg3B,EAAY,WACZC,EAAW,UAGXC,EAAW,CACtB9oC,KAAM4oC,EACNxkB,KAAM,CACJxS,MAAO,UAIEm3B,EAAU,CACrB/oC,KAAM6oC,EACNzkB,KAAM,CACJxS,MAAO,SA2BX,KAtBgB,SAAC/f,EAAsBi9B,GACrC,YADoB,IAALj9B,IAAAA,EAAQ82C,GACf7Z,EAAO9uB,MACb,KAAK4oC,EACH,MAAO,IACF/2C,EACH+f,MAAO,SAGX,KAAKi3B,EACH,MAAO,IACFh3C,EACH+f,MAAO,QAGX,QACE,MAAO,IACF/f,GAIX,C,oCCzCEkP,EAAO7S,QAAU,EAAjB,K","sources":["webpack://gatsby-starter-hoodie/./.cache/api-runner-browser.js","webpack://gatsby-starter-hoodie/./node_modules/react-redux/es/utils/batch.js","webpack://gatsby-starter-hoodie/./node_modules/react-redux/es/components/Context.js","webpack://gatsby-starter-hoodie/./node_modules/react-redux/es/hooks/useReduxContext.js","webpack://gatsby-starter-hoodie/./node_modules/react-redux/es/utils/useSyncExternalStore.js","webpack://gatsby-starter-hoodie/./node_modules/react-redux/es/hooks/useSelector.js","webpack://gatsby-starter-hoodie/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://gatsby-starter-hoodie/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://gatsby-starter-hoodie/./node_modules/react-redux/es/connect/selectorFactory.js","webpack://gatsby-starter-hoodie/./node_modules/react-redux/es/connect/wrapMapToProps.js","webpack://gatsby-starter-hoodie/./node_modules/react-redux/es/connect/invalidArgFactory.js","webpack://gatsby-starter-hoodie/./node_modules/react-redux/es/connect/mergeProps.js","webpack://gatsby-starter-hoodie/./node_modules/react-redux/es/utils/Subscription.js","webpack://gatsby-starter-hoodie/./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","webpack://gatsby-starter-hoodie/./node_modules/react-redux/es/utils/shallowEqual.js","webpack://gatsby-starter-hoodie/./node_modules/react-redux/es/components/connect.js","webpack://gatsby-starter-hoodie/./node_modules/react-redux/es/connect/mapStateToProps.js","webpack://gatsby-starter-hoodie/./node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack://gatsby-starter-hoodie/./node_modules/react-redux/es/utils/bindActionCreators.js","webpack://gatsby-starter-hoodie/./node_modules/react-redux/es/components/Provider.js","webpack://gatsby-starter-hoodie/./node_modules/react-redux/es/hooks/useStore.js","webpack://gatsby-starter-hoodie/./node_modules/react-redux/es/hooks/useDispatch.js","webpack://gatsby-starter-hoodie/./node_modules/react-redux/es/index.js","webpack://gatsby-starter-hoodie/./node_modules/react-server-dom-webpack/cjs/react-server-dom-webpack.production.min.js","webpack://gatsby-starter-hoodie/./node_modules/invariant/browser.js","webpack://gatsby-starter-hoodie/./node_modules/gatsby-plugin-catch-links/node_modules/escape-string-regexp/index.js","webpack://gatsby-starter-hoodie/./.cache/register-service-worker.js","webpack://gatsby-starter-hoodie/./.cache/create-content-digest-browser-shim.js","webpack://gatsby-starter-hoodie/./.cache/public-page-renderer-prod.js","webpack://gatsby-starter-hoodie/./.cache/slice/context.js","webpack://gatsby-starter-hoodie/./node_modules/gatsby-plugin-styled-components/gatsby-browser.js","webpack://gatsby-starter-hoodie/./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","webpack://gatsby-starter-hoodie/./node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js","webpack://gatsby-starter-hoodie/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://gatsby-starter-hoodie/./.cache/public-page-renderer.js","webpack://gatsby-starter-hoodie/./node_modules/@emotion/stylis/dist/stylis.browser.esm.js","webpack://gatsby-starter-hoodie/./node_modules/@emotion/unitless/dist/unitless.browser.esm.js","webpack://gatsby-starter-hoodie/./node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","webpack://gatsby-starter-hoodie/./node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","webpack://gatsby-starter-hoodie/./node_modules/styled-components/dist/styled-components.browser.esm.js","webpack://gatsby-starter-hoodie/./node_modules/react-is/cjs/react-is.production.min.js","webpack://gatsby-starter-hoodie/./node_modules/shallowequal/index.js","webpack://gatsby-starter-hoodie/./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack://gatsby-starter-hoodie/./node_modules/gatsby/dist/internal-plugins/partytown/utils/get-forwards.js","webpack://gatsby-starter-hoodie/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://gatsby-starter-hoodie/./node_modules/gatsby-plugin-catch-links/catch-links.js","webpack://gatsby-starter-hoodie/./node_modules/gatsby-plugin-catch-links/gatsby-browser.js","webpack://gatsby-starter-hoodie/./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack://gatsby-starter-hoodie/./node_modules/gatsby-plugin-react-redux/gatsby-browser.js","webpack://gatsby-starter-hoodie/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://gatsby-starter-hoodie/./node_modules/gatsby-react-router-scroll/session-storage.js","webpack://gatsby-starter-hoodie/./node_modules/react-is/index.js","webpack://gatsby-starter-hoodie/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://gatsby-starter-hoodie/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://gatsby-starter-hoodie/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://gatsby-starter-hoodie/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://gatsby-starter-hoodie/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://gatsby-starter-hoodie/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://gatsby-starter-hoodie/./node_modules/gatsby-plugin-manifest/get-manifest-pathname.js","webpack://gatsby-starter-hoodie/./node_modules/@builder.io/partytown/integration/index.cjs","webpack://gatsby-starter-hoodie/./node_modules/react-redux/node_modules/react-is/index.js","webpack://gatsby-starter-hoodie/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://gatsby-starter-hoodie/./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://gatsby-starter-hoodie/./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","webpack://gatsby-starter-hoodie/./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","webpack://gatsby-starter-hoodie/./node_modules/@babel/runtime/helpers/esm/construct.js","webpack://gatsby-starter-hoodie/./.cache/slice/server-slice-renderer.js","webpack://gatsby-starter-hoodie/./.cache/slice/server-slice.js","webpack://gatsby-starter-hoodie/./.cache/slice/inline-slice.js","webpack://gatsby-starter-hoodie/./.cache/slice.js","webpack://gatsby-starter-hoodie/./.cache/gatsby-browser-entry.js","webpack://gatsby-starter-hoodie/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://gatsby-starter-hoodie/./node_modules/gatsby-script/dist/index.modern.mjs","webpack://gatsby-starter-hoodie/./node_modules/gatsby-remark-images/gatsby-browser.js","webpack://gatsby-starter-hoodie/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://gatsby-starter-hoodie/./.cache/head/components/fire-callback-in-effect.js","webpack://gatsby-starter-hoodie/./.cache/head/constants.js","webpack://gatsby-starter-hoodie/./.cache/head/utils.js","webpack://gatsby-starter-hoodie/./.cache/head/head-export-handler-for-browser.js","webpack://gatsby-starter-hoodie/./.cache/page-renderer.js","webpack://gatsby-starter-hoodie/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://gatsby-starter-hoodie/./node_modules/gatsby-plugin-react-redux/.tmp/createStore.js","webpack://gatsby-starter-hoodie/./node_modules/gatsby-page-utils/dist/apply-trailing-slash-option.js","webpack://gatsby-starter-hoodie/./node_modules/@gatsbyjs/reach-router/dist/index.modern.mjs","webpack://gatsby-starter-hoodie/./.cache/redirect-utils.js","webpack://gatsby-starter-hoodie/./.cache/route-announcer-props.js","webpack://gatsby-starter-hoodie/./.cache/navigation.js","webpack://gatsby-starter-hoodie/./node_modules/shallow-compare/es/index.js","webpack://gatsby-starter-hoodie/./.cache/ensure-resources.js","webpack://gatsby-starter-hoodie/./.cache/production-app.js","webpack://gatsby-starter-hoodie/./node_modules/gatsby-remark-autolink-headers/gatsby-browser.js","webpack://gatsby-starter-hoodie/./.cache/prefetch.js","webpack://gatsby-starter-hoodie/./.cache/loader.js","webpack://gatsby-starter-hoodie/./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack://gatsby-starter-hoodie/./node_modules/gatsby-react-router-scroll/index.js","webpack://gatsby-starter-hoodie/./node_modules/gatsby-link/dist/index.modern.mjs","webpack://gatsby-starter-hoodie/./.cache/static-query.js","webpack://gatsby-starter-hoodie/./.cache/context-utils.js","webpack://gatsby-starter-hoodie/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://gatsby-starter-hoodie/./node_modules/gatsby-remark-images/constants.js","webpack://gatsby-starter-hoodie/./node_modules/gatsby-plugin-manifest/gatsby-browser.js","webpack://gatsby-starter-hoodie/./gatsby-browser.js","webpack://gatsby-starter-hoodie/./node_modules/react-server-dom-webpack/index.js","webpack://gatsby-starter-hoodie/./node_modules/redux/es/redux.js","webpack://gatsby-starter-hoodie/./src/reducers/index.js","webpack://gatsby-starter-hoodie/./src/reducers/createStore.js","webpack://gatsby-starter-hoodie/./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","webpack://gatsby-starter-hoodie/./.cache/strip-prefix.js","webpack://gatsby-starter-hoodie/./node_modules/gatsby-plugin-react-redux/constants.js","webpack://gatsby-starter-hoodie/./node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","webpack://gatsby-starter-hoodie/./.cache/normalize-page-path.js","webpack://gatsby-starter-hoodie/./.cache/find-path.js","webpack://gatsby-starter-hoodie/./node_modules/use-sync-external-store/shim/with-selector.js","webpack://gatsby-starter-hoodie/./node_modules/gatsby/dist/internal-plugins/partytown/utils/inject-partytown-snippet.js","webpack://gatsby-starter-hoodie/./.cache/emitter.js","webpack://gatsby-starter-hoodie/./node_modules/mitt/dist/mitt.es.js","webpack://gatsby-starter-hoodie/./.cache/api-runner-browser-plugins.js","webpack://gatsby-starter-hoodie/./.cache/react-dom-utils.js","webpack://gatsby-starter-hoodie/./src/reducers/theme.js","webpack://gatsby-starter-hoodie/./node_modules/use-sync-external-store/shim/index.js"],"sourcesContent":["const plugins = require(`./api-runner-browser-plugins`)\nconst { getResourceURLsForPathname, loadPage, loadPageSync } =\n require(`./loader`).publicLoader\n\nexports.apiRunner = (api, args = {}, defaultReturn, argTransform) => {\n // Hooks for gatsby-cypress's API handler\n if (process.env.CYPRESS_SUPPORT) {\n if (window.___apiHandler) {\n window.___apiHandler(api)\n } else if (window.___resolvedAPIs) {\n window.___resolvedAPIs.push(api)\n } else {\n window.___resolvedAPIs = [api]\n }\n }\n\n let results = plugins.map(plugin => {\n if (!plugin.plugin[api]) {\n return undefined\n }\n\n args.getResourceURLsForPathname = getResourceURLsForPathname\n args.loadPage = loadPage\n args.loadPageSync = loadPageSync\n\n const result = plugin.plugin[api](args, plugin.options)\n if (result && argTransform) {\n args = argTransform({ args, result, plugin })\n }\n return result\n })\n\n // Filter out undefined results.\n results = results.filter(result => typeof result !== `undefined`)\n\n if (results.length > 0) {\n return results\n } else if (defaultReturn) {\n return [defaultReturn]\n } else {\n return []\n }\n}\n\nexports.apiRunnerAsync = (api, args, defaultReturn) =>\n plugins.reduce(\n (previous, next) =>\n next.plugin[api]\n ? previous.then(() => next.plugin[api](args, next.options))\n : previous,\n Promise.resolve()\n )\n","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nlet batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport const setBatch = newBatch => batch = newBatch; // Supply a getter just to skip dealing with ESM bindings\n\nexport const getBatch = () => batch;","import * as React from 'react';\nconst ContextKey = Symbol.for(`react-redux-context`);\nconst gT = typeof globalThis !== \"undefined\" ? globalThis :\n/* fall back to a per-module scope (pre-8.1 behaviour) if `globalThis` is not available */\n{};\n\nfunction getContext() {\n var _gT$ContextKey;\n\n if (!React.createContext) return {};\n const contextMap = (_gT$ContextKey = gT[ContextKey]) != null ? _gT$ContextKey : gT[ContextKey] = new Map();\n let realContext = contextMap.get(React.createContext);\n\n if (!realContext) {\n realContext = React.createContext(null);\n\n if (process.env.NODE_ENV !== 'production') {\n realContext.displayName = 'ReactRedux';\n }\n\n contextMap.set(React.createContext, realContext);\n }\n\n return realContext;\n}\n\nexport const ReactReduxContext = /*#__PURE__*/getContext();\nexport default ReactReduxContext;","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n\n/**\r\n * Hook factory, which creates a `useReduxContext` hook bound to a given context. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useReduxContext` hook bound to the specified context.\r\n */\nexport function createReduxContextHook(context = ReactReduxContext) {\n return function useReduxContext() {\n const contextValue = useContext(context);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a ');\n }\n\n return contextValue;\n };\n}\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const { store } = useReduxContext()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nexport const useReduxContext = /*#__PURE__*/createReduxContextHook();","export const notInitialized = () => {\n throw new Error('uSES not initialized!');\n};","import { useCallback, useDebugValue, useRef } from 'react';\nimport { createReduxContextHook, useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { ReactReduxContext } from '../components/Context';\nimport { notInitialized } from '../utils/useSyncExternalStore';\nlet useSyncExternalStoreWithSelector = notInitialized;\nexport const initializeUseSelector = fn => {\n useSyncExternalStoreWithSelector = fn;\n};\n\nconst refEquality = (a, b) => a === b;\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context = ReactReduxContext) {\n const useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : createReduxContextHook(context);\n return function useSelector(selector, equalityFnOrOptions = {}) {\n const {\n equalityFn = refEquality,\n stabilityCheck = undefined,\n noopCheck = undefined\n } = typeof equalityFnOrOptions === 'function' ? {\n equalityFn: equalityFnOrOptions\n } : equalityFnOrOptions;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(`You must pass a selector to useSelector`);\n }\n\n if (typeof selector !== 'function') {\n throw new Error(`You must pass a function as a selector to useSelector`);\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(`You must pass a function as an equality function to useSelector`);\n }\n }\n\n const {\n store,\n subscription,\n getServerState,\n stabilityCheck: globalStabilityCheck,\n noopCheck: globalNoopCheck\n } = useReduxContext();\n const firstRun = useRef(true);\n const wrappedSelector = useCallback({\n [selector.name](state) {\n const selected = selector(state);\n\n if (process.env.NODE_ENV !== 'production') {\n const finalStabilityCheck = typeof stabilityCheck === 'undefined' ? globalStabilityCheck : stabilityCheck;\n\n if (finalStabilityCheck === 'always' || finalStabilityCheck === 'once' && firstRun.current) {\n const toCompare = selector(state);\n\n if (!equalityFn(selected, toCompare)) {\n let stack = undefined;\n\n try {\n throw new Error();\n } catch (e) {\n ;\n ({\n stack\n } = e);\n }\n\n console.warn('Selector ' + (selector.name || 'unknown') + ' returned a different result when called with the same parameters. This can lead to unnecessary rerenders.' + '\\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization', {\n state,\n selected,\n selected2: toCompare,\n stack\n });\n }\n }\n\n const finalNoopCheck = typeof noopCheck === 'undefined' ? globalNoopCheck : noopCheck;\n\n if (finalNoopCheck === 'always' || finalNoopCheck === 'once' && firstRun.current) {\n // @ts-ignore\n if (selected === state) {\n let stack = undefined;\n\n try {\n throw new Error();\n } catch (e) {\n ;\n ({\n stack\n } = e);\n }\n\n console.warn('Selector ' + (selector.name || 'unknown') + ' returned the root state when called. This can lead to unnecessary rerenders.' + '\\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.', {\n stack\n });\n }\n }\n\n if (firstRun.current) firstRun.current = false;\n }\n\n return selected;\n }\n\n }[selector.name], [selector, globalStabilityCheck, stabilityCheck]);\n const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store.getState, getServerState || store.getState, wrappedSelector, equalityFn);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return
{counter}
\r\n * }\r\n */\n\nexport const useSelector = /*#__PURE__*/createSelectorHook();","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"];\nimport verifySubselectors from './verifySubselectors';\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, {\n areStatesEqual,\n areOwnPropsEqual,\n areStatePropsEqual\n}) {\n let hasRunAtLeastOnce = false;\n let state;\n let ownProps;\n let stateProps;\n let dispatchProps;\n let mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n const nextStateProps = mapStateToProps(state, ownProps);\n const statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n const propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n const stateChanged = !areStatesEqual(nextState, state, nextOwnProps, ownProps);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n}\n// TODO: Add more comments\n// The selector returned by selectorFactory will memoize its results,\n// allowing connect's shouldComponentUpdate to return false if final\n// props have not changed.\nexport default function finalPropsSelectorFactory(dispatch, _ref) {\n let {\n initMapStateToProps,\n initMapDispatchToProps,\n initMergeProps\n } = _ref,\n options = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n const mapStateToProps = initMapStateToProps(dispatch, options);\n const mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n const mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps);\n }\n\n return pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant( // * Note:\n// It seems that the dispatch argument\n// could be a dispatch function in some cases (ex: whenMapDispatchToPropsIsMissing)\n// and a state object in some others (ex: whenMapStateToPropsIsMissing)\n// eslint-disable-next-line no-unused-vars\ngetConstant) {\n return function initConstantSelector(dispatch) {\n const constant = getConstant(dispatch);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n// TODO Can this get pulled out so that we can subscribe directly to the store if we don't need ownProps?\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, {\n displayName\n }) {\n const proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch, undefined);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n let props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","export function createInvalidArgFactory(arg, name) {\n return (dispatch, options) => {\n throw new Error(`Invalid value of type ${typeof arg} for ${name} argument when connecting component ${options.wrappedComponentName}.`);\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nimport { createInvalidArgFactory } from './invalidArgFactory';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n // @ts-ignore\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, {\n displayName,\n areMergedPropsEqual\n }) {\n let hasRunOnce = false;\n let mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n const nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function mergePropsFactory(mergeProps) {\n return !mergeProps ? () => defaultMergeProps : typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : createInvalidArgFactory(mergeProps, 'mergeProps');\n}","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n const batch = getBatch();\n let first = null;\n let last = null;\n return {\n clear() {\n first = null;\n last = null;\n },\n\n notify() {\n batch(() => {\n let listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n\n get() {\n let listeners = [];\n let listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n\n subscribe(callback) {\n let isSubscribed = true;\n let listener = last = {\n callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n\n };\n}\n\nconst nullListeners = {\n notify() {},\n\n get: () => []\n};\nexport function createSubscription(store, parentSub) {\n let unsubscribe;\n let listeners = nullListeners; // Reasons to keep the subscription active\n\n let subscriptionsAmount = 0; // Is this specific subscription subscribed (or only nested ones?)\n\n let selfSubscribed = false;\n\n function addNestedSub(listener) {\n trySubscribe();\n const cleanupListener = listeners.subscribe(listener); // cleanup nested sub\n\n let removed = false;\n return () => {\n if (!removed) {\n removed = true;\n cleanupListener();\n tryUnsubscribe();\n }\n };\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return selfSubscribed;\n }\n\n function trySubscribe() {\n subscriptionsAmount++;\n\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n subscriptionsAmount--;\n\n if (unsubscribe && subscriptionsAmount === 0) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n function trySubscribeSelf() {\n if (!selfSubscribed) {\n selfSubscribed = true;\n trySubscribe();\n }\n }\n\n function tryUnsubscribeSelf() {\n if (selfSubscribed) {\n selfSubscribed = false;\n tryUnsubscribe();\n }\n }\n\n const subscription = {\n addNestedSub,\n notifyNestedSubs,\n handleChangeWrapper,\n isSubscribed,\n trySubscribe: trySubscribeSelf,\n tryUnsubscribe: tryUnsubscribeSelf,\n getListeners: () => listeners\n };\n return subscription;\n}","import * as React from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n// Matches logic in React's `shared/ExecutionEnvironment` file\n\nexport const canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\nexport const useIsomorphicLayoutEffect = canUseDOM ? React.useLayoutEffect : React.useEffect;","function is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"reactReduxForwardedRef\"];\n\n/* eslint-disable valid-jsdoc, @typescript-eslint/no-unused-vars */\nimport hoistStatics from 'hoist-non-react-statics';\nimport * as React from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport defaultSelectorFactory from '../connect/selectorFactory';\nimport { mapDispatchToPropsFactory } from '../connect/mapDispatchToProps';\nimport { mapStateToPropsFactory } from '../connect/mapStateToProps';\nimport { mergePropsFactory } from '../connect/mergeProps';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport shallowEqual from '../utils/shallowEqual';\nimport warning from '../utils/warning';\nimport { ReactReduxContext } from './Context';\nimport { notInitialized } from '../utils/useSyncExternalStore';\nlet useSyncExternalStore = notInitialized;\nexport const initializeConnect = fn => {\n useSyncExternalStore = fn;\n}; // Define some constant arrays just to avoid re-creating these\n\nconst EMPTY_ARRAY = [null, 0];\nconst NO_SUBSCRIPTION_ARRAY = [null, null]; // Attempts to stringify whatever not-really-a-component value we were given\n// for logging in an error message\n\nconst stringifyComponent = Comp => {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\n// This is \"just\" a `useLayoutEffect`, but with two modifications:\n// - we need to fall back to `useEffect` in SSR to avoid annoying warnings\n// - we extract this to a separate function to avoid closing over values\n// and causing memory leaks\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(() => effectFunc(...effectArgs), dependencies);\n} // Effect callback, extracted: assign the latest props values to refs for later usage\n\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, // actualChildProps: unknown,\nchildPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n} // Effect callback, extracted: subscribe to the Redux store or nearest connected ancestor,\n// check for updates after dispatched actions, and trigger re-renders.\n\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, // forceComponentUpdateDispatch: React.Dispatch,\nadditionalSubscribeListener) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return () => {}; // Capture values for checking if and when this component unmounts\n\n let didUnsubscribe = false;\n let lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n const checkForUpdates = () => {\n if (didUnsubscribe || !isMounted.current) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n } // TODO We're currently calling getState ourselves here, rather than letting `uSES` do it\n\n\n const latestStoreState = store.getState();\n let newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // TODO This is hacky and not how `uSES` is meant to be used\n // Trigger the React `useSyncExternalStore` subscriber\n\n additionalSubscribeListener();\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n const unsubscribeWrapper = () => {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n} // Reducer initial state creation for our update reducer\n\n\nconst initStateUpdates = () => EMPTY_ARRAY;\n\nfunction strictEqual(a, b) {\n return a === b;\n}\n/**\r\n * Infers the type of props that a connector will inject into a component.\r\n */\n\n\nlet hasWarnedAboutDeprecatedPureOption = false;\n/**\r\n * Connects a React component to a Redux store.\r\n *\r\n * - Without arguments, just wraps the component, without changing the behavior / props\r\n *\r\n * - If 2 params are passed (3rd param, mergeProps, is skipped), default behavior\r\n * is to override ownProps (as stated in the docs), so what remains is everything that's\r\n * not a state or dispatch prop\r\n *\r\n * - When 3rd param is passed, we don't know if ownProps propagate and whether they\r\n * should be valid component props, because it depends on mergeProps implementation.\r\n * As such, it is the user's responsibility to extend ownProps interface from state or\r\n * dispatch props or both when applicable\r\n *\r\n * @param mapStateToProps A function that extracts values from state\r\n * @param mapDispatchToProps Setup for dispatching actions\r\n * @param mergeProps Optional callback to merge state and dispatch props together\r\n * @param options Options for configuring the connection\r\n *\r\n */\n\nfunction connect(mapStateToProps, mapDispatchToProps, mergeProps, {\n // The `pure` option has been removed, so TS doesn't like us destructuring this to check its existence.\n // @ts-ignore\n pure,\n areStatesEqual = strictEqual,\n areOwnPropsEqual = shallowEqual,\n areStatePropsEqual = shallowEqual,\n areMergedPropsEqual = shallowEqual,\n // use React's forwardRef to expose a ref of the wrapped component\n forwardRef = false,\n // the context consumer to use\n context = ReactReduxContext\n} = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (pure !== undefined && !hasWarnedAboutDeprecatedPureOption) {\n hasWarnedAboutDeprecatedPureOption = true;\n warning('The `pure` option has been removed. `connect` is now always a \"pure/memoized\" component');\n }\n }\n\n const Context = context;\n const initMapStateToProps = mapStateToPropsFactory(mapStateToProps);\n const initMapDispatchToProps = mapDispatchToPropsFactory(mapDispatchToProps);\n const initMergeProps = mergePropsFactory(mergeProps);\n const shouldHandleStateChanges = Boolean(mapStateToProps);\n\n const wrapWithConnect = WrappedComponent => {\n if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n throw new Error(`You must pass a component to the function returned by connect. Instead received ${stringifyComponent(WrappedComponent)}`);\n }\n\n const wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n const displayName = `Connect(${wrappedComponentName})`;\n const selectorFactoryOptions = {\n shouldHandleStateChanges,\n displayName,\n wrappedComponentName,\n WrappedComponent,\n // @ts-ignore\n initMapStateToProps,\n // @ts-ignore\n initMapDispatchToProps,\n initMergeProps,\n areStatesEqual,\n areStatePropsEqual,\n areOwnPropsEqual,\n areMergedPropsEqual\n };\n\n function ConnectFunction(props) {\n const [propsContext, reactReduxForwardedRef, wrapperProps] = React.useMemo(() => {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n const {\n reactReduxForwardedRef\n } = props,\n wrapperProps = _objectWithoutPropertiesLoose(props, _excluded);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]);\n const ContextToUse = React.useMemo(() => {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && // @ts-ignore\n isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n const contextValue = React.useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n const didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n const didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(`Could not find \"store\" in the context of ` + `\"${displayName}\". Either wrap the root component in a , ` + `or pass a custom React context provider to and the corresponding ` + `React context consumer to ${displayName} in connect options.`);\n } // Based on the previous check, one of these must be true\n\n\n const store = didStoreComeFromProps ? props.store : contextValue.store;\n const getServerState = didStoreComeFromContext ? contextValue.getServerState : store.getState;\n const childPropsSelector = React.useMemo(() => {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return defaultSelectorFactory(store.dispatch, selectorFactoryOptions);\n }, [store]);\n const [subscription, notifyNestedSubs] = React.useMemo(() => {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n const subscription = createSubscription(store, didStoreComeFromProps ? undefined : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n const notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]); // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n const overriddenContextValue = React.useMemo(() => {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // Set up refs to coordinate values between the subscription effect and the render logic\n\n const lastChildProps = React.useRef();\n const lastWrapperProps = React.useRef(wrapperProps);\n const childPropsFromStoreUpdate = React.useRef();\n const renderIsScheduled = React.useRef(false);\n const isProcessingDispatch = React.useRef(false);\n const isMounted = React.useRef(false);\n const latestSubscriptionCallbackError = React.useRef();\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n const actualChildPropsSelector = React.useMemo(() => {\n const selector = () => {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n };\n\n return selector;\n }, [store, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n const subscribeForReact = React.useMemo(() => {\n const subscribe = reactListener => {\n if (!subscription) {\n return () => {};\n }\n\n return subscribeUpdates(shouldHandleStateChanges, store, subscription, // @ts-ignore\n childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, reactListener);\n };\n\n return subscribe;\n }, [subscription]);\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, childPropsFromStoreUpdate, notifyNestedSubs]);\n let actualChildProps;\n\n try {\n actualChildProps = useSyncExternalStore( // TODO We're passing through a big wrapper that does a bunch of extra side effects besides subscribing\n subscribeForReact, // TODO This is incredibly hacky. We've already processed the store update and calculated new child props,\n // TODO and we're just passing that through so it triggers a re-render for us rather than relying on `uSES`.\n actualChildPropsSelector, getServerState ? () => childPropsSelector(getServerState(), wrapperProps) : actualChildPropsSelector);\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n ;\n err.message += `\\nThe error may be correlated with this previous error:\\n${latestSubscriptionCallbackError.current.stack}\\n\\n`;\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(() => {\n latestSubscriptionCallbackError.current = undefined;\n childPropsFromStoreUpdate.current = undefined;\n lastChildProps.current = actualChildProps;\n }); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n const renderedWrappedComponent = React.useMemo(() => {\n return (\n /*#__PURE__*/\n // @ts-ignore\n React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }))\n );\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n const renderedChild = React.useMemo(() => {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n }\n\n const _Connect = React.memo(ConnectFunction);\n\n // Add a hacky cast to get the right output type\n const Connect = _Connect;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n\n if (forwardRef) {\n const _forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n // @ts-ignore\n return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n\n const forwarded = _forwarded;\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n\n return wrapWithConnect;\n}\n\nexport default connect;","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nimport { createInvalidArgFactory } from './invalidArgFactory';\nexport function mapStateToPropsFactory(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(() => ({})) : typeof mapStateToProps === 'function' ? // @ts-ignore\n wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : createInvalidArgFactory(mapStateToProps, 'mapStateToProps');\n}","import bindActionCreators from '../utils/bindActionCreators';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nimport { createInvalidArgFactory } from './invalidArgFactory';\nexport function mapDispatchToPropsFactory(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(dispatch => // @ts-ignore\n bindActionCreators(mapDispatchToProps, dispatch)) : !mapDispatchToProps ? wrapMapToPropsConstant(dispatch => ({\n dispatch\n })) : typeof mapDispatchToProps === 'function' ? // @ts-ignore\n wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : createInvalidArgFactory(mapDispatchToProps, 'mapDispatchToProps');\n}","export default function bindActionCreators(actionCreators, dispatch) {\n const boundActionCreators = {};\n\n for (const key in actionCreators) {\n const actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = (...args) => dispatch(actionCreator(...args));\n }\n }\n\n return boundActionCreators;\n}","import * as React from 'react';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider({\n store,\n context,\n children,\n serverState,\n stabilityCheck = 'once',\n noopCheck = 'once'\n}) {\n const contextValue = React.useMemo(() => {\n const subscription = createSubscription(store);\n return {\n store,\n subscription,\n getServerState: serverState ? () => serverState : undefined,\n stabilityCheck,\n noopCheck\n };\n }, [store, serverState, stabilityCheck, noopCheck]);\n const previousState = React.useMemo(() => store.getState(), [store]);\n useIsomorphicLayoutEffect(() => {\n const {\n subscription\n } = contextValue;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return () => {\n subscription.tryUnsubscribe();\n subscription.onStateChange = undefined;\n };\n }, [contextValue, previousState]);\n const Context = context || ReactReduxContext; // @ts-ignore 'AnyAction' is assignable to the constraint of type 'A', but 'A' could be instantiated with a different subtype\n\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nexport default Provider;","import { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext, createReduxContextHook } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context = ReactReduxContext) {\n const useReduxContext = // @ts-ignore\n context === ReactReduxContext ? useDefaultReduxContext : // @ts-ignore\n createReduxContextHook(context);\n return function useStore() {\n const {\n store\n } = useReduxContext(); // @ts-ignore\n\n return store;\n };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nexport const useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context = ReactReduxContext) {\n const useStore = // @ts-ignore\n context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n const store = useStore(); // @ts-ignore\n\n return store.dispatch;\n };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n *
\r\n * {value}\r\n * \r\n *
\r\n * )\r\n * }\r\n */\n\nexport const useDispatch = /*#__PURE__*/createDispatchHook();","// The primary entry point assumes we're working with standard ReactDOM/RN, but\n// older versions that do not include `useSyncExternalStore` (React 16.9 - 17.x).\n// Because of that, the useSyncExternalStore compat shim is needed.\nimport { useSyncExternalStore } from 'use-sync-external-store/shim';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch';\nimport { initializeUseSelector } from './hooks/useSelector';\nimport { initializeConnect } from './components/connect';\ninitializeUseSelector(useSyncExternalStoreWithSelector);\ninitializeConnect(useSyncExternalStore); // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };\nexport * from './exports';","/**\n * @license React\n * react-server-dom-webpack.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var k=require(\"react\"),l={stream:!0},n=new Map,p=Symbol.for(\"react.element\"),q=Symbol.for(\"react.lazy\"),r=Symbol.for(\"react.default_value\"),t=k.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ContextRegistry;function u(a){t[a]||(t[a]=k.createServerContext(a,r));return t[a]}function v(a,b,c){this._status=a;this._value=b;this._response=c}v.prototype.then=function(a){0===this._status?(null===this._value&&(this._value=[]),this._value.push(a)):a()};\nfunction w(a){switch(a._status){case 3:return a._value;case 1:var b=JSON.parse(a._value,a._response._fromJSON);a._status=3;return a._value=b;case 2:b=a._value;for(var c=b.chunks,d=0;d {\n apiRunner(`onServiceWorkerUpdateFound`, { serviceWorker: reg })\n // The updatefound event implies that reg.installing is set; see\n // https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event\n const installingWorker = reg.installing\n console.log(`installingWorker`, installingWorker)\n installingWorker.addEventListener(`statechange`, () => {\n switch (installingWorker.state) {\n case `installed`:\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and the fresh content will\n // have been added to the cache.\n\n // We set a flag so Gatsby Link knows to refresh the page on next navigation attempt\n window.___swUpdated = true\n // We call the onServiceWorkerUpdateReady API so users can show update prompts.\n apiRunner(`onServiceWorkerUpdateReady`, { serviceWorker: reg })\n\n // If resources failed for the current page, reload.\n if (window.___failedResources) {\n console.log(`resources failed, SW updated - reloading`)\n window.location.reload()\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a \"Content is cached for offline use.\" message.\n console.log(`Content is now available offline!`)\n\n // Post to service worker that install is complete.\n // Delay to allow time for the event listener to be added --\n // otherwise fetch is called too soon and resources aren't cached.\n apiRunner(`onServiceWorkerInstalled`, { serviceWorker: reg })\n }\n break\n\n case `redundant`:\n console.error(`The installing service worker became redundant.`)\n apiRunner(`onServiceWorkerRedundant`, { serviceWorker: reg })\n break\n\n case `activated`:\n apiRunner(`onServiceWorkerActive`, { serviceWorker: reg })\n break\n }\n })\n })\n })\n .catch(function (e) {\n console.error(`Error during service worker registration:`, e)\n })\n}\n","exports.createContentDigest = () => ``\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport loader from \"./loader\"\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location }) => {\n const pageResources = loader.loadPageSync(location.pathname)\n if (!pageResources) {\n return null\n }\n return React.createElement(InternalPageRenderer, {\n location,\n pageResources,\n ...pageResources.json,\n })\n}\n\nProdPageRenderer.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default ProdPageRenderer\n","import React from \"react\"\n\nconst SlicesResultsContext = React.createContext({})\nconst SlicesContext = React.createContext({})\nconst SlicesMapContext = React.createContext({})\nconst SlicesPropsContext = React.createContext({})\n\nexport {\n SlicesResultsContext,\n SlicesContext,\n SlicesMapContext,\n SlicesPropsContext,\n}\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _styledComponents = require(\"styled-components\");\n// eslint-disable-next-line react/prop-types,react/display-name\nexports.wrapRootElement = function (_ref, pluginOptions) {\n var element = _ref.element;\n return /*#__PURE__*/_react.default.createElement(_styledComponents.StyleSheetManager, {\n disableVendorPrefixes: (pluginOptions === null || pluginOptions === void 0 ? void 0 : pluginOptions.disableVendorPrefixes) === true\n }, element);\n};","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports.onInitialClientRender = void 0;\nvar _gatsbyScript = require(\"gatsby-script\");\nvar _injectPartytownSnippet = require(\"./utils/inject-partytown-snippet\");\n// Makes sure off-main-thread scripts are loaded in `gatsby develop`\nconst onInitialClientRender = () => {\n if (process.env.NODE_ENV !== `development`) {\n return;\n }\n (0, _injectPartytownSnippet.injectPartytownSnippet)(_gatsbyScript.collectedScriptsByPage.get(window.location.pathname));\n\n // Clear scripts after we've used them to avoid leaky behavior\n _gatsbyScript.collectedScriptsByPage.delete(window.location.pathname);\n};\n\n// Client-side navigation (CSR, e.g. Gatsby Link navigations) are broken upstream in Partytown.\n// We need an official API from Partytown for handling re-configuration and on-demand script loading.\n// Until then, `off-main-thread` scripts load only on server-side navigation (SSR).\n// See https://github.com/BuilderIO/partytown/issues/74 for more details.\nexports.onInitialClientRender = onInitialClientRender;\n//# sourceMappingURL=gatsby-browser.js.map","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n module.exports = () => null\n}\n","function stylis_min (W) {\n function M(d, c, e, h, a) {\n for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n g = e.charCodeAt(l);\n l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n if (0 === b + n + v + m) {\n if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n switch (g) {\n case 32:\n case 9:\n case 59:\n case 13:\n case 10:\n break;\n\n default:\n f += e.charAt(l);\n }\n\n g = 59;\n }\n\n switch (g) {\n case 123:\n f = f.trim();\n q = f.charCodeAt(0);\n k = 1;\n\n for (t = ++l; l < B;) {\n switch (g = e.charCodeAt(l)) {\n case 123:\n k++;\n break;\n\n case 125:\n k--;\n break;\n\n case 47:\n switch (g = e.charCodeAt(l + 1)) {\n case 42:\n case 47:\n a: {\n for (u = l + 1; u < J; ++u) {\n switch (e.charCodeAt(u)) {\n case 47:\n if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n l = u + 1;\n break a;\n }\n\n break;\n\n case 10:\n if (47 === g) {\n l = u + 1;\n break a;\n }\n\n }\n }\n\n l = u;\n }\n\n }\n\n break;\n\n case 91:\n g++;\n\n case 40:\n g++;\n\n case 34:\n case 39:\n for (; l++ < J && e.charCodeAt(l) !== g;) {\n }\n\n }\n\n if (0 === k) break;\n l++;\n }\n\n k = e.substring(t, l);\n 0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n switch (q) {\n case 64:\n 0 < r && (f = f.replace(N, ''));\n g = f.charCodeAt(1);\n\n switch (g) {\n case 100:\n case 109:\n case 115:\n case 45:\n r = c;\n break;\n\n default:\n r = O;\n }\n\n k = M(c, r, k, g, a + 1);\n t = k.length;\n 0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n if (0 < t) switch (g) {\n case 115:\n f = f.replace(da, ea);\n\n case 100:\n case 109:\n case 45:\n k = f + '{' + k + '}';\n break;\n\n case 107:\n f = f.replace(fa, '$1 $2');\n k = f + '{' + k + '}';\n k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n break;\n\n default:\n k = f + k, 112 === h && (k = (p += k, ''));\n } else k = '';\n break;\n\n default:\n k = M(c, X(c, f, I), k, h, a + 1);\n }\n\n F += k;\n k = I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n break;\n\n case 125:\n case 59:\n f = (0 < r ? f.replace(N, '') : f).trim();\n if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n case 0:\n break;\n\n case 64:\n if (105 === g || 99 === g) {\n G += f + e.charAt(l);\n break;\n }\n\n default:\n 58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n }\n I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n }\n }\n\n switch (g) {\n case 13:\n case 10:\n 47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n 0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n z = 1;\n D++;\n break;\n\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++;\n break;\n }\n\n default:\n z++;\n y = e.charAt(l);\n\n switch (g) {\n case 9:\n case 32:\n if (0 === n + m + b) switch (x) {\n case 44:\n case 58:\n case 9:\n case 32:\n y = '';\n break;\n\n default:\n 32 !== g && (y = ' ');\n }\n break;\n\n case 0:\n y = '\\\\0';\n break;\n\n case 12:\n y = '\\\\f';\n break;\n\n case 11:\n y = '\\\\v';\n break;\n\n case 38:\n 0 === n + b + m && (r = I = 1, y = '\\f' + y);\n break;\n\n case 108:\n if (0 === n + b + m + E && 0 < u) switch (l - u) {\n case 2:\n 112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n case 8:\n 111 === K && (E = K);\n }\n break;\n\n case 58:\n 0 === n + b + m && (u = l);\n break;\n\n case 44:\n 0 === b + v + n + m && (r = 1, y += '\\r');\n break;\n\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n break;\n\n case 91:\n 0 === n + b + v && m++;\n break;\n\n case 93:\n 0 === n + b + v && m--;\n break;\n\n case 41:\n 0 === n + b + m && v--;\n break;\n\n case 40:\n if (0 === n + b + m) {\n if (0 === q) switch (2 * x + 3 * K) {\n case 533:\n break;\n\n default:\n q = 1;\n }\n v++;\n }\n\n break;\n\n case 64:\n 0 === b + v + n + m + u + k && (k = 1);\n break;\n\n case 42:\n case 47:\n if (!(0 < n + m + v)) switch (b) {\n case 0:\n switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n case 235:\n b = 47;\n break;\n\n case 220:\n t = l, b = 42;\n }\n\n break;\n\n case 42:\n 47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n }\n }\n\n 0 === b && (f += y);\n }\n\n K = x;\n x = g;\n l++;\n }\n\n t = p.length;\n\n if (0 < t) {\n r = c;\n if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n p = r.join(',') + '{' + p + '}';\n\n if (0 !== w * E) {\n 2 !== w || L(p, 2) || (E = 0);\n\n switch (E) {\n case 111:\n p = p.replace(ha, ':-moz-$1') + p;\n break;\n\n case 112:\n p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n }\n\n E = 0;\n }\n }\n\n return G + p + F;\n }\n\n function X(d, c, e) {\n var h = c.trim().split(ia);\n c = h;\n var a = h.length,\n m = d.length;\n\n switch (m) {\n case 0:\n case 1:\n var b = 0;\n\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n c[b] = Z(d, c[b], e).trim();\n }\n\n break;\n\n default:\n var v = b = 0;\n\n for (c = []; b < a; ++b) {\n for (var n = 0; n < m; ++n) {\n c[v++] = Z(d[n] + ' ', h[b], e).trim();\n }\n }\n\n }\n\n return c;\n }\n\n function Z(d, c, e) {\n var h = c.charCodeAt(0);\n 33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n switch (h) {\n case 38:\n return c.replace(F, '$1' + d.trim());\n\n case 58:\n return d.trim() + c.replace(F, '$1' + d.trim());\n\n default:\n if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n }\n\n return d + c;\n }\n\n function P(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h;\n\n if (944 === m) {\n d = a.indexOf(':', 9) + 1;\n var b = a.substring(d, a.length - 1).trim();\n b = a.substring(0, d).trim() + b + ';';\n return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n }\n\n if (0 === w || 2 === w && !L(a, 1)) return a;\n\n switch (m) {\n case 1015:\n return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n case 951:\n return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n case 963:\n return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n case 1009:\n if (100 !== a.charCodeAt(4)) break;\n\n case 969:\n case 942:\n return '-webkit-' + a + a;\n\n case 978:\n return '-webkit-' + a + '-moz-' + a + a;\n\n case 1019:\n case 983:\n return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n case 883:\n if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n break;\n\n case 932:\n if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n case 103:\n return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n case 115:\n return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n case 98:\n return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n }\n return '-webkit-' + a + '-ms-' + a + a;\n\n case 964:\n return '-webkit-' + a + '-ms-flex-' + a + a;\n\n case 1023:\n if (99 !== a.charCodeAt(8)) break;\n b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n case 1005:\n return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n case 1e3:\n b = a.substring(13).trim();\n c = b.indexOf('-') + 1;\n\n switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n case 226:\n b = a.replace(G, 'tb');\n break;\n\n case 232:\n b = a.replace(G, 'tb-rl');\n break;\n\n case 220:\n b = a.replace(G, 'lr');\n break;\n\n default:\n return a;\n }\n\n return '-webkit-' + a + '-ms-' + b + a;\n\n case 1017:\n if (-1 === a.indexOf('sticky', 9)) break;\n\n case 975:\n c = (a = d).length - 10;\n b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n case 203:\n if (111 > b.charCodeAt(8)) break;\n\n case 115:\n a = a.replace(b, '-webkit-' + b) + ';' + a;\n break;\n\n case 207:\n case 102:\n a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n }\n\n return a + ';';\n\n case 938:\n if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n case 105:\n return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n case 115:\n return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n default:\n return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n }\n break;\n\n case 973:\n case 989:\n if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n case 931:\n case 953:\n if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n break;\n\n case 962:\n if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n }\n\n return a;\n }\n\n function L(d, c) {\n var e = d.indexOf(1 === c ? ':' : '{'),\n h = d.substring(0, 3 !== c ? e : 10);\n e = d.substring(e + 1, d.length - 1);\n return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n }\n\n function ea(d, c) {\n var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n }\n\n function H(d, c, e, h, a, m, b, v, n, q) {\n for (var g = 0, x = c, w; g < A; ++g) {\n switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n case void 0:\n case !1:\n case !0:\n case null:\n break;\n\n default:\n x = w;\n }\n }\n\n if (x !== c) return x;\n }\n\n function T(d) {\n switch (d) {\n case void 0:\n case null:\n A = S.length = 0;\n break;\n\n default:\n if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n T(d[c]);\n } else Y = !!d | 0;\n }\n\n return T;\n }\n\n function U(d) {\n d = d.prefix;\n void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n return U;\n }\n\n function B(d, c) {\n var e = d;\n 33 > e.charCodeAt(0) && (e = e.trim());\n V = e;\n e = [V];\n\n if (0 < A) {\n var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n void 0 !== h && 'string' === typeof h && (c = h);\n }\n\n var a = M(O, e, c, 0, 0);\n 0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n V = '';\n E = 0;\n z = D = 1;\n return a;\n }\n\n var ca = /^\\0+/g,\n N = /[\\0\\r\\f]/g,\n aa = /: */g,\n ka = /zoo|gra/,\n ma = /([,: ])(transform)/g,\n ia = /,\\r+?/g,\n F = /([\\t\\r\\n ])*\\f?&/g,\n fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n Q = /::(place)/g,\n ha = /:(read-only)/g,\n G = /[svh]\\w+-[tblr]{2}/,\n da = /\\(\\s*(.*)\\s*\\)/g,\n oa = /([\\s\\S]*?);/g,\n ba = /-self|flex-/g,\n na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n ja = /([^-])(image-set\\()/,\n z = 1,\n D = 1,\n E = 0,\n w = 1,\n O = [],\n S = [],\n A = 0,\n R = null,\n Y = 0,\n V = '';\n B.use = T;\n B.set = U;\n void 0 !== W && U(W);\n return B;\n}\n\nexport default stylis_min;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import memoize from '@emotion/memoize';\n\n// eslint-disable-next-line no-undef\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|popover|popoverTarget|popoverTargetAction|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","import{typeOf as e,isElement as t,isValidElementType as n}from\"react-is\";import r,{useState as o,useContext as s,useMemo as i,useEffect as a,useRef as c,createElement as u,useLayoutEffect as l}from\"react\";import d from\"shallowequal\";import h from\"@emotion/stylis\";import p from\"@emotion/unitless\";import f from\"@emotion/is-prop-valid\";import m from\"hoist-non-react-statics\";function y(){return(y=Object.assign||function(e){for(var t=1;t ({})}\\n```\\n\\n',8:'ThemeProvider: Please make your \"theme\" prop an object.\\n\\n',9:\"Missing document ``\\n\\n\",10:\"Cannot find a StyleSheet instance. Usually this happens if there are multiple copies of styled-components loaded at once. Check out this issue for how to troubleshoot and fix the common cases where this situation can happen: https://github.com/styled-components/styled-components/issues/1941#issuecomment-417862021\\n\\n\",11:\"_This error was replaced with a dev-time warning, it will be deleted for v4 final._ [createGlobalStyle] received children which will not be rendered. Please use the component without passing children elements.\\n\\n\",12:\"It seems you are interpolating a keyframe declaration (%s) into an untagged string. This was supported in styled-components v3, but is not longer supported in v4 as keyframes are now injected on-demand. Please wrap your string in the css\\\\`\\\\` helper which ensures the styles are injected correctly. See https://www.styled-components.com/docs/api#css\\n\\n\",13:\"%s is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\\n\\n\",14:'ThemeProvider: \"theme\" prop is required.\\n\\n',15:\"A stylis plugin has been supplied that is not named. We need a name for each plugin to be able to prevent styling collisions between different stylis configurations within the same app. Before you pass your plugin to ``, please make sure each plugin is uniquely-named, e.g.\\n\\n```js\\nObject.defineProperty(importedPlugin, 'name', { value: 'some-unique-name' });\\n```\\n\\n\",16:\"Reached the limit of how many styled components may be created at group %s.\\nYou may only create up to 1,073,741,824 components. If you're creating components dynamically,\\nas for instance in your render method then you may be running into this limitation.\\n\\n\",17:\"CSSStyleSheet could not be found on HTMLStyleElement.\\nHas styled-components' style tag been unmounted or altered by another script?\\n\"}:{};function R(){for(var e=arguments.length<=0?void 0:arguments[0],t=[],n=1,r=arguments.length;n1?t-1:0),r=1;r0?\" Args: \"+n.join(\", \"):\"\")):new Error(R.apply(void 0,[O[e]].concat(n)).trim())}var j=function(){function e(e){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=e}var t=e.prototype;return t.indexOfGroup=function(e){for(var t=0,n=0;n=this.groupSizes.length){for(var n=this.groupSizes,r=n.length,o=r;e>=o;)(o<<=1)<0&&D(16,\"\"+e);this.groupSizes=new Uint32Array(o),this.groupSizes.set(n),this.length=o;for(var s=r;s=this.length||0===this.groupSizes[e])return t;for(var n=this.groupSizes[e],r=this.indexOfGroup(e),o=r+n,s=r;s1<<30)&&D(16,\"\"+t),T.set(e,t),x.set(t,e),t},B=function(e){return x.get(e)},z=function(e,t){t>=k&&(k=t+1),T.set(e,t),x.set(t,e)},M=\"style[\"+N+'][data-styled-version=\"5.3.11\"]',G=new RegExp(\"^\"+N+'\\\\.g(\\\\d+)\\\\[id=\"([\\\\w\\\\d-]+)\"\\\\].*?\"([^\"]*)'),L=function(e,t,n){for(var r,o=n.split(\",\"),s=0,i=o.length;s=0;n--){var r=t[n];if(r&&1===r.nodeType&&r.hasAttribute(N))return r}}(n),s=void 0!==o?o.nextSibling:null;r.setAttribute(N,\"active\"),r.setAttribute(\"data-styled-version\",\"5.3.11\");var i=Y();return i&&r.setAttribute(\"nonce\",i),n.insertBefore(r,s),r},H=function(){function e(e){var t=this.element=q(e);t.appendChild(document.createTextNode(\"\")),this.sheet=function(e){if(e.sheet)return e.sheet;for(var t=document.styleSheets,n=0,r=t.length;n=0){var n=document.createTextNode(t),r=this.nodes[e];return this.element.insertBefore(n,r||null),this.length++,!0}return!1},t.deleteRule=function(e){this.element.removeChild(this.nodes[e]),this.length--},t.getRule=function(e){return e0&&(u+=e+\",\")})),r+=\"\"+a+c+'{content:\"'+u+'\"}/*!sc*/\\n'}}}return r}(this)},e}(),Z=/(a)(d)/gi,K=function(e){return String.fromCharCode(e+(e>25?39:97))};function Q(e){var t,n=\"\";for(t=Math.abs(e);t>52;t=t/52|0)n=K(t%52)+n;return(K(t%52)+n).replace(Z,\"$1-$2\")}var ee=function(e,t){for(var n=t.length;n;)e=33*e^t.charCodeAt(--n);return e},te=function(e){return ee(5381,e)};function ne(e){for(var t=0;t>>0);if(!t.hasNameForId(r,i)){var a=n(s,\".\"+i,void 0,r);t.insertRules(r,i,a)}o.push(i),this.staticRulesId=i}else{for(var c=this.rules.length,u=ee(this.baseHash,n.hash),l=\"\",d=0;d>>0);if(!t.hasNameForId(r,m)){var y=n(l,\".\"+m,void 0,r);t.insertRules(r,m,y)}o.push(m)}}return o.join(\" \")},e}(),se=/^\\s*\\/\\/.*$/gm,ie=[\":\",\"[\",\".\",\"#\"];function ae(e){var t,n,r,o,s=void 0===e?w:e,i=s.options,a=void 0===i?w:i,c=s.plugins,u=void 0===c?S:c,l=new h(a),d=[],p=function(e){function t(t){if(t)try{e(t+\"}\")}catch(e){}}return function(n,r,o,s,i,a,c,u,l,d){switch(n){case 1:if(0===l&&64===r.charCodeAt(0))return e(r+\";\"),\"\";break;case 2:if(0===u)return r+\"/*|*/\";break;case 3:switch(u){case 102:case 112:return e(o[0]+r),\"\";default:return r+(0===d?\"/*|*/\":\"\")}case-2:r.split(\"/*|*/}\").forEach(t)}}}((function(e){d.push(e)})),f=function(e,r,s){return 0===r&&-1!==ie.indexOf(s[n.length])||s.match(o)?e:\".\"+t};function m(e,s,i,a){void 0===a&&(a=\"&\");var c=e.replace(se,\"\"),u=s&&i?i+\" \"+s+\" { \"+c+\" }\":c;return t=a,n=s,r=new RegExp(\"\\\\\"+n+\"\\\\b\",\"g\"),o=new RegExp(\"(\\\\\"+n+\"\\\\b){2,}\"),l(i||!s?\"\":s,u)}return l.use([].concat(u,[function(e,t,o){2===e&&o.length&&o[0].lastIndexOf(n)>0&&(o[0]=o[0].replace(r,f))},p,function(e){if(-2===e){var t=d;return d=[],t}}])),m.hash=u.length?u.reduce((function(e,t){return t.name||D(15),ee(e,t.name)}),5381).toString():\"\",m}var ce=r.createContext(),ue=ce.Consumer,le=r.createContext(),de=(le.Consumer,new X),he=ae();function pe(){return s(ce)||de}function fe(){return s(le)||he}function me(e){var t=o(e.stylisPlugins),n=t[0],s=t[1],c=pe(),u=i((function(){var t=c;return e.sheet?t=e.sheet:e.target&&(t=t.reconstructWithOptions({target:e.target},!1)),e.disableCSSOMInjection&&(t=t.reconstructWithOptions({useCSSOMInjection:!1})),t}),[e.disableCSSOMInjection,e.sheet,e.target]),l=i((function(){return ae({options:{prefix:!e.disableVendorPrefixes},plugins:n})}),[e.disableVendorPrefixes,n]);return a((function(){d(n,e.stylisPlugins)||s(e.stylisPlugins)}),[e.stylisPlugins]),r.createElement(ce.Provider,{value:u},r.createElement(le.Provider,{value:l},\"production\"!==process.env.NODE_ENV?r.Children.only(e.children):e.children))}var ye=function(){function e(e,t){var n=this;this.inject=function(e,t){void 0===t&&(t=he);var r=n.name+t.hash;e.hasNameForId(n.id,r)||e.insertRules(n.id,r,t(n.rules,r,\"@keyframes\"))},this.toString=function(){return D(12,String(n.name))},this.name=e,this.id=\"sc-keyframes-\"+e,this.rules=t}return e.prototype.getName=function(e){return void 0===e&&(e=he),this.name+e.hash},e}(),ve=/([A-Z])/,ge=/([A-Z])/g,Se=/^ms-/,we=function(e){return\"-\"+e.toLowerCase()};function Ee(e){return ve.test(e)?e.replace(ge,we).replace(Se,\"-ms-\"):e}var be=function(e){return null==e||!1===e||\"\"===e};function _e(e,n,r,o){if(Array.isArray(e)){for(var s,i=[],a=0,c=e.length;a1?t-1:0),r=1;r1?t-1:0),i=1;i?@[\\\\\\]^`{|}~-]+/g,De=/(^-|-$)/g;function je(e){return e.replace(Re,\"-\").replace(De,\"\")}var Te=function(e){return Q(te(e)>>>0)};function xe(e){return\"string\"==typeof e&&(\"production\"===process.env.NODE_ENV||e.charAt(0)===e.charAt(0).toLowerCase())}var ke=function(e){return\"function\"==typeof e||\"object\"==typeof e&&null!==e&&!Array.isArray(e)},Ve=function(e){return\"__proto__\"!==e&&\"constructor\"!==e&&\"prototype\"!==e};function Be(e,t,n){var r=e[n];ke(t)&&ke(r)?ze(r,t):e[n]=t}function ze(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r=0||(o[n]=e[n]);return o}(t,[\"componentId\"]),s=r&&r+\"-\"+(xe(e)?e:je(b(e)));return Ye(e,y({},o,{attrs:g,componentId:s}),n)},Object.defineProperty(A,\"defaultProps\",{get:function(){return this._foldedDefaultProps},set:function(t){this._foldedDefaultProps=o?ze({},e.defaultProps,t):t}}),\"production\"!==process.env.NODE_ENV&&(Pe(p,v),A.warnTooManyClasses=function(e,t){var n={},r=!1;return function(o){if(!r&&(n[o]=!0,Object.keys(n).length>=200)){var s=t?' with the id of \"'+t+'\"':\"\";console.warn(\"Over 200 classes were generated for component \"+e+s+\".\\nConsider using the attrs method, together with a style object for frequently changed styles.\\nExample:\\n const Component = styled.div.attrs(props => ({\\n style: {\\n background: props.background,\\n },\\n }))`width: 100%;`\\n\\n \"),r=!0,n={}}}}(p,v)),Object.defineProperty(A,\"toString\",{value:function(){return\".\"+A.styledComponentId}}),i&&m(A,e,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,shouldForwardProp:!0,styledComponentId:!0,target:!0,withComponent:!0}),A}var qe=function(e){return function e(t,r,o){if(void 0===o&&(o=w),!n(r))return D(1,String(r));var s=function(){return t(r,o,Ae.apply(void 0,arguments))};return s.withConfig=function(n){return e(t,r,y({},o,{},n))},s.attrs=function(n){return e(t,r,y({},o,{attrs:Array.prototype.concat(o.attrs,n).filter(Boolean)}))},s}(Ye,e)};[\"a\",\"abbr\",\"address\",\"area\",\"article\",\"aside\",\"audio\",\"b\",\"base\",\"bdi\",\"bdo\",\"big\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"cite\",\"code\",\"col\",\"colgroup\",\"data\",\"datalist\",\"dd\",\"del\",\"details\",\"dfn\",\"dialog\",\"div\",\"dl\",\"dt\",\"em\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"iframe\",\"img\",\"input\",\"ins\",\"kbd\",\"keygen\",\"label\",\"legend\",\"li\",\"link\",\"main\",\"map\",\"mark\",\"marquee\",\"menu\",\"menuitem\",\"meta\",\"meter\",\"nav\",\"noscript\",\"object\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"param\",\"picture\",\"pre\",\"progress\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"script\",\"section\",\"select\",\"small\",\"source\",\"span\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"title\",\"tr\",\"track\",\"u\",\"ul\",\"var\",\"video\",\"wbr\",\"circle\",\"clipPath\",\"defs\",\"ellipse\",\"foreignObject\",\"g\",\"image\",\"line\",\"linearGradient\",\"marker\",\"mask\",\"path\",\"pattern\",\"polygon\",\"polyline\",\"radialGradient\",\"rect\",\"stop\",\"svg\",\"text\",\"textPath\",\"tspan\"].forEach((function(e){qe[e]=qe(e)}));var He=function(){function e(e,t){this.rules=e,this.componentId=t,this.isStatic=ne(e),X.registerId(this.componentId+1)}var t=e.prototype;return t.createStyles=function(e,t,n,r){var o=r(_e(this.rules,t,n,r).join(\"\"),\"\"),s=this.componentId+e;n.insertRules(s,s,o)},t.removeStyles=function(e,t){t.clearRules(this.componentId+e)},t.renderStyles=function(e,t,n,r){e>2&&X.registerId(this.componentId+e),this.removeStyles(e,n),this.createStyles(e,t,n,r)},e}();function $e(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o meta tag to the stylesheet, or simply embedding it manually in your index.html section for a simpler app.\"),t.server&&h(d,e,t,o,n),l((function(){if(!t.server)return h(d,e,t,o,n),function(){return u.removeStyles(d,t)}}),[d,e,t,o,n]),null}function h(e,t,n,r,o){if(u.isStatic)u.renderStyles(e,P,n,o);else{var s=y({},t,{theme:Oe(t,r,d.defaultProps)});u.renderStyles(e,s,n,o)}}return\"production\"!==process.env.NODE_ENV&&Pe(a),r.memo(d)}function We(e){\"production\"!==process.env.NODE_ENV&&\"undefined\"!=typeof navigator&&\"ReactNative\"===navigator.product&&console.warn(\"`keyframes` cannot be used on ReactNative, only on the web. To do animation in ReactNative please use Animated.\");for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r\"+t+\"\"},this.getStyleTags=function(){return e.sealed?D(2):e._emitSheetCSS()},this.getStyleElement=function(){var t;if(e.sealed)return D(2);var n=((t={})[N]=\"\",t[\"data-styled-version\"]=\"5.3.11\",t.dangerouslySetInnerHTML={__html:e.instance.toString()},t),o=Y();return o&&(n.nonce=o),[r.createElement(\"style\",y({},n,{key:\"sc-0-0\"}))]},this.seal=function(){e.sealed=!0},this.instance=new X({isServer:!0}),this.sealed=!1}var t=e.prototype;return t.collectStyles=function(e){return this.sealed?D(2):r.createElement(me,{sheet:this.instance},e)},t.interleaveWithNodeStream=function(e){return D(3)},e}(),Je=function(e){var t=r.forwardRef((function(t,n){var o=s(Me),i=e.defaultProps,a=Oe(t,o,i);return\"production\"!==process.env.NODE_ENV&&void 0===a&&console.warn('[withTheme] You are not using a ThemeProvider nor passing a theme prop or a theme in defaultProps in component class \"'+b(e)+'\"'),r.createElement(e,y({},t,{theme:a,ref:n}))}));return m(t,e),t.displayName=\"WithTheme(\"+b(e)+\")\",t},Xe=function(){return s(Me)},Ze={StyleSheet:X,masterSheet:de};\"production\"!==process.env.NODE_ENV&&\"undefined\"!=typeof navigator&&\"ReactNative\"===navigator.product&&console.warn(\"It looks like you've imported 'styled-components' on React Native.\\nPerhaps you're looking to import 'styled-components/native'?\\nRead more about this at https://www.styled-components.com/docs/basics#react-native\"),\"production\"!==process.env.NODE_ENV&&\"test\"!==process.env.NODE_ENV&&\"undefined\"!=typeof window&&(window[\"__styled-components-init__\"]=window[\"__styled-components-init__\"]||0,1===window[\"__styled-components-init__\"]&&console.warn(\"It looks like there are several instances of 'styled-components' initialized in this application. This may cause dynamic styles to not render properly, errors during the rehydration process, a missing theme prop, and makes your application bigger without good reason.\\n\\nSee https://s-c.sh/2BAXzed for more info.\"),window[\"__styled-components-init__\"]+=1);export default qe;export{Ue as ServerStyleSheet,ue as StyleSheetConsumer,ce as StyleSheetContext,me as StyleSheetManager,Ge as ThemeConsumer,Me as ThemeContext,Le as ThemeProvider,Ze as __PRIVATE__,$e as createGlobalStyle,Ae as css,_ as isStyledComponent,We as keyframes,Xe as useTheme,A as version,Je as withTheme};\n//# sourceMappingURL=styled-components.browser.esm.js.map\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nexports.__esModule = true;\nexports.ScrollHandler = exports.ScrollContext = void 0;\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _sessionStorage = require(\"./session-storage\");\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nvar ScrollContext = /*#__PURE__*/React.createContext(new _sessionStorage.SessionStorage());\nexports.ScrollContext = ScrollContext;\nScrollContext.displayName = \"GatsbyScrollContext\";\nvar ScrollHandler = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(ScrollHandler, _React$Component);\n function ScrollHandler() {\n var _this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this._stateStorage = new _sessionStorage.SessionStorage();\n _this._isTicking = false;\n _this._latestKnownScrollY = 0;\n _this.scrollListener = function () {\n _this._latestKnownScrollY = window.scrollY;\n if (!_this._isTicking) {\n _this._isTicking = true;\n requestAnimationFrame(_this._saveScroll.bind((0, _assertThisInitialized2.default)(_this)));\n }\n };\n _this.windowScroll = function (position, prevProps) {\n if (_this.shouldUpdateScroll(prevProps, _this.props)) {\n window.scrollTo(0, position);\n }\n };\n _this.scrollToHash = function (hash, prevProps) {\n var node = document.getElementById(hash.substring(1));\n if (node && _this.shouldUpdateScroll(prevProps, _this.props)) {\n node.scrollIntoView();\n }\n };\n _this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n if (!shouldUpdateScroll) {\n return true;\n }\n\n // Hack to allow accessing this._stateStorage.\n return shouldUpdateScroll.call((0, _assertThisInitialized2.default)(_this), prevRouterProps, routerProps);\n };\n return _this;\n }\n var _proto = ScrollHandler.prototype;\n _proto._saveScroll = function _saveScroll() {\n var key = this.props.location.key || null;\n if (key) {\n this._stateStorage.save(this.props.location, key, this._latestKnownScrollY);\n }\n this._isTicking = false;\n };\n _proto.componentDidMount = function componentDidMount() {\n window.addEventListener(\"scroll\", this.scrollListener);\n var scrollPosition;\n var _this$props$location = this.props.location,\n key = _this$props$location.key,\n hash = _this$props$location.hash;\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n /** If a hash is present in the browser url as the component mounts (i.e. the user is navigating\n * from an external website) then scroll to the hash instead of any previously stored scroll\n * position. */\n if (hash) {\n this.scrollToHash(decodeURI(hash), undefined);\n } else if (scrollPosition) {\n this.windowScroll(scrollPosition, undefined);\n }\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n window.removeEventListener(\"scroll\", this.scrollListener);\n };\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var _this$props$location2 = this.props.location,\n hash = _this$props$location2.hash,\n key = _this$props$location2.key;\n var scrollPosition;\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n /** There are two pieces of state: the browser url and\n * history state which keeps track of scroll position\n * Native behaviour prescribes that we ought to restore scroll position\n * when a user navigates back in their browser (this is the `POP` action)\n * Currently, reach router has a bug that prevents this at https://github.com/reach/router/issues/228\n * So we _always_ stick to the url as a source of truth — if the url\n * contains a hash, we scroll to it\n */\n\n if (hash) {\n this.scrollToHash(decodeURI(hash), prevProps);\n } else {\n this.windowScroll(scrollPosition, prevProps);\n }\n };\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(ScrollContext.Provider, {\n value: this._stateStorage\n }, this.props.children);\n };\n return ScrollHandler;\n}(React.Component);\nexports.ScrollHandler = ScrollHandler;\nScrollHandler.propTypes = {\n shouldUpdateScroll: _propTypes.default.func,\n children: _propTypes.default.element.isRequired,\n location: _propTypes.default.object.isRequired\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.getForwards = getForwards;\nfunction getForwards(collectedScripts) {\n return collectedScripts === null || collectedScripts === void 0 ? void 0 : collectedScripts.flatMap(script => (script === null || script === void 0 ? void 0 : script.forward) || []);\n}\n//# sourceMappingURL=get-forwards.js.map","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import escapeStringRegexp from \"escape-string-regexp\";\nimport { withPrefix } from \"gatsby\";\nexport const userIsForcingNavigation = event => event.button !== 0 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;\n\n// IE does not include leading slash in anchor.pathname\nexport const slashedPathname = pathname => pathname[0] === `/` ? pathname : `/${pathname}`;\nexport const navigationWasHandledElsewhere = event => event.defaultPrevented;\nexport const findClosestAnchor = node => {\n for (; node.parentNode; node = node.parentNode) {\n if (node.nodeName.toLowerCase() === `a`) {\n return node;\n }\n }\n return null;\n};\nexport const anchorsTargetIsEquivalentToSelf = anchor => /* If target attribute is not present it's treated as _self */\nanchor.hasAttribute(`target`) === false ||\n/**\n * The browser defaults to _self, but, not all browsers set\n * a.target to the string value `_self` by default\n */\n\n/**\n * Assumption: some browsers use null/undefined for default\n * attribute values\n */\nanchor.target == null ||\n/**\n * Some browsers use the empty string to mean _self, check\n * for actual `_self`\n */\n[`_self`, ``].includes(anchor.target) ||\n/**\n * As per https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-target\n */\nanchor.target === `_parent` && (!anchor.ownerDocument.defaultView.parent ||\n// Assumption: This can be falsey\nanchor.ownerDocument.defaultView.parent === anchor.ownerDocument.defaultView) || anchor.target === `_top` && (!anchor.ownerDocument.defaultView.top ||\n// Assumption: This can be falsey\nanchor.ownerDocument.defaultView.top === anchor.ownerDocument.defaultView);\nexport const authorIsForcingNavigation = anchor =>\n/**\n * HTML5 attribute that informs the browser to handle the\n * href as a downloadable file; let the browser handle it\n */\nanchor.hasAttribute(`download`) === true ||\n/**\n * Let the browser handle anything that doesn't look like a\n * target=\"_self\" anchor\n */\nanchorsTargetIsEquivalentToSelf(anchor) === false;\n\n// https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy\nexport const urlsAreOnSameOrigin = (origin, destination) => origin.protocol === destination.protocol && /* a.host includes both hostname and port in the expected format host:port */\norigin.host === destination.host;\nexport const pathIsNotHandledByApp = (destination, pathStartRegEx) => {\n const pathFileExtensionRegEx = /^.*\\.((?!htm)[a-z0-9]{1,5})$/i;\n return (\n /**\n * For when pathPrefix is used in an app and there happens to be a link\n * pointing to the same domain but outside of the app's pathPrefix. For\n * example, a Gatsby app lives at https://example.com/myapp/, with the\n * pathPrefix set to `/myapp`. When adding an absolute link to the same\n * domain but outside of the /myapp path, for example, `` the plugin won't catch it and\n * will navigate to an external link instead of doing a pushState resulting\n * in `https://example.com/myapp/https://example.com/not-my-app`\n */\n pathStartRegEx.test(slashedPathname(destination.pathname)) === false ||\n /**\n * Don't catch links pointed at what look like file extensions (other than\n * .htm/html extensions).\n */\n destination.pathname.search(pathFileExtensionRegEx) !== -1\n );\n};\nexport const hashShouldBeFollowed = (origin, destination) => destination.hash !== `` && (\n/**\n * Dynamically created anchor links (href=\"#my-anchor\") do not always\n * have pathname on IE\n */\ndestination.pathname === `` || /* Don't catch links pointed to the same page but with a hash. */\ndestination.pathname === origin.pathname);\nexport const routeThroughBrowserOrApp = (hrefHandler, pluginOptions) => event => {\n if (window.___failedResources) return true;\n if (userIsForcingNavigation(event)) return true;\n if (navigationWasHandledElsewhere(event)) return true;\n const clickedAnchor = findClosestAnchor(event.target);\n if (clickedAnchor == null) return true;\n if (authorIsForcingNavigation(clickedAnchor)) return true;\n\n // IE clears the host value if the anchor href changed after creation, e.g.\n // in React. Creating a new anchor element to ensure host value is present\n const destination = document.createElement(`a`);\n\n // https://html.spec.whatwg.org/multipage/links.html#concept-hyperlink-url-set\n // If clickedAnchor has no href attribute like `example`, the href getter returns empty string.\n if (clickedAnchor.href !== ``) {\n destination.href = clickedAnchor.href;\n }\n if (`SVGAnimatedString` in window && clickedAnchor.href instanceof SVGAnimatedString) {\n destination.href = clickedAnchor.href.animVal;\n }\n\n // In IE, the default port is included in the anchor host but excluded from\n // the location host. This affects the ability to directly compare\n // location host to anchor host. For example: http://example.com would\n // have a location.host of 'example.com' and an destination.host of\n // 'example.com:80' Creating anchor from the location.href to normalize the\n // host value.\n const origin = document.createElement(`a`);\n origin.href = window.location.href;\n if (urlsAreOnSameOrigin(origin, destination) === false) return true;\n\n // Regex to test pathname against pathPrefix\n const pathStartRegEx = new RegExp(`^${escapeStringRegexp(withPrefix(`/`))}`);\n if (pathIsNotHandledByApp(destination, pathStartRegEx)) return true;\n if (hashShouldBeFollowed(origin, destination)) return true;\n if (pluginOptions.excludePattern) {\n const excludeRegex = new RegExp(pluginOptions.excludePattern);\n if (excludeRegex.test(destination.pathname)) {\n return true;\n }\n }\n event.preventDefault();\n\n // See issue #8907: destination.pathname already includes pathPrefix added\n // by gatsby-transformer-remark but gatsby-link.navigate needs href without\n const destinationPathname = slashedPathname(destination.pathname).replace(pathStartRegEx, `/`);\n hrefHandler(`${destinationPathname}${destination.search}${destination.hash}`);\n return false;\n};\nexport default function (root, pluginOptions, cb) {\n const clickHandler = routeThroughBrowserOrApp(cb, pluginOptions);\n root.addEventListener(`click`, clickHandler);\n return () => root.removeEventListener(`click`, clickHandler);\n}","import { navigate } from \"gatsby\";\nimport catchLinks from \"./catch-links\";\nexport const onClientEntry = (_, pluginOptions = {}) => {\n catchLinks(window, pluginOptions, href => {\n navigate(href);\n });\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = useScrollRestoration;\nvar _scrollHandler = require(\"./scroll-handler\");\nvar _react = require(\"react\");\nvar _reachRouter = require(\"@gatsbyjs/reach-router\");\nfunction useScrollRestoration(identifier) {\n var location = (0, _reachRouter.useLocation)();\n var state = (0, _react.useContext)(_scrollHandler.ScrollContext);\n var ref = (0, _react.useRef)(null);\n (0, _react.useLayoutEffect)(function () {\n if (ref.current) {\n var position = state.read(location, identifier);\n ref.current.scrollTo(0, position || 0);\n }\n }, [location.key]);\n return {\n ref: ref,\n onScroll: function onScroll() {\n if (ref.current) {\n state.save(location, identifier, ref.current.scrollTop);\n }\n }\n };\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.onInitialClientRender = exports.wrapRootElement = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _createStore = _interopRequireDefault(require(\"./.tmp/createStore\"));\n\nvar _constants = require(\"./constants\");\n\nvar wrapRootElement = function wrapRootElement(_ref, pluginOptions) {\n var _pluginOptions$window;\n\n var element = _ref.element;\n\n if (pluginOptions === void 0) {\n pluginOptions = {};\n }\n\n var preloadedState = window[(_pluginOptions$window = pluginOptions.windowKey) !== null && _pluginOptions$window !== void 0 ? _pluginOptions$window : _constants.DEFAULT_OPTIONS.windowKey];\n var store = (0, _createStore.default)(preloadedState);\n return /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {\n store: store\n }, element);\n};\n\nexports.wrapRootElement = wrapRootElement;\n\nvar onInitialClientRender = function onInitialClientRender(_, pluginOptions) {\n var _pluginOptions$cleanu;\n\n if (pluginOptions === void 0) {\n pluginOptions = {};\n }\n\n var shouldCleanup = Boolean((_pluginOptions$cleanu = pluginOptions.cleanupOnClient) !== null && _pluginOptions$cleanu !== void 0 ? _pluginOptions$cleanu : _constants.DEFAULT_OPTIONS.cleanupOnClient);\n\n if (shouldCleanup) {\n var _pluginOptions$window2;\n\n var windowKey = (_pluginOptions$window2 = pluginOptions.windowKey) !== null && _pluginOptions$window2 !== void 0 ? _pluginOptions$window2 : _constants.DEFAULT_OPTIONS.windowKey;\n delete window[windowKey];\n var preloadedStateEl = document.getElementById(_constants.SCRIPT_ELEMENT_ID);\n\n if (preloadedStateEl) {\n preloadedStateEl.parentNode.removeChild(preloadedStateEl);\n }\n }\n};\n\nexports.onInitialClientRender = onInitialClientRender;","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.SessionStorage = void 0;\nvar STATE_KEY_PREFIX = \"@@scroll|\";\nvar GATSBY_ROUTER_SCROLL_STATE = \"___GATSBY_REACT_ROUTER_SCROLL\";\nvar SessionStorage = /*#__PURE__*/function () {\n function SessionStorage() {}\n var _proto = SessionStorage.prototype;\n _proto.read = function read(location, key) {\n var stateKey = this.getStateKey(location, key);\n try {\n var value = window.sessionStorage.getItem(stateKey);\n return value ? JSON.parse(value) : 0;\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to access sessionStorage; sessionStorage is not available.\");\n }\n if (window && window[GATSBY_ROUTER_SCROLL_STATE] && window[GATSBY_ROUTER_SCROLL_STATE][stateKey]) {\n return window[GATSBY_ROUTER_SCROLL_STATE][stateKey];\n }\n return 0;\n }\n };\n _proto.save = function save(location, key, value) {\n var stateKey = this.getStateKey(location, key);\n var storedValue = JSON.stringify(value);\n try {\n window.sessionStorage.setItem(stateKey, storedValue);\n } catch (e) {\n if (window && window[GATSBY_ROUTER_SCROLL_STATE]) {\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n } else {\n window[GATSBY_ROUTER_SCROLL_STATE] = {};\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n }\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to save state in sessionStorage; sessionStorage is not available.\");\n }\n }\n };\n _proto.getStateKey = function getStateKey(location, key) {\n var stateKeyBase = \"\" + STATE_KEY_PREFIX + location.pathname;\n return key === null || typeof key === \"undefined\" ? stateKeyBase : stateKeyBase + \"|\" + key;\n };\n return SessionStorage;\n}();\nexports.SessionStorage = SessionStorage;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _gatsby = require(\"gatsby\");\n/**\n * Get a manifest filename depending on localized pathname\n *\n * @param {string} pathname\n * @param {Array<{start_url: string, lang: string}>} localizedManifests\n * @param {boolean} shouldPrependPathPrefix\n * @return string\n */\nvar _default = (pathname, localizedManifests, shouldPrependPathPrefix = false) => {\n const defaultFilename = `manifest.webmanifest`;\n if (!Array.isArray(localizedManifests)) {\n return defaultFilename;\n }\n const localizedManifest = localizedManifests.find(app => {\n let startUrl = app.start_url;\n if (shouldPrependPathPrefix) {\n startUrl = (0, _gatsby.withPrefix)(startUrl);\n }\n return pathname.startsWith(startUrl);\n });\n if (!localizedManifest) {\n return defaultFilename;\n }\n return `manifest_${localizedManifest.lang}.webmanifest`;\n};\nexports.default = _default;","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst PartytownSnippet = \"/* Partytown 0.7.6 - MIT builder.io */\\n!function(t,e,n,i,r,o,a,d,s,c,p,l){function u(){l||(l=1,\\\"/\\\"==(a=(o.lib||\\\"/~partytown/\\\")+(o.debug?\\\"debug/\\\":\\\"\\\"))[0]&&(s=e.querySelectorAll('script[type=\\\"text/partytown\\\"]'),i!=t?i.dispatchEvent(new CustomEvent(\\\"pt1\\\",{detail:t})):(d=setTimeout(f,1e4),e.addEventListener(\\\"pt0\\\",w),r?h(1):n.serviceWorker?n.serviceWorker.register(a+(o.swPath||\\\"partytown-sw.js\\\"),{scope:a}).then((function(t){t.active?h():t.installing&&t.installing.addEventListener(\\\"statechange\\\",(function(t){\\\"activated\\\"==t.target.state&&h()}))}),console.error):f())))}function h(t){c=e.createElement(t?\\\"script\\\":\\\"iframe\\\"),t||(c.setAttribute(\\\"style\\\",\\\"display:block;width:0;height:0;border:0;visibility:hidden\\\"),c.setAttribute(\\\"aria-hidden\\\",!0)),c.src=a+\\\"partytown-\\\"+(t?\\\"atomics.js?v=0.7.6\\\":\\\"sandbox-sw.html?\\\"+Date.now()),e.body.appendChild(c)}function f(n,r){for(w(),i==t&&(o.forward||[]).map((function(e){delete t[e.split(\\\".\\\")[0]]})),n=0;n {\n const { forward = [], ...filteredConfig } = config || {};\n const configStr = JSON.stringify(filteredConfig, (k, v) => {\n if (typeof v === 'function') {\n v = String(v);\n if (v.startsWith(k + '(')) {\n v = 'function ' + v;\n }\n }\n return v;\n });\n return [\n `!(function(w,p,f,c){`,\n Object.keys(filteredConfig).length > 0\n ? `c=w[p]=Object.assign(w[p]||{},${configStr});`\n : `c=w[p]=w[p]||{};`,\n `c[f]=(c[f]||[])`,\n forward.length > 0 ? `.concat(${JSON.stringify(forward)})` : ``,\n `})(window,'partytown','forward');`,\n snippetCode,\n ].join('');\n};\n\n/**\n * The `type` attribute for Partytown scripts, which does two things:\n *\n * 1. Prevents the `