1.8.23 • Published 5 years ago

@gapi/starter-advanced v1.8.23

Weekly downloads
506
License
MIT
Repository
-
Last release
5 years ago

@Gapi Advanced Starter

@Nginx, @Rabbitmq, @Postgres, @Sequelize, @Docker, @Graphql

Build Status

This is advanced example project related with GAPI

To check basic example project go to basic-example

Included @gapi/sequelize module

To start developing clone repository

git clone https://github.com/Stradivario/gapi-starter-postgres-sequelize

Better use command line utility(gapi) to install it type following command:

npm i -g @gapi/cli

Type the following command to create new project from scratch via CLI

gapi new my-project --advanced

To start project for "development" type:

npm start

To stop project for "production" type:

Following command will stop pm2 processes started

npm run stop:prod

Testing

To start developing with testing GAPI uses JEST and gapi-cli is preconfigurated for your needs! :)

To run single test type:

gapi test

Testing watch mode

Note: You need to start server before running tests
Note: Everytime you make change to server it will restart server and execute tests
Note: To add more tests just create e2e.spec.ts or unit.spec.ts somewhere inside the application
Start the application
gapi start
Execute test with --watch argument
gapi test --watch
You will end up with something like this

Alt Text

Custom logic before testing ( for example creating MOCK users to database before testing)

Create file test.ts inside root/src/test.ts with this content
Everytime you run test with --before argument it will set environment variable BEFORE_HOOK
  if (process.env.BEFORE_HOOK) {
    // do something here
  }
Then execute tests with --before
gapi test --before
This command will start root/src/test.ts file and will wait for process.exit(0) so you can customize your before logic check this link for reference
Following commands will start RabbitMQ, PostgreSQL, API, NGINX as a services you need DOCKER for them
API will be served on https://localhost:80 and https://localhost:80/subscriptions

Docker

To build project with Docker type:

gapi app build

To start project with Docker type:

gapi app start

To stop project type:

gapi app stop

Workers

All workers will be mapped as Proxy and will be reverted to https://localhost:80 and https://localhost:80/subscriptions
So you don't have to worry about if some of your workers stopped responding
TODO: Create monitoring APP for all workers and main API

To start workers type:

gapi workers start

To stop workers type:

gapi workers stop
To add more workers
By default there are 4 workers with 4 processes with "exec_mode: cluster" of the original process inside single docker container
You can control Processes inside single docker container from "root/process.yml" file.
apps:
  - script   : './src/main.ts'
    name     : 'APP'
    exec_mode: 'cluster'
    instances: 4
To map new worker as a stream open root/nginx/config/private/default
upstream app_servers {
    server 182.10.0.3:9000; # Main process
    server 182.10.0.21:9000; # Worker 1
    server 182.10.0.22:9000; # Worker 2
    server 182.10.0.23:9000; # Worker 3
    server 182.10.0.24:9000; # Worker 4

    # Add more workers here
    # server 182.10.0.25:9000; # Worker 5
}

