Giter Site home page Giter Site logo

appbaseio / mirage Goto Github PK

View Code? Open in Web Editor NEW
2.2K 52.0 130.0 94.35 MB

:art: GUI for simplifying Elasticsearch Query DSL

Home Page: http://opensource.appbase.io/mirage

License: Other

HTML 12.50% TypeScript 75.02% CSS 10.43% JavaScript 1.97% Dockerfile 0.09%
mirage elasticsearch-plugin chrome-extension database-gui elasticsearch kibana

mirage's Introduction

Docker Pulls

Mirage: ๐Ÿ”Ž GUI for Elasticsearch Queries

  1. Mirage: Intro
  2. Features
  3. Roadmap
  4. Build Locally
  5. How to contribute
  6. Get Mirage
    a. Hosted
    b. Chrome Extension
    c. Appbase.io
    d. Run with Docker
    e. Elasticsearch Plugin (deprecated)

1. Mirage: Intro

The Elasticsearch query DSL supports 100+ query APIs ranging from full-text search, numeric range filters, geolocation queries to nested and span queries.

Mirage is a modern, open-source web based query explorer for Elasticsearch.

2-min Intro to Mirage

It offers a blocks based GUI for composing Elasticsearch queries and comes with an on-the-fly transformer to show the corresponding JSON query API of Elasticsearch.


2. Features

  • Mirage's GUI building blocks offer a smart way to creating queries. It uses the index's Elasticsearch mappings and the selected field's datatype to show only the applicable queries in the dropdown.

Watch Queries being built in realtime


  • Mirage provides two ways to add compound query clauses,
    • Add Conditions allows adding additional clauses within the same query and
    • Nested Query allows adding a nested query clause.

Intuitively layer complexity to your queries


  • Queries can be saved for later reuse. They can also be captured and shared by copying the URL.

Save queries for later reuse

  • See docs for any query from within the app.

Browse docs from within Mirage


3. Roadmap

Mirage works with any Elasticsearch 2.x, 5.x, 6.x and 7.x index currently. Below is the roadmap for query support.

โœ“ indicates queries already supported.
โž• indicates queries we would like to support and see contributions for.
โŒ indicates queries that can't be supported currently.

Full-text Queries Term Level Queries Joining Queries Geo Queries Specialized Queries Span Queries
โœ“ Match โœ“ Term โœ“ Nested โœ“ GeoDistance โž• MoreLikeThis โœ“ SpanTerm
โœ“ Multi-match โœ“ Terms โœ“ HasChild โœ“ GeoBoundingBox โž• Template โž• SpanMulti
โœ“ Query String โœ“ Range โœ“ HasParent โœ“ GeoShape โŒ Script โœ“ SpanFirst
โœ“ Simple Query String โœ“ Exists โœ“ ParentId โœ“ GeoDistanceRange โž• SpanNear
โœ“ Common Terms โœ“ Missing โœ“ GeoPolygon โž• SpanOr
โœ“ Prefix โœ“ GeoHashCell โž• SpanNot
โœ“ Wildcard โž• SpanContaining
โœ“ Regexp โž• SpanWithin
โœ“ Fuzzy
โœ“ Ids
โŒ Type

Besides broadening the query support, we would like to see Mirage support Elasticsearch v5.0.


4. Build Locally

$ npm install
$ bower install
$ npm start

This will start a local webserver running on port 3030 serving mirage locally.

Tests

$ npm test

will fire up the jasmine tests.

master branch: Elasticsearch Plugin

$ npm run build_es_plugin

chrome-extension branch: Chrome extension

$ npm run build_chrome_extension

5. How to Contribute

  1. Find a query that can be supported from the roadmap.
  2. Fork the mirage repo and update in "dev" branch.
  3. Create the query files.
  4. Build locally and run npm test.
  5. Submit a PR!

6. Get Mirage

Mirage is available as a hosted app and as a chrome extension.

or

Note: We're working on bringing this back.

or

Every app in appbase.io has a query explorer view, which uses mirage.

Mirage Gif

or

Works with Elasticsearch versions 1.x, 2.x, 5.x, 6.x and 7.x.

docker run -p 3030:3030 -d appbaseio/mirage

CORS settings: To make sure you enable CORS settings for your ElasticSearch instance, add the following lines in the ES configuration file.

http.port: 9200
http.cors.allow-origin: "/.*/"
http.cors.enabled: true
http.cors.allow-headers: X-Requested-With,X-Auth-Token,Content-Type, Content-Length, Authorization
http.cors.allow-credentials: true

Install as Elasticsearch Plugin

[Deprecated] Works with Elasticsearch versions 1.x and 2.x. Site plugins have been disabled starting v5.0. We recommend running mirage with docker instead.

plugin install appbaseio/mirage

Note: Elasticsearch has a CORS header issue with v2.3.0, use v2.3.2 and above.

http.port: 9200
http.cors.allow-origin: "/.*/"
http.cors.enabled: true
http.cors.allow-headers: X-Requested-With,X-Auth-Token,Content-Type, Content-Length, Authorization
http.cors.allow-credentials: true

After installing the plugin, start the elasticsearch service and visit the following URL to access it.

http://127.0.0.1:9200/_plugin/mirage

Note: If you use Elasticsearch from a different port, the URL to access and the http.cors.allow-origin value in the configuration file would change accordingly.

Mirage can be used along with โŠž DejaVu to browse data and perform CRUD operations inside an Elasticsearch index.


Proudly built with

mirage's People

Contributors

bietkul avatar danielsiepmann avatar dependabot[bot] avatar farhan687 avatar hkulekci avatar lakhansamani avatar metagrover avatar siddharthlatest avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mirage's Issues

Boolean field checker

The data consists of an array of simple objects with the shape as follows:
Here's link to the full exported data.

[
    {
        "title": "todo1",
        "completed": true
    }
]

The issue is with fields that have boolean values like completed in this case. Input box doesn't show up.

image

The workaround is to first select and query with non-boolean fields like title and then reselect boolean fields.

image

Add streaming flag in queries

We can add a stream -> true/false flag (could be implemented as a switch) in the main Mirage UI, the switch only shows when hostname is an appbase.io URL (and eventually will be supported in Autopilot too).

