목차


데이터 모델링의 이해

데이터 모델에 대한 기본 개념을 위한 모델링의 관점, 요소, 표기법에 대한 설명과 표기법에 관련하여 엔터티, 속성, 관계, 식별자를 설명

modeling

정의

사람이 살아가면서 나타날 수 있는 다양한 현상을 표기법에 의해 규칙을 가지고 표기하는 것

모델링의 특징

  • 추상화 : 현실세계를 일정한 형식에 맞추어 표현한다는 의미
  • 단순화 : 현실세계를 약속된 규약에 의해 제한된 표기법이나 언어로 표현해 쉽게 이해하게 만든다는 의미
  • 명확화 : 대상에 대하여 애매모호함을 제거하고 정확하게 기술하는 것을 의미

실무적인 목적

  • 업무정보를 구성하는 기초가 되는 정보를 일정하게 표기 \(\rightarrow\) 정보시스템 구축의 대상이 되는 업무 내용을 정확하게 파악하는 것
  • 분석된 모델을 가지고 실제 데이터베이스를 생성하여 개발 및 데이터 관리에 사용하기 위한 것

데이터 모델을 통한 내부적 이점

  • 시스템의 구조와 행동을 명세화
  • 시스템을 구축하는 구조화된 틀 제공
  • 시스템 구축 과정에서 결정한 것들을 문서화
  • 특정 목표에 따른 구체화된 표현방법 제공

데이터 모델링의 중요성과 유의점

파급효과

시스템 구축 과정에서 단위 테스트들이 진행됨에 있어 모델변경이 불가피한 경우 데이터 구조의 변경에 의해 전체 시스템 구축에 큰 위험요소가 될 수 있다.

간결한 표현

데이터 모델은 건축물의 설계 도면에 해당한다. 데이터 정합성을 유지할 수 있으며, 정보요구사항을 정확하고 간결하게 나타내는 것이 중요

데이터의 품질

데이터의 높은 정확도 요구, 데이터의 구조, 중복 데이터의 미정의, 비즈니스 정의 불충분, 데이터의 불일치가 요구되어진다.

  • 중복 : 여러 장소에 같은 정보를 저장하지 않도록 해야한다.
  • 비유연성 : 데이터 정의와 프로세스를 분리해 프로세스의 변화가 파급효과를 줄일 수 있게 한다.
  • 비일관성 : 데이터간 상호 연관관계에 대해 명확하게 정의하여 데이터가 일관성있게 유지될 수 있게 한다.

모델링의 관점(Modeling Perspective)

업무의 내용과 정보시스템의 모습을 적절한 표기법에 따라 표현하는 것을 모델링이라 할 때 3가지 관점으로 얘기할 수 있다.

  • 데이터 관점 : 어떤 데이터와 관련이 있는지, 데이터 간의 관계는 무엇인지 모델링하는 방법
  • 프로세스 관점 : 업무가 실제하고 있는 일이 무엇인지와 무엇을 해야하는지 모델링하는 방법
  • 데이터, 프로세스의 상관관점 : 업무가 처리하는 일의 방법에 따라 어떻게 영향을 받고 있는지 모델링 하는 방법

정보시스템: 데이터를 입력받아 처리하여 정보를 산출하는 시스템

모델링 프로세스(modeling process)

  • 개념적 모델링 : 추상적, 업무중심적, 포괄적 수준의 모델링
  • 논리적 모델링 : 구축하고자 하는 업무에 대하여 Key, 속성, 관계를 정확하게 표현, 재사용성이 높음
  • 물리적 모델링 : 실제 데이터베이스에 이식할 수 있도록 물리적 성격을 고려한 설계

개념적 모델링

데이터 요구사항 파악 및 자료의 중요도 및 필요성 결정 엔터티-관계 다이어그램 생성하는 단계. 이는 DB가 사용자에게 어떤 데이터가 중요한지 나타내기 위해 사용

전 조직에 대한 개념적 모델링을 전사적 데이터 모델이라 한다.

자료의 구조와 자료의 필요성을 파악하는데 유용

논리적 모델링

비즈니스 정보의 논리적 구조와 규칙을 명확하게 표현하는 과정 정규화와 상세화가 진행된다.

정규화 : 논리 데이터 모델의 일관성 확보 및 중복제거를 통해 속성들이 가장 적절한 엔터티에 배치되도록 함으로써 신뢰성 있는 데이터 구조를 얻는데 목적이 있다.

상세화 : 식별자확정, 정규화, M:M관계 해소, 참조 무결성 규칙 정의 등을 진행

물리적 모델링