server {
    listen 80;
    server_name api.yourdomain.com;
    access_log api-yourdomain.access.log;

    location / {
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
       client_max_body_size 50M;
       proxy_set_header Host $http_host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-Frame-Options SAMEORIGIN;
       proxy_buffers 256 16k;
	     proxy_buffering off;
       proxy_buffer_size 16k;
       proxy_read_timeout 600s;
       proxy_pass http://app_servers;
    }

    location /subscriptions {
         # prevents 502 bad gateway error
        proxy_buffers 8 32k;
        proxy_buffer_size 64k;

        # redirect all HTTP traffic to localhost:9000;
        proxy_pass http://app_servers/subscriptions;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #proxy_set_header X-NginX-Proxy true;

        # enables WS support
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
	      proxy_buffering off;
        proxy_read_timeout 999999999;

    }
    if ($scheme = http) {
       return 301 https://$server_name$request_uri;
    }
    listen 443;
    ssl on;
    ssl_certificate         /usr/share/certs/cert.pem;
    ssl_certificate_key     /usr/share/certs/cert.key;
}
When you add another worker it should be on different IP with same port 9000
Open root/gapi.conf.yml file you will find this file:
config:
# Application configuration
  app: 
    local:
      API_PORT: 9000
      API_CERT: ./cert.key
      NODE_ENV: development
      AMQP_HOST: 182.10.0.5
      AMQP_PORT: 5672
      DB_PORT: 5432
      DB_NAME: postgres
      DB_HOST: 182.10.0.4
      DB_USERNAME: dbuser
      DB_PASSWORD: dbuserpass
      GRAPHIQL: true
      ENDPOINT_TESTING: http://localhost:9000/graphql
      TOKEN_TESTING: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImtyaXN0aXFuLnRhY2hldkBnbWFpbC5jb20iLCJzY29wZSI6WyJBRE1JTiJdLCJpZCI6MSwiaWF0IjoxNTE2OTk2MzYxfQ.7ANr5VHrViD3NkCaDr0nSWYwk46UAEbOwB52pqye4AM
      GRAPHIQL_TOKEN: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImtyaXN0aXFuLnRhY2hldkBnbWFpbC5jb20iLCJpZCI6MSwic2NvcGUiOlsiQURNSU4iXSwiaWF0IjoxNTIwMjkxMzkyfQ.9hpIDPkSiGvjTmUEyg_R_izW-ra2RzzLbe3Uh3IFsZg
    prod:
      API_PORT: 9000
      API_CERT: ./cert.key
      NODE_ENV: production
      AMQP_HOST: 182.10.0.5
      AMQP_PORT: 5672
      DB_PORT: 5432
      DB_HOST: 182.10.0.4
      DB_USERNAME: dbuser
      DB_PASSWORD: dbuserpass
      DB_NAME: postgres
# Testing configuration for local(dev) or worker(running tests as a separate worker with separate database)
  test: 
    local: extends app/local
    worker:
      API_PORT: 9000
      API_CERT: ./cert.key
      NODE_ENV: production
      DB_PORT: 5432
      DB_HOST: 182.10.0.99
      AMQP_HOST: 182.10.0.5
      AMQP_PORT: 5672
      DB_USERNAME: dbuser
      DB_PASSWORD: dbuserpass
      DB_NAME: postgres
      ENDPOINT_TESTING: http://182.10.0.101:9000/graphql
      TOKEN_TESTING: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImtyaXN0aXFuLnRhY2hldkBnbWFpbC5jb20iLCJzY29wZSI6WyJBRE1JTiJdLCJpZCI6MSwiaWF0IjoxNTE2OTk2MzYxfQ.7ANr5VHrViD3NkCaDr0nSWYwk46UAEbOwB52pqye4AM
  schema:
    introspectionEndpoint: http://localhost:9000/graphql
    introspectionOutputFolder: ./src/app/core/api-introspection

commands:
  testing:
    stop:
      - docker rm -f gapi-api-prod-worker-tests-executor
      - docker rm -f gapi-api-prod-worker-tests-provider
    start:
      - gapi testing start-provider
      - sleep 10
      - gapi testing start-executor
      - echo Cleaning...
      - gapi testing stop
    start-executor:
      - docker run -d --network=gapiapiprod_gapi --ip=182.10.0.100 --name gapi-api-prod-worker-tests-executor gapi/api/prod
      - docker exec gapi-api-prod-worker-tests-provider npm -v
      - gapi test --worker --before
    start-provider: docker run -d --network=gapiapiprod_gapi --ip=182.10.0.101 --name gapi-api-prod-worker-tests-provider gapi/api/prod
  workers:
    start:
      - gapi workers start-1
      - gapi workers start-2
      - gapi workers start-3
      - gapi workers start-4
    stop:
      - docker rm -f gapi-api-prod-worker-1
      - docker rm -f gapi-api-prod-worker-2
      - docker rm -f gapi-api-prod-worker-3
      - docker rm -f gapi-api-prod-worker-4
    start-1: docker run -d --network=gapiapiprod_gapi --ip=182.10.0.21 --name gapi-api-prod-worker-1 gapi/api/prod
    start-2: docker run -d --network=gapiapiprod_gapi --ip=182.10.0.22 --name gapi-api-prod-worker-2 gapi/api/prod
    start-3: docker run -d --network=gapiapiprod_gapi --ip=182.10.0.23 --name gapi-api-prod-worker-3 gapi/api/prod
    start-4: docker run -d --network=gapiapiprod_gapi --ip=182.10.0.24 --name gapi-api-prod-worker-4 gapi/api/prod
    example-worker-with-port: docker run -d --network=gapiapiprod_gapi --ip=182.10.0.25 --name gapi-api-prod-worker-5 -p 9001:9000 gapi/api/prod
  app:
    start:
      - docker-compose -p gapi-api-prod up --force-recreate -d
      - gapi rabbitmq enable-dashboard
    stop:
      - gapi nginx stop
      - gapi api stop
      - gapi rabbitmq stop
      - gapi postgres stop
    build: docker build -t gapi/api/prod .
  api:
    stop: docker rm -f gapi-api-prod
  nginx:
    stop: docker rm -f gapi-api-nginx
  postgres:
    stop: docker rm -f gapi-api-postgres
  rabbitmq:
    stop: docker rm -f gapi-api-rabbitmq
    restart: docker restart gapi-api-rabbitmq
    enable-dashboard: docker exec gapi-api-rabbitmq rabbitmq-plugins enable rabbitmq_management