Can't connect to ES server

Hi guys,

I'm using hosted version of Mirage: http://opensource.appbase.io/mirage/ on Chrome 53.

It can't connect to my dev server that does not have any auth and has CORS allow origin set to *:

image

Browser console says the following:

XMLHttpRequest cannot load http://example:9200/foobar/_mapping/. Request header field authorization is not allowed by Access-Control-Allow-Headers in preflight response.

However my CORES response welcomes everybody:

Access-Control-Allow-Headers:Content-Type
Access-Control-Allow-Headers:Content-Length
Access-Control-Allow-Headers:X-Requested-With
Access-Control-Allow-Methods:DELETE
Access-Control-Allow-Methods:POST
Access-Control-Allow-Methods:GET
Access-Control-Allow-Methods:PUT
Access-Control-Allow-Methods:HEAD
Access-Control-Allow-Methods:OPTIONS
Access-Control-Allow-Origin:*
Access-Control-Max-Age:1728000
Connection:keep-alive
Content-Length:0
Date:Tue, 06 Dec 2016 11:29:05 GMT

support filter clause in the compound query combinator

Compound query combinator (denoted by + Nested query) supports must, should, must_not and should_not (?) clauses.

should_not is not a valid clause. Using it throws a query syntax error.

should_not use

Syntax Error

The fourth clause should be filter instead of should_not. From the documentation for filters clause in bool query,

The clause (query) must appear in matching documents. However unlike must the score of the query will be ignored.

GeoPolygon Query should accept an array

A polygon shape can be defined by a n-size array, it's better to take the array as is rather than try to interpret individual (lat, long) values of the polygon shape.

Data View and Query View button take me to appbase.io

I installed mirage as plugin to my local elasticsearch. In the Mirage GUI, When I click "Data View" button, it goes to http://opensource.appbase.io/dejavu/live/#?input_state=. But it should go to local dejavu. By the way, I also installed dejavu locally.

Similarly, Query view button in dejavu takes to appbase.io mirage. But it should goes to local machine.
Is there way to configure it?

local build fails on centos 7

Hi,

I'm trying to build locally on CentOS 7 and I'm getting the following error:

[root@dev mirage]# npm --version
3.10.10
[root@dev mirage]# node --version
v6.11.3
[root@dev ~]# git clone https://github.com/appbaseio/mirage.git
[root@dev ~]# cd mirage/
[root@dev mirage]# npm install
npm WARN deprecated [email protected]: Please use node-uuid instead. It is much better.
npm WARN deprecated [email protected]: Please use gulp-clean-css
npm WARN deprecated [email protected]: Typings is deprecated in favor of NPM @types -- see README for more information
npm WARN deprecated [email protected]: uglifyjs is deprecated - use uglify-js instead.
npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated [email protected]: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.
npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated [email protected]: connect 2.x series is deprecated
npm WARN deprecated [email protected]: express 2.x series is deprecated
npm WARN deprecated [email protected]: connect 1.x series is deprecated
npm WARN prefer global [email protected] should be installed with -g

> [email protected] install /root/mirage/node_modules/node-sass
> node scripts/install.js

Cached binary found at /root/.npm/node-sass/3.13.1/linux-x64-48_binding.node

> [email protected] postinstall /root/mirage/node_modules/node-sass
> node scripts/build.js