물리적 저장구조와 저장장치, 자료에 대한 접근방법등을 결정하는 단계

데이터 독립성(data independent)

유지보수의 문제, 데이터의 중복 문제, 데이터 복잡도 증가, 요구사항에 대응성 저하 문제 등으로 데이터 독립성이 필요해졌다.

  • 데이터 베이스의 구조
  • 독립성
  • 사상

데이터베이스의 구조

외부단계와 개념적 단계, 내부단계로 구성되며 서로 간섭되지 않는 모델을 제시

데이터 모델링에 구성의 중요 요소(Important factors)

업무가 관여하는 어떤 것(Things)
어떤 것이 가지는 성격(Attributes)
업무가 관여하는 어떤 것 간의 관계(Relationships)

ERD(Entitiy Relationship Diagram)

ERD : 엔터티 간 관계를 이해하기 쉽게 도식화한 다이어그램을 의미

ERD 생성 과정

  • 엔터티를 그린다.
  • 엔터티를 적절하게 배치한다.
  • 엔터티간 관계를 설정한다.
  • 관계명을 기술한다.
  • 관계의 참여도를 기술한다.
  • 관계의 필수여부를 기술한다.

엔터티 그리기

사람의 눈은 왼쪽에서 오른쪽, 위에서 아래로 이동하는 경향이 존재

이를 고려하여 가장 중요한 엔터티를 왼쪽상단에 배치한 후 이를 중심으로 나열하며 전개

해당 업무에서 가장 중요한 엔터티의 경우 전체 엔터티와 잘 어울릴 수 있게 왼쪽 상단에서 조금 아래에 배치하는 것이 관계를 배치할 때 효율적

엔터티간 관계 설정

초기에는 Primary Key로 속성이 상속되는 식별자 관계를 설정

중복되는 관계가 발생되지 않도록 하고 Circle 관계도 발생하지 않도록 유의

관계명 기술

관계이름은 현재형을 사용하고 지나치게 포괄적인 용어(예, 이다, 가진다 등)는 사용하지 않는다.

관계의 필수여부를 기술

ERD 관계 관계차수와 선택성 표시 관계에 대한 이름을 모두 지정하였으면 관계가 참여하는 성격 중 엔터티내에 인스턴스들이 얼마나 관계에 참여하는 지를 나타내는 관계차수(Cardinality)를 표현

IE표기법으로는 하나(1, One)의 관계는 실선으로 표기 다수참여(Many)의 관계는 까마귀발과 같은 모양

Barker표기법으로는 점선과 실선을 혼합하여 표기 다수참여(Many)의 관계는 까마귀발과 같은 모양

관계의 필수/선택표시는 관계선에 원을 표현


진행

중요요소(importent element)

완전성 : 업무에 필요로 하는 데이터 모두가 모델에 정의되어 있는가에 관한 것.

중복배제 : 나이와 생년월일 처럼 중복 관리되고 있는 대표적으로 낭비되는 비용

업무규칙 : 모든 사용자가 공유할 수 있도록 제공하는 것. 이로 인해 모든 사용자가 업무 규칙에 대해서 동일한 판단을 하고 데이터를 조작할 수 있게 된다.

데이터 재사용 : 데이터의 통합성과 독립성이 고려되어야 한다.

데이터 모델이 간결하면 새로운 업무환경의 변화에 대해서 확장성을 지님. 데이터 모델이 복잡하면 테이블 수의 지속적 증가로 인해 복잡성 증가.

의사소통 : 데이터모델은 대상으로 하는 업무를 데이터 관점에서 분석하고 이를 설계해 나오는 산출물로 많은 업무 규칙들이 도출되는데 이를 엔터티, 서브타입, 속성, 관계 등으로 최대한 자세히 표현하여야 설계자가 정의한 업무 규칙들에 대해 동일한 의미로 인식

통합성 : 동일한 데이터는 한번만 정의되고 이를 여러 다른 영역에서 참조활용하는 것이 바람직하다.