# You can define your custom commands for example 
# commands:
#   your-cli:
#     my-command: 'npm -v'
# This command can be executed as "gapi your-cli my-command"
Adding one more worker:
start-5: 'docker run -d --network=gapiapiprod_gapi --ip=182.10.0.25 --name gapi-api-prod-worker-5 -p 9005:9000 gapi/api/prod'
Then edit start task inside workers to start new worker 5
start: 'gapi workers start-1 && gapi workers start-2 && gapi workers start-3 && gapi workers start-4 & gapi workers start-5'
Thats' it!! Now you have 4 processes like CLUSTERS inside 1 docker container with ip 182.10.0.25 and external port(optional) 9005;
You can specify worker also without port because all workers are inside internal network called "gapiapiprod_gapi"
182.10.0.21/22/23/24/25:9000
start-5: 'docker run -d --network=gapiapiprod_gapi --ip=182.10.0.25 --name gapi-api-prod-worker-5 gapi/api/prod'
If you want to change port forwarding to another port you need to set just nginx configuration:
  nginx:
    image: sameersbn/nginx:1.10.1-5
    ports:
      - "81:80"
      - "443:443"
Now you can find your API served onto https://localhost:81/ and https://localhost:81/subscriptions
All workers don't care about that because they will be served and mapped from nginx to port 80.
You can check docker-compose file to configurate environment variables
version: '2'
services:

  nginx:
    image: sameersbn/nginx:1.10.1-5
    ports:
      - "81:80"
      - "444:443"
    volumes:
      - ./nginx/config:/etc/nginx
      - ./nginx/html:/usr/share/nginx/html/
      - ./nginx/certs:/usr/share/certs
    restart: always
    container_name: gapi-api-nginx
    networks:
      gapi:
        ipv4_address: 182.10.0.2

  api:
    image: gapi/api/prod:latest
    ports:
      - "9000"
    environment:
      - NODE_ENV=production
      - API_PORT=9000
      - GRAPHIQL_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InRhNGVuc3RvcmVAZ21haWwuY29tIiwic2NvcGUiOlsiQURNSU4iXSwiaWQiOjIsImlhdCI6MTUxMTk3NDkzNX0.M9PnW2IrVp4XGRvbzFrl0tx6vqs6oXItFK-wF5roneI
      - AMQP_HOST=182.10.0.5
      - AMQP_PORT=5672
      - CERT_PATH=

      # Production db config
      - DB_HOST=182.10.0.4
      - DB_PORT=5432
      - DB_NAME=postgres
      - DB_USERNAME=dbuser
      - DB_PASSWORD=dbuserpass

    restart: always
    mem_limit: 1000000000
    cpu_shares: 73
    container_name: gapi-api-prod
    depends_on:
      - nginx
      - rabbitMq
      - PostgreSQLDev
    networks:
      gapi:
        ipv4_address: 182.10.0.3

  PostgreSQLDev:
    image: sameersbn/postgresql:9.5-3
    ports:
      - "5432"
    environment:
      - DEBUG=false
      - TIMEZONE=Europe/Sofia
      - LOCALE=bg_BG.UTF-8

      - DB_USER=dbuser
      - DB_PASS=dbuserpass
      - DB_NAME=postgres
      - DB_TEMPLATE=

      - DB_EXTENSION=

      - REPLICATION_MODE=
      - REPLICATION_USER=
      - REPLICATION_PASS=
      - REPLICATION_SSLMODE=
    restart: always
    container_name: gapi-api-postgres
    networks:
      gapi:
        ipv4_address: 182.10.0.4

  PostgreSQLDevTesting:
    image: sameersbn/postgresql:9.5-3
    ports:
      - "5432"
    environment:
      - DEBUG=false
      - TIMEZONE=Europe/Sofia
      - LOCALE=bg_BG.UTF-8

      - DB_USER=dbuser
      - DB_PASS=dbuserpass
      - DB_NAME=postgres
      - DB_TEMPLATE=

      - DB_EXTENSION=

      - REPLICATION_MODE=
      - REPLICATION_USER=
      - REPLICATION_PASS=
      - REPLICATION_SSLMODE=
    restart: always
    container_name: gapi-api-postgres-testing
    networks:
      gapi:
        ipv4_address: 182.10.0.99

  rabbitMq:
    image: rabbitmq:3.7.2
    ports:
      - "15672:15672"
      - "5672:5672"
      - "5671:5671"
      - "4369:4369"
    restart: always
    container_name: gapi-api-rabbitmq
    networks:
      gapi:
        ipv4_address: 182.10.0.5

  pgadmin:
    image: thajeztah/pgadmin4
    ports:
      - "5050"
    volumes:
      - /usr/bin/:/usr/pg
      - /usr/database/:/usr/database
      - /tmp/:/tmp
    restart: always
    container_name: gapi-api-pg-admin
    networks:
      gapi:
        ipv4_address: 182.10.0.6