Binary found at /root/mirage/node_modules/node-sass/vendor/linux-x64-48/binding.node
Testing binary
Binary is fine
npm WARN lifecycle [email protected]~postinstall: cannot run in wd %s %s (wd=%s) [email protected] typings install /root/mirage
[email protected] /root/mirage
โ”œโ”€โ”€ @angular/[email protected] 
โ”œโ”€โ”€ @angular/[email protected] 
โ”œโ”€โ”€ @angular/[email protected] 
โ”œโ”€โ”€ @angular/[email protected] 
โ”œโ”€โ”€ @angular/[email protected] 
โ”œโ”€โ”€ @angular/[email protected] 
โ”œโ”€โ”€ @angular/[email protected] 
โ”œโ”€โ”€ @angular/[email protected] 
โ”œโ”€โ”€ [email protected] 
โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚   โ””โ”€โ”€ [email protected] 
โ”œโ”€โ”€ [email protected] 
โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚     โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚     โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚     โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚   โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚     โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚     โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ””โ”€โ”€ [email protected] 
โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ””โ”€โ”€ [email protected] 
โ”œโ”€โ”€ [email protected] 
โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚     โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚     โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚   โ”œโ”€โ”ฌ [email protected] 
โ”‚   โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚   โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚   โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚   โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚   โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚   โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚   โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚   โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚   โ”œโ”€โ”ฌ [email protected] 
โ”‚   โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚   โ”‚   โ””โ”€โ”ฌ [email protected] 
โ”‚   โ”‚     โ”œโ”€โ”ฌ [email protected] 
โ”‚   โ”‚     โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚   โ”‚     โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚   โ”‚     โ”œโ”€โ”€ [email protected] 
โ”‚   โ”‚     โ””โ”€โ”ฌ [email protected] 
โ”‚   โ”‚       โ””โ”€โ”€ [email protected] 
โ”‚   โ”œโ”€โ”ฌ [email protected] 
โ”‚   โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚   โ”œโ”€โ”ฌ [email protected] 
โ”‚   โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚   โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚   โ”œโ”€โ”ฌ [email protected] 
โ”‚   โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚   โ””โ”€โ”ฌ [email protected] 
โ”‚     โ””โ”€โ”€ [email protected] 
โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”œโ”€โ”ฌ UNMET PEER DEPENDENCY [email protected]
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚   โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚   โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚     โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚     โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚   โ”œโ”€โ”ฌ [email protected] 
โ”‚   โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚   โ””โ”€โ”ฌ [email protected] 
โ”‚     โ””โ”€โ”€ [email protected] 
โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚   โ””โ”€โ”€ [email protected] 
โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚     โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚   โ”œโ”€โ”ฌ [email protected] 
โ”‚   โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚   โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚   โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚   โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚   โ””โ”€โ”€ [email protected] 
โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚   โ”œโ”€โ”ฌ [email protected] 
โ”‚   โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚   โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚   โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚   โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚   โ””โ”€โ”€ [email protected] 
โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚   โ””โ”€โ”€ [email protected] 
โ”œโ”€โ”€ [email protected] 
โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ””โ”€โ”€ [email protected] 
โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚   โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚   โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚   โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚   โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚   โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ””โ”€โ”€ [email protected] 
โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚   โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚     โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚     โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚     โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚     โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚   โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚   โ”œโ”€โ”ฌ [email protected] 
โ”‚   โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚   โ”œโ”€โ”ฌ [email protected] 
โ”‚   โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚   โ”‚   โ””โ”€โ”ฌ [email protected] 
โ”‚   โ”‚     โ”œโ”€โ”€ [email protected] 
โ”‚   โ”‚     โ””โ”€โ”€ [email protected] 
โ”‚   โ””โ”€โ”€ [email protected] 
โ”œโ”€โ”€ [email protected] 
โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚   โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚   โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ””โ”€โ”€ [email protected] 
โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚   โ”œโ”€โ”ฌ [email protected] 
โ”‚   โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚   โ””โ”€โ”ฌ [email protected] 
โ”‚     โ””โ”€โ”€ [email protected] 
โ”œโ”€โ”€ [email protected] 
โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚   โ”œโ”€โ”ฌ [email protected] 
โ”‚   โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚   โ””โ”€โ”ฌ [email protected] 
โ”‚     โ”œโ”€โ”€ [email protected] 
โ”‚     โ””โ”€โ”ฌ [email protected] 
โ”‚       โ””โ”€โ”€ [email protected] 
โ”œโ”€โ”€ [email protected] 
โ”œโ”€โ”€ UNMET PEER DEPENDENCY [email protected]
โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ””โ”€โ”€ [email protected] 
โ”œโ”€โ”€ [email protected] 
โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚   โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚     โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚   โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚     โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚     โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ”œโ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚ โ””โ”€โ”ฌ [email protected] 
โ”‚ โ”‚ โ”‚   โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ”œโ”€โ”€ [email protected] 
โ”‚ โ”‚ โ””โ”€โ”€ [email protected] 
โ”‚ โ””โ”€โ”€ [email protected] 
โ”œโ”€โ”€ [email protected] 
โ””โ”€โ”€ UNMET PEER DEPENDENCY [email protected]

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN [email protected] requires a peer of [email protected] but none was installed.
npm WARN [email protected] requires a peer of zone.js@^0.7.2 but none was installed.
npm WARN @angular/[email protected] requires a peer of [email protected] but none was installed.
npm WARN @angular/[email protected] requires a peer of [email protected] but none was installed.
npm WARN [email protected] requires a peer of browserify@>= 2.3.0 < 4 but none was installed.
npm WARN [email protected] No repository field.

Trying to get working against a version 5.x ES

Thanks for a great project.
I was wondering if you might be able to point me in the right direction. I have the default match_all query running fine against a local version 5.x-alpha4 elasticsearch installation.

However, when it comes to assembling a nested query, it isn't allowing me to build up the query. I'm assuming it might have something to do with the new mapping types introduced in 5.x, where for instance type: text and type: keyword replace type: string.

A portion of my mapping looks like this:

{
    "content_private0": {
        "mappings": {
            "note": {
                "properties": {
                    "access": {
                        "type": "keyword"
                    },
                    "archived_at": {
                        "type": "date"
                    },
                    "backdated": {
                        "type": "boolean"
                    },
                    "body": {
                        "type": "text",
                        "analyzer": "customHTMLSnowball"
                    },
                    "create_at": {
                        "type": "date"
                    },
                    "curated": {
                        "type": "boolean",
                        "fields": {
                            "keyword": {
                                "type": "keyword"
                            }
                        }
                    }
                }
            }
        }
    }
}

As per screenshot below, when I try to add a condition pertaining to the body field, it doesn't give me any options. Is this because it doesn't know what type: text is?

image

Even for the create_at date field (not a new type), it also doesn't appear to be able to interpret the date field .. does it need to be a unix-type date to work?

image

Any pointers you might have to get this working against my mapping on ES 5.x would be much appreciated.

Support for index aliases

Mirage should have the option to select an index by its alias. When following the zero down-time reindex pattern, the index name will change with every reindexing, but the alias will remain the same. Currently this means all saved queries in Mirage will become invalid.

Support nested query (and nested fields)

We would like to add support for nested queries within mirage, and along with it also support nested object field selection in the fields drop down.

Original request in #20.

Prerequisites

You can try out the live version of mirage here - https://appbaseio.github.io/mirage.

You will need to know how Elasticsearch works, reference can be found here.

Build mirage locally and understand the code structure. This doc attempts to explain that - https://github.com/appbaseio/mirage/blob/dev/HOW-TO-CONTRIBUTE.md.

Code Structure

The code structure will resemble the files in this path - https://github.com/appbaseio/mirage/tree/dev/app/build/singlequery/queries.

There should be two files created: nested.query.ts and nested.query.spec.ts.

Before PR

Ensure the logic is impeccable, a test spec is written, no unused variables are present and indentation matches with the rest of the codebase.

Support for NTLM/Kerberos authentication from Chrome plugin

When authenticating with our Elasticsearch server, my browser is challenged to provide an NTML token:
WWW-Authenticate:Negotiate
WWW-Authenticate:NTLM

... but Mirage Chrome plugin only requests the resource using basic authentication:
Authorization:Basic aW50cmFuZXR0LnNpdHMu...

As a reference, the Sense Chrome plugin uses the correct authentication method in its request:
Authorization:Negotiate TlRMTVNTUAADAAAA...

Not sure how this is implemented in Mirage, but probably best to leave the authentication handling to Chrome itself?

Can't connect to AWS Elasticsearch Service

Hi