LS0tCnRpdGxlOiAi642w7J207YSwIOuqqOuNuOydmCDsnbTtlbQiCm91dHB1dDogCiAgaHRtbF9ub3RlYm9vazogCiAgICB0aGVtZTogc3BhY2VsYWIKLS0tCgoKKioqKgoKIyDrqqnssKgKCisg66qo642466eB7J2YIOygleydmAor66qo642466eB7J2YIO2KueynlQorIOuqqOuNuOungSDtlITroZzshLjsiqQKKyDrjbDsnbTthLAg64+F66a97ISxCisgRVJECisg7KSR7JqU7JqU7IaMCgoqKioKCgojIOuNsOydtO2EsCDrqqjrjbjrp4HsnZgg7J207ZW0IHsudGFic2V0IC50YWJzZXQtZmFkZSAudGFic2V0LXBpbGxzfQoK642w7J207YSwIOuqqOuNuOyXkCDrjIDtlZwg6riw67O4IOqwnOuFkOydhCDsnITtlZwg66qo642466eB7J2YIOq0gOygkCwg7JqU7IaMLCDtkZzquLDrspXsl5Ag64yA7ZWcIOyEpOuqheqzvCDtkZzquLDrspXsl5Ag6rSA66Co7ZWY7JesIOyXlO2EsO2LsCwg7IaN7ISxLCDqtIDqs4QsIOyLneuzhOyekOulvCDshKTrqoUKCiFbXShodHRwOi8vd3d3LmRiZ3VpZGUubmV0L3B1Ymxpc2hpbmcvaW1nL2tub3dsZWRnZS9TUUxfMDA0LmpwZykKCiMjIG1vZGVsaW5nCgojIyMg7KCV7J2YCgrsgqzrnozsnbQg7IK07JWE6rCA66m07IScIOuCmO2DgOuCoCDsiJgg7J6I64qUIOuLpOyWke2VnCDtmITsg4HsnYQg7ZGc6riw67KV7JeQIOydmO2VtCDqt5zsuZnsnYQg6rCA7KeA6rOgIO2RnOq4sO2VmOuKlCDqsoMKCiMjIyDrqqjrjbjrp4HsnZgg7Yq57KeVCgorIOy2lOyDge2ZlCA6IO2YhOyLpOyEuOqzhOulvCDsnbzsoJXtlZwg7ZiV7Iud7JeQIOunnuy2lOyWtCDtkZztmITtlZzri6TripQg7J2Y66+4Cisg64uo7Iic7ZmUIDog7ZiE7Iuk7IS46rOE66W8IOyVveyGjeuQnCDqt5zslb3sl5Ag7J2Y7ZW0IOygnO2VnOuQnCDtkZzquLDrspXsnbTrgpgg7Ja47Ja066GcIO2RnO2YhO2VtCDsib3qsowg7J207ZW07ZWY6rKMIOunjOuToOuLpOuKlCDsnZjrr7gKKyDrqoXtmZXtmZQgOiDrjIDsg4Hsl5Ag64yA7ZWY7JesIOyVoOunpOuqqO2YuO2VqOydhCDsoJzqsbDtlZjqs6Ag7KCV7ZmV7ZWY6rKMIOq4sOyIoO2VmOuKlCDqsoPsnYQg7J2Y66+4CgojIyMg7Iuk66y07KCB7J24IOuqqeyggQoKKyDsl4XrrLTsoJXrs7Trpbwg6rWs7ISx7ZWY64qUIOq4sOy0iOqwgCDrkJjripQg7KCV67O066W8IOydvOygle2VmOqyjCDtkZzquLAgJFxyaWdodGFycm93JCDsoJXrs7Tsi5zsiqTthZwg6rWs7LaV7J2YIOuMgOyDgeydtCDrkJjripQgKirsl4XrrLQg64K07Jqp7J2EIOygle2Zle2VmOqyjCDtjIzslYUqKu2VmOuKlCDqsoMKKyDrtoTshJ3rkJwg66qo64247J2EIOqwgOyngOqzoCAqKuyLpOygnCDrjbDsnbTthLDrsqDsnbTsiqTrpbwg7IOd7ISx7ZWY7JesIOqwnOuwnCDrsI8g642w7J207YSwIOq0gOumrOyXkCDsgqzsmqntlZjquLAg7JyE7ZWcIOqygyoqCgoKIyMjIOuNsOydtO2EsCDrqqjrjbjsnYQg7Ya17ZWcIOuCtOu2gOyggSDsnbTsoJAKCisg7Iuc7Iqk7YWc7J2YIOq1rOyhsOyZgCDtlonrj5nsnYQg66qF7IS47ZmUCisg7Iuc7Iqk7YWc7J2EIOq1rOy2le2VmOuKlCDqtazsobDtmZTrkJwg7YuAIOygnOqztQorIOyLnOyKpO2FnCDqtazstpUg6rO87KCV7JeQ7IScIOqysOygle2VnCDqsoPrk6TsnYQg66y47ISc7ZmUCisg7Yq57KCVIOuqqe2RnOyXkCDrlLDrpbgg6rWs7LK07ZmU65CcIO2RnO2YhOuwqeuylSDsoJzqs7UKCiMjIyDrjbDsnbTthLAg66qo642466eB7J2YIOykkeyalOyEseqzvCDsnKDsnZjsoJAKCiMjIyMg7YyM6riJ7Zqo6rO8Cgrsi5zsiqTthZwg6rWs7LaVIOqzvOygleyXkOyEnCDri6jsnIQg7YWM7Iqk7Yq465Ok7J20IOynhO2WieuQqOyXkCDsnojslrQg66qo642467OA6rK97J20IOu2iOqwgO2UvO2VnCDqsr3smrAg642w7J207YSwIOq1rOyhsOydmCDrs4Dqsr3sl5Ag7J2Y7ZW0IOyghOyytCDsi5zsiqTthZwg6rWs7LaV7JeQIO2BsCDsnITtl5jsmpTshozqsIAg65CgIOyImCDsnojri6QuCgojIyMjIOqwhOqysO2VnCDtkZztmIQKCuuNsOydtO2EsCDrqqjrjbjsnYAg6rG07LaV66y87J2YIOyEpOqzhCDrj4TrqbTsl5Ag7ZW064u57ZWc64ukLiDrjbDsnbTthLAg7KCV7ZWp7ISx7J2EIOycoOyngO2VoCDsiJgg7J6I7Jy866mwLCDsoJXrs7TsmpTqtazsgqztla3snYQg7KCV7ZmV7ZWY6rOgIOqwhOqysO2VmOqyjCDrgpjtg4DrgrTripQg6rKD7J20IOykkeyalAoKIyMjIyDrjbDsnbTthLDsnZgg7ZKI7KeICgrrjbDsnbTthLDsnZgg64aS7J2AIOygle2ZleuPhCDsmpTqtawsIOuNsOydtO2EsOydmCDqtazsobAsIOykkeuztSDrjbDsnbTthLDsnZgg66+47KCV7J2YLCDruYTspojri4jsiqQg7KCV7J2YIOu2iOy2qeu2hCwg642w7J207YSw7J2YIOu2iOydvOy5mOqwgCDsmpTqtazrkJjslrTsp4Tri6QuCgorIOykkeuztSA6IOyXrOufrCDsnqXshozsl5Ag6rCZ7J2AIOygleuztOulvCDsoIDsnqXtlZjsp4Ag7JWK64+E66GdIO2VtOyVvO2VnOuLpC4KKyDruYTsnKDsl7DshLEgOiDrjbDsnbTthLAg7KCV7J2Y7JmAIO2UhOuhnOyEuOyKpOulvCDrtoTrpqztlbQg7ZSE66Gc7IS47Iqk7J2YIOuzgO2ZlOqwgCDtjIzquIntmqjqs7zrpbwg7KSE7J28IOyImCDsnojqsowg7ZWc64ukLgorIOu5hOydvOq0gOyEsSA6IOuNsOydtO2EsOqwhCDsg4HtmLgg7Jew6rSA6rSA6rOE7JeQIOuMgO2VtCDrqoXtmZXtlZjqsowg7KCV7J2Y7ZWY7JesIOuNsOydtO2EsOqwgCDsnbzqtIDshLHsnojqsowg7Jyg7KeA65CgIOyImCDsnojqsowg7ZWc64ukLgoKCiMjIyDrqqjrjbjrp4HsnZgg6rSA7KCQKE1vZGVsaW5nIFBlcnNwZWN0aXZlKSAKCuyXheustOydmCDrgrTsmqnqs7wg7KCV67O07Iuc7Iqk7YWc7J2YIOuqqOyKteydhCDsoIHsoIjtlZwg7ZGc6riw67KV7JeQIOuUsOudvCDtkZztmITtlZjripQg6rKD7J2EIOuqqOuNuOungeydtOudvCDtlaAg65WMIDPqsIDsp4Ag6rSA7KCQ7Jy866GcIOyWmOq4sO2VoCDsiJgg7J6I64ukLgoKKyDrjbDsnbTthLAg6rSA7KCQIDog7Ja065akIOuNsOydtO2EsOyZgCDqtIDroKjsnbQg7J6I64qU7KeALCDrjbDsnbTthLAg6rCE7J2YIOq0gOqzhOuKlCDrrLTsl4fsnbjsp4Ag66qo642466eB7ZWY64qUIOuwqeuylQorIO2UhOuhnOyEuOyKpCDqtIDsoJAgOiDsl4XrrLTqsIAg7Iuk7KCc7ZWY6rOgIOyeiOuKlCDsnbzsnbQg66y07JeH7J247KeA7JmAIOustOyXh+ydhCDtlbTslbztlZjripTsp4Ag66qo642466eB7ZWY64qUIOuwqeuylQorIOuNsOydtO2EsCwg7ZSE66Gc7IS47Iqk7J2YIOyDgeq0gOq0gOygkCA6IOyXheustOqwgCDsspjrpqztlZjripQg7J287J2YIOuwqeuyleyXkCDrlLDrnbwg7Ja065a76rKMIOyYge2WpeydhCDrsJvqs6Ag7J6I64qU7KeAIOuqqOuNuOungSDtlZjripQg67Cp67KVCgoqKioqCgoqW+ygleuztOyLnOyKpO2FnF0oaHR0cHM6Ly9rby53aWtpcGVkaWEub3JnL3dpa2kvJUVDJUEwJTk1JUVCJUIzJUI0XyVFQyU4QiU5QyVFQyU4QSVBNCVFRCU4NSU5Qyk6IOuNsOydtO2EsOulvCDsnoXroKXrsJvslYQg7LKY66as7ZWY7JesIOygleuztOulvCDsgrDstpztlZjripQg7Iuc7Iqk7YWcKgoKIyMg66qo642466eBIO2UhOuhnOyEuOyKpChtb2RlbGluZyBwcm9jZXNzKQoKKyDqsJzrhZDsoIEg66qo642466eBIDog7LaU7IOB7KCBLCDsl4XrrLTspJHsi6zsoIEsIO2PrOq0hOyggSDsiJjspIDsnZgg66qo642466eBCisg64W866as7KCBIOuqqOuNuOungSA6IOq1rOy2le2VmOqzoOyekCDtlZjripQg7JeF66y07JeQIOuMgO2VmOyXrCBLZXksIOyGjeyEsSwg6rSA6rOE66W8IOygle2Zle2VmOqyjCDtkZztmIQsIOyerOyCrOyaqeyEseydtCDrhpLsnYwKKyDrrLzrpqzsoIEg66qo642466eBIDog7Iuk7KCcIOuNsOydtO2EsOuyoOydtOyKpOyXkCDsnbTsi53tlaAg7IiYIOyeiOuPhOuhnSDrrLzrpqzsoIEg7ISx6rKp7J2EIOqzoOugpO2VnCDshKTqs4QKCgojIyMg6rCc64WQ7KCBIOuqqOuNuOungQoK642w7J207YSwIOyalOq1rOyCrO2VrSDtjIzslYUg67CPIOyekOujjOydmCDspJHsmpTrj4Qg67CPIO2VhOyalOyEsSDqsrDsoJUK7JeU7YSw7YuwLeq0gOqzhCDri6TsnbTslrTqt7jrnqgg7IOd7ISx7ZWY64qUIOuLqOqzhC4g7J2064qUIERC6rCAIOyCrOyaqeyekOyXkOqyjCDslrTrlqQg642w7J207YSw6rCAIOykkeyalO2VnOyngCDrgpjtg4DrgrTquLAg7JyE7ZW0IOyCrOyaqQoKKuyghCDsobDsp4Hsl5Ag64yA7ZWcIOqwnOuFkOyggSDrqqjrjbjrp4HsnYQg7KCE7IKs7KCBIOuNsOydtO2EsCDrqqjrjbjsnbTrnbwg7ZWc64ukLioKCuyekOujjOydmCDqtazsobDsmYAg7J6Q66OM7J2YIO2VhOyalOyEseydhCDtjIzslYXtlZjripTrjbAg7Jyg7JqpCgojIyMg64W866as7KCBIOuqqOuNuOungQoK67mE7KaI64uI7IqkIOygleuztOydmCDrhbzrpqzsoIEg6rWs7KGw7JmAIOq3nOy5meydhCDrqoXtmZXtlZjqsowg7ZGc7ZiE7ZWY64qUIOqzvOyglQrsoJXqt5ztmZTsmYAg7IOB7IS47ZmU6rCAIOynhO2WieuQnOuLpC4KCuygleq3nO2ZlCA6IOuFvOumrCDrjbDsnbTthLAg66qo64247J2YIOydvOq0gOyEsSDtmZXrs7Qg67CPIOykkeuzteygnOqxsOulvCDthrXtlbQg7IaN7ISx65Ok7J20IOqwgOyepSDsoIHsoIjtlZwg7JeU7YSw7Yuw7JeQIOuwsOy5mOuQmOuPhOuhnSDtlajsnLzroZzsjagg7Iug66Kw7ISxIOyeiOuKlCDrjbDsnbTthLAg6rWs7KGw66W8IOyWu+uKlOuNsCDrqqnsoIHsnbQg7J6I64ukLgoK7IOB7IS47ZmUIDog7Iud67OE7J6Q7ZmV7KCVLCDsoJXqt5ztmZQsIE06Teq0gOqzhCDtlbTshowsIOywuOyhsCDrrLTqsrDshLEg6rec7LmZIOygleydmCDrk7HsnYQg7KeE7ZaJCgojIyMg66y866as7KCBIOuqqOuNuOungQoK66y866as7KCBIOyggOyepeq1rOyhsOyZgCDsoIDsnqXsnqXsuZgsIOyekOujjOyXkCDrjIDtlZwg7KCR6re867Cp67KV65Ox7J2EIOqysOygle2VmOuKlCDri6jqs4QKCgojIyDrjbDsnbTthLAg64+F66a97ISxKGRhdGEgaW5kZXBlbmRlbnQpCgrsnKDsp4Drs7TsiJjsnZgg66y47KCcLCDrjbDsnbTthLDsnZgg7KSR67O1IOusuOygnCwg642w7J207YSwIOuzteyeoeuPhCDspp3qsIAsIOyalOq1rOyCrO2VreyXkCDrjIDsnZHshLEg7KCA7ZWYIOusuOygnCDrk7HsnLzroZwg642w7J207YSwIOuPheumveyEseydtCDtlYTsmpTtlbTsoYzri6QuCgorIOuNsOydtO2EsCDrsqDsnbTsiqTsnZgg6rWs7KGwCisg64+F66a97ISxCisg7IKs7IOBCgoqKioqIAoKIyMjIOuNsOydtO2EsOuyoOydtOyKpOydmCDqtazsobAKCuyZuOu2gOuLqOqzhOyZgCDqsJzrhZDsoIEg64uo6rOELCDrgrTrtoDri6jqs4TroZwg6rWs7ISx65CY66mwIOyEnOuhnCDqsITshK3rkJjsp4Ag7JWK64qUIOuqqOuNuOydhCDsoJzsi5wKCiFbXShodHRwOi8vd3d3LmRiZ3VpZGUubmV0L3B1Ymxpc2hpbmcvaW1nL2tub3dsZWRnZS9TUUxfMDA5LmpwZykKCiFbXShodHRwOi8vd3d3LmRiZ3VpZGUubmV0L3B1Ymxpc2hpbmcvaW1nL2tub3dsZWRnZS9TUUxfMDEwLmpwZykKCiMjIOuNsOydtO2EsCDrqqjrjbjrp4Hsl5Ag6rWs7ISx7J2YIOykkeyalCDsmpTshowoSW1wb3J0YW50IGZhY3RvcnMpCgpgYGAK7JeF66y06rCAIOq0gOyXrO2VmOuKlCDslrTrlqQg6rKDKFRoaW5ncykK7Ja065akIOqyg+ydtCDqsIDsp4DripQg7ISx6rKpKEF0dHJpYnV0ZXMpCuyXheustOqwgCDqtIDsl6ztlZjripQg7Ja065akIOqygyDqsITsnZgg6rSA6rOEKFJlbGF0aW9uc2hpcHMpCmBgYAoKIVtdKGh0dHA6Ly93d3cuZGJndWlkZS5uZXQvcHVibGlzaGluZy9pbWcva25vd2xlZGdlL1NRTF8wMTMuanBnKQoKIyMgRVJEKEVudGl0aXkgUmVsYXRpb25zaGlwIERpYWdyYW0pIAoKRVJEIDog7JeU7YSw7YuwIOqwhCDqtIDqs4Trpbwg7J207ZW07ZWY6riwIOyJveqyjCDrj4Tsi53tmZTtlZwg64uk7J207Ja06re4656o7J2EIOydmOuvuAoKIVtdKGh0dHA6Ly93d3cuZGJndWlkZS5uZXQvcHVibGlzaGluZy9pbWcva25vd2xlZGdlL1NRTF8wMTYuanBnKQoKIyMjIEVSRCDsg53shLEg6rO87KCVCgorIOyXlO2EsO2LsOulvCDqt7jrprDri6QuIAorIOyXlO2EsO2LsOulvCDsoIHsoIjtlZjqsowg67Cw7LmY7ZWc64ukLiAKKyDsl5TthLDti7DqsIQg6rSA6rOE66W8IOyEpOygle2VnOuLpC4gCisg6rSA6rOE66qF7J2EIOq4sOyIoO2VnOuLpC4gCisg6rSA6rOE7J2YIOywuOyXrOuPhOulvCDquLDsiKDtlZzri6QuIAorIOq0gOqzhOydmCDtlYTsiJjsl6zrtoDrpbwg6riw7Iig7ZWc64ukLgoKKioqKgoKIyMjIyDsl5TthLDti7Ag6re466as6riwCgrsgqzrnozsnZgg64iI7J2AIOyZvOyqveyXkOyEnCDsmKTrpbjsqr0sIOychOyXkOyEnCDslYTrnpjroZwg7J2064+Z7ZWY64qUIOqyve2WpeydtCDsobTsnqwKCuydtOulvCDqs6DroKTtlZjsl6wg6rCA7J6lIOykkeyalO2VnCDsl5TthLDti7Drpbwg7Jm87Kq97IOB64uo7JeQIOuwsOy5mO2VnCDtm4Qg7J2066W8IOykkeyLrOycvOuhnCDrgpjsl7TtlZjrqbAg7KCE6rCcCgrtlbTri7kg7JeF66y07JeQ7IScIOqwgOyepSDspJHsmpTtlZwg7JeU7YSw7Yuw7J2YIOqyveyasCDsoITssrQg7JeU7YSw7Yuw7JmAIOyemCDslrTsmrjrprQg7IiYIOyeiOqyjCDsmbzsqr0g7IOB64uo7JeQ7IScIOyhsOq4iCDslYTrnpjsl5Ag67Cw7LmY7ZWY64qUIOqyg+ydtCDqtIDqs4Trpbwg67Cw7LmY7ZWgIOuVjCDtmqjsnKjsoIEKCgojIyMjIOyXlO2EsO2LsOqwhCDqtIDqs4Qg7ISk7KCVCgrstIjquLDsl5DripQgIFByaW1hcnkgS2V566GcIOyGjeyEseydtCDsg4Hsho3rkJjripQg7Iud67OE7J6QIOq0gOqzhOulvCDshKTsoJUKCuykkeuzteuQmOuKlCDqtIDqs4TqsIAg67Cc7IOd65CY7KeAIOyViuuPhOuhnSDtlZjqs6AgQ2lyY2xlIOq0gOqzhOuPhCDrsJzsg53tlZjsp4Ag7JWK64+E66GdIOycoOydmAoKCiMjIyMg6rSA6rOE66qFIOq4sOyIoAoKIOq0gOqzhOydtOumhOydgCDtmITsnqztmJXsnYQg7IKs7Jqp7ZWY6rOgIOyngOuCmOy5mOqyjCDtj6zqtITsoIHsnbgg7Jqp7Ja0KOyYiCwg7J2064ukLCDqsIDsp4Tri6Qg65OxKeuKlCDsgqzsmqntlZjsp4Ag7JWK64qU64ukLgogCiMjIyMg6rSA6rOE7J2YIO2VhOyImOyXrOu2gOulvCDquLDsiKAKCiBFUkQg6rSA6rOEIOq0gOqzhOywqOyImOyZgCDshKDtg53shLEg7ZGc7IucIOq0gOqzhOyXkCDrjIDtlZwg7J2066aE7J2EIOuqqOuRkCDsp4DsoJXtlZjsmIDsnLzrqbQg6rSA6rOE6rCAIOywuOyXrO2VmOuKlCDshLHqsqkg7KSRIOyXlO2EsO2LsOuCtOyXkCDsnbjsiqTthLTsiqTrk6TsnbQg7Ja866eI64KYIOq0gOqzhOyXkCDssLjsl6ztlZjripQg7KeA66W8IOuCmO2DgOuCtOuKlCDqtIDqs4TssKjsiJgoQ2FyZGluYWxpdHkp66W8IO2RnO2YhAogCklF7ZGc6riw67KV7Jy866Gc64qUIO2VmOuCmCgxLCBPbmUp7J2YIOq0gOqzhOuKlCDsi6TshKDsnLzroZwg7ZGc6riwCuuLpOyImOywuOyXrChNYW55KeydmCDqtIDqs4TripQg6rmM66eI6reA67Cc6rO8IOqwmeydgCDrqqjslpEKCkJhcmtlcu2RnOq4sOuyleycvOuhnOuKlCDsoJDshKDqs7wg7Iuk7ISg7J2EIO2YvO2Vqe2VmOyXrCDtkZzquLAK64uk7IiY7LC47JesKE1hbnkp7J2YIOq0gOqzhOuKlCDquYzrp4jqt4DrsJzqs7wg6rCZ7J2AIOuqqOyWkQoK6rSA6rOE7J2YIO2VhOyImC/shKDtg53tkZzsi5zripQg6rSA6rOE7ISg7JeQIOybkOydhCDtkZztmIQKCgoqKioqCgojIyMjIOynhO2WiQoKIVtdKGh0dHA6Ly93d3cuZGJndWlkZS5uZXQvcHVibGlzaGluZy9pbWcva25vd2xlZGdlL1NRTF8wMTguanBnKQoKIVtdKGh0dHA6Ly93d3cuZGJndWlkZS5uZXQvcHVibGlzaGluZy9pbWcva25vd2xlZGdlL1NRTF8wMTkuanBnKQohW10oaHR0cDovL3d3dy5kYmd1aWRlLm5ldC9wdWJsaXNoaW5nL2ltZy9rbm93bGVkZ2UvU1FMXzAyMC5qcGcpCiFbXShodHRwOi8vd3d3LmRiZ3VpZGUubmV0L3B1Ymxpc2hpbmcvaW1nL2tub3dsZWRnZS9TUUxfMDIxLmpwZykKCgojIyDspJHsmpTsmpTshowoaW1wb3J0ZW50IGVsZW1lbnQpCgrsmYTsoITshLEgOiDsl4XrrLTsl5Ag7ZWE7JqU66GcIO2VmOuKlCDrjbDsnbTthLAg66qo65GQ6rCAIOuqqOuNuOyXkCDsoJXsnZjrkJjslrQg7J6I64qU6rCA7JeQIOq0gO2VnCDqsoMuCgrspJHrs7XrsLDsoJwgOiDrgpjsnbTsmYAg7IOd64WE7JuU7J28IOyymOufvCDspJHrs7Ug6rSA66as65CY6rOgIOyeiOuKlCDrjIDtkZzsoIHsnLzroZwg64Kt67mE65CY64qUIOu5hOyaqQoK7JeF66y06rec7LmZIDog66qo65OgIOyCrOyaqeyekOqwgCDqs7XsnKDtlaAg7IiYIOyeiOuPhOuhnSDsoJzqs7XtlZjripQg6rKDLiDsnbTroZwg7J247ZW0IOuqqOuToCDsgqzsmqnsnpDqsIAg7JeF66y0IOq3nOy5meyXkCDrjIDtlbTshJwg64+Z7J287ZWcIO2MkOuLqOydhCDtlZjqs6Ag642w7J207YSw66W8IOyhsOyeke2VoCDsiJgg7J6I6rKMIOuQnOuLpC4KCuuNsOydtO2EsCDsnqzsgqzsmqkgOiDrjbDsnbTthLDsnZgg7Ya17ZWp7ISx6rO8IOuPheumveyEseydtCDqs6DroKTrkJjslrTslbwg7ZWc64ukLgoK642w7J207YSwIOuqqOuNuOydtCDqsITqsrDtlZjrqbQg7IOI66Gc7Jq0IOyXheustO2ZmOqyveydmCDrs4DtmZTsl5Ag64yA7ZW07IScIO2ZleyepeyEseydhCDsp4Dri5guCuuNsOydtO2EsCDrqqjrjbjsnbQg67O17J6h7ZWY66m0IO2FjOydtOu4lCDsiJjsnZgg7KeA7IaN7KCBIOymneqwgOuhnCDsnbjtlbQg67O17J6h7ISxIOymneqwgC4KCgrsnZjsgqzshozthrUgOiDrjbDsnbTthLDrqqjrjbjsnYAg64yA7IOB7Jy866GcIO2VmOuKlCDsl4XrrLTrpbwg642w7J207YSwIOq0gOygkOyXkOyEnCDrtoTshJ3tlZjqs6Ag7J2066W8IOyEpOqzhO2VtCDrgpjsmKTripQg7IKw7Lac66y866GcIOunjuydgCDsl4XrrLQg6rec7LmZ65Ok7J20IOuPhOy2nOuQmOuKlOuNsCDsnbTrpbwg7JeU7YSw7YuwLCDshJzruIztg4DsnoUsIOyGjeyEsSwg6rSA6rOEIOuTseycvOuhnCDstZzrjIDtlZwg7J6Q7IS47Z6IIO2RnO2YhO2VmOyXrOyVvCDshKTqs4TsnpDqsIAg7KCV7J2Y7ZWcIOyXheustCDqt5zsuZnrk6Tsl5Ag64yA7ZW0IOuPmeydvO2VnCDsnZjrr7jroZwg7J247IudCgrthrXtlanshLEgOiDrj5nsnbztlZwg642w7J207YSw64qUIO2VnOuyiOunjCDsoJXsnZjrkJjqs6Ag7J2066W8IOyXrOufrCDri6Trpbgg7JiB7Jet7JeQ7IScIOywuOyhsO2ZnOyaqe2VmOuKlCDqsoPsnbQg67CU656M7KeB7ZWY64ukLiAKCg==