networks:
  gapi:
    driver: bridge
    ipam:
     config:
       - subnet: 182.10.0.0/16
         gateway: 182.10.0.1
After successfully started project you can open your browser to localhost:80 or 182.10.0.3:9000 the api will be served there

TODO: Better documentation...

Enjoy ! :)

1.8.22

5 years ago

1.8.23

5 years ago

1.8.20

6 years ago

1.8.21

6 years ago

1.8.19

6 years ago

1.8.18

6 years ago

1.8.17

6 years ago

1.8.16

6 years ago

1.8.15

6 years ago

1.8.14

6 years ago

1.8.13

6 years ago

1.8.12

6 years ago

1.8.11

6 years ago

1.8.10

6 years ago

1.8.9

6 years ago

1.8.8

6 years ago

1.8.7

6 years ago

1.8.6

6 years ago

1.8.5

6 years ago

1.8.4

6 years ago

1.8.3

6 years ago

1.8.2

6 years ago

1.8.1

6 years ago

1.8.0

6 years ago

1.7.8

6 years ago

1.7.7

6 years ago

1.7.6

6 years ago

1.7.5

6 years ago

1.7.4

6 years ago

1.7.3

6 years ago

1.7.2

6 years ago

1.7.1

6 years ago

1.7.0

6 years ago

1.6.32

6 years ago

1.6.30

6 years ago

1.6.28

6 years ago

1.6.26

6 years ago

1.6.25

6 years ago

1.6.24

6 years ago

1.6.23

6 years ago

1.6.22

6 years ago

1.6.21

6 years ago

1.6.20

6 years ago

1.6.19

6 years ago

1.6.18

6 years ago

1.6.17

6 years ago

1.6.16

6 years ago

1.6.15

6 years ago

1.6.14

6 years ago

1.6.13

6 years ago

1.6.12

6 years ago

1.6.11

6 years ago

1.6.10

6 years ago

1.6.9

6 years ago

1.6.8

6 years ago

1.6.7

6 years ago

1.6.6

6 years ago

1.6.5

6 years ago

1.6.4

6 years ago

1.6.3

6 years ago

1.6.2

6 years ago

1.6.1

6 years ago

1.6.0

6 years ago

1.5.39

6 years ago

1.5.38

6 years ago

1.5.37

6 years ago

1.5.36

6 years ago

1.5.35

6 years ago

1.5.34

6 years ago

1.5.33

6 years ago

1.5.32

6 years ago

1.5.31

6 years ago

1.5.30

6 years ago

1.5.29

6 years ago

1.5.28

6 years ago

1.5.27

6 years ago

1.5.26

6 years ago

1.5.25

6 years ago

1.5.24

6 years ago

1.5.23

6 years ago

1.5.22

6 years ago

1.5.21

6 years ago

1.5.20

6 years ago

1.5.19

6 years ago

1.5.18

6 years ago

1.5.17

6 years ago

1.5.16

6 years ago

1.5.15

6 years ago

1.5.14

6 years ago

1.5.13

6 years ago

1.5.12

6 years ago

1.5.11