We have an AWS ES service that allows only a specified set of IP addresses to access the domain - no usernames. This works as expected, but Mirage fails with an authentication error using the Chrome extension running on an IP address that works.

Chrome extension doesn't work against local unauthenticated instance

I've installed the latest Chrome extension from the Chrome store.

When I connect to http://127.0.0.1:9200 or http://localhost:9200 it fails with:

Authentication Error

It looks like your app name, username, password combination doesn't match.
Check your url and appname and then connect it again.

I've added this to my elasticsearch.yml file and restarted before doing the above:

http.cors.allow-origin: "http://127.0.0.1:9200"
http.cors.enabled: true
http.cors.allow-headers : X-Requested-With,X-Auth-Token,Content-Type, Content-Length, Authorization
http.cors.allow-credentials: true

Installing plugin version on ES 5.x

I was trying to install both the mirage and dejavu as plugins in the latest version of ES 5.1.1

However, I got the following error.

ERROR: Unknown plugin appbaseio/mirage
The command '/bin/sh -c elasticsearch-plugin install appbaseio/mirage' returned a non-zero code: 64

The install command I ran, from a Dockerfile using FROM elasticsearch:5.1.1-alpine was RUN elasticsearch-plugin install appbaseio/mirage. This approach worked fine for other plugins.

However it doesn't appear to recognise you plugin. Is there some requirement that they be uploaded to elastic infrastructure somewhere ... or is there an alternative approach of referencing the plugin location, such as with a github url?

I see this approach of installing a plugin directly from github .. but I think it requires there to be a binary on available as part of the release, which I don't think is the case with this repo.

/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/5.1.1.0/elasticsearch-sql-5.1.1.0.zip
Thanks.

Can Mirage also not send Auth headers like DejaVu?

Hi all - I noticed that DejaVu won't send Auth headers if i don't set a username/password - this is great!

Mirage seems to always send the Auth headers. Is there a way to not send them?

I am using the Chrome Extension.

Mirage as a Kibana Plugin

Site plugins have been removed starting Elasticsearch 5.0, and since it hit GA last week, we might want to consider supporting other options.

We already have Mirage available as a hosted app and a chrome extension, but it would be worth considering having it as a Kibana plugin along with these options.

Couldn't connect to localhost elastic search service

I have elastic search service on my local on docker ( port is 9200 ) and I can access it via browser URL, but unfortunately, I can't connect to it via your plugin. ( I set URL to 127.0.0.1:9200 too, but not connected)

Local build of mirage not displaying UI elements

OS: Linux mint 18.2
node version: v7.10.1
npm version: 4.2.0

Trying to build locally using current instructions. This is the output that I see:

โžœ  mirage git:(master) npm install

 [email protected] postinstall /home/reedv/mirage
 typings install

typings WARN deprecated 11/21/2016: "registry:dt/node#6.0.0+20160621231320" is deprecated (updated, replaced or removed)
typings WARN deprecated 10/25/2016: "registry:dt/jasmine#2.2.0+20160621224255" is deprecated (updated, replaced or removed)
typings WARN deprecated 9/14/2016: "registry:dt/core-js#0.0.0+20160602141332" is deprecated (updated, replaced or removed)

โ”œโ”€โ”€ core-js (global)
โ”œโ”€โ”€ jasmine (global)
โ””โ”€โ”€ node (global)

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN @angular/[email protected] requires a peer of [email protected] but none was installed.
npm WARN @angular/[email protected] requires a peer of [email protected] but none was installed.
npm WARN [email protected] requires a peer of [email protected] but none was installed.
npm WARN [email protected] requires a peer of zone.js@^0.7.2 but none was installed.
npm WARN [email protected] requires a peer of browserify@>= 2.3.0 < 4 but none was installed.
npm WARN [email protected] No repository field.

Continuing through the installation steps I see output...

โžœ  mirage git:(master) bower install
bower cached        https://github.com/farhan687/urlsafe-base64.git#1.1.1
bower validate      1.1.1 against https://github.com/farhan687/urlsafe-base64.git#*
bower cached        https://github.com/twbs/bootstrap.git#3.3.7
bower validate      3.3.7 against https://github.com/twbs/bootstrap.git#~3.3.6
bower cached        https://github.com/FortAwesome/Font-Awesome.git#4.5.0
bower validate      4.5.0 against https://github.com/FortAwesome/Font-Awesome.git#~4.5.0
bower cached        https://github.com/ivaynberg/select2.git#4.0.3
bower validate      4.0.3 against https://github.com/ivaynberg/select2.git#~4.0.1
bower cached        https://github.com/components/codemirror.git#5.27.4
bower validate      5.27.4 against https://github.com/components/codemirror.git#^5.14.2
bower cached        https://github.com/moment/moment.git#2.13.0
bower validate      2.13.0 against https://github.com/moment/moment.git#2.13.0
bower cached        https://github.com/brix/crypto-js.git#3.1.9
bower validate      3.1.9 against https://github.com/brix/crypto-js.git#^3.1.6
bower cached        https://github.com/jquery/jquery-dist.git#2.2.4
bower validate      2.2.4 against https://github.com/jquery/jquery-dist.git#~2.2.4
bower cached        https://github.com/auth0/auth0.js.git#7.6.1
bower validate      7.6.1 against https://github.com/auth0/auth0.js.git#^7.3.0
bower cached        https://github.com/nmrugg/LZMA-JS.git#2.3.0
bower validate      2.3.0 against https://github.com/nmrugg/LZMA-JS.git#^2.3.0
bower cached        https://github.com/jquery/jquery-dist.git#2.2.4
bower validate      2.2.4 against https://github.com/jquery/jquery-dist.git#1.9.1 - 3
bower new           version for https://github.com/jquery/jquery-dist.git#1.9.1 - 3
bower resolve       https://github.com/jquery/jquery-dist.git#1.9.1 - 3
bower download      https://github.com/jquery/jquery-dist/archive/3.2.1.tar.gz
bower extract       jquery#1.9.1 - 3 archive.tar.gz
bower resolved      https://github.com/jquery/jquery-dist.git#3.2.1
bower install       urlsafe-base64#1.1.1
bower install       codemirror#5.27.4
bower install       font-awesome#4.5.0
bower install       select2#4.0.3
bower install       crypto-js#3.1.9
bower install       bootstrap#3.3.7
bower install       jquery#2.2.4
bower install       auth0.js#7.6.1
bower install       moment#2.13.0
bower install       lzma#2.3.0

