diff --git a/fe/README.md b/fe/README.md
index 3209eed..c274aac 100644
--- a/fe/README.md
+++ b/fe/README.md
@@ -7,82 +7,54 @@
- 훅/컴포넌트 내부에서 사용: useRoomStore()
- React 외부의 비동기 작업, 이벤트 핸들러: useRoomStore.getState()
-### 게임 시작했을 때 Timer와 Lyric이 등장하는 타이밍이 맞지 않음
-
-- startGame을 이미 했는데 Intro 화면을 2초 보여줘서 그런 건가 싶음
-- 게임 시작 버튼 클릭했을 때 Intro 화면을 GameScreen에서 먼저 2초 띄우고, startGame을 하도록 하면 되려나?
-- 원인: Lyric 애니메이션 duration이 timeLimit으로 설정해서, 가사 길이가 짧으면 늦게 등장하게 됐던 것이었다.
- - 가사의 길이를 동일하게 맞추지 않는 이상 등장하는 시간을 제한 시간과 완벽하게 맞출 수는 없을 것 같다.
-- 해결: Lyric 애니메이션 delay 시간을 -0.5로 설정해서 길이가 짧은 가사는 게임 스크린 중앙쯤부터 등장하도록 했다.
- - 적어도 '가사가 왜 안 나오지?' 생각은 안 들 것 같다..!
-
-### 게임 진행 UI 구현 문제: 실시간은 너무 어려워
-
-- startGame을 하면 turnChanged로 다음 차례 사용자 데이터(turnData)를 받는다.
-- startRecording을 하면 해당 차례 사용자의 음성 데이터를 전달하고 채점 결과(result)를 받는다.
-- 그런데 startGame을 하면 이 turnData가 계속 들어온다.
-- 이게 문제가 뭐냐면, 음성 데이터 전달 -> 채점 -> 결과 -> 다음 턴 이런 순서로 되어야 하는데, 결과를 받기도 전에 다음 turnData가 들어와서 결과를 보여줄 수 없어진다. (제발 아직 오지 마.. 제발)
-- 난 이게 내 역량 부족이라고 생각해 금, 토 꼬박 12시간을 바쳐서 해결해 보려고 했다. setTimeout 떡칠을 하고, 정말 별짓을 다 했는데 안 됐다. 뭐라고 표현하면 좋을까. 쓰나미를 구멍 난 우산으로 막겠다고 까불다가 집도 절도 잃어버린 물에 빠진 생쥐 꼴이 된 거 같다고 해야 하나. 몸도 마음도 너덜너덜해졌다.
-- 내가 하도 찡찡대서 백엔드 쪽에서 이벤트를 하나 더 만들어 주셨다. 주말에 죄송함니다 진성님. 그리고 저를 살려주셔서 감사합니다,,
-- 이제 클라이언트에서 result를 받은 후 next 이벤트를 보내야 다음 turnData를 받게 된다. 이제 돼야 한다. 되겠지..?
-- next 이벤트 쓰고 바로 잘 되는 줄 알았는데 채점 중에서 결과로 안 넘어가질 때가 있다. (안 될 때가 더 많다)
- - 잘 됐다가 안 됐다가 하는 게 너무 화가 난다,, 초반에 낚여서 PR 날릴 뻔 했네,, 진짜 사람 미치게 만드는구만
- - 발음 게임 채점이 제대로 안 됐던 거였다..! 휴우 내 잘못 아니라서 다행이다(?)
-
-### 게임 종료됐는데, startRecording이 계속된다?
-
-```tsx
-// 턴 데이터 변경 시 게임 초기화
-useEffect(() => {
- if (!turnData && !resultData) return;
-// 순위 데이터가 있으면 종료시켜야 했는데..!
- if (rank.length > 0) return;
-
- ...
-}, [turnData, currentRoom, currentPlayer]);
-```
-
-### react-router-dom 경고
-
-정체: React Router v7에서 상대 경로의 해석 방식이 변경될 예정이고, 이를 사전에 알려주는 경고 메시지
-
-```
-react-router-dom.js?v=ceca9ee8:4374 ⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the v7_relativeSplatPath future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath.
-```
-
-```
-react-router-dom.js?v=ceca9ee8:4374 ⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in React.startTransition in v7. You can use the v7_startTransition future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition.
-```
-
-최신 버전으로 업데이트하니까 경고 사라졌음
-
-```bash
-npm install react@latest react-dom@latest
-```
-
-업데이트하고 나서 라우팅 문제 생겨서 다운그레이드함.. 방 나가기 시 나가기 처리가 제대로 안 됨
-어떻게 해야 하는지 모르겠다ㅜㅜ
-
-### VolumeBar 스피커 버튼을 토글하여 볼륨 0 ↔ 50으로 조절할 수 있도록 함
-
-- 진성님이 피드백 주신 부분 반영
-
-### 키보드 Enter로도 동작하도록 함
-
-- Dialog에서 항상 마우스로 Input 필드를 눌러 입력하고, 확인 버튼을 클릭해야만 하는 게 불편했다.
-- 그래서 다음과 같은 것들이 가능하도록 했다.
- - Dialog Open 시 첫 Input 필드에 포커싱
- - Input 필드가 여러 개인 경우 Enter로 다음 Input 필드 이동
- - Enter로 Submit(확인 버튼 클릭과 동일한 동작)
-- shadcn/ui Dialog 컴포넌트는 ESC 키를 눌렀을 때 Dialog Close를 해줘서 이건 따로 처리가 필요 없었다.
-- SearchBar(방 검색)에도 적용할 생각!
-
-### 게임 진행 테스트 도중 버그 발견
-
-- 본인 마이크 버튼을 음소거하면 setMute 이벤트를 보내고 updateUsers를 수신해 players 상태를 변경한다.
-- 게임 진행 중에 이 마이크 버튼을 음소거하면 각 player의 isMuted 상태가 바뀌고, 이는 currentRoom의 상태를 바꿔 리렌더링 되면서 voice recording이 되지 않는다. (게임방을 나갔을 경우에도 동일, 이 부분은 나중에 해결하기로)
- - PlayScreen의 useEffect 의존성 배열에 currentRoom이 있어서 그런 것 같다.
-- 그래서 일단 각 player에서 isMuted를 없애고, setMute 시 updateUsers가 아닌 muteStatusChanged 이벤트를 수신해 muteStatus: {닉네임: false/true, ...} 데이터를 받아온다.
-- Player 컴포넌트 내부에 isMuted 초기 상태를 정해주고, muteStatus 데이터 상태가 변경되었을 때 isMuted를 변경해 주는 방식으로 바꿨다.
-- 이렇게 해서 Player 컴포넌트와 GameScreen 컴포넌트를 독립적으로 리렌더링 해줄 수 있게 됐다.
-- 문제: muteStatus의 initial state를 null로 설정하니까 처음에 가져올 때 에러 발생해서 빈 객체로 초기화
+### 채점 중에서 게임 페이즈가 넘어가지 않는 문제
+
+- 음소거 버튼 문제처럼 userUpdates로 상태가 변경되면 채점 중에서 넘어가지 않는다.
+- 턴이 바뀌고 해당 차례의 사용자의 음성 정보를 넘겨줄 때 roomId가 필요한데 currentRoom의 roomId를 전달하고 있어서, updateUsers로 currentRoom이 변경되면 이 문제가 일어날 수 있다.
+- 그래서 currentRoom에서 가져오지 않고, useParams로 가져와서 전달해 주니까 채점 중에서 넘어가지 않는 문제는 없어진 것 같다. (아직 모름..)
+- 그런데 이렇게 처리하니까 게임 중일 때 또 다른 문제가 생겼다.
+ - 자기 차례일 때 새로고침 시: 재입장 처리 돼서 순위에 2번 반영되고, 게임 준비 & 시작하면 이전 게임의 결과가 나와 버린다. (result가 초기화 되지 않음)
+ - 다른 사람 차례일 때 새로고침 시: 순위에 2번 반영되지는 않지만, 역시나 게임 준비 & 시작하면 이전 게임의 결과가 나온다. (result가 초기화 되지 않음)
+ - 새로고침 해서 준비 화면에 있는 상태에서 새로고침을 한 번 더 하면 정상 동작한다.
+- 새로고침 할 때 방 나가기 처리를 해야할 것 같은데.. 잘 모르겠다.. ㅜ 일단 채점 중에서 멈춰있지는 않는 것 같다.
+
+### ExitDialog 새로고침 후 뒤로가기 하면 취소 버튼에 포커싱
+
+- KickDialog도 똑같이 shadcn/ui AlertDialog 컴포넌트를 쓰고 있는데, 강퇴 시에는 아무리 새로고침을 해도 취소 버튼에 포커싱되면서 아웃라인이 생기지 않음
+- 왜 방 나가기 Dialog만, 그것도 새로고침을 하고 나면 그러는 거지?
+- 나가기 버튼으로 나갈 때는 문제 없고 새로고침 후 뒤로가기 하면 그러는 것 같다. 뒤로가기 이벤트가 뭔가 영향을 주는 건가? 아무튼 AlertDialog 컴포넌트 자체에 처리
+
+ ```jsx
+
+ ```
+
+### 새로고침 지옥에서 꺼내줘
+
+- 개발 시작 단계부터 날 괴롭게 했던 새로고침.. 재입장 처리로 어떻게 넘어갔었는데, 게임 중일 때는 막아야 함
+- 키보드 동작은 막을 수 있는데 브라우저 새로고침 버튼 클릭은 막을 수 없음. Alert 띄우는 게 최선인데 이 Alert도 메시지 수정 불가.
+- 채점 중에서 안 넘어가는 문제가 해결되지 않았다.
+ - 계속 테스트해 보는데 음성 데이터 전달 중에 새로고침 하면 채점이 안 되고 결과를 못 받아와서 그런 것 같다.
+- `beforeunload` 이벤트의 브라우저 기본 alert보다 먼저 혹은 동시에 CustomAlertDialog을 띄우는 것은 불가능함
+ - 강퇴처럼 방 목록 페이지에 왔을 때 알림을 띄우기로 함
+ - 이게 왜 잘 안되는 건지 모르겠다.. 강퇴랑 별다를 게 없는 거 같은데..🤯 나중에 고쳐보는 걸로
+ - 페이지가 새로고침되면서 상태가 초기화되기 때문에 알림이 표시되지 않음. 강퇴 알림처럼 sessionStorage에 저장하고 가져와야 함
+
+### 화요일 데일리스크럼 이슈 공유: 대기 중인 방에 링크로 입장 시 닉네임 설정 전에 마이크 권한 요청 및 오디오 연결되는 문제
+
+- 방 목록 페이지에서 게임 방 클릭 시에는 제대로 동작하는데, 링크 입장 시에는 음성이 먼저 연결된다는 이슈를 전달받음
+- 원인
+ - 링크 입장 시 GamePage index.tsx의 useReconnect로 소켓 연결, 닉네임 설정, 유효성 검증, 각 서버에 join된다. (방 목록 페이지에서의 입장은 handleJoin)
+ - 방 목록 페이지에서 게임 방 클릭 시에는 잘 동작한다는 말이 힌트가 되어줬다.
+ - useReconnect에서 순서가 JoinDialog의 handleJoin의 순서와 달랐기 때문이다. 유효성 검증이 추가되고 gameSocket의 joinRoom도 비동기 함수로 바꾸고 했는데 useReconnect 훅에서 순서를 바꿔준다는 걸 잊어버렸다.
+- 해결
+ - useReconnect에서 각 함수 호출 순서를 handleJoin과 동일하게 맞춰서 해결..!
+ - gameSocket.joinRoom에서 유효성 검증에 대한 에러를 발생시키고 있기 때문에 순서를 잘 생각해야 한다. 게임 중 새로고침, 게임 중인 방 링크 입장할 때는 입장 불가 알림 처리도 해야 했기 때문에 머리가 터져버리는 줄 알았다. 오죽했으면 손으로 써가면서 체크함,,😇
diff --git a/fe/index.html b/fe/index.html
index d142cfc..0b9e79e 100644
--- a/fe/index.html
+++ b/fe/index.html
@@ -2,7 +2,13 @@
- } />
+ } />
+ } />
} />
diff --git a/fe/src/assets/images/angry-pepe.png b/fe/src/assets/images/angry-pepe.png
deleted file mode 100644
index cd0843e..0000000
Binary files a/fe/src/assets/images/angry-pepe.png and /dev/null differ
diff --git a/fe/src/assets/lottie/404.json b/fe/src/assets/lottie/404.json
deleted file mode 100644
index f97a69a..0000000
--- a/fe/src/assets/lottie/404.json
+++ /dev/null
@@ -1 +0,0 @@
-{"v":"4.8.0","meta":{"g":"LottieFiles AE ","a":"","k":"","d":"","tc":""},"fr":24,"ip":0,"op":120,"w":1080,"h":1080,"nm":"T-rex","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"CAM","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[540,540,0],"to":[-426.667,0,0],"ti":[504.167,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":120,"s":[-2020,540,0],"to":[-504.167,0,0],"ti":[77.5,0,0]},{"t":121,"s":[-2485,540,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"PAGE NOT FOUND Outlines","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1343.255,326.937,0],"ix":2},"a":{"a":0,"k":[568.553,44.791,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[12.773,-31.932],[-12.772,-31.932],[-12.772,31.931],[12.773,31.931]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-38.318,44.704],[-38.318,-44.704],[25.546,-44.704],[25.546,-31.932],[38.318,-31.932],[38.318,31.932],[25.546,31.932],[25.546,44.704]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1098.675,44.954],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-25.545,6.387],[-25.545,44.704],[-38.317,44.704],[-38.317,-44.704],[-12.773,-44.704],[-12.773,-19.159],[0,-19.159],[0,6.387],[12.772,6.387],[12.772,-44.704],[38.317,-44.704],[38.317,44.704],[12.772,44.704],[12.772,31.932],[-12.773,31.932],[-12.773,6.387]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1009.268,44.953],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[12.773,-44.704],[38.318,-44.704],[38.318,44.704],[-25.545,44.704],[-25.545,31.932],[-38.318,31.932],[-38.318,-44.704],[-12.773,-44.704],[-12.773,31.932],[12.773,31.932]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[919.862,44.954],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[12.773,-31.932],[-12.772,-31.932],[-12.772,31.931],[12.773,31.931]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-25.545,31.932],[-38.317,31.932],[-38.317,-31.932],[-25.545,-31.932],[-25.545,-44.704],[25.545,-44.704],[25.545,-31.932],[38.317,-31.932],[38.317,31.932],[25.545,31.932],[25.545,44.704],[-25.545,44.704]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[830.456,44.954],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":4,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[31.931,-44.704],[31.931,-31.932],[-6.386,-31.932],[-6.386,-6.387],[31.931,-6.387],[31.931,6.387],[-6.386,6.387],[-6.386,44.704],[-31.931,44.704],[-31.931,-44.704]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[747.435,44.954],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[38.318,-44.704],[38.318,-31.932],[12.772,-31.932],[12.772,44.704],[-12.773,44.704],[-12.773,-31.932],[-38.318,-31.932],[-38.318,-44.704]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[613.325,44.954],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[12.772,-31.932],[-12.773,-31.932],[-12.773,31.931],[12.772,31.931]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-25.545,31.932],[-38.317,31.932],[-38.317,-31.932],[-25.545,-31.932],[-25.545,-44.704],[25.545,-44.704],[25.545,-31.932],[38.317,-31.932],[38.317,31.932],[25.545,31.932],[25.545,44.704],[-25.545,44.704]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[523.918,44.954],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":4,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-25.545,6.387],[-25.545,44.704],[-38.317,44.704],[-38.317,-44.704],[-12.773,-44.704],[-12.773,-19.159],[0,-19.159],[0,6.387],[12.772,6.387],[12.772,-44.704],[38.317,-44.704],[38.317,44.704],[12.772,44.704],[12.772,31.932],[-12.773,31.932],[-12.773,6.387]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[434.512,44.953],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-31.931,44.704],[-31.931,-44.704],[31.931,-44.704],[31.931,-31.932],[-6.386,-31.932],[-6.386,-6.387],[31.931,-6.387],[31.931,6.387],[-6.386,6.387],[-6.386,31.932],[31.931,31.932],[31.931,44.704]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[300.402,44.954],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[12.773,33.527],[12.773,44.704],[-25.544,44.704],[-25.544,31.931],[-38.318,31.931],[-38.318,-31.932],[-25.544,-31.932],[-25.544,-44.704],[38.318,-44.704],[38.318,-19.16],[25.545,-19.16],[25.545,-31.932],[-12.772,-31.932],[-12.772,31.931],[11.176,31.931],[12.773,30.335],[12.773,6.385],[0,6.385],[0,-6.387],[38.318,-6.387],[38.318,44.704],[25.545,44.704],[25.545,31.931],[14.37,31.931]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[217.381,44.954],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[12.772,-31.932],[-12.773,-31.932],[-12.773,6.386],[12.772,6.386]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0]],"o":[[0,0]],"v":[[12.772,6.387]],"c":false},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-12.773,19.159],[-12.773,44.704],[-38.318,44.704],[-38.318,-31.932],[-25.545,-31.932],[-25.545,-44.704],[25.545,-44.704],[25.545,-31.932],[38.318,-31.932],[38.318,44.704],[12.772,44.704],[12.772,19.159]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[127.974,44.954],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":5,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[12.772,-31.932],[-12.773,-31.932],[-12.773,-6.387],[12.772,-6.387]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[25.544,-6.387],[25.544,6.387],[-12.773,6.387],[-12.773,44.704],[-38.318,44.704],[-38.318,-44.704],[25.544,-44.704],[25.544,-31.932],[38.318,-31.932],[38.318,-6.387]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[38.568,44.954],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":4,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Cactus Outlines 2","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[2629.875,107.785,0],"ix":2},"a":{"a":0,"k":[31.067,68.802,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-9.302,68.552],[-9.302,21.902],[-21.444,21.902],[-21.444,18.014],[-26.13,18.014],[-26.13,13.913],[-30.817,13.913],[-30.817,-31.087],[-26.823,-31.087],[-26.823,-35.719],[-23.255,-35.719],[-23.255,-31.247],[-19.26,-31.247],[-19.26,9.281],[-17.344,9.281],[-17.344,11.304],[-9.302,11.304],[-9.302,-64.158],[-4.962,-64.158],[-4.962,-68.552],[5.689,-68.552],[5.689,-64.078],[10.722,-64.078],[10.722,-7.282],[20.307,-7.282],[20.307,-47.329],[23.574,-47.329],[23.574,-52.3],[27.124,-52.3],[27.124,-47.613],[30.817,-47.613],[30.817,-4.371],[27.124,-4.371],[27.124,1.381],[22.296,1.381],[22.296,6.138],[9.799,6.138],[9.799,68.552]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[31.067,68.802],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Cactus Outlines","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[70.361,107.785,0],"ix":2},"a":{"a":0,"k":[31.067,68.802,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-9.302,68.552],[-9.302,21.902],[-21.444,21.902],[-21.444,18.014],[-26.13,18.014],[-26.13,13.913],[-30.817,13.913],[-30.817,-31.087],[-26.823,-31.087],[-26.823,-35.719],[-23.255,-35.719],[-23.255,-31.247],[-19.26,-31.247],[-19.26,9.281],[-17.344,9.281],[-17.344,11.304],[-9.302,11.304],[-9.302,-64.158],[-4.962,-64.158],[-4.962,-68.552],[5.689,-68.552],[5.689,-64.078],[10.722,-64.078],[10.722,-7.282],[20.307,-7.282],[20.307,-47.329],[23.574,-47.329],[23.574,-52.3],[27.124,-52.3],[27.124,-47.613],[30.817,-47.613],[30.817,-4.371],[27.124,-4.371],[27.124,1.381],[22.296,1.381],[22.296,6.138],[9.799,6.138],[9.799,68.552]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[31.067,68.802],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"4 Outlines","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1889.785,98.443,0],"ix":2},"a":{"a":0,"k":[86.792,101.499,0],"ix":1},"s":{"a":0,"k":[80,80,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[57.827,43.369],[57.827,101.196],[0,101.196],[0,43.369],[-86.74,43.369],[-86.74,-101.196],[-57.826,-101.196],[-57.826,14.456],[0,14.456],[0,-101.196],[57.827,-101.196],[57.827,14.456],[86.74,14.456],[86.74,43.369]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[86.989,101.447],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"0 Outlines","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1317.513,98.443,0],"ix":2},"a":{"a":0,"k":[86.792,101.499,0],"ix":1},"s":{"a":0,"k":[80,80,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[28.913,-72.283],[-28.913,-72.283],[-28.913,72.284],[28.913,72.284]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-57.827,72.284],[-86.74,72.284],[-86.74,-72.283],[-57.827,-72.283],[-57.827,-101.197],[57.828,-101.197],[57.828,-72.283],[86.74,-72.283],[86.74,72.284],[57.828,72.284],[57.828,101.197],[-57.827,101.197]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[86.99,101.447],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"4 Outlines","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[790.222,98.443,0],"ix":2},"a":{"a":0,"k":[86.792,101.499,0],"ix":1},"s":{"a":0,"k":[80,80,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[57.827,43.369],[57.827,101.196],[0,101.196],[0,43.369],[-86.74,43.369],[-86.74,-101.196],[-57.827,-101.196],[-57.827,14.456],[0,14.456],[0,-101.196],[57.827,-101.196],[57.827,14.456],[86.74,14.456],[86.74,43.369]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[86.989,101.447],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":3,"nm":"JUMP","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":85.737,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.55],"y":[1.002]},"o":{"x":[0.03],"y":[0.112]},"t":14,"s":[650.392]},{"i":{"x":[0.97],"y":[0.885]},"o":{"x":[0.38],"y":[0.001]},"t":22,"s":[413.392]},{"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]},"t":30,"s":[650.392]},{"i":{"x":[0.55],"y":[1.002]},"o":{"x":[0.03],"y":[0.112]},"t":49,"s":[650.392]},{"i":{"x":[0.97],"y":[0.885]},"o":{"x":[0.38],"y":[0.001]},"t":57,"s":[413.392]},{"i":{"x":[1],"y":[1]},"o":{"x":[0.491],"y":[0]},"t":65,"s":[650.392]},{"i":{"x":[0.55],"y":[1.002]},"o":{"x":[0.03],"y":[0.112]},"t":75,"s":[650.392]},{"i":{"x":[0.97],"y":[0.885]},"o":{"x":[0.38],"y":[0.001]},"t":83,"s":[413.392]},{"i":{"x":[1],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":91,"s":[650.392]},{"i":{"x":[0.55],"y":[1.002]},"o":{"x":[0.03],"y":[0.112]},"t":102,"s":[650.392]},{"i":{"x":[0.97],"y":[0.885]},"o":{"x":[0.38],"y":[0.001]},"t":110,"s":[413.392]},{"t":118,"s":[650.392]}],"ix":4}},"a":{"a":0,"k":[60,60,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"T-REX pata 1 Outlines","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":43.322,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":0,"s":[63.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":3,"s":[80.217]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":9,"s":[80.217]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":12,"s":[63.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":15,"s":[80.217]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":21,"s":[80.217]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":24,"s":[63.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":27,"s":[80.217]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":33,"s":[80.217]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":36,"s":[63.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":39,"s":[80.217]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":45,"s":[80.217]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":48,"s":[63.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":51,"s":[80.217]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":57,"s":[80.217]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":60,"s":[63.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":63,"s":[80.217]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":69,"s":[80.217]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":72,"s":[63.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":75,"s":[80.217]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":81,"s":[80.217]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":84,"s":[63.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":87,"s":[80.217]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":93,"s":[80.217]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":96,"s":[63.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":99,"s":[80.217]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":105,"s":[80.217]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":108,"s":[63.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":111,"s":[80.217]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":117,"s":[80.217]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":120,"s":[63.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":123,"s":[80.217]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":129,"s":[80.217]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":132,"s":[63.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":135,"s":[80.217]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":141,"s":[80.217]},{"t":144,"s":[63.717]}],"ix":4,"x":"var $bm_rt;\n$bm_rt = loopOut();"}},"a":{"a":0,"k":[8.108,5.076,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[7.066,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-5.822,0],[0,0]],"v":[[-11.858,-11.717],[-11.858,-2.485],[-3.621,-2.485],[-3.621,23.076],[11.858,23.076],[11.858,16.545],[4.474,16.545],[4.474,-18.248],[-4.9,-23.076],[-11.858,-18.248]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[12.108,23.327],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"T-REX pata 2 Outlines","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":76.678,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[80.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[80.717]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.29],"y":[0]},"t":6,"s":[63.217]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":9,"s":[80.716]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":12,"s":[80.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[80.717]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.29],"y":[0]},"t":18,"s":[63.217]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":21,"s":[80.716]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":24,"s":[80.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":27,"s":[80.717]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.29],"y":[0]},"t":30,"s":[63.217]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":33,"s":[80.716]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":36,"s":[80.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":39,"s":[80.717]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.29],"y":[0]},"t":42,"s":[63.217]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[80.716]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":48,"s":[80.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":51,"s":[80.717]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.29],"y":[0]},"t":54,"s":[63.217]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":57,"s":[80.716]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[80.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":63,"s":[80.717]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.29],"y":[0]},"t":66,"s":[63.217]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":69,"s":[80.716]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":72,"s":[80.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":75,"s":[80.717]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.29],"y":[0]},"t":78,"s":[63.217]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":81,"s":[80.716]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":84,"s":[80.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":87,"s":[80.717]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.29],"y":[0]},"t":90,"s":[63.217]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":93,"s":[80.716]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":96,"s":[80.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":99,"s":[80.717]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.29],"y":[0]},"t":102,"s":[63.217]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":105,"s":[80.716]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":108,"s":[80.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":111,"s":[80.717]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.29],"y":[0]},"t":114,"s":[63.217]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":117,"s":[80.716]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[80.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":123,"s":[80.717]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.29],"y":[0]},"t":126,"s":[63.217]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":129,"s":[80.716]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":132,"s":[80.717]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":135,"s":[80.717]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.29],"y":[0]},"t":138,"s":[63.217]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":141,"s":[80.716]},{"t":144,"s":[80.717]}],"ix":4,"x":"var $bm_rt;\n$bm_rt = loopOut();"}},"a":{"a":0,"k":[8.233,5.576,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[7.066,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-5.822,0],[0,0]],"v":[[-11.858,-11.717],[-11.858,-2.485],[-3.622,-2.485],[-3.622,23.076],[11.858,23.076],[11.858,16.545],[4.473,16.545],[4.473,-18.248],[-4.9,-23.076],[-11.858,-18.248]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[12.108,23.327],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"T-REX cola Outlines","parent":14,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":6,"s":[-5.074]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":12,"s":[0]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":18,"s":[-5.074]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":24,"s":[0]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":30,"s":[-5.074]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":36,"s":[0]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":42,"s":[-5.074]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":48,"s":[0]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":54,"s":[-5.074]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":60,"s":[0]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":66,"s":[-5.074]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":72,"s":[0]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":78,"s":[-5.074]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":84,"s":[0]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":90,"s":[-5.074]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":96,"s":[0]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":102,"s":[-5.074]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":108,"s":[0]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":114,"s":[-5.074]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":120,"s":[0]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":126,"s":[-5.074]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":132,"s":[0]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":138,"s":[-5.074]},{"t":144,"s":[0]}],"ix":10,"x":"var $bm_rt;\n$bm_rt = loopOut();"},"p":{"a":0,"k":[9.634,72.477,0],"ix":2},"a":{"a":0,"k":[45.988,59.98,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-24.626],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,26.095],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[15.763,-7.722],[25.988,16.135],[15.763,40.563],[8.662,40.563],[8.662,31.615],[-0.569,31.615],[-0.569,22.242],[-9.657,22.242],[-9.657,15],[-17.61,15],[-17.61,6.763],[-25.988,6.763],[-25.988,-42.23],[-18.604,-42.23],[-18.604,-28.03],[-9.515,-28.03],[-9.515,-14.113],[-2.131,-14.113],[-2.131,-7.669]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[26.238,42.481],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"T-REX_cuerpo Outlines","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":69.405,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.717],"y":[1]},"o":{"x":[0.195],"y":[0]},"t":0,"s":[39.283]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":6,"s":[43.537]},{"i":{"x":[0.717],"y":[1]},"o":{"x":[0.195],"y":[0]},"t":12,"s":[39.283]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":18,"s":[43.537]},{"i":{"x":[0.717],"y":[1]},"o":{"x":[0.195],"y":[0]},"t":24,"s":[39.283]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":30,"s":[43.537]},{"i":{"x":[0.717],"y":[1]},"o":{"x":[0.195],"y":[0]},"t":36,"s":[39.283]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":42,"s":[43.537]},{"i":{"x":[0.717],"y":[1]},"o":{"x":[0.195],"y":[0]},"t":48,"s":[39.283]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":54,"s":[43.537]},{"i":{"x":[0.717],"y":[1]},"o":{"x":[0.195],"y":[0]},"t":60,"s":[39.283]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":66,"s":[43.537]},{"i":{"x":[0.717],"y":[1]},"o":{"x":[0.195],"y":[0]},"t":72,"s":[39.283]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":78,"s":[43.537]},{"i":{"x":[0.717],"y":[1]},"o":{"x":[0.195],"y":[0]},"t":84,"s":[39.283]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":90,"s":[43.537]},{"i":{"x":[0.717],"y":[1]},"o":{"x":[0.195],"y":[0]},"t":96,"s":[39.283]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":102,"s":[43.537]},{"i":{"x":[0.717],"y":[1]},"o":{"x":[0.195],"y":[0]},"t":108,"s":[39.283]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":114,"s":[43.537]},{"i":{"x":[0.717],"y":[1]},"o":{"x":[0.195],"y":[0]},"t":120,"s":[39.283]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":126,"s":[43.537]},{"i":{"x":[0.717],"y":[1]},"o":{"x":[0.195],"y":[0]},"t":132,"s":[39.283]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":138,"s":[43.537]},{"t":144,"s":[39.283]}],"ix":4,"x":"var $bm_rt;\n$bm_rt = loopOut();"}},"a":{"a":0,"k":[40.298,46.652,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-10.935,0.425]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[10.935,-0.426]],"v":[[40.048,-38.451],[40.048,18.781],[31.81,18.781],[31.81,31.279],[23.005,31.279],[23.005,40.225],[15.621,40.225],[15.621,46.402],[-40.048,46.402],[-40.048,0.617],[-33.473,0.617],[-33.473,-7.775],[-25.562,-7.775],[-25.562,-17.29],[-13.207,-17.29],[-13.207,-24.533],[0.001,-24.533],[0.001,-32.769],[11.148,-32.769],[28.828,-45.976]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[40.298,46.653],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"T-REX_mano Outlines","parent":14,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":6,"s":[9.3]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":12,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":18,"s":[9.3]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":24,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":30,"s":[9.3]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":36,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":42,"s":[9.3]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":48,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":54,"s":[9.3]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":60,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":66,"s":[9.3]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":72,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":78,"s":[9.3]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":84,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":90,"s":[9.3]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":96,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":102,"s":[9.3]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":108,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":114,"s":[9.3]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":120,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":126,"s":[9.3]},{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":132,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.29],"y":[0]},"t":138,"s":[9.3]},{"t":144,"s":[0]}],"ix":10,"x":"var $bm_rt;\n$bm_rt = loopOut();"},"p":{"a":0,"k":[76.648,33.707,0],"ix":2},"a":{"a":0,"k":[1.488,4.595,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,3.888]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,-3.195]],"v":[[-6.337,-8.095],[10.988,-8.095],[10.988,8.095],[3.32,8.095],[3.32,-0.853],[-6.337,-0.853],[-10.988,-4.155]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[11.238,8.345],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":"T-REX_cabeza Outlines","parent":14,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":6,"s":[4]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":12,"s":[0]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":18,"s":[4]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":24,"s":[0]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":30,"s":[4]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":36,"s":[0]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":42,"s":[4]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":48,"s":[0]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":54,"s":[4]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":60,"s":[0]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":66,"s":[4]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":72,"s":[0]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":78,"s":[4]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":84,"s":[0]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":90,"s":[4]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":96,"s":[0]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":102,"s":[4]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":108,"s":[0]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":114,"s":[4]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":120,"s":[0]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":126,"s":[4]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":132,"s":[0]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":138,"s":[4]},{"t":144,"s":[0]}],"ix":10,"x":"var $bm_rt;\n$bm_rt = loopOut();"},"p":{"a":0,"k":[63.684,16.934,0],"ix":2},"a":{"a":0,"k":[15.683,67.492,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[4.527,4.527],[-4.527,4.527],[-4.527,-4.527],[4.527,-4.527]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[20.185,16.208],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[14.485,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[-15.905,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[24.142,24.852],[-9.799,24.852],[-25.279,37.491],[-40.616,24.852],[-40.616,-28.97],[-32.806,-28.97],[-32.806,-37.491],[32.094,-37.491],[32.094,-29.707],[41.184,-29.707],[41.184,6.533],[-0.995,6.533],[-0.995,17.04],[24.066,17.04]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[41.433,37.742],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":"Nube Outlines 5","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1425.983,-156.941,0],"ix":2},"a":{"a":0,"k":[91.148,31.556,0],"ix":1},"s":{"a":0,"k":[150,150,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-66.089,22.58],[-62.397,22.58],[-62.397,26.556],[86.148,26.556],[86.148,20.627],[81.71,20.627],[81.71,12.958],[73.722,12.958],[73.722,4.971],[62.538,4.971],[62.538,-3.87],[41.023,-3.87],[41.023,-8.45],[28.029,-8.45],[28.029,-15.16],[23.343,-15.16],[23.343,-21.124],[16.1,-21.124],[16.1,-26.556],[3.426,-26.556],[3.426,-22.509],[-17.024,-22.509],[-17.024,-17.397],[-22.03,-17.397],[-22.03,-13.562],[-30.87,-13.562],[-30.87,-0.781],[-44.397,-0.781],[-44.397,3.16],[-48.87,3.16],[-48.87,7.313],[-76.669,7.313],[-76.669,12.106],[-80.397,12.106],[-80.397,22.012],[-86.148,22.012]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[91.148,31.556],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":"Nube Outlines 4","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[996.983,-266.941,0],"ix":2},"a":{"a":0,"k":[91.148,31.556,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-66.089,22.58],[-62.397,22.58],[-62.397,26.556],[86.148,26.556],[86.148,20.627],[81.71,20.627],[81.71,12.958],[73.722,12.958],[73.722,4.971],[62.538,4.971],[62.538,-3.87],[41.023,-3.87],[41.023,-8.45],[28.029,-8.45],[28.029,-15.16],[23.343,-15.16],[23.343,-21.124],[16.1,-21.124],[16.1,-26.556],[3.426,-26.556],[3.426,-22.509],[-17.024,-22.509],[-17.024,-17.397],[-22.03,-17.397],[-22.03,-13.562],[-30.87,-13.562],[-30.87,-0.781],[-44.397,-0.781],[-44.397,3.16],[-48.87,3.16],[-48.87,7.313],[-76.669,7.313],[-76.669,12.106],[-80.397,12.106],[-80.397,22.012],[-86.148,22.012]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[91.148,31.556],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":"Nube Outlines 3","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[450.983,-156.941,0],"ix":2},"a":{"a":0,"k":[91.148,31.556,0],"ix":1},"s":{"a":0,"k":[150,150,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-66.089,22.58],[-62.397,22.58],[-62.397,26.556],[86.148,26.556],[86.148,20.627],[81.71,20.627],[81.71,12.958],[73.722,12.958],[73.722,4.971],[62.538,4.971],[62.538,-3.87],[41.023,-3.87],[41.023,-8.45],[28.029,-8.45],[28.029,-15.16],[23.343,-15.16],[23.343,-21.124],[16.1,-21.124],[16.1,-26.556],[3.426,-26.556],[3.426,-22.509],[-17.024,-22.509],[-17.024,-17.397],[-22.03,-17.397],[-22.03,-13.562],[-30.87,-13.562],[-30.87,-0.781],[-44.397,-0.781],[-44.397,3.16],[-48.87,3.16],[-48.87,7.313],[-76.669,7.313],[-76.669,12.106],[-80.397,12.106],[-80.397,22.012],[-86.148,22.012]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[91.148,31.556],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":"Nube Outlines 2","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[44.983,-310.941,0],"ix":2},"a":{"a":0,"k":[91.148,31.556,0],"ix":1},"s":{"a":0,"k":[150,150,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-66.089,22.58],[-62.397,22.58],[-62.397,26.556],[86.148,26.556],[86.148,20.627],[81.71,20.627],[81.71,12.958],[73.722,12.958],[73.722,4.971],[62.538,4.971],[62.538,-3.87],[41.023,-3.87],[41.023,-8.45],[28.029,-8.45],[28.029,-15.16],[23.343,-15.16],[23.343,-21.124],[16.1,-21.124],[16.1,-26.556],[3.426,-26.556],[3.426,-22.509],[-17.024,-22.509],[-17.024,-17.397],[-22.03,-17.397],[-22.03,-13.562],[-30.87,-13.562],[-30.87,-0.781],[-44.397,-0.781],[-44.397,3.16],[-48.87,3.16],[-48.87,7.313],[-76.669,7.313],[-76.669,12.106],[-80.397,12.106],[-80.397,22.012],[-86.148,22.012]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[91.148,31.556],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":"Nube Outlines","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-409.017,-160.941,0],"ix":2},"a":{"a":0,"k":[91.148,31.556,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-66.089,22.58],[-62.397,22.58],[-62.397,26.556],[86.148,26.556],[86.148,20.627],[81.71,20.627],[81.71,12.958],[73.722,12.958],[73.722,4.971],[62.538,4.971],[62.538,-3.87],[41.023,-3.87],[41.023,-8.45],[28.029,-8.45],[28.029,-15.16],[23.343,-15.16],[23.343,-21.124],[16.1,-21.124],[16.1,-26.556],[3.426,-26.556],[3.426,-22.509],[-17.024,-22.509],[-17.024,-17.397],[-22.03,-17.397],[-22.03,-13.562],[-30.87,-13.562],[-30.87,-0.781],[-44.397,-0.781],[-44.397,3.16],[-48.87,3.16],[-48.87,7.313],[-76.669,7.313],[-76.669,12.106],[-80.397,12.106],[-80.397,22.012],[-86.148,22.012]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[91.148,31.556],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":"Lineas 4","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[2994.299,154.207,0],"ix":2},"a":{"a":0,"k":[513.79,23.13,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[5,43.982],[10.746,43.982]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[68.687,39.508],[76.781,39.508]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[242.935,38.656],[245.066,38.656]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[257.42,30.988],[268.071,30.988]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[282.344,40.36],[297.468,40.36]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[397.16,30.988],[400.994,30.988]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[526.888,31.839],[532.639,31.839]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[464.261,35.675],[468.734,35.675]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[443.172,26.514],[455.314,26.514]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[594.414,39.934],[598.888,39.934]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[611.669,39.934],[619.977,39.934]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[927.361,39.295],[931.195,39.295]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[964.213,44.124],[973.799,44.124]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[984.45,27.153],[998.509,27.153]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[813.822,45.259],[821.704,45.259]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[751.195,36.1],[754.603,36.1]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[779.101,31.627],[796.781,31.627]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[755.456,45.259],[771.432,45.259]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[676,39.934],[693.468,39.934]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-508.79,-0.214],[-478.121,-0.214],[-478.121,-4.048],[-471.837,-4.048],[-471.837,-8.946],[-416.56,-8.946],[-416.56,-4.58],[-410.169,-4.58],[-410.169,-0.214],[-352.654,-0.214],[-352.654,5.111],[-347.328,5.111],[-347.328,8.946],[-296.843,8.946],[-296.843,4.367],[-290.453,4.367],[-290.453,-0.214],[508.79,-0.214]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[513.79,13.947],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":23,"ty":4,"nm":"Lineas 3","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[2002.299,154.207,0],"ix":2},"a":{"a":0,"k":[513.79,23.13,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[5,43.982],[10.746,43.982]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[68.687,39.508],[76.781,39.508]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[242.935,38.656],[245.066,38.656]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[257.42,30.988],[268.071,30.988]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[282.344,40.36],[297.468,40.36]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[397.16,30.988],[400.994,30.988]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[526.888,31.839],[532.639,31.839]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[464.261,35.675],[468.734,35.675]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[443.172,26.514],[455.314,26.514]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[594.414,39.934],[598.888,39.934]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[611.669,39.934],[619.977,39.934]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[927.361,39.295],[931.195,39.295]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[964.213,44.124],[973.799,44.124]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[984.45,27.153],[998.509,27.153]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[813.822,45.259],[821.704,45.259]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[751.195,36.1],[754.603,36.1]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[779.101,31.627],[796.781,31.627]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[755.456,45.259],[771.432,45.259]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[676,39.934],[693.468,39.934]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-508.79,-0.214],[-478.121,-0.214],[-478.121,-4.048],[-471.837,-4.048],[-471.837,-8.946],[-416.56,-8.946],[-416.56,-4.58],[-410.169,-4.58],[-410.169,-0.214],[-352.654,-0.214],[-352.654,5.111],[-347.328,5.111],[-347.328,8.946],[-296.843,8.946],[-296.843,4.367],[-290.453,4.367],[-290.453,-0.214],[508.79,-0.214]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[513.79,13.947],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":24,"ty":4,"nm":"Lineas 2","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[985.299,154.207,0],"ix":2},"a":{"a":0,"k":[513.79,23.13,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[5,43.982],[10.746,43.982]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[68.687,39.508],[76.781,39.508]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[242.935,38.656],[245.066,38.656]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[257.42,30.988],[268.071,30.988]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[282.344,40.36],[297.468,40.36]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[397.16,30.988],[400.994,30.988]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[526.888,31.839],[532.639,31.839]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[464.261,35.675],[468.734,35.675]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[443.172,26.514],[455.314,26.514]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[594.414,39.934],[598.888,39.934]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[611.669,39.934],[619.977,39.934]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[927.361,39.295],[931.195,39.295]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[964.213,44.124],[973.799,44.124]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[984.45,27.153],[998.509,27.153]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[813.822,45.259],[821.704,45.259]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[751.195,36.1],[754.603,36.1]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[779.101,31.627],[796.781,31.627]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[755.456,45.259],[771.432,45.259]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[676,39.934],[693.468,39.934]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-508.79,-0.214],[-478.121,-0.214],[-478.121,-4.048],[-471.837,-4.048],[-471.837,-8.946],[-416.56,-8.946],[-416.56,-4.58],[-410.169,-4.58],[-410.169,-0.214],[-352.654,-0.214],[-352.654,5.111],[-347.328,5.111],[-347.328,8.946],[-296.843,8.946],[-296.843,4.367],[-290.453,4.367],[-290.453,-0.214],[508.79,-0.214]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[513.79,13.947],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":25,"ty":4,"nm":"Lineas","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-31.701,154.207,0],"ix":2},"a":{"a":0,"k":[513.79,23.13,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[5,43.982],[10.746,43.982]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[68.687,39.508],[76.781,39.508]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[242.935,38.656],[245.066,38.656]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[257.42,30.988],[268.071,30.988]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[282.344,40.36],[297.468,40.36]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[397.16,30.988],[400.994,30.988]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[526.888,31.839],[532.639,31.839]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[464.261,35.675],[468.734,35.675]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[443.172,26.514],[455.314,26.514]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[594.414,39.934],[598.888,39.934]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[611.669,39.934],[619.977,39.934]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[927.361,39.295],[931.195,39.295]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[964.213,44.124],[973.799,44.124]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[984.45,27.153],[998.509,27.153]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[813.822,45.259],[821.704,45.259]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[751.195,36.1],[754.603,36.1]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[779.101,31.627],[796.781,31.627]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[755.456,45.259],[771.432,45.259]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[676,39.934],[693.468,39.934]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-508.79,-0.214],[-478.121,-0.214],[-478.121,-4.048],[-471.837,-4.048],[-471.837,-8.946],[-416.56,-8.946],[-416.56,-4.58],[-410.169,-4.58],[-410.169,-0.214],[-352.654,-0.214],[-352.654,5.111],[-347.328,5.111],[-347.328,8.946],[-296.843,8.946],[-296.843,4.367],[-290.453,4.367],[-290.453,-0.214],[508.79,-0.214]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[513.79,13.947],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":26,"ty":4,"nm":"Nube Outlines 8","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[3011.222,-156.941,0],"ix":2},"a":{"a":0,"k":[91.148,31.556,0],"ix":1},"s":{"a":0,"k":[150,150,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-66.089,22.58],[-62.397,22.58],[-62.397,26.556],[86.148,26.556],[86.148,20.627],[81.71,20.627],[81.71,12.958],[73.722,12.958],[73.722,4.971],[62.538,4.971],[62.538,-3.87],[41.023,-3.87],[41.023,-8.45],[28.029,-8.45],[28.029,-15.16],[23.343,-15.16],[23.343,-21.124],[16.1,-21.124],[16.1,-26.556],[3.426,-26.556],[3.426,-22.509],[-17.024,-22.509],[-17.024,-17.397],[-22.03,-17.397],[-22.03,-13.562],[-30.87,-13.562],[-30.87,-0.781],[-44.397,-0.781],[-44.397,3.16],[-48.87,3.16],[-48.87,7.313],[-76.669,7.313],[-76.669,12.106],[-80.397,12.106],[-80.397,22.012],[-86.148,22.012]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[91.148,31.556],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":27,"ty":4,"nm":"Nube Outlines 7","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[2605.222,-310.941,0],"ix":2},"a":{"a":0,"k":[91.148,31.556,0],"ix":1},"s":{"a":0,"k":[150,150,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-66.089,22.58],[-62.397,22.58],[-62.397,26.556],[86.148,26.556],[86.148,20.627],[81.71,20.627],[81.71,12.958],[73.722,12.958],[73.722,4.971],[62.538,4.971],[62.538,-3.87],[41.023,-3.87],[41.023,-8.45],[28.029,-8.45],[28.029,-15.16],[23.343,-15.16],[23.343,-21.124],[16.1,-21.124],[16.1,-26.556],[3.426,-26.556],[3.426,-22.509],[-17.024,-22.509],[-17.024,-17.397],[-22.03,-17.397],[-22.03,-13.562],[-30.87,-13.562],[-30.87,-0.781],[-44.397,-0.781],[-44.397,3.16],[-48.87,3.16],[-48.87,7.313],[-76.669,7.313],[-76.669,12.106],[-80.397,12.106],[-80.397,22.012],[-86.148,22.012]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[91.148,31.556],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":28,"ty":4,"nm":"Nube Outlines 6","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[2151.222,-160.941,0],"ix":2},"a":{"a":0,"k":[91.148,31.556,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-66.089,22.58],[-62.397,22.58],[-62.397,26.556],[86.148,26.556],[86.148,20.627],[81.71,20.627],[81.71,12.958],[73.722,12.958],[73.722,4.971],[62.538,4.971],[62.538,-3.87],[41.023,-3.87],[41.023,-8.45],[28.029,-8.45],[28.029,-15.16],[23.343,-15.16],[23.343,-21.124],[16.1,-21.124],[16.1,-26.556],[3.426,-26.556],[3.426,-22.509],[-17.024,-22.509],[-17.024,-17.397],[-22.03,-17.397],[-22.03,-13.562],[-30.87,-13.562],[-30.87,-0.781],[-44.397,-0.781],[-44.397,3.16],[-48.87,3.16],[-48.87,7.313],[-76.669,7.313],[-76.669,12.106],[-80.397,12.106],[-80.397,22.012],[-86.148,22.012]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[91.148,31.556],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":29,"ty":1,"nm":"White Solid 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[540,540,0],"ix":2},"a":{"a":0,"k":[540,540,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"sw":1080,"sh":1080,"sc":"#ffffff","ip":0,"op":120,"st":0,"bm":0}],"markers":[{"tm":12,"cm":"1","dr":0}]}
\ No newline at end of file
diff --git a/fe/src/assets/react.svg b/fe/src/assets/react.svg
deleted file mode 100644
index 6c87de9..0000000
--- a/fe/src/assets/react.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/fe/src/components/common/CustomAlertDialog.tsx b/fe/src/components/common/CustomAlertDialog.tsx
index 9421be0..8d5c1b3 100644
--- a/fe/src/components/common/CustomAlertDialog.tsx
+++ b/fe/src/components/common/CustomAlertDialog.tsx
@@ -14,6 +14,7 @@ interface CustomAlertDialogProps {
title: string;
description?: string;
actionText?: string;
+ handleClick?: () => void;
}
const CustomAlertDialog = ({
@@ -22,6 +23,7 @@ const CustomAlertDialog = ({
title,
description,
actionText = '확인',
+ handleClick,
}: CustomAlertDialogProps) => {
return (
@@ -33,7 +35,10 @@ const CustomAlertDialog = ({
)}
-
+
{actionText}
diff --git a/fe/src/components/common/NotFound.tsx b/fe/src/components/common/NotFound.tsx
deleted file mode 100644
index 46fbd11..0000000
--- a/fe/src/components/common/NotFound.tsx
+++ /dev/null
@@ -1,30 +0,0 @@
-import { Button } from '@/components/ui/button';
-import Lottie from 'lottie-react';
-import LottieFile from '@/assets/lottie/404.json';
-
-export const NotFound = () => {
- return (
-
-
-
-
-
- 앗! 방을 찾을 수 없습니다.
-
-
- 방이 삭제되었거나 존재하지 않는 방입니다.
-
-
(window.location.href = '/')}
- className="font-galmuri"
- size="lg"
- >
- 메인으로 돌아가기
-
-
- );
-};
diff --git a/fe/src/components/common/SearchBar.tsx b/fe/src/components/common/SearchBar.tsx
index 9c4d8f0..b6ca7cd 100644
--- a/fe/src/components/common/SearchBar.tsx
+++ b/fe/src/components/common/SearchBar.tsx
@@ -9,14 +9,15 @@ import { getRoomsQuery } from '@/stores/queries/getRoomsQuery';
const SearchBar = () => {
const [searchTerm, setSearchTerm] = useState('');
const debouncedSearch = useDebounce(searchTerm, 200); // 200ms 디바운스
- const { setRooms } = useRoomStore();
+ const { setRooms, userPage } = useRoomStore();
const { data: searchResults } = searchRoomsQuery(debouncedSearch);
- const { data: allRooms, refetch: refetchAllRooms } = getRoomsQuery();
+ const { data: roomsData, refetch: refetchAllRooms } = getRoomsQuery(userPage);
// 검색 결과 또는 전체 방 목록으로 업데이트
useEffect(() => {
- if (!debouncedSearch.trim()) {
+ if (!debouncedSearch.trim() && roomsData?.rooms) {
refetchAllRooms();
+ setRooms(roomsData.rooms);
return;
}
@@ -24,14 +25,7 @@ const SearchBar = () => {
if (searchResults) {
setRooms(searchResults);
}
- }, [debouncedSearch, searchResults, setRooms, refetchAllRooms]);
-
- // allRooms가 업데이트되면 방 목록 갱신
- useEffect(() => {
- if (!debouncedSearch.trim() && allRooms) {
- setRooms(allRooms);
- }
- }, [allRooms, debouncedSearch, setRooms]);
+ }, [debouncedSearch, searchResults, roomsData, setRooms, refetchAllRooms]);
return (
diff --git a/fe/src/components/game/PitchVisualizer.tsx b/fe/src/components/game/PitchVisualizer.tsx
index eda0771..468a2c6 100644
--- a/fe/src/components/game/PitchVisualizer.tsx
+++ b/fe/src/components/game/PitchVisualizer.tsx
@@ -3,7 +3,6 @@ import useGameStore from '@/stores/zustand/useGameStore';
import useRoomStore from '@/stores/zustand/useRoomStore';
import usePitchStore from '@/stores/zustand/usePitchStore';
import { signalingSocket } from '@/services/signalingSocket';
-import angryPepe from '@/assets/images/angry-pepe.png';
import { PITCH_CONSTANTS } from '@/constants/pitch';
import { usePitchDetection } from '@/hooks/usePitchDetection';
@@ -102,7 +101,7 @@ const PitchVisualizer = ({ isGameplayPhase }: PitchVisualizerProps) => {
}}
>
,
@@ -16,14 +16,14 @@ const AlertDialogOverlay = React.forwardRef<
>(({ className, ...props }, ref) => (
-))
-AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName
+));
+AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
const AlertDialogContent = React.forwardRef<
React.ElementRef
,
@@ -34,14 +34,14 @@ const AlertDialogContent = React.forwardRef<
-))
-AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName
+));
+AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
const AlertDialogHeader = ({
className,
@@ -49,13 +49,13 @@ const AlertDialogHeader = ({
}: React.HTMLAttributes) => (
-)
-AlertDialogHeader.displayName = "AlertDialogHeader"
+);
+AlertDialogHeader.displayName = 'AlertDialogHeader';
const AlertDialogFooter = ({
className,
@@ -63,13 +63,13 @@ const AlertDialogFooter = ({
}: React.HTMLAttributes) => (
-)
-AlertDialogFooter.displayName = "AlertDialogFooter"
+);
+AlertDialogFooter.displayName = 'AlertDialogFooter';
const AlertDialogTitle = React.forwardRef<
React.ElementRef,
@@ -77,11 +77,11 @@ const AlertDialogTitle = React.forwardRef<
>(({ className, ...props }, ref) => (
-))
-AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName
+));
+AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
const AlertDialogDescription = React.forwardRef<
React.ElementRef,
@@ -89,12 +89,12 @@ const AlertDialogDescription = React.forwardRef<
>(({ className, ...props }, ref) => (
-))
+));
AlertDialogDescription.displayName =
- AlertDialogPrimitive.Description.displayName
+ AlertDialogPrimitive.Description.displayName;
const AlertDialogAction = React.forwardRef<
React.ElementRef,
@@ -105,8 +105,8 @@ const AlertDialogAction = React.forwardRef<
className={cn(buttonVariants(), className)}
{...props}
/>
-))
-AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName
+));
+AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
const AlertDialogCancel = React.forwardRef<
React.ElementRef,
@@ -115,14 +115,15 @@ const AlertDialogCancel = React.forwardRef<
-))
-AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName
+));
+AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
export {
AlertDialog,
@@ -136,4 +137,4 @@ export {
AlertDialogDescription,
AlertDialogAction,
AlertDialogCancel,
-}
+};
diff --git a/fe/src/components/ui/dialog.tsx b/fe/src/components/ui/dialog.tsx
index c23630e..8a87901 100644
--- a/fe/src/components/ui/dialog.tsx
+++ b/fe/src/components/ui/dialog.tsx
@@ -1,16 +1,16 @@
-import * as React from "react"
-import * as DialogPrimitive from "@radix-ui/react-dialog"
-import { X } from "lucide-react"
+import * as React from 'react';
+import * as DialogPrimitive from '@radix-ui/react-dialog';
+import { X } from 'lucide-react';
-import { cn } from "@/lib/utils"
+import { cn } from '@/lib/utils';
-const Dialog = DialogPrimitive.Root
+const Dialog = DialogPrimitive.Root;
-const DialogTrigger = DialogPrimitive.Trigger
+const DialogTrigger = DialogPrimitive.Trigger;
-const DialogPortal = DialogPrimitive.Portal
+const DialogPortal = DialogPrimitive.Portal;
-const DialogClose = DialogPrimitive.Close
+const DialogClose = DialogPrimitive.Close;
const DialogOverlay = React.forwardRef<
React.ElementRef,
@@ -19,13 +19,13 @@ const DialogOverlay = React.forwardRef<
-))
-DialogOverlay.displayName = DialogPrimitive.Overlay.displayName
+));
+DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
const DialogContent = React.forwardRef<
React.ElementRef,
@@ -36,20 +36,20 @@ const DialogContent = React.forwardRef<
{children}
-
+ {/*
Close
-
+ */}
-))
-DialogContent.displayName = DialogPrimitive.Content.displayName
+));
+DialogContent.displayName = DialogPrimitive.Content.displayName;
const DialogHeader = ({
className,
@@ -57,13 +57,13 @@ const DialogHeader = ({
}: React.HTMLAttributes) => (
-)
-DialogHeader.displayName = "DialogHeader"
+);
+DialogHeader.displayName = 'DialogHeader';
const DialogFooter = ({
className,
@@ -71,13 +71,13 @@ const DialogFooter = ({
}: React.HTMLAttributes) => (
-)
-DialogFooter.displayName = "DialogFooter"
+);
+DialogFooter.displayName = 'DialogFooter';
const DialogTitle = React.forwardRef<
React.ElementRef,
@@ -86,13 +86,13 @@ const DialogTitle = React.forwardRef<
-))
-DialogTitle.displayName = DialogPrimitive.Title.displayName
+));
+DialogTitle.displayName = DialogPrimitive.Title.displayName;
const DialogDescription = React.forwardRef<
React.ElementRef,
@@ -100,11 +100,11 @@ const DialogDescription = React.forwardRef<
>(({ className, ...props }, ref) => (
-))
-DialogDescription.displayName = DialogPrimitive.Description.displayName
+));
+DialogDescription.displayName = DialogPrimitive.Description.displayName;
export {
Dialog,
@@ -117,4 +117,4 @@ export {
DialogFooter,
DialogTitle,
DialogDescription,
-}
+};
diff --git a/fe/src/components/ui/slider.tsx b/fe/src/components/ui/slider.tsx
index e161dae..b7ed651 100644
--- a/fe/src/components/ui/slider.tsx
+++ b/fe/src/components/ui/slider.tsx
@@ -1,7 +1,7 @@
-import * as React from "react"
-import * as SliderPrimitive from "@radix-ui/react-slider"
+import * as React from 'react';
+import * as SliderPrimitive from '@radix-ui/react-slider';
-import { cn } from "@/lib/utils"
+import { cn } from '@/lib/utils';
const Slider = React.forwardRef<
React.ElementRef,
@@ -10,17 +10,17 @@ const Slider = React.forwardRef<
-
+
-
+
-))
-Slider.displayName = SliderPrimitive.Root.displayName
+));
+Slider.displayName = SliderPrimitive.Root.displayName;
-export { Slider }
+export { Slider };
diff --git a/fe/src/constants/errors.ts b/fe/src/constants/errors.ts
new file mode 100644
index 0000000..e69a0fe
--- /dev/null
+++ b/fe/src/constants/errors.ts
@@ -0,0 +1,20 @@
+export const ERROR_MESSAGES = Object.freeze({
+ emptyNickname: '닉네임을 입력해주세요.',
+ duplicatedNickname: '이미 사용 중인 닉네임입니다.',
+ emptyRoomName: '방 제목을 입력해주세요.',
+ invalidNickname: '닉네임은 한글, 영문, 숫자, 공백만 사용 가능합니다.',
+ nicknameLength: '닉네임은 2~8자로 입력해주세요.',
+ roomNameLength: '방 제목은 2~12자로 입력해주세요.',
+});
+
+export const ERROR_CODES = Object.freeze({
+ duplicatedNickname: 'NicknameTaken',
+ validation: 'ValidationFailed',
+ noRoom: 'RoomNotFound',
+ noGame: 'GameNotFound',
+ noPlayer: 'PlayerNotFound',
+ serverError: 'InternalError',
+ fullRoom: 'RoomFull',
+ notAllReady: 'AllPlayersMustBeReady',
+ notEnoughPlayers: 'NotEnoughPlayers',
+});
diff --git a/fe/src/constants/rules.ts b/fe/src/constants/rules.ts
index f17a3b9..de09f9c 100644
--- a/fe/src/constants/rules.ts
+++ b/fe/src/constants/rules.ts
@@ -1,4 +1,5 @@
export const RULES = Object.freeze({
maxPage: 9,
maxPlayer: 4,
+ pageLimit: 9,
});
diff --git a/fe/src/hooks/useBackExit.ts b/fe/src/hooks/useBackExit.ts
index 6c2e64b..32c459b 100644
--- a/fe/src/hooks/useBackExit.ts
+++ b/fe/src/hooks/useBackExit.ts
@@ -1,9 +1,6 @@
import { useEffect, useRef } from 'react';
-import { useLocation } from 'react-router-dom';
export const useBackExit = ({ setShowExitDialog }) => {
- const location = useLocation();
- const isInitialRender = useRef(true);
const popStateListenerRef = useRef<(() => void) | null>(null);
// 컴포넌트 마운트 시 한 번만 실행
diff --git a/fe/src/hooks/useDialogForm.ts b/fe/src/hooks/useDialogForm.ts
index 27f0971..5763ff9 100644
--- a/fe/src/hooks/useDialogForm.ts
+++ b/fe/src/hooks/useDialogForm.ts
@@ -14,15 +14,16 @@ export const useDialogForm = ({
inputs,
onSubmit,
isSubmitDisabled,
-}: UseDialogFormProps) => {
+ open,
+}: UseDialogFormProps & { open: boolean }) => {
const inputRefs = useRef<(HTMLInputElement | null)[]>([]);
useEffect(() => {
// 첫 번째 입력 필드에 포커스
- if (inputRefs.current[0]) {
+ if (open && inputRefs.current[0]) {
inputRefs.current[0].focus();
}
- }, []);
+ }, [open]);
const handleKeyDown = (
event: KeyboardEvent,
diff --git a/fe/src/hooks/useFormValidation.ts b/fe/src/hooks/useFormValidation.ts
new file mode 100644
index 0000000..20ad66c
--- /dev/null
+++ b/fe/src/hooks/useFormValidation.ts
@@ -0,0 +1,94 @@
+import { validateNickname, validateRoomName } from '@/utils/validator';
+import { useEffect, useState } from 'react';
+import { useDebounce } from './useDebounce';
+
+export const useFormValidation = () => {
+ const [errors, setErrors] = useState({
+ nickname: '',
+ roomName: '',
+ });
+
+ // 각 필드의 사용자 상호작용 여부를 저장하는 상태
+ // touched가 true인 필드만 유효성 검사 실행
+ const [touched, setTouched] = useState({
+ nickname: false,
+ roomName: false,
+ });
+
+ // 실제 입력값을 저장하는 상태
+ const [inputs, setInputs] = useState({
+ nickname: '',
+ roomName: '',
+ });
+
+ // 입력값을 디바운스 처리할 state
+ const debouncedInputs = useDebounce(inputs, 200);
+
+ // 디바운스된 입력값이 변경될 때마다 유효성 검증
+ useEffect(() => {
+ const newErrors = {
+ // 닉네임 필드가 터치되었을 때만 유효성 검사
+ nickname: touched.nickname
+ ? debouncedInputs.nickname === ''
+ ? '닉네임을 입력해주세요.'
+ : validateNickname(debouncedInputs.nickname)
+ : '',
+ // 방 제목 필드가 터치되었을 때만 유효성 검사
+ roomName: touched.roomName
+ ? debouncedInputs.roomName === ''
+ ? '방 제목을 입력해주세요.'
+ : validateRoomName(debouncedInputs.roomName)
+ : '',
+ };
+ setErrors(newErrors);
+ }, [debouncedInputs, touched]);
+
+ // 입력값 업데이트 함수
+ const updateInput = (field: 'nickname' | 'roomName', value: string) => {
+ setInputs((prev) => ({
+ ...prev,
+ [field]: value,
+ }));
+
+ // 입력이 발생한 필드를 터치 상태로 변경
+ setTouched((prev) => ({
+ ...prev,
+ [field]: true,
+ }));
+ };
+
+ // 최종 제출 시 유효성 검증
+ const validateForm = (nickname: string, roomName?: string) => {
+ // 제출 시에는 모든 필드를 터치 상태로 설정
+ setTouched({
+ nickname: true,
+ roomName: true,
+ });
+
+ const newErrors = {
+ nickname: validateNickname(nickname),
+ roomName: roomName ? validateRoomName(roomName) : '',
+ };
+
+ setErrors(newErrors);
+ return !Object.values(newErrors).some((error) => error !== '');
+ };
+
+ // 폼 상태 초기화 (다이얼로그 닫을 때 사용)
+ const resetForm = () => {
+ setTouched({
+ nickname: false,
+ roomName: false,
+ });
+ setErrors({
+ nickname: '',
+ roomName: '',
+ });
+ setInputs({
+ nickname: '',
+ roomName: '',
+ });
+ };
+
+ return { errors, validateForm, updateInput, setErrors, resetForm };
+};
diff --git a/fe/src/hooks/usePagination.ts b/fe/src/hooks/usePagination.ts
deleted file mode 100644
index b6269cd..0000000
--- a/fe/src/hooks/usePagination.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import useRoomStore from '@/stores/zustand/useRoomStore';
-import { useState, useEffect } from 'react';
-
-const ROOMS_PER_PAGE = 9;
-
-export const usePagination = () => {
- const rooms = useRoomStore((state) => state.rooms);
- const [currentPage, setCurrentPage] = useState(0);
-
- const totalPages = Math.ceil(rooms.length / ROOMS_PER_PAGE);
-
- const currentRooms = rooms.slice(
- currentPage * ROOMS_PER_PAGE,
- (currentPage + 1) * ROOMS_PER_PAGE
- );
-
- useEffect(() => {
- if (rooms.length > ROOMS_PER_PAGE * (currentPage + 1)) {
- setCurrentPage(currentPage + 1);
- }
- }, [rooms.length, currentPage]);
-
- return {
- currentPage,
- setCurrentPage,
- totalPages,
- currentRooms,
- isEmpty: rooms.length === 0,
- showPagination: rooms.length > ROOMS_PER_PAGE,
- };
-};
diff --git a/fe/src/hooks/usePreventRefresh.ts b/fe/src/hooks/usePreventRefresh.ts
new file mode 100644
index 0000000..b295be4
--- /dev/null
+++ b/fe/src/hooks/usePreventRefresh.ts
@@ -0,0 +1,34 @@
+import { useEffect } from 'react';
+import { toast } from 'react-toastify';
+
+export const usePreventRefresh = (isPlaying: boolean) => {
+ useEffect(() => {
+ if (!isPlaying) return;
+
+ const preventKeyboardRefresh = (e: KeyboardEvent) => {
+ if (
+ e.key === 'F5' ||
+ (e.ctrlKey && e.key === 'r') ||
+ (e.metaKey && e.key === 'r')
+ ) {
+ e.preventDefault();
+
+ toast.error('게임 중에는 새로고침 할 수 없습니다!', {
+ position: 'top-left',
+ autoClose: 1000,
+ style: {
+ fontFamily: 'Galmuri11, monospace',
+ width: '25rem',
+ minWidth: '25rem',
+ },
+ });
+ }
+ };
+
+ document.addEventListener('keydown', preventKeyboardRefresh);
+
+ return () => {
+ document.removeEventListener('keydown', preventKeyboardRefresh);
+ };
+ }, [isPlaying]);
+};
diff --git a/fe/src/hooks/useReconnect.ts b/fe/src/hooks/useReconnect.ts
index 20d8809..c0ef95e 100644
--- a/fe/src/hooks/useReconnect.ts
+++ b/fe/src/hooks/useReconnect.ts
@@ -19,42 +19,46 @@ export const useReconnect = ({ currentRoom }) => {
const handleReconnect = async () => {
try {
if (room && !currentRoom) {
- // 1. 현재 방 설정
+ // 현재 방 설정
setCurrentRoom(room);
- // 2. 소켓 연결
+ // 게임 소켓 연결
if (!gameSocket.socket?.connected) {
gameSocket.connect();
+ await gameSocket.joinRoom(roomId, nickname);
}
+ // 마이크 권한 요청 및 스트림 설정
+ const stream = await requestPermission();
+
if (!signalingSocket.socket?.connected) {
console.log('Connecting signalingSocket...');
signalingSocket.connect();
+ await signalingSocket.setupLocalStream(stream);
}
- // 3. audioManager 설정 (소켓 연결 후)
+ // audioManager 설정 (소켓 연결 후)
if (!signalingSocket.hasAudioManager()) {
signalingSocket.setAudioManager(audioManager);
}
- // 4. 마이크 권한 요청 및 스트림 설정
- const stream = await requestPermission();
- signalingSocket.setupLocalStream(stream);
-
- // 5. 방 참가
- gameSocket.joinRoom(roomId, nickname);
- signalingSocket.joinRoom(room, nickname);
+ // 시그널링 방 참가
+ await signalingSocket.joinRoom(room, nickname);
}
} catch (error) {
console.error('Reconnection failed:', error);
// 실패 시 audioManager 제거
signalingSocket.setAudioManager(null);
+
+ if (error === 'GameAlreadyInProgress') {
+ sessionStorage.setItem('gameInProgressError', 'true');
+ window.location.href = '/rooms';
+ }
}
};
handleReconnect();
- // cleanup
return () => {
signalingSocket.setAudioManager(null);
};
diff --git a/fe/src/hooks/useRoomsSSE.ts b/fe/src/hooks/useRoomsSSE.ts
index 797bb54..00ebcec 100644
--- a/fe/src/hooks/useRoomsSSE.ts
+++ b/fe/src/hooks/useRoomsSSE.ts
@@ -1,47 +1,53 @@
import useRoomStore from '@/stores/zustand/useRoomStore';
import { useEffect } from 'react';
-import { Room } from '@/types/roomTypes';
import { ENV } from '@/config/env';
import { getRoomsQuery } from '@/stores/queries/getRoomsQuery';
-export const useRoomsSSE = () => {
- const { data: initialRooms } = getRoomsQuery();
- const { setRooms } = useRoomStore();
+let eventSource: EventSource | null = null;
- useEffect(() => {
- // 초기 데이터 설정
- if (initialRooms) {
- setRooms(initialRooms);
- }
+export const useRoomsSSE = () => {
+ const { setRooms, setPagination, setUserPage } = useRoomStore();
+ const userPage = useRoomStore((state) => state.userPage);
+ const { data } = getRoomsQuery(userPage);
- // SSE 연결
- const eventSource = new EventSource(ENV.SSE_URL);
+ const connectSSE = (userPage: number) => {
+ eventSource = new EventSource(`${ENV.SSE_URL}?page=${userPage}`);
- // rooms 데이터 수신 처리
eventSource.onmessage = (event) => {
try {
- const rooms = JSON.parse(event.data) as Room[];
- setRooms(rooms);
+ const sseData = JSON.parse(event.data);
+ setRooms(sseData.rooms);
+ setPagination(sseData.pagination);
+
+ if (!sseData.rooms.length && userPage > 0) {
+ setUserPage(sseData.pagination.currentPage - 1);
+ return;
+ }
+
+ setUserPage(sseData.pagination.currentPage);
} catch (error) {
console.error('Failed to parse rooms data:', error);
}
};
- // 연결 시작
- eventSource.onopen = () => {
- console.log('SSE Connection opened');
- };
-
- // 에러 처리
eventSource.onerror = (error) => {
console.error('SSE Error:', error);
eventSource.close();
};
+ };
+
+ useEffect(() => {
+ if (data) {
+ setRooms(data.rooms);
+ setPagination(data.pagination);
+ connectSSE(userPage);
+ }
- // 컴포넌트 언마운트 시 연결 정리 (메모리 누수 예방)
return () => {
- console.log('Closing SSE connection');
- eventSource.close();
+ if (eventSource) {
+ eventSource.close();
+ eventSource = null;
+ }
};
- }, [initialRooms, setRooms]);
+ }, [data?.pagination, data?.rooms, userPage]);
};
diff --git a/fe/src/index.css b/fe/src/index.css
index 3bf5def..3504613 100644
--- a/fe/src/index.css
+++ b/fe/src/index.css
@@ -12,6 +12,7 @@
font-weight: normal;
font-style: normal;
}
+
:root {
--background: 0 0% 100%;
--foreground: 222.2 84% 4.9%;
@@ -71,7 +72,7 @@
@apply border-border;
}
body {
- @apply bg-background text-foreground;
+ @apply bg-background text-foreground relative;
}
}
@@ -93,7 +94,6 @@ html,
body,
#root {
height: 100%;
- overflow: hidden;
}
body {
@@ -103,3 +103,11 @@ body {
.app {
@apply flex flex-col mx-auto justify-center max-w-[1074px] lg:px-0 p-8;
}
+
+.game-wrapper {
+ @apply relative w-full min-h-screen;
+}
+
+.game-wrapper::before {
+ @apply content-[''] fixed inset-0 w-full h-full bg-main-desert bg-cover bg-center opacity-75 -z-10;
+}
diff --git a/fe/src/pages/GamePage/GameDialog/ExitDialog.tsx b/fe/src/pages/GamePage/GameDialog/ExitDialog.tsx
index 7abd88f..f1df985 100644
--- a/fe/src/pages/GamePage/GameDialog/ExitDialog.tsx
+++ b/fe/src/pages/GamePage/GameDialog/ExitDialog.tsx
@@ -26,7 +26,7 @@ const ExitDialog = ({ open, onOpenChange }: RoomDialogProps) => {
setCurrentRoom(null);
resetGame();
- navigate('/');
+ navigate('/rooms');
};
return (
diff --git a/fe/src/pages/GamePage/GameScreen/EndScreen.tsx b/fe/src/pages/GamePage/GameScreen/EndScreen.tsx
index cf5aa50..ee2bb96 100644
--- a/fe/src/pages/GamePage/GameScreen/EndScreen.tsx
+++ b/fe/src/pages/GamePage/GameScreen/EndScreen.tsx
@@ -3,13 +3,29 @@ import podiumAnimation from '@/assets/lottie/podium.json';
import useGameStore from '@/stores/zustand/useGameStore';
import { motion } from 'framer-motion';
import { Button } from '@/components/ui/button';
+import { useParams } from 'react-router-dom';
+import { getCurrentRoomQuery } from '@/stores/queries/getCurrentRoomQuery';
+import useRoomStore from '@/stores/zustand/useRoomStore';
const EndScreen = () => {
const rank = useGameStore((state) => state.rank);
const resetGame = useGameStore((state) => state.resetGame);
+ const { roomId } = useParams();
+ const { refetch } = getCurrentRoomQuery(roomId);
+ const { setCurrentRoom } = useRoomStore();
- const handleGameEnd = () => {
- resetGame();
+ const handleGameEnd = async () => {
+ try {
+ resetGame();
+ // room 정보 다시 가져오기
+ const { data } = await refetch();
+ // 새로운 room 정보로 상태 업데이트
+ if (data) {
+ setCurrentRoom(data);
+ }
+ } catch (error) {
+ console.error('Failed to refresh room data:', error);
+ }
};
const positions = {
@@ -32,7 +48,7 @@ const EndScreen = () => {
};
return (
-
+
{
{rank.slice(0, 3).map((playerName, index) => (
{
))}
- {/* 최종 순위 리스트 */}
{
- {/* 게임 종료 버튼 */}
{
- const resultData = useGameStore((state) => state.resultData);
+ const { resultData, turnData } = useGameStore();
if (!resultData) return null;
+ const getResultText = () => {
+ const resultText = resultData.result === 'PASS' ? 'PASS!' : 'FAIL!';
+
+ if (turnData?.gameMode === 'CLEOPATRA') {
+ return `${resultData.note} ${resultText}`;
+ }
+ return `${resultData.pronounceScore}점 ${resultText}`;
+ };
+
return (
{
className="absolute inset-0 flex items-center justify-center"
>
-
+
{resultData.playerNickname}
{
repeatType: 'loop',
}}
>
- {resultData.result === 'PASS' ? 'PASS!' : 'FAIL!'}
+ {getResultText()}
diff --git a/fe/src/pages/GamePage/GameScreen/GameScreen.tsx b/fe/src/pages/GamePage/GameScreen/GameScreen.tsx
index 54e576f..e0c1f03 100644
--- a/fe/src/pages/GamePage/GameScreen/GameScreen.tsx
+++ b/fe/src/pages/GamePage/GameScreen/GameScreen.tsx
@@ -15,7 +15,7 @@ const GameScreen = () => {
setCurrentPlayer(nickname);
}
}
- }, [currentPlayer, setCurrentPlayer]);
+ }, [currentPlayer]);
return turnData ?
:
;
};
diff --git a/fe/src/pages/GamePage/GameScreen/PlayScreen.tsx b/fe/src/pages/GamePage/GameScreen/PlayScreen.tsx
index 5918b5e..56a1caf 100644
--- a/fe/src/pages/GamePage/GameScreen/PlayScreen.tsx
+++ b/fe/src/pages/GamePage/GameScreen/PlayScreen.tsx
@@ -11,39 +11,45 @@ import { gameSocket } from '@/services/gameSocket';
import EndScreen from './EndScreen';
import ReadyScreen from './ReadyScreen';
import PitchVisualizer from '@/components/game/PitchVisualizer';
+import { useParams } from 'react-router-dom';
+import { usePreventRefresh } from '@/hooks/usePreventRefresh';
type GamePhase = 'intro' | 'gameplay' | 'grading' | 'result';
const PlayScreen = () => {
- const { currentRoom, currentPlayer } = useRoomStore();
+ const { currentPlayer } = useRoomStore();
const { setGameResult } = useGameStore();
const turnData = useGameStore((state) => state.turnData);
const resultData = useGameStore((state) => state.resultData);
const rank = useGameStore((state) => state.rank);
const [gamePhase, setGamePhase] = useState
('intro');
const [timeLeft, setTimeLeft] = useState(0);
+ const { roomId } = useParams();
const INTRO_TIME = 2000;
const RESULT_TIME = 3000;
+ // 새로고침 방지
+ usePreventRefresh(Boolean(turnData && rank.length === 0));
+
// 턴 데이터 변경 시 게임 초기화
useEffect(() => {
- if (!turnData && !resultData) return;
+ if (!turnData) return;
if (rank.length > 0) return;
setGamePhase('intro');
setGameResult(null);
- const introTimer = setTimeout(() => {
+ const introTimer = setTimeout(async () => {
setGamePhase('gameplay');
setTimeLeft(turnData.timeLimit); // gameplay 페이즈로 전환될 때 시간 설정
// 현재 플레이어 차례이고 게임 참여 가능한 경우에만 녹음 시작
- if (currentPlayer === turnData.playerNickname && currentRoom) {
- voiceSocket
+ if (currentPlayer === turnData.playerNickname) {
+ await voiceSocket
.startRecording(
signalingSocket.getLocalStream(),
- currentRoom.roomId,
+ roomId,
currentPlayer
)
.catch(console.error);
@@ -51,7 +57,7 @@ const PlayScreen = () => {
}, INTRO_TIME);
return () => clearTimeout(introTimer);
- }, [turnData, currentRoom, currentPlayer]);
+ }, [turnData]);
// 타이머 처리
useEffect(() => {
@@ -71,13 +77,13 @@ const PlayScreen = () => {
}, 1000);
return () => clearInterval(timer);
- }, [gamePhase, currentPlayer, turnData]);
+ }, [gamePhase, turnData]);
// 채점 중 -> 결과 화면 전환
useEffect(() => {
- if (resultData && gamePhase === 'grading') {
- setGamePhase('result');
- }
+ if (!resultData || gamePhase !== 'grading') return;
+
+ setGamePhase('result');
}, [resultData, gamePhase]);
// 다음 턴 result -> next 처리를 별도로
@@ -100,7 +106,7 @@ const PlayScreen = () => {
if (!turnData && !rank.length) return;
return (
-
+
{gamePhase === 'intro' && (
{
현재 차례 : {turnData.playerNickname}
- {turnData.gameMode === 'CLEOPATRA' ? '클레오파트라' : '발음 미션'}
+ {turnData.gameMode === 'CLEOPATRA' ? '클레오파트라' : '발음 게임'}
)}
diff --git a/fe/src/pages/GamePage/GameScreen/ReadyScreen.tsx b/fe/src/pages/GamePage/GameScreen/ReadyScreen.tsx
index 5b2ebfb..b001607 100644
--- a/fe/src/pages/GamePage/GameScreen/ReadyScreen.tsx
+++ b/fe/src/pages/GamePage/GameScreen/ReadyScreen.tsx
@@ -46,7 +46,7 @@ const ReadyScreen = () => {
};
return (
-
+
{isHost ? (
{
)}
- {!canStartGame && (
+ {!canStartGame ? (
모든 플레이어가 준비를 완료해야 게임을 시작할 수 있습니다.
+ ) : (
+
+ 모든 플레이어가 준비 완료되었습니다. 게임을 시작해 주세요!
+
)}
);
diff --git a/fe/src/pages/GamePage/PlayerList/Player.tsx b/fe/src/pages/GamePage/PlayerList/Player.tsx
index ef90152..a778535 100644
--- a/fe/src/pages/GamePage/PlayerList/Player.tsx
+++ b/fe/src/pages/GamePage/PlayerList/Player.tsx
@@ -1,5 +1,5 @@
import { Card, CardContent } from '@/components/ui/card';
-import { FaCrown, FaMicrophone, FaMicrophoneSlash } from 'react-icons/fa6';
+import { FaCrown, FaMicrophoneSlash, FaRegFaceSmile } from 'react-icons/fa6';
import VolumeBar from './VolumeBar';
import { PlayerProps } from '@/types/roomTypes';
import { isHost } from '@/utils/playerUtils';
@@ -12,7 +12,7 @@ import { gameSocket } from '@/services/gameSocket';
import MikeButton from '@/components/common/MikeButton';
import useGameStore from '@/stores/zustand/useGameStore';
-const Player = ({ playerNickname, isReady }: PlayerProps) => {
+const Player = ({ playerNickname, isReady, isDead, isLeft }: PlayerProps) => {
const { currentRoom, currentPlayer } = useRoomStore();
// 본인이 방장인지
const isCurrentPlayerHost = currentPlayer === currentRoom?.hostNickname;
@@ -54,11 +54,34 @@ const Player = ({ playerNickname, isReady }: PlayerProps) => {
return (
-
+
- {isPlayerHost ? : ''}
+ {isPlayerHost ? (
+
+ ) : (
+
+ )}
{playerNickname}
+
+
+ {isLeft ? (
+
+ ) : isDead ? (
+
+ ) : (
+ ''
+ )}
+
+
{isCurrentPlayer ? (
diff --git a/fe/src/pages/GamePage/PlayerList/PlayerList.tsx b/fe/src/pages/GamePage/PlayerList/PlayerList.tsx
index d64634a..02ae2c3 100644
--- a/fe/src/pages/GamePage/PlayerList/PlayerList.tsx
+++ b/fe/src/pages/GamePage/PlayerList/PlayerList.tsx
@@ -17,7 +17,7 @@ const PlayerList = ({ players }: PlayerListProps) => {
{Array.from({ length: emptySlots }).map((_, index) => (
))}
diff --git a/fe/src/pages/GamePage/PlayerList/VolumeBar.tsx b/fe/src/pages/GamePage/PlayerList/VolumeBar.tsx
index 84de5c4..87453ea 100644
--- a/fe/src/pages/GamePage/PlayerList/VolumeBar.tsx
+++ b/fe/src/pages/GamePage/PlayerList/VolumeBar.tsx
@@ -46,9 +46,9 @@ const VolumeBar = ({ playerNickname }: VolumeBarProps) => {
className="hover:opacity-80 transition-opacity"
>
{volumeLevel > 0 ? (
-
+
) : (
-
+
)}
{
const [showJoinDialog, setShowJoinDialog] = useState(false);
const [showExitDialog, setShowExitDialog] = useState(false);
- const { currentRoom, kickedPlayer, setKickedPlayer } = useRoomStore();
+ const { kickedPlayer, setKickedPlayer } = useRoomStore();
+ const currentRoom = useRoomStore((state) => state.currentRoom);
const audioManager = useAudioManager();
const { roomId } = useParams();
const { data: room } = getCurrentRoomQuery(roomId);
const nickname = sessionStorage.getItem('user_nickname');
+ useReconnect({ currentRoom });
+ useBackExit({ setShowExitDialog });
+
useEffect(() => {
if (room && !currentRoom) {
if (!nickname) {
@@ -31,9 +35,6 @@ const GamePage = () => {
}
}, [room, currentRoom, nickname]);
- useReconnect({ currentRoom });
- useBackExit({ setShowExitDialog });
-
// 오디오 매니저 설정
useEffect(() => {
signalingSocket.setAudioManager(audioManager);
@@ -106,27 +107,34 @@ const GamePage = () => {
}
return (
-
-
-
-
({
- playerNickname: player.playerNickname,
- isReady: player.isReady,
- }))}
- />
-
-
-
-
- ✨링크 복사✨
-
-
- 나가기
-
+
+
+
+
+
({
+ playerNickname: player.playerNickname,
+ isReady: player.isReady,
+ isDead: player.isDead,
+ isLeft: player.isLeft,
+ }))}
+ />
+
+
+
+
+ ✨링크 복사✨
+
+
+ 나가기
+
+
+
-
);
};
diff --git a/fe/src/pages/LandingPage/index.tsx b/fe/src/pages/LandingPage/index.tsx
new file mode 100644
index 0000000..b5136bd
--- /dev/null
+++ b/fe/src/pages/LandingPage/index.tsx
@@ -0,0 +1,214 @@
+import { Button } from '@/components/ui/button';
+import { Card } from '@/components/ui/card';
+import { Mic, Users, Volume2, Zap, Smartphone, Laptop } from 'lucide-react';
+
+export default function LandingPage() {
+ return (
+
+
+
+
+
+
+ 음성으로 즐기는 실시간 웹 게임! 친구들과 함께 목소리로 도전하세요.
+
+
+ (window.location.href = 'https://clovapatra.com/rooms')
+ }
+ >
+ 지금 바로 게임하기
+
+
+ 회원가입 없이 즉시 플레이 가능!
+
+
+
+
+
+
+
+
+ 주요 기능
+
+
+
+
+
+
+ 멀티플레이
+
+
+ 친구들과 함께 실시간으로 게임을 즐기세요. 최대 4명까지 참여
+ 가능한 즐거운 경험!
+
+
+
+
+
+
+
+ 음성 도전
+
+
+ 목소리로 진행되는 다양한 도전 과제! 발음과 음정을 분석하여
+ 점수를 획득하고 승리를 쟁취하세요.
+
+
+
+
+
+
+
+ 실시간 음성 채팅
+
+
+ 고품질 음성 채팅으로 끊김 없는 소통을 즐기세요. 게임 중 전략을
+ 논의하거나 함께 웃고 떠들어보세요!
+
+
+
+
+
+
+
+
+
+
+ 게임 모드
+
+
+
+
+
+ 클레오파트라 모드
+
+
+ 이전 참가자보다 높은 음을 내야 하는 도전 게임입니다. 얼마나
+ 높은 음까지 낼 수 있을까요? 목소리 컨트롤의 달인이 되어보세요!
+
+
+
+
+
+
+
+
+
+ 발음 도전 모드
+
+
+ 주어진 문장을 정확하게 발음하여 90점 이상을 획득해야 하는 도전
+ 게임입니다. 당신의 발음 실력을 뽐내보세요!
+
+
+
+
{' '}
+
+
+
+
+
+
+
+
+
+ 추가 특징
+
+
+
+
+
+
+ 간편한 시작
+
+
+ 회원가입이나 로그인 없이 즉시 게임을 시작할 수 있습니다. 클릭
+ 한 번으로 친구들과 함께 즐겨보세요!
+
+
+
+
+
+
+
+ 모바일 지원
+
+
+ 스마트폰이나 태블릿에서도 완벽하게 작동합니다. 언제 어디서나
+ 게임을 즐길 수 있어요!
+
+
+
+
+
+
+
+ 크로스 플랫폼
+
+
+ PC, 태블릿, 스마트폰 등 다양한 디바이스에서 동일한 경험을
+ 제공합니다. 어떤 기기에서든 즐겨보세요!
+
+
+
+
+
+
+
+
+
+
+ 지금 바로 시작하세요!
+
+
+ 친구들과 함께 즐거운 음성 게임의 세계로 빠져보세요. 회원가입 없이
+ 바로 시작할 수 있습니다!
+
+
+ (window.location.href = 'https://clovapatra.com/rooms')
+ }
+ >
+ 게임 시작하기
+
+
+
+
+ );
+}
diff --git a/fe/src/pages/NotFoundPage/index.tsx b/fe/src/pages/NotFoundPage/index.tsx
new file mode 100644
index 0000000..0294a9e
--- /dev/null
+++ b/fe/src/pages/NotFoundPage/index.tsx
@@ -0,0 +1,57 @@
+import { Button } from '@/components/ui/button';
+import { motion } from 'framer-motion';
+import { useEffect } from 'react';
+
+export const NotFound = () => {
+ useEffect(() => {
+ // NotFound 페이지에서만 스크롤 숨기기
+ document.body.style.overflow = 'hidden';
+ document.documentElement.style.overflow = 'hidden';
+
+ // 컴포넌트 언마운트 시 스크롤 복원
+ return () => {
+ document.body.style.overflow = 'auto';
+ document.documentElement.style.overflow = 'auto';
+ };
+ }, []);
+
+ return (
+
+
+
+
+
+ 4 0 4
+
+ PAGE NOT FOUND
+ {' '}
+ {/* 간격 증가 */}
+
+
+
+
+ 앗! 방을 찾을 수 없습니다.
+
+
+ 방이 삭제되었거나 존재하지 않는 방입니다.
+
+
(window.location.href = '/rooms')}
+ className="font-galmuri"
+ size="lg"
+ >
+ 메인으로 돌아가기
+
+
+
+ );
+};
diff --git a/fe/src/pages/RoomListPage/RoomDialog/CreateDialog.tsx b/fe/src/pages/RoomListPage/RoomDialog/CreateDialog.tsx
index f5eba39..683c8f2 100644
--- a/fe/src/pages/RoomListPage/RoomDialog/CreateDialog.tsx
+++ b/fe/src/pages/RoomListPage/RoomDialog/CreateDialog.tsx
@@ -11,11 +11,12 @@ import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import { useAudioPermission } from '@/hooks/useAudioPermission';
import { useDialogForm } from '@/hooks/useDialogForm';
+import { useFormValidation } from '@/hooks/useFormValidation';
import { gameSocket } from '@/services/gameSocket';
import { signalingSocket } from '@/services/signalingSocket';
import useRoomStore from '@/stores/zustand/useRoomStore';
import { RoomDialogProps } from '@/types/roomTypes';
-import { useState } from 'react';
+import { useEffect, useState } from 'react';
import { useNavigate } from 'react-router-dom';
const CreateDialog = ({ open, onOpenChange }: RoomDialogProps) => {
@@ -24,17 +25,43 @@ const CreateDialog = ({ open, onOpenChange }: RoomDialogProps) => {
const [hostNickname, setHostNickname] = useState('');
const navigate = useNavigate();
const setCurrentPlayer = useRoomStore((state) => state.setCurrentPlayer);
+ const { errors, validateForm, updateInput, setErrors, resetForm } =
+ useFormValidation();
const { requestPermission } = useAudioPermission();
+ const isFormValid =
+ !errors.nickname &&
+ !errors.roomName &&
+ roomName.trim() &&
+ hostNickname.trim();
+
+ useEffect(() => {
+ if (!open) {
+ setRoomName('');
+ setHostNickname('');
+ setIsLoading(false);
+ resetForm();
+ }
+ }, [open, setErrors]);
const resetAndClose = () => {
- setRoomName('');
- setHostNickname('');
- setIsLoading(false);
onOpenChange(false);
};
+ // 입력값 변경 핸들러
+ const handleRoomNameChange = (e: React.ChangeEvent
) => {
+ const value = e.target.value;
+ setRoomName(value);
+ updateInput('roomName', value);
+ };
+
+ const handleNicknameChange = (e: React.ChangeEvent) => {
+ const value = e.target.value;
+ setHostNickname(value);
+ updateInput('nickname', value);
+ };
+
const handleSubmit = async () => {
- if (!roomName.trim() || !hostNickname.trim()) return;
+ if (!validateForm(hostNickname, roomName)) return;
try {
setIsLoading(true);
@@ -62,7 +89,11 @@ const CreateDialog = ({ open, onOpenChange }: RoomDialogProps) => {
navigate(`/game/${room.roomId}`);
} catch (error) {
console.error('시그널링 서버 접속 실패:', error);
- alert('음성 채팅 연결에 실패했습니다.');
+ alert('[ERROR] 음성 채팅 연결에 실패했습니다.');
+
+ if (error === 'ValidationFailed') {
+ console.error('[ERROR] 사용자 입력값 ERROR', error);
+ }
}
});
@@ -84,6 +115,7 @@ const CreateDialog = ({ open, onOpenChange }: RoomDialogProps) => {
],
onSubmit: handleSubmit,
isSubmitDisabled: !roomName.trim() || !hostNickname.trim() || isLoading,
+ open,
});
return (
@@ -106,15 +138,16 @@ const CreateDialog = ({ open, onOpenChange }: RoomDialogProps) => {
{
- setRoomName(e.target.value);
- }}
+ onChange={handleRoomNameChange}
placeholder="방 제목을 입력하세요"
className="col-span-3"
disabled={isLoading}
ref={(el) => (inputRefs.current[0] = el)}
onKeyDown={(e) => handleKeyDown(e, 0)}
/>
+ {errors.roomName && (
+ {errors.roomName}
+ )}
@@ -146,7 +180,7 @@ const CreateDialog = ({ open, onOpenChange }: RoomDialogProps) => {
확인
diff --git a/fe/src/pages/RoomListPage/RoomDialog/JoinDialog.tsx b/fe/src/pages/RoomListPage/RoomDialog/JoinDialog.tsx
index 7763b73..7322507 100644
--- a/fe/src/pages/RoomListPage/RoomDialog/JoinDialog.tsx
+++ b/fe/src/pages/RoomListPage/RoomDialog/JoinDialog.tsx
@@ -9,8 +9,10 @@ import {
} from '@/components/ui/dialog';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
+import { ERROR_CODES, ERROR_MESSAGES } from '@/constants/errors';
import { useAudioPermission } from '@/hooks/useAudioPermission';
import { useDialogForm } from '@/hooks/useDialogForm';
+import { useFormValidation } from '@/hooks/useFormValidation';
import { gameSocket } from '@/services/gameSocket';
import { signalingSocket } from '@/services/signalingSocket';
import { getCurrentRoomQuery } from '@/stores/queries/getCurrentRoomQuery';
@@ -31,39 +33,82 @@ const JoinDialog = ({ open, onOpenChange, roomId }: JoinDialogProps) => {
const { data: currentRoom } = getCurrentRoomQuery(roomId);
const setCurrentPlayer = useRoomStore((state) => state.setCurrentPlayer);
const { requestPermission } = useAudioPermission();
+ const { errors, validateForm, updateInput, setErrors, resetForm } =
+ useFormValidation();
+ const isFormValid = !errors.nickname && playerNickname.trim();
- const resetAndClose = () => {
+ const resetState = () => {
setPlayerNickname('');
setIsLoading(false);
+ resetForm();
+ };
+
+ const handleOpenChange = (isOpen: boolean) => {
+ if (!isOpen) {
+ resetState();
+ navigate('/rooms');
+ }
+ onOpenChange(isOpen);
+ };
+
+ const handleCancel = () => {
+ resetState();
+ navigate('/rooms');
onOpenChange(false);
};
+ const handleNicknameChange = (e: React.ChangeEvent) => {
+ const value = e.target.value;
+ setPlayerNickname(value);
+ updateInput('nickname', value);
+
+ if (errors.nickname) {
+ setErrors((prev) => ({ ...prev, nickname: '' }));
+ }
+ };
+
const handleJoin = async () => {
- if (!playerNickname.trim()) return;
+ if (!validateForm(playerNickname)) return;
try {
setIsLoading(true);
- // 오디오 권한 요청 -> 허용하지 않을 시 입장 불가
- const stream = await requestPermission();
-
// 참가자 닉네임 저장
sessionStorage.setItem('user_nickname', playerNickname.trim());
- setCurrentRoom(currentRoom);
setCurrentPlayer(playerNickname.trim());
+ setCurrentRoom(currentRoom);
+ // 게임 소켓 입장 시도
gameSocket.connect();
- signalingSocket.connect();
+ await gameSocket.joinRoom(roomId, playerNickname.trim());
+
+ // 오디오 권한 요청
+ const stream = await requestPermission();
// 스트림 생성 후 방 입장
+ signalingSocket.connect();
await signalingSocket.setupLocalStream(stream);
await signalingSocket.joinRoom(currentRoom, playerNickname.trim());
- gameSocket.joinRoom(roomId, playerNickname.trim());
- resetAndClose();
+ // 성공시 게임방으로 이동
+ onOpenChange(false);
navigate(`/game/${roomId}`);
} catch (error) {
- console.error('방 입장 실패:', error);
+ if (error === ERROR_CODES.duplicatedNickname) {
+ setErrors((prev) => ({
+ ...prev,
+ nickname: ERROR_MESSAGES.duplicatedNickname,
+ }));
+ // 닉네임 중복 에러의 경우 홈 리다이렉션하지 않음
+ gameSocket.disconnect();
+ signalingSocket.disconnect();
+ } else {
+ // 다른 에러의 경우 방 목록 페이지로 리다이렉션
+ console.error('방 입장 실패:', error);
+ gameSocket.disconnect();
+ signalingSocket.disconnect();
+ navigate('/rooms');
+ }
} finally {
setIsLoading(false);
}
@@ -80,10 +125,11 @@ const JoinDialog = ({ open, onOpenChange, roomId }: JoinDialogProps) => {
],
onSubmit: handleJoin,
isSubmitDisabled: !playerNickname.trim() || isLoading,
+ open,
});
return (
-
+
방 입장하기
@@ -100,20 +146,23 @@ const JoinDialog = ({ open, onOpenChange, roomId }: JoinDialogProps) => {
setPlayerNickname(e.target.value)}
+ onChange={handleNicknameChange}
placeholder="닉네임을 입력하세요"
className="col-span-3"
disabled={isLoading}
ref={(el) => (inputRefs.current[0] = el)}
onKeyDown={(e) => handleKeyDown(e, 0)}
/>
+ {errors.nickname && (
+ {errors.nickname}
+ )}
취소
@@ -121,7 +170,7 @@ const JoinDialog = ({ open, onOpenChange, roomId }: JoinDialogProps) => {
입장하기
diff --git a/fe/src/pages/RoomListPage/RoomHeader/RoomHeader.tsx b/fe/src/pages/RoomListPage/RoomHeader/RoomHeader.tsx
index b47fbae..da8c2e7 100644
--- a/fe/src/pages/RoomListPage/RoomHeader/RoomHeader.tsx
+++ b/fe/src/pages/RoomListPage/RoomHeader/RoomHeader.tsx
@@ -1,6 +1,6 @@
import { Button } from '@/components/ui/button';
import { useState } from 'react';
-import RoomDialog from '../RoomDialog/CreateDialog';
+import CreateDialog from '../RoomDialog/CreateDialog';
const RoomHeader = () => {
const [isDialogOpen, setIsDialogOpen] = useState(false);
@@ -12,13 +12,13 @@ const RoomHeader = () => {
return (
<>
- 방 목록
-
+ 방 목록
+
방 만들기
-
+
>
);
};
diff --git a/fe/src/pages/RoomListPage/RoomList/GameRoom.tsx b/fe/src/pages/RoomListPage/RoomList/GameRoom.tsx
index 7efca1c..09a13ea 100644
--- a/fe/src/pages/RoomListPage/RoomList/GameRoom.tsx
+++ b/fe/src/pages/RoomListPage/RoomList/GameRoom.tsx
@@ -39,13 +39,13 @@ const GameRoom = ({ room, onJoinRoom }: GameRoomProps) => {
상태:{' '}
{isGameStarted(room.status) ? '게임 중' : '대기 중'}
diff --git a/fe/src/pages/RoomListPage/RoomList/Pagination.tsx b/fe/src/pages/RoomListPage/RoomList/Pagination.tsx
index 1fa9032..6d2639c 100644
--- a/fe/src/pages/RoomListPage/RoomList/Pagination.tsx
+++ b/fe/src/pages/RoomListPage/RoomList/Pagination.tsx
@@ -1,24 +1,30 @@
import { Button } from '@/components/ui/button';
+import { getRoomsQuery } from '@/stores/queries/getRoomsQuery';
+import useRoomStore from '@/stores/zustand/useRoomStore';
+import { useEffect } from 'react';
import { FaChevronLeft, FaChevronRight } from 'react-icons/fa6';
-interface PaginationProps {
- currentPage: number;
- totalPages: number;
- onPageChange: (page: number) => void;
-}
+const Pagination = () => {
+ const { pagination, setUserPage } = useRoomStore();
+ const userPage = useRoomStore((state) => state.userPage);
+ const { totalPages } = pagination;
+ const { refetch } = getRoomsQuery(userPage);
+
+ useEffect(() => {
+ refetch();
+ }, [userPage, refetch]);
+
+ const handlePageChange = async (newPage: number) => {
+ setUserPage(newPage);
+ };
-const Pagination = ({
- currentPage,
- totalPages,
- onPageChange,
-}: PaginationProps) => {
return (
onPageChange(currentPage - 1)}
- disabled={currentPage === 0}
+ disabled={!userPage}
+ onClick={() => handlePageChange(userPage - 1)}
>
@@ -26,9 +32,9 @@ const Pagination = ({
{Array.from({ length: totalPages }, (_, i) => (
onPageChange(i)}
+ onClick={() => handlePageChange(i)}
className="w-8 h-8"
>
{i + 1}
@@ -38,8 +44,8 @@ const Pagination = ({
onPageChange(currentPage + 1)}
- disabled={currentPage === totalPages - 1}
+ onClick={() => handlePageChange(userPage + 1)}
+ disabled={userPage === totalPages - 1}
>
diff --git a/fe/src/pages/RoomListPage/RoomList/RoomList.tsx b/fe/src/pages/RoomListPage/RoomList/RoomList.tsx
index 3a6886a..9ee0270 100644
--- a/fe/src/pages/RoomListPage/RoomList/RoomList.tsx
+++ b/fe/src/pages/RoomListPage/RoomList/RoomList.tsx
@@ -1,22 +1,26 @@
import GameRoom from './GameRoom';
import Pagination from './Pagination';
-import { usePagination } from '@/hooks/usePagination';
import { RULES } from '@/constants/rules';
-import { useState } from 'react';
+import { useEffect, useState } from 'react';
import JoinDialog from '../RoomDialog/JoinDialog';
+import useRoomStore from '@/stores/zustand/useRoomStore';
const RoomList = () => {
- const {
- currentPage,
- setCurrentPage,
- totalPages,
- currentRooms,
- isEmpty,
- showPagination,
- } = usePagination();
-
+ const rooms = useRoomStore((state) => state.rooms);
+ const pagination = useRoomStore((state) => state.pagination);
const [isJoinDialogOpen, setIsJoinDialogOpen] = useState(false);
const [selectedRoomId, setSelectedRoomId] = useState(null);
+ const [showPagination, setShowPagination] = useState(false);
+
+ useEffect(() => {
+ if (pagination?.totalPages > 1) {
+ setShowPagination(true);
+ }
+
+ if (pagination?.totalPages === 1) {
+ setShowPagination(false);
+ }
+ }, [pagination]);
const onJoinRoom = (roomId: string) => {
setSelectedRoomId(roomId);
@@ -26,29 +30,17 @@ const RoomList = () => {
return (
- {currentRooms.map((room) => (
+ {rooms.map((room) => (
))}
- {currentRooms.length > 0 &&
- currentRooms.length < RULES.maxPage &&
- Array.from({ length: RULES.maxPage - currentRooms.length }).map(
- (_, i) =>
- )}
+ {rooms.length > 0 &&
+ rooms.length < RULES.maxPage &&
+ Array.from({ length: RULES.maxPage - rooms.length }).map((_, i) => (
+
+ ))}
- {showPagination && (
-
- )}
-
- {isEmpty && (
-
- 생성된 방이 없습니다.
-
- )}
+ {showPagination &&
}
{selectedRoomId && (
{
const [showAlert, setShowAlert] = useState(false);
- const [kickedRoomName, setKickedRoomName] = useState('');
+ const [alertMessage, setAlertMessage] = useState('');
+ const { rooms } = useRoomStore();
+ const isEmpty = rooms.length === 0;
useRoomsSSE();
useEffect(() => {
const kickedRoomName = sessionStorage.getItem('kickedRoomName');
+ // 강퇴 처리
if (kickedRoomName) {
- setKickedRoomName(kickedRoomName);
+ setAlertMessage(`${kickedRoomName}방에서 강퇴되었습니다.`);
setShowAlert(true);
sessionStorage.removeItem('kickedRoomName');
}
+
+ // 게임 중 입장 에러
+ const gameInProgressError = sessionStorage.getItem('gameInProgressError');
+
+ if (gameInProgressError) {
+ setAlertMessage('게임이 진행 중인 방에는 입장할 수 없습니다.');
+ setShowAlert(true);
+ sessionStorage.removeItem('gameInProgressError');
+ }
}, []);
return (
-
-
-
-
+
+
+
+
+ {isEmpty ? (
+
+
+
+ ) : (
+
+ )}
+
+
);
diff --git a/fe/src/services/gameSocket.ts b/fe/src/services/gameSocket.ts
index b3fceb7..e39cdb5 100644
--- a/fe/src/services/gameSocket.ts
+++ b/fe/src/services/gameSocket.ts
@@ -79,7 +79,7 @@ class GameSocket extends SocketService {
setCurrentRoom(null);
setCurrentPlayer(null);
- window.location.href = '/';
+ window.location.href = '/rooms';
return;
}
@@ -112,7 +112,19 @@ class GameSocket extends SocketService {
}
joinRoom(roomId: string, playerNickname: string) {
- this.socket?.emit('joinRoom', { roomId, playerNickname });
+ return new Promise((resolve, reject) => {
+ // error 한번만 체크하는 이벤트 리스너
+ this.socket?.once('error', (error) => {
+ reject(error);
+ });
+
+ // updateUsers가 오면 성공으로 처리
+ this.socket?.once('updateUsers', () => {
+ resolve(true);
+ });
+
+ this.socket?.emit('joinRoom', { roomId, playerNickname });
+ });
}
kickPlayer(playerNickname: string) {
diff --git a/fe/src/stores/queries/getRoomsQuery.ts b/fe/src/stores/queries/getRoomsQuery.ts
index 38da935..8930c1b 100644
--- a/fe/src/stores/queries/getRoomsQuery.ts
+++ b/fe/src/stores/queries/getRoomsQuery.ts
@@ -1,6 +1,6 @@
import { useQuery } from '@tanstack/react-query';
import axios from 'axios';
-import { Room } from '@/types/roomTypes';
+import { PaginatedResponse, Room } from '@/types/roomTypes';
import { ENV } from '@/config/env';
const gameAPI = axios.create({
@@ -9,12 +9,15 @@ const gameAPI = axios.create({
withCredentials: false,
});
-export const getRoomsQuery = () => {
+export const getRoomsQuery = (currentPage: number) => {
return useQuery({
queryKey: ['rooms'],
queryFn: async () => {
- const response = await gameAPI.get
('/api/rooms');
- return response.data;
+ const { data } = await gameAPI.get>(
+ `/api/rooms?page=${currentPage}`
+ );
+
+ return data;
},
});
};
diff --git a/fe/src/stores/zustand/useGameStore.ts b/fe/src/stores/zustand/useGameStore.ts
index 3032c67..93e7249 100644
--- a/fe/src/stores/zustand/useGameStore.ts
+++ b/fe/src/stores/zustand/useGameStore.ts
@@ -7,7 +7,7 @@ interface GameStore {
resultData: GameResultProps;
muteStatus: MuteStatus;
rank: string[];
- isGameStarted: boolean;
+ gameInProgressError: boolean;
}
interface GameActions {
@@ -15,7 +15,7 @@ interface GameActions {
setGameResult: (resultData: GameResultProps) => void;
setMuteStatus: (muteStatus: MuteStatus) => void;
setRank: (rank: string[]) => void;
- setIsGameStarted: (isGameStarted: boolean) => void;
+ setGameInProgressError: (value: boolean) => void;
resetGame: () => void;
}
@@ -23,8 +23,8 @@ const initialState: GameStore = {
turnData: null,
resultData: null,
muteStatus: {},
- isGameStarted: false,
rank: [],
+ gameInProgressError: false,
};
const useGameStore = create()(
@@ -41,13 +41,11 @@ const useGameStore = create()(
resultData,
})),
- setIsGameStarted: (isGameStarted) =>
- set(() => ({
- isGameStarted,
- })),
-
setRank: (rank) => set(() => ({ rank })),
+ setGameInProgressError: (gameInProgressError) =>
+ set({ gameInProgressError }),
+
resetGame: () =>
set({
// 초기화 로직
diff --git a/fe/src/stores/zustand/useRoomStore.ts b/fe/src/stores/zustand/useRoomStore.ts
index ba4cbf4..36c82aa 100644
--- a/fe/src/stores/zustand/useRoomStore.ts
+++ b/fe/src/stores/zustand/useRoomStore.ts
@@ -1,4 +1,4 @@
-import { Room } from '@/types/roomTypes';
+import { PaginationData, Room } from '@/types/roomTypes';
import { create } from 'zustand';
import { devtools } from 'zustand/middleware';
@@ -7,6 +7,8 @@ interface RoomStore {
currentRoom: Room | null;
currentPlayer: string | null;
kickedPlayer: string | null;
+ pagination: PaginationData | null;
+ userPage: number;
}
interface RoomActions {
@@ -14,13 +16,17 @@ interface RoomActions {
setCurrentRoom: (room: Room) => void;
setCurrentPlayer: (nickname: string) => void;
setKickedPlayer: (nickname: string) => void;
+ setPagination: (pagination: PaginationData) => void;
+ setUserPage: (userPage: number) => void;
}
const initialState: RoomStore = {
rooms: [],
currentRoom: null,
- currentPlayer: null,
- kickedPlayer: null,
+ currentPlayer: '',
+ kickedPlayer: '',
+ pagination: null,
+ userPage: 0,
};
const useRoomStore = create()(
@@ -46,6 +52,17 @@ const useRoomStore = create()(
set(() => ({
kickedPlayer: nickname,
})),
+
+ setPagination: (pagination) =>
+ set(() => ({
+ pagination,
+ })),
+
+ setUserPage: (userPage) => {
+ set(() => ({
+ userPage,
+ }));
+ },
}))
);
diff --git a/fe/src/types/roomTypes.ts b/fe/src/types/roomTypes.ts
index 8f7e9c6..99a424f 100644
--- a/fe/src/types/roomTypes.ts
+++ b/fe/src/types/roomTypes.ts
@@ -1,6 +1,8 @@
export interface PlayerProps {
playerNickname: string;
isReady: boolean;
+ isDead: boolean;
+ isLeft: boolean;
}
export interface Room {
@@ -15,3 +17,16 @@ export interface RoomDialogProps {
open: boolean;
onOpenChange: (open: boolean) => void;
}
+
+export interface PaginationData {
+ currentPage: number;
+ totalPages: number;
+ totalItems: number;
+ hasNextPage: boolean;
+ hasPreviousPage: boolean;
+}
+
+export interface PaginatedResponse {
+ rooms: T[];
+ pagination: PaginationData;
+}
diff --git a/fe/src/types/socketTypes.ts b/fe/src/types/socketTypes.ts
index 784683e..c222ebe 100644
--- a/fe/src/types/socketTypes.ts
+++ b/fe/src/types/socketTypes.ts
@@ -34,6 +34,8 @@ export interface TurnData {
export interface GameResultProps {
playerNickname: string;
result: string;
+ note?: string;
+ pronounceScore?: number;
}
export type MuteStatus = {
diff --git a/fe/src/utils/validator.ts b/fe/src/utils/validator.ts
new file mode 100644
index 0000000..28ece0c
--- /dev/null
+++ b/fe/src/utils/validator.ts
@@ -0,0 +1,37 @@
+import { ERROR_MESSAGES } from '@/constants/errors';
+
+export const validateNickname = (nickname: string): string => {
+ const trimmed = nickname.trim();
+ const regex = /^[a-zA-Z0-9가-힣ㄱ-ㅎㅏ-ㅣ ]+$/;
+ let error = '';
+
+ switch (true) {
+ case !trimmed:
+ error = ERROR_MESSAGES.emptyNickname;
+ break;
+ case !regex.test(trimmed):
+ error = ERROR_MESSAGES.invalidNickname;
+ break;
+ case trimmed.length < 2 || trimmed.length > 8:
+ error = ERROR_MESSAGES.nicknameLength;
+ break;
+ }
+
+ return error;
+};
+
+export const validateRoomName = (roomName: string): string => {
+ const trimmed = roomName.trim();
+ let error = '';
+
+ switch (true) {
+ case !trimmed:
+ error = ERROR_MESSAGES.emptyRoomName;
+ break;
+ case trimmed.length < 2 || trimmed.length > 12:
+ error = ERROR_MESSAGES.roomNameLength;
+ break;
+ }
+
+ return error;
+};
diff --git a/fe/tailwind.config.js b/fe/tailwind.config.js
index b0d4be2..19d70fe 100644
--- a/fe/tailwind.config.js
+++ b/fe/tailwind.config.js
@@ -4,11 +4,17 @@ export default {
content: ['./index.html', './src/**/*.{ts,tsx,js,jsx}'],
theme: {
extend: {
+ backgroundImage: {
+ 'main-desert': 'url(https://i.imgur.com/RMCkgEF.png)',
+ },
+
fontFamily: {
galmuri: ['Galmuri11', 'monospace'],
galmuri9: ['Galmuri9', 'monospace'],
galmuri14: ['Galmuri14', 'monospace'],
+ pretendard: ['Pretendard', 'sans-serif'],
},
+
fontSize: {
'galmuri-20': ['20px'],
},
@@ -18,7 +24,15 @@ export default {
md: 'calc(var(--radius) - 2px)',
sm: 'calc(var(--radius) - 4px)',
},
+
colors: {
+ brand: {
+ main: '#74D7C1',
+ navy: '#02032F',
+ gold: '#FFB400',
+ mint: '#13E7EF',
+ },
+
background: 'hsl(var(--background))',
foreground: 'hsl(var(--foreground))',
card: {