6 years ago

1.5.10

6 years ago

1.5.9

6 years ago

1.5.8

6 years ago

1.5.7

6 years ago

1.5.6

6 years ago

1.5.5

6 years ago

1.5.4

6 years ago

1.5.3

6 years ago

1.5.2

6 years ago

1.5.1

6 years ago

1.5.0

6 years ago

1.4.94

6 years ago

1.4.93

6 years ago

1.4.92

6 years ago

1.4.91

6 years ago

1.4.90

6 years ago

1.4.89

6 years ago

1.4.88

6 years ago

1.4.87

6 years ago

1.4.86

6 years ago

1.4.85

6 years ago

1.4.84

6 years ago

1.4.83

6 years ago

1.4.82

6 years ago

1.4.81

6 years ago

1.4.80

6 years ago

1.4.79

6 years ago

1.4.78

6 years ago

1.4.77

6 years ago

1.4.76

6 years ago

1.4.75

6 years ago

1.4.74

6 years ago

1.4.73

6 years ago

1.4.72

6 years ago

1.4.71

6 years ago

1.4.70

6 years ago

1.4.69

6 years ago

1.4.68

6 years ago

1.4.67

6 years ago

1.4.66

6 years ago

1.4.65

6 years ago

1.4.64

6 years ago

1.4.63

6 years ago

1.4.62

6 years ago

1.4.61

6 years ago

1.4.60

6 years ago

1.4.59

6 years ago

1.4.58

6 years ago

1.4.57

6 years ago

1.4.56

6 years ago

1.4.55

6 years ago

1.4.54

6 years ago

1.4.53

6 years ago

1.4.52

6 years ago

1.4.51

6 years ago

1.4.50

6 years ago

1.4.49

6 years ago

1.4.48

6 years ago

1.4.47

6 years ago

1.4.46

6 years ago

1.4.45

6 years ago

1.4.44

6 years ago

1.4.43

6 years ago

1.4.41

6 years ago

1.4.40

6 years ago

1.4.39

6 years ago

1.4.38

6 years ago

1.4.37

6 years ago

1.4.36

6 years ago

1.4.35

6 years ago

1.4.34

6 years ago

1.4.33

6 years ago

1.4.32

6 years ago

1.4.31

6 years ago

1.4.30

6 years ago

1.4.29

6 years ago

1.4.28

6 years ago

1.4.27

6 years ago

1.4.26

7 years ago

1.4.25

7 years ago

1.4.24

7 years ago

1.4.23

7 years ago

1.4.22

7 years ago

1.4.21

7 years ago

1.4.20

7 years ago

1.4.19

7 years ago

1.4.18

7 years ago

1.4.17

7 years ago

1.4.16

7 years ago

1.4.15

7 years ago

1.4.14

7 years ago

1.4.13

7 years ago

1.4.12

7 years ago

1.4.11

7 years ago

1.4.10

7 years ago

1.4.9

7 years ago

1.4.8

7 years ago

1.4.7

7 years ago

1.4.6

7 years ago

1.4.5

7 years ago

1.4.4

7 years ago

1.4.3

7 years ago

1.4.2

7 years ago

1.4.1

7 years ago

1.4.0

7 years ago

1.3.3

7 years ago

1.3.2

7 years ago

1.3.1

7 years ago

1.3.0

7 years ago

1.2.58

7 years ago

1.2.57

7 years ago

1.2.56

7 years ago

1.2.55

7 years ago

1.2.54

7 years ago

1.2.53

7 years ago

1.2.52

7 years ago

1.2.51

7 years ago

1.2.50

7 years ago

1.2.49

7 years ago

1.2.48

7 years ago

1.2.47

7 years ago

1.2.45

7 years ago

1.2.44

7 years ago

1.2.41

7 years ago

1.2.40

7 years ago

1.2.39

7 years ago

1.2.38

7 years ago

1.2.37

7 years ago

1.2.36

7 years ago

1.2.35

7 years ago

1.2.34

7 years ago

1.2.33

7 years ago

1.2.32

7 years ago

1.2.31

7 years ago

1.2.30

7 years ago

1.2.29

7 years ago

1.2.28

7 years ago

1.2.27

7 years ago

1.2.26

7 years ago

1.2.25

7 years ago

1.2.24

7 years ago

1.2.23

7 years ago

1.2.22

7 years ago

1.2.21

7 years ago