urlsafe-base64#1.1.1 bower_components/urlsafe-base64

codemirror#5.27.4 bower_components/codemirror

font-awesome#4.5.0 bower_components/font-awesome

select2#4.0.3 bower_components/select2

crypto-js#3.1.9 bower_components/crypto-js

bootstrap#3.3.7 bower_components/bootstrap
โ””โ”€โ”€ jquery#2.2.4

jquery#2.2.4 bower_components/jquery

auth0.js#7.6.1 bower_components/auth0.js

moment#2.13.0 bower_components/moment

lzma#2.3.0 bower_components/lzma
โžœ  mirage git:(master) npm start

> [email protected] start /home/reedv/mirage
> tsc && concurrently "npm run tsc:w" "npm run lite" "gulp watch" 

[0] 
[0] > [email protected] tsc:w /home/reedv/mirage
[0] > tsc -w
[0] 
[1] 
[1] > [email protected] lite /home/reedv/mirage
[1] > lite-server
[1] 
[2] [14:34:42] 
[2] Using gulpfile ~/mirage/gulpfile.js
[2] [14:34:42] 
[2] Starting 'sass'...
[2] [14:34:42] 
[2] Starting 'vendorcss'...
[2] [14:34:42] 
[2] Starting 'vendorjs'...
[2] [14:34:42] 
[2] Starting 'customjs'...
[2] [14:34:42] 
[2] Starting 'movefonts'...
[2] [14:34:42] 
[2] Starting 'move_js_depends'...
[2] [14:34:42] 
[2] Starting 'watchfiles'...
[2] [14:34:42] 
[2] Finished 'watchfiles' after 45 ms
[2] [14:34:43] 
[2] Finished 'customjs' after 314 ms
[2] [14:34:43] 
[2] Finished 'move_js_depends' after 311 ms
[2] [14:34:43] 
[2] Finished 'vendorcss' after 432 ms
[2] [14:34:43] Finished 'movefonts' after 372 ms
[2] [14:34:43] Finished 'sass' after 562 ms
[2] [14:34:43] Starting 'customcss'...
[1] ** browser-sync config **
[1] { injectChanges: false,
[1]   files: [ '*', '*/*.js', '**/*.js' ],
[1]   watchOptions: { ignored: 'node_modules' },
[1]   server: { baseDir: './', middleware: [ [Function], [Function] ] },
[1]   port: 3030,
[1]   ui: { port: 3031 } }
[1] [Browsersync] Access URLs:
[1]  ----------------------------------
[1]        Local: http://localhost:3030
[1]     External: http://10.0.2.15:3030
[1]  ----------------------------------
[1]           UI: http://localhost:3031
[1]  UI External: http://10.0.2.15:3031
[1]  ----------------------------------
[1] [Browsersync] Serving files from: ./
[1] [Browsersync] Watching files...

When the mirage tab opens in my default browser (chrome) I see this:

screenshot from 2017-08-24 14-40-12

which is missing most of the UI elements.

Here is a copy/paste of the console output:

:3030/node_modules/@angular/core//bundles/core.umd.js:3370 EXCEPTION: App name is not present in options.
ErrorHandler.handleError @ :3030/node_modules/@angular/core//bundles/core.umd.js:3370
:3030/node_modules/@angular/core//bundles/core.umd.js:3375 ORIGINAL STACKTRACE:
ErrorHandler.handleError @ :3030/node_modules/@angular/core//bundles/core.umd.js:3375
:3030/node_modules/@angular/core//bundles/core.umd.js:3376 Error: App name is not present in options.
    at new y (http://localhost:3030/dist/js/vendor.min.js:6:17236)
    at AppbaseService.setAppbase (http://localhost:3030/app/shared/appbase.service.js:38:27)
    at AppbaseService.getIndices (http://localhost:3030/app/shared/appbase.service.js:131:14)
    at AppComponent.getIndices (http://localhost:3030/app/app.component.js:136:46)
    at AppComponent.EsSpecific (http://localhost:3030/app/app.component.js:131:14)
    at AppComponent.configCb (http://localhost:3030/app/app.component.js:87:22)
    at AppComponent.detectConfig (http://localhost:3030/app/app.component.js:115:20)
    at AppComponent.ngOnInit (http://localhost:3030/app/app.component.js:81:14)
    at _View_AppComponent_Host0.detectChangesInternal (AppComponent_Host.ngfactory.js:41:81)
    at _View_AppComponent_Host0.AppView.detectChanges (http://localhost:3030/node_modules/@angular/core//bundles/core.umd.js:9470:18)
ErrorHandler.handleError @ :3030/node_modules/@angular/core//bundles/core.umd.js:3376
vendor.min.js:3 Unhandled Promise rejection: App name is not present in options. ; Zone: <root> ; Task: Promise.then ; Value: Error: App name is not present in options.
    at new y (http://localhost:3030/dist/js/vendor.min.js:6:17236)
    at AppbaseService.setAppbase (http://localhost:3030/app/shared/appbase.service.js:38:27)
    at AppbaseService.getIndices (http://localhost:3030/app/shared/appbase.service.js:131:14)
    at AppComponent.getIndices (http://localhost:3030/app/app.component.js:136:46)
    at AppComponent.EsSpecific (http://localhost:3030/app/app.component.js:131:14)
    at AppComponent.configCb (http://localhost:3030/app/app.component.js:87:22)
    at AppComponent.detectConfig (http://localhost:3030/app/app.component.js:115:20)
    at AppComponent.ngOnInit (http://localhost:3030/app/app.component.js:81:14)
    at _View_AppComponent_Host0.detectChangesInternal (AppComponent_Host.ngfactory.js:41:81)
    at _View_AppComponent_Host0.AppView.detectChanges (http://localhost:3030/node_modules/@angular/core//bundles/core.umd.js:9470:18) Error: App name is not present in options.
    at new y (http://localhost:3030/dist/js/vendor.min.js:6:17236)
    at AppbaseService.setAppbase (http://localhost:3030/app/shared/appbase.service.js:38:27)
    at AppbaseService.getIndices (http://localhost:3030/app/shared/appbase.service.js:131:14)
    at AppComponent.getIndices (http://localhost:3030/app/app.component.js:136:46)
    at AppComponent.EsSpecific (http://localhost:3030/app/app.component.js:131:14)
    at AppComponent.configCb (http://localhost:3030/app/app.component.js:87:22)
    at AppComponent.detectConfig (http://localhost:3030/app/app.component.js:115:20)
    at AppComponent.ngOnInit (http://localhost:3030/app/app.component.js:81:14)
    at _View_AppComponent_Host0.detectChangesInternal (AppComponent_Host.ngfactory.js:41:81)
    at _View_AppComponent_Host0.AppView.detectChanges (http://localhost:3030/node_modules/@angular/core//bundles/core.umd.js:9470:18)
r @ vendor.min.js:3
vendor.min.js:3 Error: Uncaught (in promise): Error: App name is not present in options.
Error: App name is not present in options.
    at new y (http://localhost:3030/dist/js/vendor.min.js:6:17236)
    at AppbaseService.setAppbase (http://localhost:3030/app/shared/appbase.service.js:38:27)
    at AppbaseService.getIndices (http://localhost:3030/app/shared/appbase.service.js:131:14)
    at AppComponent.getIndices (http://localhost:3030/app/app.component.js:136:46)
    at AppComponent.EsSpecific (http://localhost:3030/app/app.component.js:131:14)
    at AppComponent.configCb (http://localhost:3030/app/app.component.js:87:22)
    at AppComponent.detectConfig (http://localhost:3030/app/app.component.js:115:20)
    at AppComponent.ngOnInit (http://localhost:3030/app/app.component.js:81:14)
    at _View_AppComponent_Host0.detectChangesInternal (AppComponent_Host.ngfactory.js:41:81)
    at _View_AppComponent_Host0.AppView.detectChanges (http://localhost:3030/node_modules/@angular/core//bundles/core.umd.js:9470:18)
    at new y (http://localhost:3030/dist/js/vendor.min.js:6:17236)
    at AppbaseService.setAppbase (http://localhost:3030/app/shared/appbase.service.js:38:27)
    at AppbaseService.getIndices (http://localhost:3030/app/shared/appbase.service.js:131:14)
    at AppComponent.getIndices (http://localhost:3030/app/app.component.js:136:46)
    at AppComponent.EsSpecific (http://localhost:3030/app/app.component.js:131:14)
    at AppComponent.configCb (http://localhost:3030/app/app.component.js:87:22)
    at AppComponent.detectConfig (http://localhost:3030/app/app.component.js:115:20)
    at AppComponent.ngOnInit (http://localhost:3030/app/app.component.js:81:14)
    at _View_AppComponent_Host0.detectChangesInternal (AppComponent_Host.ngfactory.js:41:81)
    at _View_AppComponent_Host0.AppView.detectChanges (http://localhost:3030/node_modules/@angular/core//bundles/core.umd.js:9470:18)
    at c (http://localhost:3030/dist/js/vendor.min.js:3:26602)
    at http://localhost:3030/dist/js/vendor.min.js:3:26352
    at e.invoke (http://localhost:3030/dist/js/vendor.min.js:3:31485)
    at n.run (http://localhost:3030/dist/js/vendor.min.js:3:28872)
    at http://localhost:3030/dist/js/vendor.min.js:3:26974
    at e.invokeTask (http://localhost:3030/dist/js/vendor.min.js:4:110)
    at n.runTask (http://localhost:3030/dist/js/vendor.min.js:3:29474)
    at o (http://localhost:3030/dist/js/vendor.min.js:3:26062)
    at XMLHttpRequest.invoke (http://localhost:3030/dist/js/vendor.min.js:4:1263)
r @ vendor.min.js:3
185000306?title=0&byline=0&portrait=0:1 Refused to load the script 'data:application/javascript;base64,KGZ1bmN0aW9uKCkgewoJdmFyIG5vb3BmbiA9IGZ1bmN0aW9uKCkgewoJCTsKCX07CgkvLwoJdmFyIEdhcSA9IGZ1bmN0aW9uKCkgewoJCTsKCX07CglHYXEucHJvdG90eXBlLk5hID0gbm9vcGZuOwoJR2FxLnByb3RvdHlwZS5PID0gbm9vcGZuOwoJR2FxLnByb3RvdHlwZS5TYSA9IG5vb3BmbjsKCUdhcS5wcm90b3R5cGUuVGEgPSBub29wZm47CglHYXEucHJvdG90eXBlLlZhID0gbm9vcGZuOwoJR2FxLnByb3RvdHlwZS5fY3JlYXRlQXN5bmNUcmFja2VyID0gbm9vcGZuOwoJR2FxLnByb3RvdHlwZS5fZ2V0QXN5bmNUcmFja2VyID0gbm9vcGZuOwoJR2FxLnByb3RvdHlwZS5fZ2V0UGx1Z2luID0gbm9vcGZuOwoJR2FxLnByb3Rv...ZuOwoJR2F0LnByb3RvdHlwZS5oYiA9IG5vb3BmbjsKCUdhdC5wcm90b3R5cGUubGEgPSBub29wZm47CglHYXQucHJvdG90eXBlLm9hID0gbm9vcGZuOwoJR2F0LnByb3RvdHlwZS5wYSA9IG5vb3BmbjsKCUdhdC5wcm90b3R5cGUudSA9IG5vb3BmbjsKCXZhciBnYXQgPSBuZXcgR2F0KCk7Cgl3aW5kb3cuX2dhdCA9IGdhdDsKCS8vCgl2YXIgZ2FxID0gbmV3IEdhcSgpOwoJKGZ1bmN0aW9uKCkgewoJCXZhciBhYSA9IHdpbmRvdy5fZ2FxIHx8IFtdOwoJCWlmICggQXJyYXkuaXNBcnJheShhYSkgKSB7CgkJCXdoaWxlICggYWFbMF0gKSB7CgkJCQlnYXEucHVzaChhYS5zaGlmdCgpKTsKCQkJfQoJCX0KCX0pKCk7Cgl3aW5kb3cuX2dhcSA9IGdhcS5xZiA9IGdhcTsKfSkoKTs=' because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-inline' https://f.vimeocdn.com https://ssl.google-analytics.com https://js-agent.newrelic.com https://bam.nr-data.net https://f.vimeocdn.com".

Authentication sign-in not working on chrome extension

I was initially having trouble with the authentication for my local ES installation (with x-pack security) where every time I tried to sign in with the login window would continually reset. Looking at the chrome console, I saw that the username was being set to "localhost" with password "9200" the local ES port.
Pictured below:

mirage_no-auth

Looking at this issue, I changed the config file to include:

http.cors.allow-origin: "/.*/"
http.cors.enabled: true
http.cors.allow-headers : "X-Requested-With, X-Auth-Token, Content-Type, Content-Length, Authorization"
http.cors.allow-methods: "OPTIONS, HEAD, GET, POST, PUT, DELETE"
http.cors.allow-credentials: true

and restarted elasticsearch and I am now this error, where the username and password is blank username="", password="":

screenshot from 2017-08-22 15-27-58

Are there any other things that I can try to fix this?

Bower install failed to execute on Font-Awesome

bower install sucessfully installs select2 as well as bootstrap but fails on Font Awesome
ECMDERR Failed to execute "git ls-remote --tags --heads git://github.com/FortAwesome/Font-Awesome.git", exit code of #128 fatal: unable to connect to github.com: github.com[0: 192.30.252.128]: errno=Operation timed out

skarmavbild 2016-03-18 kl 14 15 10

unable to connect in chrome extension

Hello mirage seems great but the chrome extension don't work I can't click connect the console output is

Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-eval'". Either the 'unsafe-inline' keyword, a hash ('sha256-g7ROzI+cQxT+UGWjoGEOx2zf/qXlg3zmEz469iJGn2E='), or a nonce ('nonce-...') is required to enable inline execution.

my chrome is on version 53.0.2785.116 m

Elastic 1.7.3 Without HTTPS Basic Auth

Hi,
I'm running Elastic 1.7.3 without HTTPS Basic Auth. I've installed the Mirage Docker version. I can't seem to get it to connect.. Looking at the web debug console logs, it looks like it's not liking that I don't have a username/pass on the elastic url.

Any advice would be great..

Thanks

Preloaded Queries don't work with mirage

It seems there has been a backwards incompatible change in the URL format. The preloaded queries demo doesn't work with the latest dev branch or the v5.0 release.

Show different results view

We currently show the results as raw JSON. We can update this to show:

  1. Results in a tabular format,
  2. Streaming results (applicable for appbase.io hosted versions)

Add support for geo distance query

Implement support for Geo Distance Query.

Prerequisites

Code Structure

The code structure will resemble the files in this path - https://github.com/appbaseio/mirage/tree/dev/app/build/singlequery/queries.

There should be two files created: geodistance.query.ts and geodistance.query.spec.ts.

Before PR

  • Ensure the logic is impeccable, a test spec is written, no unused variables are present and indentation matches with the rest of the codebase.

verbose stack Error: [email protected] start: `tsc && concurrently "npm run tsc:w" "npm run lite" "gulp watch" `

Have tried with node 8,7, etc. All versions have this problem.
Funny thing, it used to work until last night.

0 info it worked if it ends with ok
1 verbose cli [ '/home/steph/.nvm/versions/node/v7.10.0/bin/node',
1 verbose cli '/home/steph/.nvm/versions/node/v7.10.0/bin/npm',
1 verbose cli 'start' ]
2 info using [email protected]
3 info using [email protected]
4 verbose run-script [ 'prestart', 'start', 'poststart' ]
5 info lifecycle [email protected]prestart: [email protected]
6 silly lifecycle [email protected]
prestart: no script for prestart, continuing
7 info lifecycle [email protected]start: [email protected]
8 verbose lifecycle [email protected]
start: unsafe-perm in lifecycle true
9 verbose lifecycle [email protected]start: PATH: /home/steph/.nvm/versions/node/v7.10.0/lib/node_modules/npm/bin/node-gyp-bin:/home/steph/Apps/mirage/node_modules/.bin:/home/steph/.nvm/versions/node/v7.10.0/bin:/home/steph/bin:/home/steph/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/share/scala/bin:/home/steph/Apps/spark-2.1.1-bin-hadoop2.7/bin:/opt/TurboVNC/bin:/usr/local/share/scala/bin:/home/steph/Apps/spark-2.1.1-bin-hadoop2.7/bin:/opt/TurboVNC/bin:/usr/local/share/scala/bin:/home/steph/Apps/spark-2.1.1-bin-hadoop2.7/bin:/opt/TurboVNC/bin
10 verbose lifecycle [email protected]
start: CWD: /home/steph/Apps/mirage
11 silly lifecycle [email protected]start: Args: [ '-c',
11 silly lifecycle 'tsc && concurrently "npm run tsc:w" "npm run lite" "gulp watch" ' ]
12 silly lifecycle [email protected]
start: Returned: code: 1 signal: null
13 info lifecycle [email protected]~start: Failed to exec start script
14 verbose stack Error: [email protected] start: tsc && concurrently "npm run tsc:w" "npm run lite" "gulp watch"
14 verbose stack Exit status 1
14 verbose stack at EventEmitter. (/home/steph/.nvm/versions/node/v7.10.0/lib/node_modules/npm/lib/utils/lifecycle.js:279:16)
14 verbose stack at emitTwo (events.js:106:13)
14 verbose stack at EventEmitter.emit (events.js:194:7)
14 verbose stack at ChildProcess. (/home/steph/.nvm/versions/node/v7.10.0/lib/node_modules/npm/lib/utils/spawn.js:40:14)
14 verbose stack at emitTwo (events.js:106:13)
14 verbose stack at ChildProcess.emit (events.js:194:7)
14 verbose stack at maybeClose (internal/child_process.js:899:16)
14 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
15 verbose pkgid [email protected]
16 verbose cwd /home/steph/Apps/mirage
17 error Linux 4.4.0-53-generic
18 error argv "/home/steph/.nvm/versions/node/v7.10.0/bin/node" "/home/steph/.nvm/versions/node/v7.10.0/bin/npm" "start"
19 error node v7.10.0
20 error npm v4.2.0
21 error code ELIFECYCLE
22 error errno 1
23 error [email protected] start: tsc && concurrently "npm run tsc:w" "npm run lite" "gulp watch"
23 error Exit status 1
24 error Failed at the [email protected] start script 'tsc && concurrently "npm run tsc:w" "npm run lite" "gulp watch" '.
24 error Make sure you have the latest version of node.js and npm installed.
24 error If you do, this is most likely a problem with the mirage package,
24 error not with npm itself.
24 error Tell the author that this fails on your system:
24 error tsc && concurrently "npm run tsc:w" "npm run lite" "gulp watch"
24 error You can get information on how to open an issue for this project with:
24 error npm bugs mirage
24 error Or if that isn't available, you can get their info via:
24 error npm owner ls mirage
24 error There is likely additional logging output above.
25 verbose exit [ 1, true ]

Create a project roadmap

Create a detailed roadmap showing what's implemented, how we plan to add the entire Query DSL an upcoming support for ES versions.

Failed to connect to a default elasticsearch instance

I have launched a default elasticsearch instance which is available on my local environment: http://localhost:9200. Open this url on my browser I get below output:

{
  "name" : "97Fvae4",
  "cluster_name" : "elasticsearch_joey",
  "cluster_uuid" : "NzKnO5UWRNW2AtqEr8CeAg",
  "version" : {
    "number" : "5.5.1",
    "build_hash" : "19c13d0",
    "build_date" : "2017-07-18T20:44:24.823Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.0"
  },
  "tagline" : "You Know, for Search"
}

but when I tried to use mirage to connect to this instance. I get an error dialog saying:
It looks like your app name, username, password combination doesn't match. Check your url and appname and then connect it again.

My instance doesn't have any username and password. I launched it by running elasticsearch on terminal. Why does it complain about username and password.

Cannot find name 'appbaseService'

After I npm install, bower install and npm start, I get the following error:

Can you please help?

npm start

> [email protected] start /Users/aliabd01/Desktop/mirage
> tsc && concurrently "npm run tsc:w" "npm run lite" "gulp watch"

app/app.component.ts(153,26): error TS2663: Cannot find name 'appbaseService'. Did you mean the instance member 'this.appbaseService'?
app/app.component.ts(159,21): error TS2304: Cannot find name 'indice'.
app/app.component.ts(162,52): error TS2304: Cannot find name 'indice'.
app/app.component.ts(168,34): error TS2304: Cannot find name 'indice'.
app/app.component.ts(171,34): error TS2304: Cannot find name 'indice'.
app/app.component.ts(176,25): error TS2403: Subsequent variable declarations must have the same type.  Variable 'obj' must be of type '{ appname: any; url: string; }', but here has type '{ appname: string; url: string; }'.
app/app.component.ts(186,31): error TS2304: Cannot find name 'appbaseService'.

npm ERR! Darwin 15.3.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "start"
npm ERR! node v6.7.0
npm ERR! npm  v3.10.3
npm ERR! code ELIFECYCLE
npm ERR! [email protected] start: `tsc && concurrently "npm run tsc:w" "npm run lite" "gulp watch" `
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the [email protected] start script 'tsc && concurrently "npm run tsc:w" "npm run lite" "gulp watch" '.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the mirage package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     tsc && concurrently "npm run tsc:w" "npm run lite" "gulp watch"
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs mirage
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls mirage
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/aliabd01/Desktop/mirage/npm-debug.log

Math date support with index name.

For many of our index, like the one from logstash, it's date based.
So I would like to see if is it possible to have something like <MY_INDEX-{now/d}> for index(appName).
I tried <MY_INDEX-{now%2Fd}>, it's getting 200 OK for mapping response. But there is pop up said authentication error. I guess it's because the response doesn't exactly match the index name.

Simplifying generated query

The current mirage workflow is designed in an opinionated fashion to programmatically compose Elasticsearch Query DSL compatible queries. As a result, it defaults to starting out with a compound query (bool clause).

We are leaving out the use-case of teaching Elasticsearch query syntax currently.

It would be ideal if we can figure a way to compose queries that start out with a leaf query format and change to compound query (bool format) when a compound condition or nesting is added. And when that compound condition or nesting is removed, it reverts to the leaf query format.

vendor.min.js:6 Uncaught ReferenceError: jQuery is not defined(anonymous function) ..

Hi,
I have been trying to run the instance locally.
When I open the browser, these are the errors that I get in the console:
vendor.min.js:6 Uncaught ReferenceError: jQuery is not defined(anonymous function) @ vendor.min.js:6
JSONURL.js:1 Uncaught ReferenceError: LZMA is not defined(anonymous function) @ JSONURL.js:1
custom.min.js:1 Uncaught ReferenceError: $ is not defined

Am I missing any step in order to run it correctly?

No index/appname can be selected

hello, first of all congrats for the great tool.

I've installed it on a es 2.3.x with ssl enabled, I can get it to connect to the cluster I see using chrome-dev-tools that the mappings are returned successfully, however I can't select any index after I hit "connect".

I'm using a admin user which can call all api on all indices so I'd exclude permission issues.

if I just hit run query I get a response

{
    "_body": "No handler found for uri [/] and method [POST]",
    "status": 400,
    "ok": false,
    "statusText": "Bad Request",
    "headers": {
        "Access-Control-Allow-Origin": [
            "https://myhostname:myport"
        ],
        "Access-Control-Allow-Credentials": [
            "true"
        ],
        "Content-Length": [
            "46"
        ],
        "Content-Type": [
            "text/plain; charset=UTF-8"
        ]
    },
    "type": 2,
    "url": "myhostname:myport"
}

(value for url is edited)

so connection seems to be fine....

any ideas on what I am missing or troubleshooting steps?

thanks and congrats again!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.