1.2.19

7 years ago

1.2.18

7 years ago

1.2.17

7 years ago

1.2.15

7 years ago

1.2.13

7 years ago

1.2.11

7 years ago

1.2.9

7 years ago

1.2.7

7 years ago

1.2.5

7 years ago

1.2.3

7 years ago

1.2.1

7 years ago

1.1.0

7 years ago

1.0.35

7 years ago

1.0.34

7 years ago

1.0.33

7 years ago

1.0.32

7 years ago

1.0.31

7 years ago

1.0.30

7 years ago

1.0.29

7 years ago

1.0.28

7 years ago

1.0.27

7 years ago

1.0.26

7 years ago

1.0.25

7 years ago

1.0.24

7 years ago

1.0.23

7 years ago

1.0.22

7 years ago

1.0.21

7 years ago

1.0.20

7 years ago

1.0.19

7 years ago

1.0.18

7 years ago

1.0.17

7 years ago

1.0.16

7 years ago

1.0.15

7 years ago

1.0.14

7 years ago

1.0.13

7 years ago

1.0.12

7 years ago

1.0.11

7 years ago

1.0.10

7 years ago

1.0.9

7 years ago

1.0.7

7 years ago

1.0.6

7 years ago

1.0.5

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago

0.7.297

7 years ago

0.7.296

7 years ago

0.7.294

7 years ago

0.7.293

7 years ago

0.7.292

7 years ago

0.7.291

7 years ago

0.7.290

7 years ago

0.7.289

7 years ago

0.7.288

7 years ago

0.7.287

7 years ago

0.7.286

7 years ago

0.7.285

7 years ago

0.7.284

7 years ago

0.7.283

7 years ago

0.7.282

7 years ago

0.7.281

7 years ago

0.7.280

7 years ago

0.7.279

7 years ago

0.7.278

7 years ago

0.7.277

7 years ago

0.7.276

7 years ago

0.7.275

7 years ago

0.7.274

7 years ago

0.7.273

7 years ago

0.7.272

7 years ago

0.7.271

7 years ago

0.7.270

7 years ago

0.7.269

7 years ago

0.7.268

7 years ago

0.7.267

7 years ago

0.7.266

7 years ago

0.7.265

7 years ago

0.7.264

7 years ago

0.7.263

7 years ago

0.7.262

7 years ago

0.7.261

7 years ago

0.7.260

7 years ago

0.7.259

7 years ago

0.7.258

7 years ago

0.7.257

7 years ago

0.7.256

7 years ago

0.7.255

7 years ago

0.7.254

7 years ago

0.7.253

7 years ago

0.7.252

7 years ago

0.7.251

7 years ago

0.7.250

7 years ago

0.7.249

7 years ago

0.7.248

7 years ago

0.7.247

7 years ago

0.7.246

7 years ago

0.7.245

7 years ago

0.7.244

7 years ago

0.7.243

7 years ago

0.7.242

7 years ago

0.7.241

7 years ago

0.7.240

7 years ago

0.7.239

7 years ago

0.7.238

7 years ago

0.7.237

7 years ago

0.7.236

7 years ago

0.7.235

7 years ago

0.7.234

7 years ago

0.7.233

7 years ago

0.7.232

7 years ago

0.7.231

7 years ago

0.7.230

7 years ago

0.7.229

7 years ago

0.7.228

7 years ago

0.7.227

7 years ago

0.7.226

7 years ago

0.7.225

7 years ago

0.7.224

7 years ago

0.7.223

7 years ago

0.7.222

7 years ago

0.7.221

7 years ago

0.7.220

7 years ago

0.7.219

7 years ago

0.7.218

7 years ago

0.7.217

7 years ago

0.7.216

7 years ago

0.7.215

7 years ago

0.7.214

7 years ago

0.7.213

7 years ago

0.7.212

7 years ago

0.7.211

7 years ago

0.7.210

7 years ago

0.7.209

7 years ago

0.7.208

7 years ago

0.7.207

7 years ago

0.7.206

7 years ago

0.7.205

7 years ago

0.7.204

7 years ago

0.7.203

7 years ago

0.7.202

7 years ago

0.7.201

7 years ago

0.7.200

7 years ago

0.7.199

7 years ago

0.7.198

7 years ago

0.7.197

7 years ago

0.7.196

7 years ago

0.7.195

7 years ago

0.7.194

7 years ago

0.7.193

7 years ago

0.7.192

7 years ago

0.7.191

7 years ago

0.7.190

7 years ago

0.7.189

7 years ago

0.7.188

7 years ago

0.7.187

7 years ago

0.7.186

7 years ago

0.7.185

7 years ago

0.7.184

7 years ago

0.7.183

7 years ago

0.7.182

7 years ago

0.7.181

7 years ago

0.7.180

7 years ago

0.7.179

7 years ago

0.7.178

7 years ago

0.7.177

7 years ago

0.7.176

7 years ago

0.7.175

7 years ago

0.7.174

7 years ago

0.7.173

7 years ago

0.7.172

7 years ago

0.7.171

7 years ago

0.7.170

7 years ago

0.7.169

7 years ago

0.7.168

7 years ago

0.7.167

7 years ago

0.7.166

7 years ago

0.7.165

7 years ago

0.7.164

7 years ago

0.7.163

7 years ago

0.7.162

7 years ago

0.7.161

7 years ago

0.7.160

7 years ago

0.7.159

7 years ago

0.7.158

7 years ago

0.7.157

7 years ago

0.7.156

7 years ago

0.7.155

7 years ago

0.7.154

7 years ago

0.7.153

7 years ago

0.7.152

7 years ago

0.7.151

7 years ago

0.7.150

7 years ago

0.7.149

7 years ago

0.7.147

7 years ago

0.7.146

7 years ago

0.7.145

7 years ago

0.7.144

7 years ago

0.7.143

7 years ago

0.7.142

7 years ago

0.7.141

7 years ago

0.7.140

7 years ago

0.7.139

7 years ago

0.7.138

7 years ago

0.7.137

7 years ago

0.7.136

7 years ago

0.7.135

7 years ago

0.7.134

7 years ago

0.7.133

7 years ago

0.7.132

7 years ago

0.7.131

7 years ago

0.7.130

7 years ago

0.7.129

7 years ago

0.7.128

7 years ago

0.7.127

7 years ago

0.7.126

7 years ago

0.7.125

7 years ago

0.7.124

7 years ago

0.7.123

7 years ago

0.7.122

7 years ago

0.7.121

7 years ago

0.7.120

7 years ago

0.7.119

7 years ago

0.7.118

7 years ago

0.7.117

7 years ago

0.7.116

7 years ago

0.7.115

7 years ago

0.7.114

7 years ago

0.7.113

7 years ago

0.7.112

7 years ago

0.7.111

7 years ago

0.7.110

7 years ago

0.7.109

7 years ago

0.7.108

7 years ago

0.7.107

7 years ago

0.7.106

7 years ago

0.7.105

7 years ago

0.7.104

7 years ago

0.7.103

7 years ago

0.7.102

7 years ago

0.7.101

7 years ago

0.7.100

7 years ago

0.7.97

7 years ago

0.7.96

7 years ago

0.7.95

7 years ago

0.7.94

7 years ago

0.7.93

7 years ago

0.7.92

7 years ago

0.7.91

7 years ago

0.7.85

7 years ago

0.7.84

7 years ago

0.7.83

7 years ago

0.7.82

7 years ago

0.7.81

7 years ago

0.7.72

7 years ago

0.7.71

7 years ago

0.7.69

7 years ago

0.7.68

7 years ago

0.7.67

7 years ago

0.7.66

7 years ago

0.7.65

7 years ago

0.7.64

7 years ago

0.7.63

7 years ago

0.7.62

7 years ago

0.7.61

7 years ago

0.7.52

7 years ago

0.7.51

7 years ago

0.7.44

7 years ago

0.7.43

7 years ago

0.7.42

7 years ago

0.7.41

7 years ago

0.7.33

7 years ago

0.7.32

7 years ago

0.7.31

7 years ago

0.7.29

7 years ago

0.7.28

7 years ago

0.7.27

7 years ago

0.7.26

7 years ago

0.7.25

7 years ago

0.7.22

7 years ago

0.7.21

7 years ago

0.7.20

7 years ago

0.7.19

7 years ago

0.7.18

7 years ago

0.7.17

7 years ago

0.7.16

7 years ago

0.7.15

7 years ago

0.7.14

7 years ago

0.7.13

7 years ago

0.7.12

7 years ago

0.7.9

7 years ago

0.7.8

7 years ago

0.7.7

7 years ago

0.7.6

7 years ago