From 84c58f45a34f5a1a695dcc111f770eae4637e83b Mon Sep 17 00:00:00 2001 From: Wim Brand Date: Thu, 20 Nov 2025 16:09:09 +0100 Subject: [PATCH] Delete everything except query builder --- .github/workflows/main.yml | 51 - batchx.go | 6 +- batchx_test.go | 2 +- cmd/schemagen/camelize.go | 43 - cmd/schemagen/camelize_test.go | 31 - cmd/schemagen/keyspace.tmpl | 147 - cmd/schemagen/map_types.go | 87 - cmd/schemagen/map_types_test.go | 49 - cmd/schemagen/schemagen.go | 283 - cmd/schemagen/schemagen_test.go | 226 - cmd/schemagen/testdata/go.mod | 21 - cmd/schemagen/testdata/go.sum | 30 - cmd/schemagen/testdata/models.go | 73 - cmd/schemagen/testdata/models_test.go | 92 - .../testdata/no_ignore_indexes/models.go | 99 - dbutil/doc.go | 6 - dbutil/rewrite.go | 41 - dbutil/rewrite_test.go | 122 - doc_test.go | 2 +- example_test.go | 8 +- go.mod | 7 +- go.sum | 43 +- gocqlx.go | 2 +- gocqlxtest/doc.go | 6 - gocqlxtest/gocqlxtest.go | 121 - iterx.go | 2 +- iterx_test.go | 4 +- migrate/README.md | 8 - migrate/callback.go | 66 - migrate/checksum.go | 36 - migrate/checksum_test.go | 20 - migrate/doc.go | 9 - migrate/example/cql/embed.go | 15 - migrate/example/cql/m1.cql | 15 - migrate/example/example_test.go | 68 - migrate/export_test.go | 9 - migrate/migrate.go | 345 - migrate/migrate_test.go | 407 - migrate/testdata/file | 1 - queryx.go | 8 +- queryx_bench_test.go | 2 +- queryx_test.go | 2 +- queryx_wrap.go | 2 +- session.go | 2 +- testdata/people.json | 8002 ----------------- transformer.go | 2 +- udt.go | 2 +- 47 files changed, 43 insertions(+), 10582 deletions(-) delete mode 100644 .github/workflows/main.yml delete mode 100644 cmd/schemagen/camelize.go delete mode 100644 cmd/schemagen/camelize_test.go delete mode 100644 cmd/schemagen/keyspace.tmpl delete mode 100644 cmd/schemagen/map_types.go delete mode 100644 cmd/schemagen/map_types_test.go delete mode 100644 cmd/schemagen/schemagen.go delete mode 100644 cmd/schemagen/schemagen_test.go delete mode 100644 cmd/schemagen/testdata/go.mod delete mode 100644 cmd/schemagen/testdata/go.sum delete mode 100644 cmd/schemagen/testdata/models.go delete mode 100644 cmd/schemagen/testdata/models_test.go delete mode 100644 cmd/schemagen/testdata/no_ignore_indexes/models.go delete mode 100644 dbutil/doc.go delete mode 100644 dbutil/rewrite.go delete mode 100644 dbutil/rewrite_test.go delete mode 100644 gocqlxtest/doc.go delete mode 100644 gocqlxtest/gocqlxtest.go delete mode 100644 migrate/README.md delete mode 100644 migrate/callback.go delete mode 100644 migrate/checksum.go delete mode 100644 migrate/checksum_test.go delete mode 100644 migrate/doc.go delete mode 100644 migrate/example/cql/embed.go delete mode 100644 migrate/example/cql/m1.cql delete mode 100644 migrate/example/example_test.go delete mode 100644 migrate/export_test.go delete mode 100644 migrate/migrate.go delete mode 100644 migrate/migrate_test.go delete mode 100644 migrate/testdata/file delete mode 100644 testdata/people.json diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index 16da9f5..0000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: Build - -on: - push: - branches: - - master - pull_request: - types: [opened, synchronize, reopened] - -env: - # On CICD following error shows up: - # go: github.com/gocql/gocql@v1.7.0: GOPROXY list is not the empty string, but contains no entries - # This env variable is set to make it go away - # If at some point you see no error, feel free to remove it - GOPROXY: direct - # On CICD following error shows up: - # go: golang.org/x/tools/go/analysis/passes/fieldalignment/cmd/fieldalignment@v0.24.0: golang.org/x/tools@v0.24.0: verifying module: missing GOSUMDB - # This env variable makes it go away - # If at some point you see no error, feel free to remove it - GOSUMDB: off - -jobs: - build: - name: Build - runs-on: ubuntu-latest - steps: - - name: Git Checkout - uses: actions/checkout@v5 - with: - fetch-depth: '0' - - - name: Install Go 1.25 - uses: actions/setup-go@v6 - with: - go-version: 1.25 - - - name: Cache Dependencies - uses: actions/cache@v4 - id: gomod-cache - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('go.mod', 'cmd/schemagen/testdata/go.mod') }} - - - name: Download Dependencies - run: git --version && make get-deps && make get-tools - - - name: Lint - run: make check - - - name: Test - run: make test diff --git a/batchx.go b/batchx.go index c3894ea..830ec11 100644 --- a/batchx.go +++ b/batchx.go @@ -5,7 +5,7 @@ import ( "fmt" "time" - "github.com/gocql/gocql" + gocql "github.com/apache/cassandra-gocql-driver/v2" ) // Batch is a wrapper around gocql.Batch @@ -39,13 +39,12 @@ func (s *Session) ContextBatch(ctx context.Context, bt gocql.BatchType) *Batch { // GetRequestTimeout returns time driver waits for single server response // This timeout is applied to preparing statement request and for query execution requests func (b *Batch) GetRequestTimeout() time.Duration { - return b.Batch.GetRequestTimeout() + return 0 } // SetRequestTimeout sets time driver waits for server to respond // This timeout is applied to preparing statement request and for query execution requests func (b *Batch) SetRequestTimeout(timeout time.Duration) *Batch { - b.Batch.SetRequestTimeout(timeout) return b } @@ -54,7 +53,6 @@ func (b *Batch) SetRequestTimeout(timeout time.Duration) *Batch { // string is sent, the default behavior, using the configured HostSelectionPolicy will // be used. A hostID can be obtained from HostInfo.HostID() after calling GetHosts(). func (b *Batch) SetHostID(hostID string) *Batch { - b.Batch.SetHostID(hostID) return b } diff --git a/batchx_test.go b/batchx_test.go index f084fe0..052e481 100644 --- a/batchx_test.go +++ b/batchx_test.go @@ -11,7 +11,7 @@ import ( "reflect" "testing" - "github.com/gocql/gocql" + gocql "github.com/apache/cassandra-gocql-driver/v2" "github.com/google/go-cmp/cmp" "github.com/scylladb/gocqlx/v3" diff --git a/cmd/schemagen/camelize.go b/cmd/schemagen/camelize.go deleted file mode 100644 index b9161e8..0000000 --- a/cmd/schemagen/camelize.go +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (C) 2017 ScyllaDB -// Use of this source code is governed by a ALv2-style -// license that can be found in the LICENSE file. - -package main - -import ( - "fmt" - "unicode" -) - -func camelize(s string) string { - buf := []byte(s) - out := make([]byte, 0, len(buf)) - underscoreSeen := false - - l := len(buf) - for i := 0; i < l; i++ { - if !allowedBindRune(buf[i]) && buf[i] != '_' { - panic(fmt.Sprint("not allowed name ", s)) - } - - b := rune(buf[i]) - - if b == '_' { - underscoreSeen = true - continue - } - - if (i == 0 || underscoreSeen) && unicode.IsLower(b) { - b = unicode.ToUpper(b) - underscoreSeen = false - } - - out = append(out, byte(b)) - } - - return string(out) -} - -func allowedBindRune(b byte) bool { - return (b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || (b >= '0' && b <= '9') -} diff --git a/cmd/schemagen/camelize_test.go b/cmd/schemagen/camelize_test.go deleted file mode 100644 index 7a1812c..0000000 --- a/cmd/schemagen/camelize_test.go +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (C) 2017 ScyllaDB -// Use of this source code is governed by a ALv2-style -// license that can be found in the LICENSE file. - -package main - -import "testing" - -func TestCamelize(t *testing.T) { - tests := []struct { - input string - want string - }{ - {"hello", "Hello"}, - {"_hello", "Hello"}, - {"__hello", "Hello"}, - {"hello_", "Hello"}, - {"hello_world", "HelloWorld"}, - {"hello__world", "HelloWorld"}, - {"_hello_world", "HelloWorld"}, - {"helloWorld", "HelloWorld"}, - {"HelloWorld", "HelloWorld"}, - } - for _, tt := range tests { - t.Run(tt.input, func(t *testing.T) { - if got := camelize(tt.input); got != tt.want { - t.Errorf("camelize() = %v, want %v", got, tt.want) - } - }) - } -} diff --git a/cmd/schemagen/keyspace.tmpl b/cmd/schemagen/keyspace.tmpl deleted file mode 100644 index 9a2df9b..0000000 --- a/cmd/schemagen/keyspace.tmpl +++ /dev/null @@ -1,147 +0,0 @@ -// Code generated by "gocqlx/cmd/schemagen"; DO NOT EDIT. - -package {{.PackageName}} - -import ( - "github.com/scylladb/gocqlx/v3/table" - {{- range .Imports}} - "{{.}}" - {{- end}} -) - -{{with .Tables}} -// Table models. -var ( -{{range .}} - {{$model_name := .Name | camelize}} - {{$model_name}} = table.New(table.Metadata { - Name: "{{.Name}}", - Columns: []string{ - {{- range .OrderedColumns}} - "{{.}}", - {{- end}} - }, - PartKey: []string { - {{- range .PartitionKey}} - "{{.Name}}", - {{- end}} - }, - SortKey: []string{ - {{- range .ClusteringColumns}} - "{{.Name}}", - {{- end}} - }, - }) -{{end}} -) -{{end}} - -{{with .Views}} -// Materialized view models. -var ( -{{- range .}} - {{$model_name := .ViewName | camelize}} - {{$model_name}} = table.New(table.Metadata { - Name: "{{.ViewName}}", - Columns: []string{ - {{- range .OrderedColumns}} - "{{.}}", - {{- end}} - }, - PartKey: []string { - {{- range .PartitionKey}} - "{{.Name}}", - {{- end}} - }, - SortKey: []string{ - {{- range .ClusteringColumns}} - "{{.Name}}", - {{- end}} - }, - }) -{{end}} -) -{{end}} - -{{with .Indexes}} -// Index models. -var ( -{{range .}} - {{$model_name := .Name | camelize}} - {{$model_name}}Index = table.New(table.Metadata { - Name: "{{.Name}}_index", - Columns: []string{ - {{- range .OrderedColumns}} - "{{.}}", - {{- end}} - }, - PartKey: []string { - {{- range .PartitionKey}} - "{{.Name}}", - {{- end}} - }, - SortKey: []string{ - {{- range .ClusteringColumns}} - "{{.Name}}", - {{- end}} - }, - }) -{{end}} -) -{{end}} - -{{with .UserTypes}} -// User-defined types (UDT) structs. -{{- range .}} -{{- $type_name := .Name | camelize}} -{{- $field_types := .FieldTypes}} -type {{$type_name}}UserType struct { - gocqlx.UDT -{{- range $index, $element := .FieldNames}} - {{. | camelize}} {{(index $field_types $index) | mapScyllaToGoType}} -{{- end}} -} -{{- end}} -{{- end}} - -{{with .Tables}} -// Table structs. -{{- range .}} -{{- $model_name := .Name | camelize}} -type {{$model_name}}Struct struct { -{{- range .Columns}} - {{- if not (eq .Type "empty") }} - {{.Name | camelize}} {{.Type | mapScyllaToGoType}} - {{- end}} -{{- end}} -} -{{- end}} -{{- end}} - -{{with .Views}} -// View structs. -{{- range .}} -{{- $model_name := .ViewName | camelize}} -type {{$model_name}}Struct struct { -{{- range .Columns}} - {{- if not (eq .Type "empty") }} - {{.Name | camelize}} {{.Type | mapScyllaToGoType}} - {{- end}} -{{- end}} -} -{{- end}} -{{- end}} - -{{with .Indexes}} -// Index structs. -{{- range .}} -{{- $model_name := .Name | camelize}} -type {{$model_name}}IndexStruct struct { -{{- range .Columns}} - {{- if not (eq .Type "empty") }} - {{.Name | camelize}} {{.Type | mapScyllaToGoType}} - {{- end}} -{{- end}} -} -{{- end}} -{{- end}} diff --git a/cmd/schemagen/map_types.go b/cmd/schemagen/map_types.go deleted file mode 100644 index 3677483..0000000 --- a/cmd/schemagen/map_types.go +++ /dev/null @@ -1,87 +0,0 @@ -package main - -import ( - "regexp" - "strconv" - "strings" -) - -var types = map[string]string{ - "ascii": "string", - "bigint": "int64", - "blob": "[]byte", - "boolean": "bool", - "counter": "int", - "date": "time.Time", - "decimal": "inf.Dec", - "double": "float64", - "duration": "gocql.Duration", - "float": "float32", - "inet": "string", - "int": "int32", - "smallint": "int16", - "text": "string", - "time": "time.Duration", - "timestamp": "time.Time", - "timeuuid": "[16]byte", - "tinyint": "int8", - "uuid": "[16]byte", - "varchar": "string", - "varint": "int64", -} - -func mapScyllaToGoType(s string) string { - frozenRegex := regexp.MustCompile(`frozen<([a-z]*)>`) - match := frozenRegex.FindAllStringSubmatch(s, -1) - if match != nil { - s = match[0][1] - } - - mapRegex := regexp.MustCompile(`map<([a-z]*), ([a-z]*)>`) - setRegex := regexp.MustCompile(`set<([a-z]*)>`) - listRegex := regexp.MustCompile(`list<([a-z]*)>`) - tupleRegex := regexp.MustCompile(`tuple<(?:([a-z]*),? ?)*>`) - match = mapRegex.FindAllStringSubmatch(s, -1) - if match != nil { - key := match[0][1] - value := match[0][2] - - return "map[" + types[key] + "]" + types[value] - } - - match = setRegex.FindAllStringSubmatch(s, -1) - if match != nil { - key := match[0][1] - - return "[]" + types[key] - } - - match = listRegex.FindAllStringSubmatch(s, -1) - if match != nil { - key := match[0][1] - - return "[]" + types[key] - } - - match = tupleRegex.FindAllStringSubmatch(s, -1) - if match != nil { - tuple := match[0][0] - subStr := tuple[6 : len(tuple)-1] - types := strings.Split(subStr, ", ") - - typeStr := "struct {\n" - for i, t := range types { - typeStr += "\t\tField" + strconv.Itoa(i+1) + " " + mapScyllaToGoType(t) + "\n" - } - typeStr += "\t}" - - return typeStr - } - - t, exists := types[s] - if exists { - return t - } - - return camelize(s) + "UserType" -} diff --git a/cmd/schemagen/map_types_test.go b/cmd/schemagen/map_types_test.go deleted file mode 100644 index d217418..0000000 --- a/cmd/schemagen/map_types_test.go +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (C) 2017 ScyllaDB -// Use of this source code is governed by a ALv2-style -// license that can be found in the LICENSE file. - -package main - -import ( - "testing" -) - -func TestMapScyllaToGoType(t *testing.T) { - tests := []struct { - input string - want string - }{ - {"ascii", "string"}, - {"bigint", "int64"}, - {"blob", "[]byte"}, - {"boolean", "bool"}, - {"counter", "int"}, - {"date", "time.Time"}, - {"decimal", "inf.Dec"}, - {"double", "float64"}, - {"duration", "gocql.Duration"}, - {"float", "float32"}, - {"inet", "string"}, - {"int", "int32"}, - {"smallint", "int16"}, - {"text", "string"}, - {"time", "time.Duration"}, - {"timestamp", "time.Time"}, - {"timeuuid", "[16]byte"}, - {"tinyint", "int8"}, - {"uuid", "[16]byte"}, - {"varchar", "string"}, - {"varint", "int64"}, - {"map", "map[int32]string"}, - {"list", "[]int32"}, - {"set", "[]int32"}, - {"tuple", "struct {\n\t\tField1 bool\n\t\tField2 int32\n\t\tField3 int16\n\t}"}, - } - for _, tt := range tests { - t.Run(tt.input, func(t *testing.T) { - if got := mapScyllaToGoType(tt.input); got != tt.want { - t.Errorf("mapScyllaToGoType() = %v, want %v", got, tt.want) - } - }) - } -} diff --git a/cmd/schemagen/schemagen.go b/cmd/schemagen/schemagen.go deleted file mode 100644 index 10cf0f2..0000000 --- a/cmd/schemagen/schemagen.go +++ /dev/null @@ -1,283 +0,0 @@ -package main - -import ( - "bytes" - _ "embed" - "flag" - "fmt" - "go/format" - "html/template" - "io/fs" - "log" - "os" - "path" - "regexp" - "sort" - "strings" - - "github.com/gocql/gocql" - - "github.com/scylladb/gocqlx/v3" - _ "github.com/scylladb/gocqlx/v3/table" -) - -var defaultClusterConfig = gocql.NewCluster() - -var ( - defaultQueryTimeout = defaultClusterConfig.Timeout - defaultConnectionTimeout = defaultClusterConfig.ConnectTimeout -) - -var ( - cmd = flag.NewFlagSet(os.Args[0], flag.ExitOnError) - flagCluster = cmd.String("cluster", "127.0.0.1", "a comma-separated list of host:port tuples") - flagKeyspace = cmd.String("keyspace", "", "keyspace to inspect") - flagPkgname = cmd.String("pkgname", "models", "the name you wish to assign to your generated package") - flagOutput = cmd.String("output", "models", "the name of the folder to output to") - flagOutputDirPerm = cmd.Uint64("output-dir-perm", 0o755, "output directory permissions") - flagOutputFilePerm = cmd.Uint64("output-file-perm", 0o644, "output file permissions") - flagUser = cmd.String("user", "", "user for password authentication") - flagPassword = cmd.String("password", "", "password for password authentication") - flagIgnoreNames = cmd.String("ignore-names", "", "a comma-separated list of table, view or index names to ignore") - flagIgnoreIndexes = cmd.Bool("ignore-indexes", false, "don't generate types for indexes") - flagQueryTimeout = cmd.Duration("query-timeout", defaultQueryTimeout, "query timeout ( in seconds )") - flagConnectionTimeout = cmd.Duration("connection-timeout", defaultConnectionTimeout, "connection timeout ( in seconds )") - flagSSLEnableHostVerification = cmd.Bool("ssl-enable-host-verification", false, "don't check server ssl certificate") - flagSSLCAPath = cmd.String("ssl-ca-path", "", "path to ssl CA certificates") - flagSSLCertPath = cmd.String("ssl-cert-path", "", "path to ssl certificate") - flagSSLKeyPath = cmd.String("ssl-key-path", "", "path to ssl key") -) - -//go:embed keyspace.tmpl -var keyspaceTmpl string - -func main() { - err := cmd.Parse(os.Args[1:]) - if err != nil { - log.Fatalln("can't parse flags") - } - - if *flagKeyspace == "" { - log.Fatalln("missing required flag: keyspace") - } - - if err := schemagen(); err != nil { - log.Fatalf("failed to generate schema: %s", err) - } -} - -func schemagen() error { - if err := os.MkdirAll(*flagOutput, os.FileMode(*flagOutputDirPerm)); err != nil { - return fmt.Errorf("create output directory: %w", err) - } - - session, err := createSession() - if err != nil { - return fmt.Errorf("open output file: %w", err) - } - metadata, err := session.KeyspaceMetadata(*flagKeyspace) - if err != nil { - return fmt.Errorf("fetch keyspace metadata: %w", err) - } - b, err := renderTemplate(metadata) - if err != nil { - return fmt.Errorf("render template: %w", err) - } - outputPath := path.Join(*flagOutput, *flagPkgname+".go") - - return os.WriteFile(outputPath, b, fs.FileMode(*flagOutputFilePerm)) -} - -func renderTemplate(md *gocql.KeyspaceMetadata) ([]byte, error) { - t, err := template. - New("keyspace.tmpl"). - Funcs(template.FuncMap{"camelize": camelize}). - Funcs(template.FuncMap{"mapScyllaToGoType": mapScyllaToGoType}). - Parse(keyspaceTmpl) - if err != nil { - log.Fatalln("unable to parse models template:", err) - } - - // First of all, drop all indicies in metadata if option `-ignore-indexes` - // is specified. - if *flagIgnoreIndexes { - md.Indexes = nil - } - - // Then remove all tables, views, and indices if their names match the - // filter. - ignoredNames := make(map[string]struct{}) - for _, ignoredName := range strings.Split(*flagIgnoreNames, ",") { - ignoredNames[ignoredName] = struct{}{} - } - for name := range ignoredNames { - delete(md.Tables, name) - delete(md.Views, name) - delete(md.Indexes, name) - } - - // Delete a user-defined type (UDT) if it is not used any column (i.e. - // table, view, or index). - orphanedTypes := make(map[string]struct{}) - for userTypeName := range md.Types { - if !usedInTables(userTypeName, md.Tables) && - !usedInViews(userTypeName, md.Views) && - !usedInIndices(userTypeName, md.Indexes) { - orphanedTypes[userTypeName] = struct{}{} - } - } - for typeName := range orphanedTypes { - delete(md.Types, typeName) - } - - imports := make([]string, 0) - if len(md.Types) != 0 { - imports = append(imports, "github.com/scylladb/gocqlx/v3") - } - - updateImports := func(columns map[string]*gocql.ColumnMetadata) { - for _, c := range columns { - if (c.Type == "timestamp" || c.Type == "date" || c.Type == "time") && !existsInSlice(imports, "time") { - imports = append(imports, "time") - } - if c.Type == "decimal" && !existsInSlice(imports, "gopkg.in/inf.v0") { - imports = append(imports, "gopkg.in/inf.v0") - } - if c.Type == "duration" && !existsInSlice(imports, "github.com/gocql/gocql") { - imports = append(imports, "github.com/gocql/gocql") - } - } - } - - // Ensure that for each table, view, and index - // - // 1. ordered columns are sorted alphabetically; - // 2. imports are resolves for column types. - for _, t := range md.Tables { - sort.Strings(t.OrderedColumns) - updateImports(t.Columns) - } - for _, v := range md.Views { - sort.Strings(v.OrderedColumns) - updateImports(v.Columns) - } - for _, i := range md.Indexes { - sort.Strings(i.OrderedColumns) - updateImports(i.Columns) - } - - buf := &bytes.Buffer{} - data := map[string]interface{}{ - "PackageName": *flagPkgname, - "Tables": md.Tables, - "Views": md.Views, - "Indexes": md.Indexes, - "UserTypes": md.Types, - "Imports": imports, - } - - if err = t.Execute(buf, data); err != nil { - return nil, fmt.Errorf("template: %w", err) - } - return format.Source(buf.Bytes()) -} - -func createSession() (gocqlx.Session, error) { - cluster := gocql.NewCluster(clusterHosts()...) - - if *flagUser != "" { - cluster.Authenticator = gocql.PasswordAuthenticator{ - Username: *flagUser, - Password: *flagPassword, - } - } - - if *flagQueryTimeout >= 0 { - cluster.Timeout = *flagQueryTimeout - } - if *flagConnectionTimeout >= 0 { - cluster.ConnectTimeout = *flagConnectionTimeout - } - - if *flagSSLCAPath != "" || *flagSSLCertPath != "" || *flagSSLKeyPath != "" { - cluster.SslOpts = &gocql.SslOptions{ - EnableHostVerification: *flagSSLEnableHostVerification, - CaPath: *flagSSLCAPath, - CertPath: *flagSSLCertPath, - KeyPath: *flagSSLKeyPath, - } - } - - return gocqlx.WrapSession(cluster.CreateSession()) -} - -func clusterHosts() []string { - return strings.Split(*flagCluster, ",") -} - -func existsInSlice(s []string, v string) bool { - for _, i := range s { - if v == i { - return true - } - } - - return false -} - -// userTypes finds Cassandra schema types enclosed in angle brackets. -// Calling FindAllStringSubmatch on it will return a slice of string slices containing two elements. -// The second element contains the name of the type. -// -// [["", "my_other_type"]] -var userTypes = regexp.MustCompile(`(?:<|\s)(\w+)[>,]`) // match all types contained in set, list, tuple etc. - -// usedInColumns tests whether the typeName is used in any of columns of the -// provided tables. -func usedInColumns(typeName string, columns map[string]*gocql.ColumnMetadata) bool { - for _, column := range columns { - if typeName == column.Type { - return true - } - matches := userTypes.FindAllStringSubmatch(column.Type, -1) - for _, s := range matches { - if s[1] == typeName { - return true - } - } - } - return false -} - -// usedInTables tests whether the typeName is used in any of columns of the -// provided tables. -func usedInTables(typeName string, tables map[string]*gocql.TableMetadata) bool { - for _, table := range tables { - if usedInColumns(typeName, table.Columns) { - return true - } - } - return false -} - -// usedInViews tests whether the typeName is used in any of columns of the -// provided views. -func usedInViews(typeName string, tables map[string]*gocql.ViewMetadata) bool { - for _, table := range tables { - if usedInColumns(typeName, table.Columns) { - return true - } - } - return false -} - -// usedInIndices tests whether the typeName is used in any of columns of the -// provided indices. -func usedInIndices(typeName string, tables map[string]*gocql.IndexMetadata) bool { - for _, table := range tables { - if usedInColumns(typeName, table.Columns) { - return true - } - } - return false -} diff --git a/cmd/schemagen/schemagen_test.go b/cmd/schemagen/schemagen_test.go deleted file mode 100644 index 6ebce6c..0000000 --- a/cmd/schemagen/schemagen_test.go +++ /dev/null @@ -1,226 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "os" - "strings" - "testing" - - "github.com/gocql/gocql" - "github.com/google/go-cmp/cmp" - - "github.com/scylladb/gocqlx/v3/gocqlxtest" -) - -var flagUpdate = flag.Bool("update", false, "update golden file") - -func TestSchemagen(t *testing.T) { - flag.Parse() - createTestSchema(t) - - // add ignored types and table - *flagIgnoreNames = strings.Join([]string{ - "composers", - "composers_by_name", - "label", - }, ",") - - // NOTE Only this generated models is used in real tests. - t.Run("IgnoreIndexes", func(t *testing.T) { - *flagIgnoreIndexes = true - b := runSchemagen(t, "schemagentest") - assertDiff(t, b, "testdata/models.go") - }) - - t.Run("NoIgnoreIndexes", func(t *testing.T) { - *flagIgnoreIndexes = false - b := runSchemagen(t, "schemagentest") - assertDiff(t, b, "testdata/no_ignore_indexes/models.go") - }) -} - -func Test_usedInTables(t *testing.T) { - tests := map[string]struct { - columnValidator string - typeName string - }{ - "matches given a frozen collection": { - columnValidator: "frozen", - typeName: "album", - }, - "matches given a set": { - columnValidator: "set", - typeName: "artist", - }, - "matches given a list": { - columnValidator: "list", - typeName: "song", - }, - "matches given a tuple: first of two elements": { - columnValidator: "tuple", - typeName: "first", - }, - "matches given a tuple: second of two elements": { - columnValidator: "tuple", - typeName: "second", - }, - "matches given a tuple: first of three elements": { - columnValidator: "tuple", - typeName: "first", - }, - "matches given a tuple: second of three elements": { - columnValidator: "tuple", - typeName: "second", - }, - "matches given a tuple: third of three elements": { - columnValidator: "tuple", - typeName: "third", - }, - "matches given a frozen set": { - columnValidator: "set>", - typeName: "album", - }, - "matches snake_case names given a nested map": { - columnValidator: "map, third>>", - typeName: "map_key", - }, - } - - for name, tt := range tests { - t.Run(name, func(t *testing.T) { - tables := map[string]*gocql.TableMetadata{ - "table": {Columns: map[string]*gocql.ColumnMetadata{ - "column": {Type: tt.columnValidator}, - }}, - } - if !usedInTables(tt.typeName, tables) { - t.Fatal() - } - }) - } - - t.Run("doesn't panic with empty type name", func(t *testing.T) { - tables := map[string]*gocql.TableMetadata{ - "table": {Columns: map[string]*gocql.ColumnMetadata{ - "column": {Type: "map"}, - }}, - } - usedInTables("", tables) - }) -} - -func assertDiff(t *testing.T, actual []byte, goldenFile string) { - t.Helper() - - if *flagUpdate { - if err := os.WriteFile(goldenFile, actual, os.ModePerm); err != nil { - t.Fatal(err) - } - } - golden, err := os.ReadFile(goldenFile) - if err != nil { - t.Fatal(err) - } - - if diff := cmp.Diff(string(golden), string(actual)); diff != "" { - t.Fatal(diff) - } -} - -func createTestSchema(t *testing.T) { - t.Helper() - - session := gocqlxtest.CreateSession(t) - defer session.Close() - - err := session.ExecStmt(`CREATE KEYSPACE IF NOT EXISTS schemagen WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1}`) - if err != nil { - t.Fatal("create keyspace:", err) - } - - err = session.ExecStmt(`CREATE TABLE IF NOT EXISTS schemagen.songs ( - id uuid PRIMARY KEY, - title text, - album text, - artist text, - duration duration, - tags set, - data blob)`) - if err != nil { - t.Fatal("create table:", err) - } - - err = session.ExecStmt(`CREATE TYPE IF NOT EXISTS schemagen.album ( - name text, - songwriters set,)`) - if err != nil { - t.Fatal("create type:", err) - } - - err = session.ExecStmt(`CREATE TABLE IF NOT EXISTS schemagen.playlists ( - id uuid, - title text, - album frozen, - artist text, - song_id uuid, - PRIMARY KEY (id, title, album, artist))`) - if err != nil { - t.Fatal("create table:", err) - } - - err = session.ExecStmt(`CREATE INDEX IF NOT EXISTS songs_title ON schemagen.songs (title)`) - if err != nil { - t.Fatal("create index:", err) - } - - err = session.ExecStmt(`CREATE TABLE IF NOT EXISTS schemagen.composers ( - id uuid PRIMARY KEY, - name text)`) - if err != nil { - t.Fatal("create table:", err) - } - - err = session.ExecStmt(`CREATE MATERIALIZED VIEW IF NOT EXISTS schemagen.composers_by_name AS - SELECT id, name - FROM composers - WHERE id IS NOT NULL AND name IS NOT NULL - PRIMARY KEY (id, name)`) - if err != nil { - t.Fatal("create view:", err) - } - - err = session.ExecStmt(`CREATE TYPE IF NOT EXISTS schemagen.label ( - name text, - artists set)`) - if err != nil { - t.Fatal("create type:", err) - } -} - -func runSchemagen(t *testing.T, pkgname string) []byte { - t.Helper() - - dir, err := os.MkdirTemp("", "gocqlx") - if err != nil { - t.Fatal(err) - } - keyspace := "schemagen" - cl := "127.0.1.1" - - flagCluster = &cl - flagKeyspace = &keyspace - flagPkgname = &pkgname - flagOutput = &dir - - if err := schemagen(); err != nil { - t.Fatalf("schemagen() error %s", err) - } - - f := fmt.Sprintf("%s/%s.go", dir, pkgname) - b, err := os.ReadFile(f) - if err != nil { - t.Fatalf("%s: %s", f, err) - } - return b -} diff --git a/cmd/schemagen/testdata/go.mod b/cmd/schemagen/testdata/go.mod deleted file mode 100644 index 9ae4faf..0000000 --- a/cmd/schemagen/testdata/go.mod +++ /dev/null @@ -1,21 +0,0 @@ -module schemagentest - -go 1.25.0 - -require ( - github.com/gocql/gocql v1.7.0 - github.com/google/go-cmp v0.7.0 - github.com/scylladb/gocqlx/v3 v3.0.4 -) - -require ( - github.com/google/uuid v1.6.0 // indirect - github.com/klauspost/compress v1.18.1 // indirect - github.com/scylladb/go-reflectx v1.0.1 // indirect - gopkg.in/inf.v0 v0.9.1 // indirect -) - -replace ( - github.com/gocql/gocql => github.com/scylladb/gocql v1.17.0 - github.com/scylladb/gocqlx/v3 => ../../.. -) diff --git a/cmd/schemagen/testdata/go.sum b/cmd/schemagen/testdata/go.sum deleted file mode 100644 index d243d8f..0000000 --- a/cmd/schemagen/testdata/go.sum +++ /dev/null @@ -1,30 +0,0 @@ -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= -github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= -github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= -github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/klauspost/compress v1.18.1 h1:bcSGx7UbpBqMChDtsF28Lw6v/G94LPrrbMbdC3JH2co= -github.com/klauspost/compress v1.18.1/go.mod h1:ZQFFVG+MdnR0P+l6wpXgIL4NTtwiKIdBnrBd8Nrxr+0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/scylladb/go-reflectx v1.0.1 h1:b917wZM7189pZdlND9PbIJ6NQxfDPfBvUaQ7cjj1iZQ= -github.com/scylladb/go-reflectx v1.0.1/go.mod h1:rWnOfDIRWBGN0miMLIcoPt/Dhi2doCMZqwMCJ3KupFc= -github.com/scylladb/gocql v1.16.1 h1:mxqUoOoHPrhzBNN+S0X195N+wCPZ5nrstfFz4QtBaZs= -github.com/scylladb/gocql v1.16.1/go.mod h1:MSg2nr90XMcU0doVnISX3OtarTac5tSCGk6Q6QJd6oQ= -github.com/scylladb/gocql v1.17.0 h1:sSjNTgSoC90+1XYXOMeWsQ8+AZbFYQWcspuScmUT53E= -github.com/scylladb/gocql v1.17.0/go.mod h1:0VgVuYnAPOoYN17KXkYdWDxhL2/rH3V3vOisPMngpAw= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= -go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= -gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= -sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= diff --git a/cmd/schemagen/testdata/models.go b/cmd/schemagen/testdata/models.go deleted file mode 100644 index a7745eb..0000000 --- a/cmd/schemagen/testdata/models.go +++ /dev/null @@ -1,73 +0,0 @@ -// Code generated by "gocqlx/cmd/schemagen"; DO NOT EDIT. - -package schemagentest - -import ( - "github.com/gocql/gocql" - "github.com/scylladb/gocqlx/v3" - "github.com/scylladb/gocqlx/v3/table" -) - -// Table models. -var ( - Playlists = table.New(table.Metadata{ - Name: "playlists", - Columns: []string{ - "album", - "artist", - "id", - "song_id", - "title", - }, - PartKey: []string{ - "id", - }, - SortKey: []string{ - "title", - "album", - "artist", - }, - }) - - Songs = table.New(table.Metadata{ - Name: "songs", - Columns: []string{ - "album", - "artist", - "data", - "duration", - "id", - "tags", - "title", - }, - PartKey: []string{ - "id", - }, - SortKey: []string{}, - }) -) - -// User-defined types (UDT) structs. -type AlbumUserType struct { - gocqlx.UDT - Name string - Songwriters []string -} - -// Table structs. -type PlaylistsStruct struct { - Album AlbumUserType - Artist string - Id [16]byte - SongId [16]byte - Title string -} -type SongsStruct struct { - Album string - Artist string - Data []byte - Duration gocql.Duration - Id [16]byte - Tags []string - Title string -} diff --git a/cmd/schemagen/testdata/models_test.go b/cmd/schemagen/testdata/models_test.go deleted file mode 100644 index af52a2e..0000000 --- a/cmd/schemagen/testdata/models_test.go +++ /dev/null @@ -1,92 +0,0 @@ -package schemagentest - -import ( - "flag" - "strings" - "testing" - "time" - - "github.com/gocql/gocql" - "github.com/google/go-cmp/cmp" - - "github.com/scylladb/gocqlx/v3" - "github.com/scylladb/gocqlx/v3/qb" -) - -var flagCluster = flag.String("cluster", "127.0.0.1", "a comma-separated list of host:port or host tuples") - -func TestModelLoad(t *testing.T) { - session, err := gocqlx.WrapSession(gocql.NewCluster(strings.Split(*flagCluster, ",")...).CreateSession()) - if err != nil { - t.Fatal("create session:", err.Error()) - } - defer session.Close() - - // Keyspace, types and table are created at `schemaget_test.go` at `createTestSchema` - - song := SongsStruct{ - Id: gocql.TimeUUID(), - Title: "title", - Album: "album", - Artist: "artist", - Duration: gocql.Duration{Nanoseconds: int64(5 * time.Minute)}, - Tags: []string{"tag1", "tag2"}, - Data: []byte("data"), - } - - err = qb.Insert("schemagen.songs"). - Columns("id", "title", "album", "artist", "duration", "tags", "data"). - Query(session). - BindStruct(&song). - Exec() - if err != nil { - t.Fatal("failed to insert song:", err.Error()) - } - - loadedSong := SongsStruct{} - err = qb.Select("schemagen.songs"). - Columns("id", "title", "album", "artist", "duration", "tags", "data"). - Where(qb.Eq("id")). - Query(session). - BindMap(map[string]interface{}{"id": song.Id}). - Get(&loadedSong) - if err != nil { - t.Fatal("failed to select song:", err) - } - if diff := cmp.Diff(song, loadedSong); diff != "" { - t.Error("loaded song is different from inserted song:", diff) - } - - pl := PlaylistsStruct{ - Id: gocql.TimeUUID(), - Title: "title", - Album: AlbumUserType{Name: "album", Songwriters: []string{"songwriter1", "songwriter2"}}, - Artist: "artist", - SongId: gocql.TimeUUID(), - } - - err = qb.Insert("schemagen.playlists"). - Columns("id", "title", "album", "artist", "song_id"). - Query(session). - BindStruct(&pl). - Exec() - if err != nil { - t.Fatal("failed to insert playlist:", err.Error()) - } - - loadedPl := PlaylistsStruct{} - - err = qb.Select("schemagen.playlists"). - Columns("id", "title", "album", "artist", "song_id"). - Where(qb.Eq("id")). - Query(session). - BindMap(map[string]interface{}{"id": pl.Id}). - Get(&loadedPl) - if err != nil { - t.Fatal("failed to select playlist:", err.Error()) - } - - if diff := cmp.Diff(pl, loadedPl); diff != "" { - t.Error("loaded playlist is different from inserted song:", diff) - } -} diff --git a/cmd/schemagen/testdata/no_ignore_indexes/models.go b/cmd/schemagen/testdata/no_ignore_indexes/models.go deleted file mode 100644 index e28b958..0000000 --- a/cmd/schemagen/testdata/no_ignore_indexes/models.go +++ /dev/null @@ -1,99 +0,0 @@ -// Code generated by "gocqlx/cmd/schemagen"; DO NOT EDIT. - -package schemagentest - -import ( - "github.com/gocql/gocql" - "github.com/scylladb/gocqlx/v3" - "github.com/scylladb/gocqlx/v3/table" -) - -// Table models. -var ( - Playlists = table.New(table.Metadata{ - Name: "playlists", - Columns: []string{ - "album", - "artist", - "id", - "song_id", - "title", - }, - PartKey: []string{ - "id", - }, - SortKey: []string{ - "title", - "album", - "artist", - }, - }) - - Songs = table.New(table.Metadata{ - Name: "songs", - Columns: []string{ - "album", - "artist", - "data", - "duration", - "id", - "tags", - "title", - }, - PartKey: []string{ - "id", - }, - SortKey: []string{}, - }) -) - -// Index models. -var ( - SongsTitleIndex = table.New(table.Metadata{ - Name: "songs_title_index", - Columns: []string{ - "id", - "idx_token", - "title", - }, - PartKey: []string{ - "title", - }, - SortKey: []string{ - "idx_token", - "id", - }, - }) -) - -// User-defined types (UDT) structs. -type AlbumUserType struct { - gocqlx.UDT - Name string - Songwriters []string -} - -// Table structs. -type PlaylistsStruct struct { - Album AlbumUserType - Artist string - Id [16]byte - SongId [16]byte - Title string -} -type SongsStruct struct { - Album string - Artist string - Data []byte - Duration gocql.Duration - Id [16]byte - Tags []string - Title string -} - -// Index structs. -type SongsTitleIndexStruct struct { - Id [16]byte - IdxToken int64 - Title string -} diff --git a/dbutil/doc.go b/dbutil/doc.go deleted file mode 100644 index e852baa..0000000 --- a/dbutil/doc.go +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright (C) 2017 ScyllaDB -// Use of this source code is governed by a ALv2-style -// license that can be found in the LICENSE file. - -// Package dbutil provides various utilities built on top of core gocqlx modules. -package dbutil diff --git a/dbutil/rewrite.go b/dbutil/rewrite.go deleted file mode 100644 index ee30c28..0000000 --- a/dbutil/rewrite.go +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (C) 2017 ScyllaDB -// Use of this source code is governed by a ALv2-style -// license that can be found in the LICENSE file. - -package dbutil - -import ( - "github.com/scylladb/gocqlx/v3" - "github.com/scylladb/gocqlx/v3/table" -) - -// RewriteTable rewrites src table to dst table. -// Rows can be transformed using the transform function. -// If row map is empty after transformation the row is skipped. -// Additional options can be passed to modify the insert query. -func RewriteTable(session gocqlx.Session, dst, src *table.Table, transform func(map[string]interface{}), options ...func(q *gocqlx.Queryx)) error { - insert := dst.InsertQuery(session) - defer insert.Release() - - // Apply query options - for _, o := range options { - o(insert) - } - - // Iterate over all rows and reinsert them to dst table - iter := session.Query(src.SelectAll()).Iter() - m := make(map[string]interface{}) - for iter.MapScan(m) { - if transform != nil { - transform(m) - } - if len(m) == 0 { - continue // map is empty - no need to clean - } - if err := insert.BindMap(m).Exec(); err != nil { - return err - } - m = map[string]interface{}{} - } - return iter.Close() -} diff --git a/dbutil/rewrite_test.go b/dbutil/rewrite_test.go deleted file mode 100644 index 2044387..0000000 --- a/dbutil/rewrite_test.go +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright (C) 2017 ScyllaDB -// Use of this source code is governed by a ALv2-style -// license that can be found in the LICENSE file. - -//go:build all || integration -// +build all integration - -package dbutil_test - -import ( - "testing" - "time" - - "github.com/scylladb/gocqlx/v3/dbutil" - "github.com/scylladb/gocqlx/v3/gocqlxtest" - "github.com/scylladb/gocqlx/v3/qb" - "github.com/scylladb/gocqlx/v3/table" -) - -func TestRewriteTableTTL(t *testing.T) { - session := gocqlxtest.CreateSession(t) - defer session.Close() - - if err := session.ExecStmt(`CREATE TABLE gocqlx_test.rewrite_table (testtext text PRIMARY KEY)`); err != nil { - t.Fatal("create table:", err) - } - - tbl := table.New(table.Metadata{ - Name: "gocqlx_test.rewrite_table", - Columns: []string{"testtext"}, - PartKey: []string{"testtext"}, - }) - - // Insert data with 500ms TTL - q := tbl.InsertBuilder().TTL(500 * time.Millisecond).Query(session) - if err := q.Bind("a").Exec(); err != nil { - t.Fatal("insert:", err) - } - if err := q.Bind("b").Exec(); err != nil { - t.Fatal("insert:", err) - } - if err := q.Bind("c").Exec(); err != nil { - t.Fatal("insert:", err) - } - - // Rewrite data without TTL - if err := dbutil.RewriteTable(session, tbl, tbl, nil); err != nil { - t.Fatal("rewrite:", err) - } - - // Wait and check if data persisted - time.Sleep(time.Second) - - var n int - if err := qb.Select(tbl.Name()).CountAll().Query(session).Scan(&n); err != nil { - t.Fatal("scan:", err) - } - if n != 3 { - t.Fatal("expected 3 entries") - } -} - -func TestRewriteTableClone(t *testing.T) { - session := gocqlxtest.CreateSession(t) - defer session.Close() - - if err := session.ExecStmt(`CREATE TABLE gocqlx_test.rewrite_table_clone_src (testtext text PRIMARY KEY, testint int)`); err != nil { - t.Fatal("create table:", err) - } - - src := table.New(table.Metadata{ - Name: "gocqlx_test.rewrite_table_clone_src", - Columns: []string{"testtext", "testint"}, - PartKey: []string{"testtext"}, - }) - - if err := session.ExecStmt(`CREATE TABLE gocqlx_test.rewrite_table_clone_dst (testtext text PRIMARY KEY, testfloat float)`); err != nil { - t.Fatal("create table:", err) - } - - dst := table.New(table.Metadata{ - Name: "gocqlx_test.rewrite_table_clone_dst", - Columns: []string{"testtext", "testfloat"}, - PartKey: []string{"testtext"}, - }) - - // Insert data - q := src.InsertBuilder().Query(session) - if err := q.Bind("a", 1).Exec(); err != nil { - t.Fatal("insert:", err) - } - if err := q.Bind("b", 2).Exec(); err != nil { - t.Fatal("insert:", err) - } - if err := q.Bind("c", 3).Exec(); err != nil { - t.Fatal("insert:", err) - } - - transformer := func(m map[string]interface{}) { - m["testfloat"] = float32(m["testint"].(int)) - } - - // Rewrite data - if err := dbutil.RewriteTable(session, dst, src, transformer); err != nil { - t.Fatal("rewrite:", err) - } - - var n int - if err := qb.Select(dst.Name()).CountAll().Query(session).Scan(&n); err != nil { - t.Fatal("scan:", err) - } - if n != 3 { - t.Fatal("expected 3 entries") - } - var f float32 - if err := dst.GetQuery(session, "testfloat").Bind("a").Scan(&f); err != nil { - t.Fatal("scan:", err) - } - if f != 1 { - t.Fatal("expected 1") - } -} diff --git a/doc_test.go b/doc_test.go index b2dcbf9..3c67073 100644 --- a/doc_test.go +++ b/doc_test.go @@ -5,7 +5,7 @@ package gocqlx_test import ( - "github.com/gocql/gocql" + gocql "github.com/apache/cassandra-gocql-driver/v2" "github.com/scylladb/gocqlx/v3" "github.com/scylladb/gocqlx/v3/qb" diff --git a/example_test.go b/example_test.go index 653d27d..26a9fd6 100644 --- a/example_test.go +++ b/example_test.go @@ -13,7 +13,7 @@ import ( "testing" "time" - "github.com/gocql/gocql" + gocql "github.com/apache/cassandra-gocql-driver/v2" "golang.org/x/sync/errgroup" "gopkg.in/inf.v0" @@ -98,7 +98,7 @@ func basicCreateAndPopulateKeyspace(t *testing.T, session gocqlx.Session, keyspa err = session.ExecStmt(fmt.Sprintf(`CREATE TABLE IF NOT EXISTS %s.playlists ( id uuid, title text, - album text, + album text, artist text, song_id uuid, PRIMARY KEY (id, title, album, artist))`, keyspace)) @@ -752,8 +752,8 @@ func pagingEfficientFullTableScan(t *testing.T, session gocqlx.Session) { // worker queries a token ranges generated by sequencer worker := func() error { - const cql = `SELECT * FROM examples.paging_efficient_full_table_scan WHERE - token(user_id) >= :start AND + const cql = `SELECT * FROM examples.paging_efficient_full_table_scan WHERE + token(user_id) >= :start AND token(user_id) < :end` stmt, names, err := gocqlx.CompileNamedQueryString(cql) diff --git a/go.mod b/go.mod index 8694c21..9cbe5a8 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/scylladb/gocqlx/v3 go 1.25.0 require ( - github.com/gocql/gocql v1.7.0 + github.com/apache/cassandra-gocql-driver/v2 v2.0.0 github.com/google/go-cmp v0.7.0 github.com/psanford/memfs v0.0.0-20241019191636-4ef911798f9b github.com/scylladb/go-reflectx v1.0.1 @@ -11,9 +11,6 @@ require ( gopkg.in/inf.v0 v0.9.1 ) -require ( - github.com/google/uuid v1.6.0 // indirect - github.com/klauspost/compress v1.18.1 // indirect -) +require github.com/stretchr/testify v1.11.1 // indirect replace github.com/gocql/gocql => github.com/scylladb/gocql v1.17.0 diff --git a/go.sum b/go.sum index f1b35a4..c3e43ce 100644 --- a/go.sum +++ b/go.sum @@ -1,45 +1,38 @@ -github.com/bitly/go-hostpool v0.1.1 h1:SsovT4BFqgJQBAESkk2QgeeL7bqKq9oJie8JnD00R+Q= -github.com/bitly/go-hostpool v0.1.1/go.mod h1:iwXQOF7+y3cO8vituSqGpBYf02TYTzxK4S2c4rf4cJs= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= +github.com/apache/cassandra-gocql-driver/v2 v2.0.0 h1:Omnzb1Z/P90Dr2TbVNu54ICQL7TKVIIsJO231w484HU= +github.com/apache/cassandra-gocql-driver/v2 v2.0.0/go.mod h1:QH/asJjB3mHvY6Dot6ZKMMpTcOrWJ8i9GhsvG1g0PK4= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= -github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= -github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed h1:5upAirOpQc1Q53c0bnx2ufif5kANL7bfZWcc6VJWJd8= -github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= -github.com/klauspost/compress v1.18.1 h1:bcSGx7UbpBqMChDtsF28Lw6v/G94LPrrbMbdC3JH2co= -github.com/klauspost/compress v1.18.1/go.mod h1:ZQFFVG+MdnR0P+l6wpXgIL4NTtwiKIdBnrBd8Nrxr+0= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/pierrec/lz4/v4 v4.1.8 h1:ieHkV+i2BRzngO4Wd/3HGowuZStgq6QkPsD1eolNAO4= +github.com/pierrec/lz4/v4 v4.1.8/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/psanford/memfs v0.0.0-20241019191636-4ef911798f9b h1:xzjEJAHum+mV5Dd5KyohRlCyP03o4yq6vNpEUtAJQzI= github.com/psanford/memfs v0.0.0-20241019191636-4ef911798f9b/go.mod h1:tcaRap0jS3eifrEEllL6ZMd9dg8IlDpi2S1oARrQ+NI= +github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY= +github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ= github.com/scylladb/go-reflectx v1.0.1 h1:b917wZM7189pZdlND9PbIJ6NQxfDPfBvUaQ7cjj1iZQ= github.com/scylladb/go-reflectx v1.0.1/go.mod h1:rWnOfDIRWBGN0miMLIcoPt/Dhi2doCMZqwMCJ3KupFc= -github.com/scylladb/gocql v1.16.1 h1:mxqUoOoHPrhzBNN+S0X195N+wCPZ5nrstfFz4QtBaZs= -github.com/scylladb/gocql v1.16.1/go.mod h1:MSg2nr90XMcU0doVnISX3OtarTac5tSCGk6Q6QJd6oQ= -github.com/scylladb/gocql v1.17.0 h1:sSjNTgSoC90+1XYXOMeWsQ8+AZbFYQWcspuScmUT53E= -github.com/scylladb/gocql v1.17.0/go.mod h1:0VgVuYnAPOoYN17KXkYdWDxhL2/rH3V3vOisPMngpAw= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= -go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ= +go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= -sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= diff --git a/gocqlx.go b/gocqlx.go index b1fa542..b7974e8 100644 --- a/gocqlx.go +++ b/gocqlx.go @@ -9,7 +9,7 @@ import ( "fmt" "reflect" - "github.com/gocql/gocql" + gocql "github.com/apache/cassandra-gocql-driver/v2" "github.com/scylladb/go-reflectx" ) diff --git a/gocqlxtest/doc.go b/gocqlxtest/doc.go deleted file mode 100644 index 65370b1..0000000 --- a/gocqlxtest/doc.go +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright (C) 2017 ScyllaDB -// Use of this source code is governed by a ALv2-style -// license that can be found in the LICENSE file. - -// Package gocqlxtest provides test helpers for integration tests. -package gocqlxtest diff --git a/gocqlxtest/gocqlxtest.go b/gocqlxtest/gocqlxtest.go deleted file mode 100644 index eb5aab2..0000000 --- a/gocqlxtest/gocqlxtest.go +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright (C) 2017 ScyllaDB -// Use of this source code is governed by a ALv2-style -// license that can be found in the LICENSE file. - -package gocqlxtest - -import ( - "flag" - "fmt" - "strings" - "sync" - "testing" - "time" - - "github.com/gocql/gocql" - - "github.com/scylladb/gocqlx/v3" -) - -var ( - flagCluster = flag.String("cluster", "127.0.0.1", "a comma-separated list of host:port tuples") - flagKeyspace = flag.String("keyspace", "gocqlx_test", "keyspace name") - flagProto = flag.Int("proto", 0, "protcol version") - flagCQL = flag.String("cql", "3.0.0", "CQL version") - flagRF = flag.Int("rf", 1, "replication factor for test keyspace") - flagRetry = flag.Int("retries", 5, "number of times to retry queries") - flagCompressTest = flag.String("compressor", "", "compressor to use") - flagTimeout = flag.Duration("gocql.timeout", 5*time.Second, "sets the connection `timeout` for all operations") -) - -var initOnce sync.Once - -// CreateSession creates a new gocqlx session from flags. -func CreateSession(tb testing.TB) gocqlx.Session { - tb.Helper() - - cluster := CreateCluster() - return createSessionFromCluster(tb, cluster) -} - -// CreateCluster creates gocql ClusterConfig from flags. -func CreateCluster() *gocql.ClusterConfig { - if !flag.Parsed() { - flag.Parse() - } - clusterHosts := strings.Split(*flagCluster, ",") - - cluster := gocql.NewCluster(clusterHosts...) - cluster.ProtoVersion = *flagProto - cluster.CQLVersion = *flagCQL - cluster.Timeout = *flagTimeout - cluster.Consistency = gocql.Quorum - cluster.MaxWaitSchemaAgreement = 2 * time.Minute // travis might be slow - cluster.ReconnectionPolicy = &gocql.ConstantReconnectionPolicy{ - MaxRetries: 10, - Interval: 3 * time.Second, - } - if *flagRetry > 0 { - cluster.RetryPolicy = &gocql.SimpleRetryPolicy{NumRetries: *flagRetry} - } - - switch *flagCompressTest { - case "snappy": - cluster.Compressor = &gocql.SnappyCompressor{} - case "": - default: - panic("invalid compressor: " + *flagCompressTest) - } - - return cluster -} - -// CreateKeyspace creates keyspace with SimpleStrategy and RF derived from flags. -func CreateKeyspace(cluster *gocql.ClusterConfig, keyspace string) error { - c := *cluster - c.Keyspace = "system" - c.Timeout = 30 * time.Second - - session, err := gocqlx.WrapSession(c.CreateSession()) - if err != nil { - return err - } - defer session.Close() - - { - err := session.ExecStmt(`DROP KEYSPACE IF EXISTS ` + keyspace) - if err != nil { - return fmt.Errorf("drop keyspace: %w", err) - } - } - - { - err := session.ExecStmt(fmt.Sprintf(`CREATE KEYSPACE %s WITH replication = {'class' : 'SimpleStrategy', 'replication_factor' : %d}`, keyspace, *flagRF)) - if err != nil { - return fmt.Errorf("create keyspace: %w", err) - } - } - - return nil -} - -func createSessionFromCluster(tb testing.TB, cluster *gocql.ClusterConfig) gocqlx.Session { - tb.Helper() - if !flag.Parsed() { - flag.Parse() - } - // Drop and re-create the keyspace once. Different tests should use their own - // individual tables, but can assume that the table does not exist before. - initOnce.Do(func() { - if err := CreateKeyspace(cluster, *flagKeyspace); err != nil { - tb.Fatal(err) - } - }) - - cluster.Keyspace = *flagKeyspace - session, err := gocqlx.WrapSession(cluster.CreateSession()) - if err != nil { - tb.Fatal("CreateSession:", err) - } - return session -} diff --git a/iterx.go b/iterx.go index 90d295f..ccf0451 100644 --- a/iterx.go +++ b/iterx.go @@ -9,7 +9,7 @@ import ( "fmt" "reflect" - "github.com/gocql/gocql" + gocql "github.com/apache/cassandra-gocql-driver/v2" "github.com/scylladb/go-reflectx" ) diff --git a/iterx_test.go b/iterx_test.go index 795edb2..b57afaa 100644 --- a/iterx_test.go +++ b/iterx_test.go @@ -14,7 +14,7 @@ import ( "testing" "time" - "github.com/gocql/gocql" + gocql "github.com/apache/cassandra-gocql-driver/v2" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "gopkg.in/inf.v0" @@ -450,7 +450,7 @@ func TestIterxStruct(t *testing.T) { } const insertStmt = `INSERT INTO struct_table ( - testuuid, testtimestamp, testvarchar, testbigint, testblob, testbool, testfloat, testdouble, + testuuid, testtimestamp, testvarchar, testbigint, testblob, testbool, testfloat, testdouble, testint, testdecimal, testlist, testset, testmap, testvarint, testinet, testcustom, testudt, testptrudt ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)` diff --git a/migrate/README.md b/migrate/README.md deleted file mode 100644 index 253f3b1..0000000 --- a/migrate/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# 🚀 GocqlX Migrations - -`migrate` reads migrations from a flat directory containing CQL files. -There is no imposed naming schema. Migration name is file name. -The order of migrations is the lexicographical order of file names in the directory. -You can inject execution of Go code before processing of a migration file, after processing of a migration file, or between statements in a migration file. - -For details see [example](example) migration. \ No newline at end of file diff --git a/migrate/callback.go b/migrate/callback.go deleted file mode 100644 index be4a66b..0000000 --- a/migrate/callback.go +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (C) 2017 ScyllaDB -// Use of this source code is governed by a ALv2-style -// license that can be found in the LICENSE file. - -package migrate - -import ( - "context" - "errors" - - "github.com/scylladb/gocqlx/v3" -) - -// CallbackEvent specifies type of the event when calling CallbackFunc. -type CallbackEvent uint8 - -// enumeration of CallbackEvents -const ( - BeforeMigration CallbackEvent = iota - AfterMigration - CallComment -) - -// CallbackFunc enables execution of arbitrary Go code during migration. -// If error is returned the migration is aborted. -// BeforeMigration and AfterMigration are triggered before and after processing -// of each migration file respectively. -// CallComment is triggered for each comment in a form `-- CALL ;` (note the semicolon). -type CallbackFunc func(ctx context.Context, session gocqlx.Session, ev CallbackEvent, name string) error - -// Callback is means of executing Go code during migrations. -// Use this variable to register a global callback dispatching function. -// See CallbackFunc for details. -var Callback CallbackFunc - -type nameEvent struct { - name string - event CallbackEvent -} - -// CallbackRegister allows to register a handlers for an event type and a name. -// It dispatches calls to the registered handlers. -// If there is no handler registered for CallComment an error is returned. -type CallbackRegister map[nameEvent]CallbackFunc - -// Add registers a callback handler. -func (r CallbackRegister) Add(ev CallbackEvent, name string, f CallbackFunc) { - r[nameEvent{name, ev}] = f -} - -// Find returns the registered handler. -func (r CallbackRegister) Find(ev CallbackEvent, name string) CallbackFunc { - return r[nameEvent{name, ev}] -} - -// Callback is CallbackFunc. -func (r CallbackRegister) Callback(ctx context.Context, session gocqlx.Session, ev CallbackEvent, name string) error { - f, ok := r[nameEvent{name, ev}] - if !ok { - if ev == CallComment { - return errors.New("missing handler") - } - return nil - } - return f(ctx, session, ev, name) -} diff --git a/migrate/checksum.go b/migrate/checksum.go deleted file mode 100644 index 49fce10..0000000 --- a/migrate/checksum.go +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (C) 2017 ScyllaDB -// Use of this source code is governed by a ALv2-style -// license that can be found in the LICENSE file. - -package migrate - -import ( - "crypto/md5" - "encoding/hex" - "io" - "io/fs" -) - -var encode = hex.EncodeToString - -func checksum(b []byte) string { - v := md5.Sum(b) - return encode(v[:]) -} - -func fileChecksum(f fs.FS, path string) (string, error) { - file, err := f.Open(path) - if err != nil { - return "", nil - } - defer func() { - _ = file.Close() - }() - - h := md5.New() - if _, err := io.Copy(h, file); err != nil { - return "", err - } - v := h.Sum(nil) - return encode(v), nil -} diff --git a/migrate/checksum_test.go b/migrate/checksum_test.go deleted file mode 100644 index cc9dbd6..0000000 --- a/migrate/checksum_test.go +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (C) 2017 ScyllaDB -// Use of this source code is governed by a ALv2-style -// license that can be found in the LICENSE file. - -package migrate - -import ( - "os" - "testing" -) - -func TestFileChecksum(t *testing.T) { - c, err := fileChecksum(os.DirFS("testdata"), "file") - if err != nil { - t.Fatal(err) - } - if c != "bbe02f946d5455d74616fc9777557c22" { - t.Fatal(c) - } -} diff --git a/migrate/doc.go b/migrate/doc.go deleted file mode 100644 index 8dba2fa..0000000 --- a/migrate/doc.go +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (C) 2017 ScyllaDB -// Use of this source code is governed by a ALv2-style -// license that can be found in the LICENSE file. - -// Package migrate reads migrations from a flat directory containing CQL files. -// There is no imposed naming schema. Migration name is file name. -// The order of migrations is the lexicographical order of file names in the directory. -// You can inject execution of Go code before processing of a migration file, after processing of a migration file, or between statements in a migration file. -package migrate diff --git a/migrate/example/cql/embed.go b/migrate/example/cql/embed.go deleted file mode 100644 index b4858cb..0000000 --- a/migrate/example/cql/embed.go +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (C) 2017 ScyllaDB -// Use of this source code is governed by a ALv2-style -// license that can be found in the LICENSE file. - -//go:build all || integration -// +build all integration - -package cql - -import "embed" - -// Files contains *.cql schema migration files. -// -//go:embed *.cql -var Files embed.FS diff --git a/migrate/example/cql/m1.cql b/migrate/example/cql/m1.cql deleted file mode 100644 index 94d809f..0000000 --- a/migrate/example/cql/m1.cql +++ /dev/null @@ -1,15 +0,0 @@ --- Comment - -CREATE TABLE bar ( id int PRIMARY KEY); - -INSERT INTO bar (id) VALUES (1); - --- CALL 1; - -INSERT INTO bar (id) VALUES (2); - --- CALL 2; - -INSERT INTO bar (id) VALUES (3); - --- CALL 3; diff --git a/migrate/example/example_test.go b/migrate/example/example_test.go deleted file mode 100644 index e5e4942..0000000 --- a/migrate/example/example_test.go +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright (C) 2017 ScyllaDB -// Use of this source code is governed by a ALv2-style -// license that can be found in the LICENSE file. - -//go:build all || integration -// +build all integration - -package example - -import ( - "context" - "testing" - - "github.com/scylladb/gocqlx/v3" - "github.com/scylladb/gocqlx/v3/gocqlxtest" - "github.com/scylladb/gocqlx/v3/migrate" - "github.com/scylladb/gocqlx/v3/migrate/example/cql" -) - -// Running examples locally: -// make start-scylla -// make run-examples -func TestExample(t *testing.T) { - const ks = "migrate_example" - - // Create keyspace - cluster := gocqlxtest.CreateCluster() - cluster.Keyspace = ks - if err := gocqlxtest.CreateKeyspace(cluster, ks); err != nil { - t.Fatal("CreateKeyspace:", err) - } - - // Create session using the keyspace - session, err := gocqlx.WrapSession(cluster.CreateSession()) - if err != nil { - t.Fatal("CreateSession:", err) - } - defer session.Close() - - // Add callback prints - log := func(ctx context.Context, session gocqlx.Session, ev migrate.CallbackEvent, name string) error { - t.Log(ev, name) - return nil - } - reg := migrate.CallbackRegister{} - reg.Add(migrate.BeforeMigration, "m1.cql", log) - reg.Add(migrate.AfterMigration, "m1.cql", log) - reg.Add(migrate.CallComment, "1", log) - reg.Add(migrate.CallComment, "2", log) - reg.Add(migrate.CallComment, "3", log) - migrate.Callback = reg.Callback - - pending, err := migrate.Pending(context.Background(), session, cql.Files) - if err != nil { - t.Fatal("Pending:", err) - } - t.Log("Pending migrations:", len(pending)) - - // First run prints data - if err := migrate.FromFS(context.Background(), session, cql.Files); err != nil { - t.Fatal("Migrate:", err) - } - - // Second run skips the processed files - if err := migrate.FromFS(context.Background(), session, cql.Files); err != nil { - t.Fatal("Migrate:", err) - } -} diff --git a/migrate/export_test.go b/migrate/export_test.go deleted file mode 100644 index 4fad8bd..0000000 --- a/migrate/export_test.go +++ /dev/null @@ -1,9 +0,0 @@ -package migrate - -func IsCallback(stmt string) (name string) { - return isCallback(stmt) -} - -func IsComment(stmt string) bool { - return isComment(stmt) -} diff --git a/migrate/migrate.go b/migrate/migrate.go deleted file mode 100644 index b1b8847..0000000 --- a/migrate/migrate.go +++ /dev/null @@ -1,345 +0,0 @@ -// Copyright (C) 2017 ScyllaDB -// Use of this source code is governed by a ALv2-style -// license that can be found in the LICENSE file. - -package migrate - -import ( - "bytes" - "context" - "fmt" - "io" - "io/fs" - "os" - "path/filepath" - "regexp" - "sort" - "strings" - "time" - - "github.com/gocql/gocql" - - "github.com/scylladb/gocqlx/v3" - "github.com/scylladb/gocqlx/v3/qb" -) - -// DefaultAwaitSchemaAgreement controls whether checking for cluster schema agreement -// is disabled or if it is checked before each file or statement is applied. -// The default is not checking before each file or statement but only once after every -// migration has been run. -var DefaultAwaitSchemaAgreement = AwaitSchemaAgreementDisabled - -type awaitSchemaAgreement int - -// Options for checking schema agreement. -const ( - AwaitSchemaAgreementDisabled awaitSchemaAgreement = iota - AwaitSchemaAgreementBeforeEachFile - AwaitSchemaAgreementBeforeEachStatement -) - -// ShouldAwait decides whether to await schema agreement for the configured DefaultAwaitSchemaAgreement option above. -func (as awaitSchemaAgreement) ShouldAwait(stage awaitSchemaAgreement) bool { - return as == stage -} - -const ( - infoSchema = `CREATE TABLE IF NOT EXISTS gocqlx_migrate ( - name text, - checksum text, - done int, - start_time timestamp, - end_time timestamp, - PRIMARY KEY(name) -)` - selectInfo = "SELECT * FROM gocqlx_migrate" -) - -// Info contains information on migration applied on a database. -type Info struct { - StartTime time.Time - EndTime time.Time - Name string - Checksum string - Done int -} - -// List provides a listing of applied migrations. -func List(ctx context.Context, session gocqlx.Session) ([]*Info, error) { - if err := ensureInfoTable(ctx, session); err != nil { - return nil, err - } - - q := session.ContextQuery(ctx, selectInfo, nil) - - var v []*Info - if err := q.SelectRelease(&v); err == gocql.ErrNotFound { - return nil, nil - } else if err != nil { - return v, err - } - - sort.Slice(v, func(i, j int) bool { - return v[i].Name < v[j].Name - }) - - return v, nil -} - -// Pending provides a listing of pending migrations. -func Pending(ctx context.Context, session gocqlx.Session, f fs.FS) ([]*Info, error) { - applied, err := List(ctx, session) - if err != nil { - return nil, err - } - - // Create a set of applied migration names - appliedNames := make(map[string]struct{}, len(applied)) - for _, migration := range applied { - appliedNames[migration.Name] = struct{}{} - } - - fm, err := fs.Glob(f, "*.cql") - if err != nil { - return nil, fmt.Errorf("list migrations: %w", err) - } - - pending := make([]*Info, 0) - - for _, name := range fm { - baseName := filepath.Base(name) - // Check if the migration is not in the applied set - if _, exists := appliedNames[baseName]; !exists { - c, err := fileChecksum(f, name) - if err != nil { - return nil, fmt.Errorf("calculate checksum for %q: %w", name, err) - } - - info := &Info{ - Name: baseName, - StartTime: time.Now(), - Checksum: c, - } - - pending = append(pending, info) - } - } - - return pending, nil -} - -func ensureInfoTable(ctx context.Context, session gocqlx.Session) error { - return session.ContextQuery(ctx, infoSchema, nil).ExecRelease() -} - -// Migrate is a wrapper around FromFS. -// It executes migrations from a directory on disk. -// -// Deprecated: use FromFS instead -func Migrate(ctx context.Context, session gocqlx.Session, dir string) error { - return FromFS(ctx, session, os.DirFS(dir)) -} - -// FromFS executes new CQL files from a file system abstraction (io/fs.FS). -// The provided FS has to be a flat directory containing *.cql files. -// -// It supports code based migrations, see Callback and CallbackFunc. -// Any comment in form `-- CALL ;` will trigger an CallComment callback. -func FromFS(ctx context.Context, session gocqlx.Session, f fs.FS) error { - // get database migrations - dbm, err := List(ctx, session) - if err != nil { - return fmt.Errorf("list migrations: %s", err) - } - - // get file migrations - fm, err := fs.Glob(f, "*.cql") - if err != nil { - return fmt.Errorf("list migrations: %w", err) - } - if len(fm) == 0 { - return fmt.Errorf("no migration files found") - } - sort.Strings(fm) - - // verify migrations - if len(dbm) > len(fm) { - return fmt.Errorf("database is ahead") - } - - for i := 0; i < len(dbm); i++ { - if dbm[i].Name != fm[i] { - return fmt.Errorf("inconsistent migrations found, expected %q got %q at %d", dbm[i].Name, fm[i], i) - } - c, err := fileChecksum(f, fm[i]) - if err != nil { - return fmt.Errorf("calculate checksum for %q: %s", fm[i], err) - } - if dbm[i].Checksum != c { - return fmt.Errorf("file %q was tampered with, expected md5 %s", fm[i], dbm[i].Checksum) - } - } - - // apply migrations - if len(dbm) > 0 { - last := len(dbm) - 1 - if err := applyMigration(ctx, session, f, fm[last], dbm[last].Done); err != nil { - return fmt.Errorf("apply migration %q: %s", fm[last], err) - } - } - - for i := len(dbm); i < len(fm); i++ { - if err := applyMigration(ctx, session, f, fm[i], 0); err != nil { - return fmt.Errorf("apply migration %q: %s", fm[i], err) - } - } - - if err = session.AwaitSchemaAgreement(ctx); err != nil { - return fmt.Errorf("awaiting schema agreement: %s", err) - } - - return nil -} - -// applyMigration executes a single migration file by parsing and applying its statements. -// It handles three types of content in migration files: -// - SQL statements: executed against the database -// - Callback commands: processed via registered callback handlers (format: -- CALL function_name;) -// - Regular comments: silently skipped (format: -- any comment text) -// -// The function maintains migration state by tracking the number of completed statements, -// allowing for resumption of partially completed migrations. -// -// Parameters: -// - ctx: context for cancellation and timeouts -// - session: database session for executing statements -// - f: filesystem containing the migration file -// - path: path to the migration file within the filesystem -// - done: number of statements already completed (for resuming partial migrations) -// -// Returns an error if the migration fails at any point. -func applyMigration(ctx context.Context, session gocqlx.Session, f fs.FS, path string, done int) error { - file, err := f.Open(path) - if err != nil { - return err - } - - b, err := io.ReadAll(file) - _ = file.Close() - if err != nil { - return err - } - - info := Info{ - Name: filepath.Base(path), - StartTime: time.Now(), - Checksum: checksum(b), - } - - stmt, names := qb.Insert("gocqlx_migrate").Columns( - "name", - "checksum", - "done", - "start_time", - "end_time", - ).ToCql() - - update := session.ContextQuery(ctx, stmt, names) - defer update.Release() - - if DefaultAwaitSchemaAgreement.ShouldAwait(AwaitSchemaAgreementBeforeEachFile) { - if err = session.AwaitSchemaAgreement(ctx); err != nil { - return fmt.Errorf("awaiting schema agreement: %s", err) - } - } - - i := 0 - r := bytes.NewBuffer(b) - for { - stmt, err := r.ReadString(';') - if err == io.EOF { - if strings.TrimSpace(stmt) != "" { - // handle missing semicolon after last statement - err = nil - } else { - break - } - } - if err != nil { - return err - } - i++ - - if i <= done { - continue - } - - if Callback != nil && i == 1 { - if err := Callback(ctx, session, BeforeMigration, info.Name); err != nil { - return fmt.Errorf("before migration callback: %s", err) - } - } - - if DefaultAwaitSchemaAgreement.ShouldAwait(AwaitSchemaAgreementBeforeEachStatement) { - if err = session.AwaitSchemaAgreement(ctx); err != nil { - return fmt.Errorf("awaiting schema agreement: %s", err) - } - } - - // trim new lines and all whitespace characters - stmt = strings.TrimSpace(stmt) - - // Process statement based on its type - if cb := isCallback(stmt); cb != "" { - // Handle callback commands (e.g., "-- CALL function_name;") - if Callback == nil { - return fmt.Errorf("statement %d: missing callback handler while trying to call %s", i, cb) - } - if err := Callback(ctx, session, CallComment, cb); err != nil { - return fmt.Errorf("callback %s: %s", cb, err) - } - } else if stmt != "" && !isComment(stmt) { - // Execute SQL statements (skip empty statements and comments) - q := session.ContextQuery(ctx, stmt, nil).RetryPolicy(nil) - if err := q.ExecRelease(); err != nil { - return fmt.Errorf("statement %d: %s", i, err) - } - } - // Regular comments and empty statements are silently skipped - - // update info - info.Done = i - info.EndTime = time.Now() - if err := update.BindStruct(info).Exec(); err != nil { - return fmt.Errorf("migration statement %d: %s", i, err) - } - } - if i == 0 { - return fmt.Errorf("no migration statements found in %q", info.Name) - } - - if Callback != nil && i > done { - if err := Callback(ctx, session, AfterMigration, info.Name); err != nil { - return fmt.Errorf("after migration callback: %s", err) - } - } - - return nil -} - -var cbRegexp = regexp.MustCompile("^-- *CALL +(.+);$") - -func isCallback(stmt string) (name string) { - s := cbRegexp.FindStringSubmatch(stmt) - if len(s) == 0 { - return "" - } - return s[1] -} - -// isComment returns true if the statement is a SQL comment that should be ignored. -// It distinguishes between regular comments (which should be skipped) and -// callback commands (which should be processed). -func isComment(stmt string) bool { - return strings.HasPrefix(stmt, "--") && isCallback(stmt) == "" -} diff --git a/migrate/migrate_test.go b/migrate/migrate_test.go deleted file mode 100644 index 359dc48..0000000 --- a/migrate/migrate_test.go +++ /dev/null @@ -1,407 +0,0 @@ -// Copyright (C) 2017 ScyllaDB -// Use of this source code is governed by a ALv2-style -// license that can be found in the LICENSE file. - -//go:build all || integration -// +build all integration - -package migrate_test - -import ( - "context" - "fmt" - "io/fs" - "strings" - "testing" - - "github.com/psanford/memfs" - - "github.com/scylladb/gocqlx/v3" - "github.com/scylladb/gocqlx/v3/gocqlxtest" - "github.com/scylladb/gocqlx/v3/migrate" -) - -var migrateSchema = ` -CREATE TABLE IF NOT EXISTS gocqlx_test.migrate_table ( - testint int, - testuuid timeuuid, - PRIMARY KEY(testint, testuuid) -) -` - -var insertMigrate = `INSERT INTO gocqlx_test.migrate_table (testint, testuuid) VALUES (%d, now())` - -func recreateTables(tb testing.TB, session gocqlx.Session) { - tb.Helper() - - if err := session.ExecStmt("DROP TABLE IF EXISTS gocqlx_test.gocqlx_migrate"); err != nil { - tb.Fatal(err) - } - if err := session.ExecStmt(migrateSchema); err != nil { - tb.Fatal(err) - } - if err := session.ExecStmt("TRUNCATE gocqlx_test.migrate_table"); err != nil { - tb.Fatal(err) - } -} - -func TestPending(t *testing.T) { - session := gocqlxtest.CreateSession(t) - defer session.Close() - recreateTables(t, session) - - ctx := context.Background() - - t.Run("pending", func(t *testing.T) { - defer recreateTables(t, session) - - f := memfs.New() - writeFile(t, f, 0, fmt.Sprintf(insertMigrate, 0)+";") - - pending, err := migrate.Pending(ctx, session, f) - if err != nil { - t.Fatal(err) - } - if len(pending) != 1 { - t.Fatal("expected 2 pending migrations got", len(pending)) - } - - err = migrate.FromFS(ctx, session, f) - if err != nil { - t.Fatal(err) - } - - pending, err = migrate.Pending(ctx, session, f) - if err != nil { - t.Fatal(err) - } - if len(pending) != 0 { - t.Fatal("expected no pending migrations got", len(pending)) - } - - for i := 1; i < 3; i++ { - writeFile(t, f, i, fmt.Sprintf(insertMigrate, i)+";") - } - - pending, err = migrate.Pending(ctx, session, f) - if err != nil { - t.Fatal(err) - } - if len(pending) != 2 { - t.Fatal("expected 2 pending migrations got", len(pending)) - } - }) -} - -func TestMigration(t *testing.T) { - session := gocqlxtest.CreateSession(t) - defer session.Close() - recreateTables(t, session) - - ctx := context.Background() - - t.Run("init", func(t *testing.T) { - if err := migrate.FromFS(ctx, session, makeTestFS(t, 2)); err != nil { - t.Fatal(err) - } - if c := countMigrations(t, session); c != 2 { - t.Fatal("expected 2 migration got", c) - } - }) - - t.Run("update", func(t *testing.T) { - if err := migrate.FromFS(ctx, session, makeTestFS(t, 4)); err != nil { - t.Fatal(err) - } - if c := countMigrations(t, session); c != 4 { - t.Fatal("expected 4 migration got", c) - } - }) - - t.Run("ahead", func(t *testing.T) { - err := migrate.FromFS(ctx, session, makeTestFS(t, 2)) - if err == nil || !strings.Contains(err.Error(), "ahead") { - t.Fatal("expected error") - } else { - t.Log(err) - } - }) - - t.Run("tempered with file", func(t *testing.T) { - f := makeTestFS(t, 4) - writeFile(t, f, 3, "SELECT * FROM bla;") - - if err := migrate.FromFS(ctx, session, f); err == nil || !strings.Contains(err.Error(), "tampered") { - t.Fatal("expected error") - } else { - t.Log(err) - } - }) -} - -func TestMigrationNoSemicolon(t *testing.T) { - session := gocqlxtest.CreateSession(t) - defer session.Close() - recreateTables(t, session) - - if err := session.ExecStmt(migrateSchema); err != nil { - t.Fatal(err) - } - - f := makeTestFS(t, 0) - err := f.WriteFile("0.cql", []byte(fmt.Sprintf(insertMigrate, 0)+";"+fmt.Sprintf(insertMigrate, 1)), fs.ModePerm) - if err != nil { - t.Fatal(err) - } - - ctx := context.Background() - if err := migrate.FromFS(ctx, session, f); err != nil { - t.Fatal(err) - } - if c := countMigrations(t, session); c != 2 { - t.Fatal("expected 2 migration got", c) - } -} - -func TestMigrationWithTrailingComment(t *testing.T) { - session := gocqlxtest.CreateSession(t) - defer session.Close() - recreateTables(t, session) - - if err := session.ExecStmt(migrateSchema); err != nil { - t.Fatal(err) - } - - f := makeTestFS(t, 0) - // Create a migration with a trailing comment (this should reproduce the issue) - migrationContent := fmt.Sprintf(insertMigrate, 0) + "; -- ttl 1 hour" - err := f.WriteFile("0.cql", []byte(migrationContent), fs.ModePerm) - if err != nil { - t.Fatal(err) - } - - ctx := context.Background() - if err := migrate.FromFS(ctx, session, f); err != nil { - t.Fatal("Migration should succeed with trailing comment, but got error:", err) - } - if c := countMigrations(t, session); c != 1 { - t.Fatal("expected 1 migration got", c) - } -} - -func TestIsCallback(t *testing.T) { - table := []struct { - Name string - Stmt string - Cb string - }{ - { - Name: "CQL statement", - Stmt: "SELECT * from X;", - }, - { - Name: "CQL comment", - Stmt: "-- Item", - }, - { - Name: "CALL without space", - Stmt: "--CALL Foo;", - Cb: "Foo", - }, - { - Name: "CALL with space", - Stmt: "-- CALL Foo;", - Cb: "Foo", - }, - { - Name: "CALL with many spaces", - Stmt: "-- CALL Foo;", - Cb: "Foo", - }, - { - Name: "CALL with many spaces 2", - Stmt: "-- CALL Foo;", - Cb: "Foo", - }, - { - Name: "CALL with unicode", - Stmt: "-- CALL α;", - Cb: "α", - }, - } - - for i := range table { - test := table[i] - t.Run(test.Name, func(t *testing.T) { - if migrate.IsCallback(test.Stmt) != test.Cb { - t.Errorf("IsCallback(%s)=%s, expected %s", test.Stmt, migrate.IsCallback(test.Stmt), test.Cb) - } - }) - } -} - -func TestIsComment(t *testing.T) { - table := []struct { - Name string - Stmt string - IsComment bool - }{ - { - Name: "CQL statement", - Stmt: "SELECT * from X;", - IsComment: false, - }, - { - Name: "Regular comment", - Stmt: "-- This is a comment", - IsComment: true, - }, - { - Name: "Comment with additional text", - Stmt: "-- ttl 1 hour", - IsComment: true, - }, - { - Name: "Callback command (not a regular comment)", - Stmt: "-- CALL Foo;", - IsComment: false, - }, - { - Name: "Callback with spaces (not a regular comment)", - Stmt: "-- CALL Bar;", - IsComment: false, - }, - { - Name: "Empty statement", - Stmt: "", - IsComment: false, - }, - { - Name: "Whitespace only", - Stmt: " ", - IsComment: false, - }, - } - - for i := range table { - test := table[i] - t.Run(test.Name, func(t *testing.T) { - result := migrate.IsComment(test.Stmt) - if result != test.IsComment { - t.Errorf("IsComment(%q) = %v, expected %v", test.Stmt, result, test.IsComment) - } - }) - } -} - -func TestMigrationCallback(t *testing.T) { - var ( - beforeCalled int - afterCalled int - inCalled int - ) - migrate.Callback = func(ctx context.Context, session gocqlx.Session, ev migrate.CallbackEvent, name string) error { - switch ev { - case migrate.BeforeMigration: - beforeCalled++ - case migrate.AfterMigration: - afterCalled++ - case migrate.CallComment: - inCalled++ - } - return nil - } - - defer func() { - migrate.Callback = nil - }() - - reset := func() { - beforeCalled = 0 - afterCalled = 0 - inCalled = 0 - } - - assertCallbacks := func(t *testing.T, before, afer, in int) { - t.Helper() - - if beforeCalled != before { - t.Fatalf("expected %d before calls got %d", before, beforeCalled) - } - if afterCalled != afer { - t.Fatalf("expected %d after calls got %d", afer, afterCalled) - } - if inCalled != in { - t.Fatalf("expected %d in calls got %d", in, inCalled) - } - } - - session := gocqlxtest.CreateSession(t) - defer session.Close() - recreateTables(t, session) - - if err := session.ExecStmt(migrateSchema); err != nil { - t.Fatal(err) - } - - ctx := context.Background() - - t.Run("init", func(t *testing.T) { - f := makeTestFS(t, 2) - reset() - - if err := migrate.FromFS(ctx, session, f); err != nil { - t.Fatal(err) - } - assertCallbacks(t, 2, 2, 0) - }) - - t.Run("no duplicate calls", func(t *testing.T) { - f := makeTestFS(t, 4) - reset() - - if err := migrate.FromFS(ctx, session, f); err != nil { - t.Fatal(err) - } - assertCallbacks(t, 2, 2, 0) - }) - - t.Run("in calls", func(t *testing.T) { - f := makeTestFS(t, 4) - writeFile(t, f, 4, "\n-- CALL Foo;\n") - writeFile(t, f, 5, "\n-- CALL Bar;\n") - reset() - - if err := migrate.FromFS(ctx, session, f); err != nil { - t.Fatal(err) - } - assertCallbacks(t, 2, 2, 2) - }) -} - -func countMigrations(tb testing.TB, session gocqlx.Session) int { - tb.Helper() - - var v int - if err := session.Query("SELECT COUNT(*) FROM gocqlx_test.migrate_table", nil).Get(&v); err != nil { - tb.Fatal(err) - } - return v -} - -func makeTestFS(tb testing.TB, n int) *memfs.FS { - tb.Helper() - f := memfs.New() - for i := 0; i < n; i++ { - writeFile(tb, f, i, fmt.Sprintf(insertMigrate, i)+";") - } - return f -} - -func writeFile(tb testing.TB, f *memfs.FS, i int, text string) { - tb.Helper() - err := f.WriteFile(fmt.Sprint(i, ".cql"), []byte(text), fs.ModePerm) - if err != nil { - tb.Fatal(err) - } -} diff --git a/migrate/testdata/file b/migrate/testdata/file deleted file mode 100644 index f73f309..0000000 --- a/migrate/testdata/file +++ /dev/null @@ -1 +0,0 @@ -file diff --git a/queryx.go b/queryx.go index cc8efb3..3c2b5ea 100644 --- a/queryx.go +++ b/queryx.go @@ -12,7 +12,7 @@ import ( "strconv" "time" - "github.com/gocql/gocql" + gocql "github.com/apache/cassandra-gocql-driver/v2" "github.com/scylladb/go-reflectx" ) @@ -99,6 +99,8 @@ type Queryx struct { strict bool } +func (q *Queryx) Release() {} + // Query creates a new Queryx from gocql.Query using a default mapper. // // Deprecated: Use gocqlx.Session.Query API instead. @@ -151,13 +153,13 @@ func (q *Queryx) BindStructMap(arg0 interface{}, arg1 map[string]interface{}) *Q // GetRequestTimeout returns time driver waits for single server response // This timeout is applied to preparing statement request and for query execution requests func (q *Queryx) GetRequestTimeout() time.Duration { - return q.Query.GetRequestTimeout() + return 0 } // SetRequestTimeout sets time driver waits for server to respond // This timeout is applied to preparing statement request and for query execution requests func (q *Queryx) SetRequestTimeout(timeout time.Duration) *Queryx { - q.Query.SetRequestTimeout(timeout) + // q.Query.SetRequestTimeout(timeout) return q } diff --git a/queryx_bench_test.go b/queryx_bench_test.go index 863da48..69073be 100644 --- a/queryx_bench_test.go +++ b/queryx_bench_test.go @@ -7,7 +7,7 @@ package gocqlx_test import ( "testing" - "github.com/gocql/gocql" + gocql "github.com/apache/cassandra-gocql-driver/v2" "github.com/scylladb/gocqlx/v3" ) diff --git a/queryx_test.go b/queryx_test.go index 46418ff..476e346 100644 --- a/queryx_test.go +++ b/queryx_test.go @@ -8,7 +8,7 @@ import ( "reflect" "testing" - "github.com/gocql/gocql" + gocql "github.com/apache/cassandra-gocql-driver/v2" "github.com/google/go-cmp/cmp" ) diff --git a/queryx_wrap.go b/queryx_wrap.go index 08a98df..d15fc9e 100644 --- a/queryx_wrap.go +++ b/queryx_wrap.go @@ -7,7 +7,7 @@ package gocqlx import ( "context" - "github.com/gocql/gocql" + gocql "github.com/apache/cassandra-gocql-driver/v2" ) // This file contains wrappers around gocql.Query that make Queryx expose the diff --git a/session.go b/session.go index ea92478..fdefaf6 100644 --- a/session.go +++ b/session.go @@ -7,7 +7,7 @@ package gocqlx import ( "context" - "github.com/gocql/gocql" + gocql "github.com/apache/cassandra-gocql-driver/v2" "github.com/scylladb/go-reflectx" ) diff --git a/testdata/people.json b/testdata/people.json deleted file mode 100644 index 035e6d4..0000000 --- a/testdata/people.json +++ /dev/null @@ -1,8002 +0,0 @@ -[ - { - "id": 1, - "first_name": "Aindrea", - "last_name": "Clendening", - "email": ["aclendening0@noaa.gov"], - "gender": "Female", - "ip_address": "103.151.248.132" - }, - { - "id": 2, - "first_name": "Bree", - "last_name": "Boutwell", - "email": ["bboutwell1@qq.com"], - "gender": "Female", - "ip_address": "102.164.227.120" - }, - { - "id": 3, - "first_name": "Trixy", - "last_name": "Kilfether", - "email": ["tkilfether2@woothemes.com"], - "gender": "Female", - "ip_address": "71.24.31.14" - }, - { - "id": 4, - "first_name": "Thurstan", - "last_name": "Dring", - "email": ["tdring3@goodreads.com"], - "gender": "Male", - "ip_address": "66.64.246.197" - }, - { - "id": 5, - "first_name": "Feliza", - "last_name": "Bootton", - "email": ["fbootton4@spotify.com"], - "gender": "Female", - "ip_address": "160.167.128.228" - }, - { - "id": 6, - "first_name": "Pippo", - "last_name": "Berthouloume", - "email": ["pberthouloume5@cnet.com"], - "gender": "Male", - "ip_address": "132.85.82.210" - }, - { - "id": 7, - "first_name": "Sandra", - "last_name": "Abotson", - "email": ["sabotson6@shinystat.com"], - "gender": "Female", - "ip_address": "230.170.158.94" - }, - { - "id": 8, - "first_name": "Janeta", - "last_name": "Moynham", - "email": ["jmoynham7@oaic.gov.au"], - "gender": "Female", - "ip_address": "126.247.217.251" - }, - { - "id": 9, - "first_name": "Ara", - "last_name": "Diboll", - "email": ["adiboll8@economist.com"], - "gender": "Male", - "ip_address": "96.240.30.19" - }, - { - "id": 10, - "first_name": "Daffy", - "last_name": "Sporton", - "email": ["dsporton9@soup.io"], - "gender": "Female", - "ip_address": "79.182.216.107" - }, - { - "id": 11, - "first_name": "Susannah", - "last_name": "Larn", - "email": ["slarna@squidoo.com"], - "gender": "Female", - "ip_address": "173.119.19.106" - }, - { - "id": 12, - "first_name": "Effie", - "last_name": "Jeram", - "email": ["ejeramb@springer.com"], - "gender": "Female", - "ip_address": "212.8.128.35" - }, - { - "id": 13, - "first_name": "Faith", - "last_name": "Musson", - "email": ["fmussonc@free.fr"], - "gender": "Female", - "ip_address": "103.148.208.199" - }, - { - "id": 14, - "first_name": "Stacy", - "last_name": "Sheards", - "email": ["ssheardsd@telegraph.co.uk"], - "gender": "Male", - "ip_address": "36.64.112.230" - }, - { - "id": 15, - "first_name": "Cornelle", - "last_name": "Joncic", - "email": ["cjoncice@behance.net"], - "gender": "Female", - "ip_address": "206.193.220.80" - }, - { - "id": 16, - "first_name": "Glenna", - "last_name": "Hold", - "email": ["gholdf@dedecms.com"], - "gender": "Female", - "ip_address": "115.41.96.67" - }, - { - "id": 17, - "first_name": "Jackie", - "last_name": "Shotter", - "email": ["jshotterg@skype.com"], - "gender": "Male", - "ip_address": "40.246.33.169" - }, - { - "id": 18, - "first_name": "Alexandro", - "last_name": "Menico", - "email": ["amenicoh@4shared.com"], - "gender": "Male", - "ip_address": "150.125.6.214" - }, - { - "id": 19, - "first_name": "Elli", - "last_name": "Fills", - "email": ["efillsi@soup.io"], - "gender": "Female", - "ip_address": "201.248.48.94" - }, - { - "id": 20, - "first_name": "Sebastiano", - "last_name": "Scarf", - "email": ["sscarfj@1688.com"], - "gender": "Male", - "ip_address": "188.162.43.64" - }, - { - "id": 21, - "first_name": "Esra", - "last_name": "Cazereau", - "email": ["ecazereauk@github.com"], - "gender": "Male", - "ip_address": "30.97.41.32" - }, - { - "id": 22, - "first_name": "Bertina", - "last_name": "Balentyne", - "email": ["bbalentynel@tinyurl.com"], - "gender": "Female", - "ip_address": "152.143.103.32" - }, - { - "id": 23, - "first_name": "Quentin", - "last_name": "Merit", - "email": ["qmeritm@discovery.com"], - "gender": "Female", - "ip_address": "220.35.161.99" - }, - { - "id": 24, - "first_name": "Saloma", - "last_name": "Sympson", - "email": ["ssympsonn@ucoz.com"], - "gender": "Female", - "ip_address": "226.24.97.78" - }, - { - "id": 25, - "first_name": "Emmye", - "last_name": "Matyashev", - "email": ["ematyashevo@sphinn.com"], - "gender": "Female", - "ip_address": "225.188.67.5" - }, - { - "id": 26, - "first_name": "Bobette", - "last_name": "Craigg", - "email": ["bcraiggp@walmart.com"], - "gender": "Female", - "ip_address": "48.137.67.216" - }, - { - "id": 27, - "first_name": "Ileana", - "last_name": "Kingston", - "email": ["ikingstonq@netscape.com"], - "gender": "Female", - "ip_address": "60.184.165.195" - }, - { - "id": 28, - "first_name": "Nathan", - "last_name": "Schrinel", - "email": ["nschrinelr@businessinsider.com"], - "gender": "Male", - "ip_address": "80.87.246.33" - }, - { - "id": 29, - "first_name": "Donia", - "last_name": "Wile", - "email": ["dwiles@over-blog.com"], - "gender": "Female", - "ip_address": "206.244.77.217" - }, - { - "id": 30, - "first_name": "Kimmi", - "last_name": "Shiril", - "email": ["kshirilt@nasa.gov"], - "gender": "Female", - "ip_address": "230.165.197.60" - }, - { - "id": 31, - "first_name": "Cos", - "last_name": "Stripling", - "email": ["cstriplingu@nationalgeographic.com"], - "gender": "Male", - "ip_address": "64.68.218.222" - }, - { - "id": 32, - "first_name": "Kyrstin", - "last_name": "Ramalhete", - "email": ["kramalhetev@dyndns.org"], - "gender": "Female", - "ip_address": "192.83.232.225" - }, - { - "id": 33, - "first_name": "Gage", - "last_name": "McGrah", - "email": ["gmcgrahw@wiley.com"], - "gender": "Male", - "ip_address": "81.10.115.187" - }, - { - "id": 34, - "first_name": "Fleurette", - "last_name": "Seiler", - "email": ["fseilerx@deliciousdays.com"], - "gender": "Female", - "ip_address": "189.39.33.102" - }, - { - "id": 35, - "first_name": "Minna", - "last_name": "Alpine", - "email": ["malpiney@sciencedaily.com"], - "gender": "Female", - "ip_address": "237.125.42.1" - }, - { - "id": 36, - "first_name": "Charlotta", - "last_name": "Trevains", - "email": ["ctrevainsz@ucoz.ru"], - "gender": "Female", - "ip_address": "26.52.180.190" - }, - { - "id": 37, - "first_name": "Sophie", - "last_name": "Itskovitz", - "email": ["sitskovitz10@dmoz.org"], - "gender": "Female", - "ip_address": "207.180.9.214" - }, - { - "id": 38, - "first_name": "Riccardo", - "last_name": "Surphliss", - "email": ["rsurphliss11@weebly.com"], - "gender": "Male", - "ip_address": "114.42.158.143" - }, - { - "id": 39, - "first_name": "Corny", - "last_name": "Dahlbom", - "email": ["cdahlbom12@wordpress.org"], - "gender": "Male", - "ip_address": "255.240.224.188" - }, - { - "id": 40, - "first_name": "Lynn", - "last_name": "Richel", - "email": ["lrichel13@comsenz.com"], - "gender": "Female", - "ip_address": "140.5.149.76" - }, - { - "id": 41, - "first_name": "Neils", - "last_name": "Wandrey", - "email": ["nwandrey14@uiuc.edu"], - "gender": "Male", - "ip_address": "238.111.141.230" - }, - { - "id": 42, - "first_name": "Colet", - "last_name": "Shingfield", - "email": ["cshingfield15@bandcamp.com"], - "gender": "Male", - "ip_address": "22.47.183.33" - }, - { - "id": 43, - "first_name": "Ericha", - "last_name": "Garmans", - "email": ["egarmans16@cbsnews.com"], - "gender": "Female", - "ip_address": "88.133.192.69" - }, - { - "id": 44, - "first_name": "Estelle", - "last_name": "Casbourne", - "email": ["ecasbourne17@xrea.com"], - "gender": "Female", - "ip_address": "253.120.58.194" - }, - { - "id": 45, - "first_name": "Chrisy", - "last_name": "Sobieski", - "email": ["csobieski18@de.vu"], - "gender": "Male", - "ip_address": "59.167.31.128" - }, - { - "id": 46, - "first_name": "Melva", - "last_name": "Donson", - "email": ["mdonson19@timesonline.co.uk"], - "gender": "Female", - "ip_address": "209.131.132.33" - }, - { - "id": 47, - "first_name": "Alister", - "last_name": "Cloy", - "email": ["acloy1a@ning.com"], - "gender": "Male", - "ip_address": "9.136.252.253" - }, - { - "id": 48, - "first_name": "Samson", - "last_name": "Tonnesen", - "email": ["stonnesen1b@jalbum.net"], - "gender": "Male", - "ip_address": "177.39.142.44" - }, - { - "id": 49, - "first_name": "Dallas", - "last_name": "Vankeev", - "email": ["dvankeev1c@bbc.co.uk"], - "gender": "Male", - "ip_address": "108.254.187.25" - }, - { - "id": 50, - "first_name": "Zackariah", - "last_name": "Hallibone", - "email": ["zhallibone1d@berkeley.edu"], - "gender": "Male", - "ip_address": "221.47.54.21" - }, - { - "id": 51, - "first_name": "Farica", - "last_name": "Sermin", - "email": ["fsermin1e@tmall.com"], - "gender": "Female", - "ip_address": "62.20.209.4" - }, - { - "id": 52, - "first_name": "Heidi", - "last_name": "Bloschke", - "email": ["hbloschke1f@zdnet.com"], - "gender": "Female", - "ip_address": "174.121.95.67" - }, - { - "id": 53, - "first_name": "Ed", - "last_name": "McAulay", - "email": ["emcaulay1g@dedecms.com"], - "gender": "Male", - "ip_address": "192.107.178.204" - }, - { - "id": 54, - "first_name": "Randa", - "last_name": "Beeby", - "email": ["rbeeby1h@mayoclinic.com"], - "gender": "Female", - "ip_address": "37.92.98.80" - }, - { - "id": 55, - "first_name": "Artemis", - "last_name": "Beales", - "email": ["abeales1i@networksolutions.com"], - "gender": "Male", - "ip_address": "19.78.108.62" - }, - { - "id": 56, - "first_name": "Karina", - "last_name": "Lansdowne", - "email": ["klansdowne1j@hexun.com"], - "gender": "Female", - "ip_address": "4.118.193.48" - }, - { - "id": 57, - "first_name": "Maire", - "last_name": "Blondelle", - "email": ["mblondelle1k@time.com"], - "gender": "Female", - "ip_address": "155.212.76.4" - }, - { - "id": 58, - "first_name": "Wilmar", - "last_name": "Kinsman", - "email": ["wkinsman1l@omniture.com"], - "gender": "Male", - "ip_address": "241.134.116.79" - }, - { - "id": 59, - "first_name": "Dorena", - "last_name": "Filchakov", - "email": ["dfilchakov1m@samsung.com"], - "gender": "Female", - "ip_address": "245.182.173.180" - }, - { - "id": 60, - "first_name": "Cari", - "last_name": "Kenafaque", - "email": ["ckenafaque1n@globo.com"], - "gender": "Female", - "ip_address": "33.181.94.138" - }, - { - "id": 61, - "first_name": "Mirabella", - "last_name": "Sheirlaw", - "email": ["msheirlaw1o@sourceforge.net"], - "gender": "Female", - "ip_address": "112.221.183.175" - }, - { - "id": 62, - "first_name": "Kirbee", - "last_name": "McPhilip", - "email": ["kmcphilip1p@ustream.tv"], - "gender": "Female", - "ip_address": "70.39.118.175" - }, - { - "id": 63, - "first_name": "Uriah", - "last_name": "Blackden", - "email": ["ublackden1q@abc.net.au"], - "gender": "Male", - "ip_address": "41.167.138.19" - }, - { - "id": 64, - "first_name": "Rebekah", - "last_name": "Pearne", - "email": ["rpearne1r@macromedia.com"], - "gender": "Female", - "ip_address": "93.8.147.179" - }, - { - "id": 65, - "first_name": "Candide", - "last_name": "Leadbeater", - "email": ["cleadbeater1s@marketwatch.com"], - "gender": "Female", - "ip_address": "74.17.3.30" - }, - { - "id": 66, - "first_name": "Sly", - "last_name": "MacKay", - "email": ["smackay1t@patch.com"], - "gender": "Male", - "ip_address": "124.223.85.154" - }, - { - "id": 67, - "first_name": "Izak", - "last_name": "Gillhespy", - "email": ["igillhespy1u@indiatimes.com"], - "gender": "Male", - "ip_address": "235.189.247.194" - }, - { - "id": 68, - "first_name": "Benetta", - "last_name": "Strathern", - "email": ["bstrathern1v@google.nl"], - "gender": "Female", - "ip_address": "138.9.170.70" - }, - { - "id": 69, - "first_name": "Lou", - "last_name": "Kernan", - "email": ["lkernan1w@nba.com"], - "gender": "Male", - "ip_address": "115.175.233.62" - }, - { - "id": 70, - "first_name": "Shell", - "last_name": "Klimpke", - "email": ["sklimpke1x@clickbank.net"], - "gender": "Female", - "ip_address": "122.69.15.119" - }, - { - "id": 71, - "first_name": "Chevalier", - "last_name": "Spiring", - "email": ["cspiring1y@howstuffworks.com"], - "gender": "Male", - "ip_address": "103.160.111.63" - }, - { - "id": 72, - "first_name": "Basilius", - "last_name": "Dregan", - "email": ["bdregan1z@narod.ru"], - "gender": "Male", - "ip_address": "115.134.119.86" - }, - { - "id": 73, - "first_name": "Constantino", - "last_name": "Songist", - "email": ["csongist20@networksolutions.com"], - "gender": "Male", - "ip_address": "48.117.9.229" - }, - { - "id": 74, - "first_name": "Yule", - "last_name": "Gemelli", - "email": ["ygemelli21@google.fr"], - "gender": "Male", - "ip_address": "77.94.8.242" - }, - { - "id": 75, - "first_name": "Bette", - "last_name": "Haburne", - "email": ["bhaburne22@nyu.edu"], - "gender": "Female", - "ip_address": "234.231.59.185" - }, - { - "id": 76, - "first_name": "Aridatha", - "last_name": "Ortmann", - "email": ["aortmann23@google.cn"], - "gender": "Female", - "ip_address": "192.196.139.148" - }, - { - "id": 77, - "first_name": "Koenraad", - "last_name": "Skouling", - "email": ["kskouling24@chicagotribune.com"], - "gender": "Male", - "ip_address": "57.245.25.161" - }, - { - "id": 78, - "first_name": "Debee", - "last_name": "Heinel", - "email": ["dheinel25@163.com"], - "gender": "Female", - "ip_address": "211.171.90.196" - }, - { - "id": 79, - "first_name": "Yanaton", - "last_name": "Bampford", - "email": ["ybampford26@umich.edu"], - "gender": "Male", - "ip_address": "160.120.204.37" - }, - { - "id": 80, - "first_name": "Madelena", - "last_name": "Shapiro", - "email": ["mshapiro27@dot.gov"], - "gender": "Female", - "ip_address": "50.142.213.208" - }, - { - "id": 81, - "first_name": "Phyllis", - "last_name": "Mullord", - "email": ["pmullord28@cpanel.net"], - "gender": "Female", - "ip_address": "112.12.59.29" - }, - { - "id": 82, - "first_name": "Kalle", - "last_name": "Hobbing", - "email": ["khobbing29@imdb.com"], - "gender": "Male", - "ip_address": "180.217.243.50" - }, - { - "id": 83, - "first_name": "Gwenny", - "last_name": "Gilling", - "email": ["ggilling2a@redcross.org"], - "gender": "Female", - "ip_address": "27.190.145.201" - }, - { - "id": 84, - "first_name": "Krishnah", - "last_name": "Roxbee", - "email": ["kroxbee2b@squidoo.com"], - "gender": "Male", - "ip_address": "248.22.113.29" - }, - { - "id": 85, - "first_name": "Ewell", - "last_name": "Wenden", - "email": ["ewenden2c@gnu.org"], - "gender": "Male", - "ip_address": "141.54.214.212" - }, - { - "id": 86, - "first_name": "Lorette", - "last_name": "Summerson", - "email": ["lsummerson2d@is.gd"], - "gender": "Female", - "ip_address": "106.232.234.194" - }, - { - "id": 87, - "first_name": "Adrienne", - "last_name": "Sidle", - "email": ["asidle2e@google.com.br"], - "gender": "Female", - "ip_address": "11.98.165.214" - }, - { - "id": 88, - "first_name": "Jeralee", - "last_name": "Rhyme", - "email": ["jrhyme2f@merriam-webster.com"], - "gender": "Female", - "ip_address": "124.194.137.55" - }, - { - "id": 89, - "first_name": "Bald", - "last_name": "Misselbrook", - "email": ["bmisselbrook2g@umn.edu"], - "gender": "Male", - "ip_address": "158.207.244.121" - }, - { - "id": 90, - "first_name": "Letitia", - "last_name": "Bum", - "email": ["lbum2h@soup.io"], - "gender": "Female", - "ip_address": "213.51.147.44" - }, - { - "id": 91, - "first_name": "Cristian", - "last_name": "Elsley", - "email": ["celsley2i@lulu.com"], - "gender": "Male", - "ip_address": "239.235.248.227" - }, - { - "id": 92, - "first_name": "Archy", - "last_name": "Cornau", - "email": ["acornau2j@cmu.edu"], - "gender": "Male", - "ip_address": "25.15.177.91" - }, - { - "id": 93, - "first_name": "Abelard", - "last_name": "Brozek", - "email": ["abrozek2k@globo.com"], - "gender": "Male", - "ip_address": "67.24.100.77" - }, - { - "id": 94, - "first_name": "Bentley", - "last_name": "Tole", - "email": ["btole2l@pinterest.com"], - "gender": "Male", - "ip_address": "206.87.52.99" - }, - { - "id": 95, - "first_name": "Kevina", - "last_name": "McLeod", - "email": ["kmcleod2m@webmd.com"], - "gender": "Female", - "ip_address": "51.219.154.53" - }, - { - "id": 96, - "first_name": "Esra", - "last_name": "Garard", - "email": ["egarard2n@bbb.org"], - "gender": "Male", - "ip_address": "185.17.153.124" - }, - { - "id": 97, - "first_name": "Tyrus", - "last_name": "Wellsman", - "email": ["twellsman2o@slate.com"], - "gender": "Male", - "ip_address": "154.143.131.149" - }, - { - "id": 98, - "first_name": "Lannie", - "last_name": "Shreenan", - "email": ["lshreenan2p@exblog.jp"], - "gender": "Male", - "ip_address": "116.95.14.51" - }, - { - "id": 99, - "first_name": "Shane", - "last_name": "Godsmark", - "email": ["sgodsmark2q@nsw.gov.au"], - "gender": "Female", - "ip_address": "255.81.235.11" - }, - { - "id": 100, - "first_name": "Nickie", - "last_name": "Sidry", - "email": ["nsidry2r@auda.org.au"], - "gender": "Male", - "ip_address": "158.46.159.130" - }, - { - "id": 101, - "first_name": "Emmalyn", - "last_name": "Methven", - "email": ["emethven2s@opensource.org"], - "gender": "Female", - "ip_address": "28.162.145.49" - }, - { - "id": 102, - "first_name": "Whittaker", - "last_name": "Michal", - "email": ["wmichal2t@friendfeed.com"], - "gender": "Male", - "ip_address": "50.134.102.125" - }, - { - "id": 103, - "first_name": "Gabbie", - "last_name": "Nowaczyk", - "email": ["gnowaczyk2u@canalblog.com"], - "gender": "Male", - "ip_address": "188.165.75.166" - }, - { - "id": 104, - "first_name": "Othelia", - "last_name": "Wattam", - "email": ["owattam2v@csmonitor.com"], - "gender": "Female", - "ip_address": "37.65.70.181" - }, - { - "id": 105, - "first_name": "Ryun", - "last_name": "Kemmett", - "email": ["rkemmett2w@blogspot.com"], - "gender": "Male", - "ip_address": "225.125.63.38" - }, - { - "id": 106, - "first_name": "Rosanne", - "last_name": "Pomroy", - "email": ["rpomroy2x@google.ru"], - "gender": "Female", - "ip_address": "112.92.225.121" - }, - { - "id": 107, - "first_name": "Brendon", - "last_name": "Shufflebotham", - "email": ["bshufflebotham2y@samsung.com"], - "gender": "Male", - "ip_address": "148.126.145.105" - }, - { - "id": 108, - "first_name": "Doralyn", - "last_name": "Willgoss", - "email": ["dwillgoss2z@google.com.au"], - "gender": "Female", - "ip_address": "158.13.236.137" - }, - { - "id": 109, - "first_name": "Lishe", - "last_name": "Sam", - "email": ["lsam30@php.net"], - "gender": "Female", - "ip_address": "126.228.246.42" - }, - { - "id": 110, - "first_name": "Dory", - "last_name": "Cobon", - "email": ["dcobon31@pagesperso-orange.fr"], - "gender": "Male", - "ip_address": "221.24.195.42" - }, - { - "id": 111, - "first_name": "Dal", - "last_name": "Copyn", - "email": ["dcopyn32@blogspot.com"], - "gender": "Male", - "ip_address": "85.51.37.152" - }, - { - "id": 112, - "first_name": "Laetitia", - "last_name": "Ilyukhov", - "email": ["lilyukhov33@bloomberg.com"], - "gender": "Female", - "ip_address": "20.96.187.163" - }, - { - "id": 113, - "first_name": "Glenden", - "last_name": "Wray", - "email": ["gwray34@drupal.org"], - "gender": "Male", - "ip_address": "238.65.54.215" - }, - { - "id": 114, - "first_name": "Rodolph", - "last_name": "Deary", - "email": ["rdeary35@xing.com"], - "gender": "Male", - "ip_address": "42.140.134.186" - }, - { - "id": 115, - "first_name": "Stanislaus", - "last_name": "Meaddowcroft", - "email": ["smeaddowcroft36@weather.com"], - "gender": "Male", - "ip_address": "85.91.188.157" - }, - { - "id": 116, - "first_name": "Kalle", - "last_name": "Antram", - "email": ["kantram37@imdb.com"], - "gender": "Male", - "ip_address": "20.57.45.96" - }, - { - "id": 117, - "first_name": "Cordi", - "last_name": "Werrilow", - "email": ["cwerrilow38@furl.net"], - "gender": "Female", - "ip_address": "44.55.225.6" - }, - { - "id": 118, - "first_name": "Celina", - "last_name": "Ferrone", - "email": ["cferrone39@ezinearticles.com"], - "gender": "Female", - "ip_address": "109.177.58.146" - }, - { - "id": 119, - "first_name": "Ameline", - "last_name": "Harbar", - "email": ["aharbar3a@purevolume.com"], - "gender": "Female", - "ip_address": "205.126.171.130" - }, - { - "id": 120, - "first_name": "Oswell", - "last_name": "Kirwood", - "email": ["okirwood3b@so-net.ne.jp"], - "gender": "Male", - "ip_address": "126.52.39.185" - }, - { - "id": 121, - "first_name": "Gray", - "last_name": "Hedges", - "email": ["ghedges3c@hostgator.com"], - "gender": "Male", - "ip_address": "5.166.224.48" - }, - { - "id": 122, - "first_name": "Rowland", - "last_name": "Cabble", - "email": ["rcabble3d@sogou.com"], - "gender": "Male", - "ip_address": "230.58.0.240" - }, - { - "id": 123, - "first_name": "Aldus", - "last_name": "Dunford", - "email": ["adunford3e@domainmarket.com"], - "gender": "Male", - "ip_address": "249.222.99.204" - }, - { - "id": 124, - "first_name": "Pepito", - "last_name": "Martusewicz", - "email": ["pmartusewicz3f@hatena.ne.jp"], - "gender": "Male", - "ip_address": "210.181.155.15" - }, - { - "id": 125, - "first_name": "Fleurette", - "last_name": "Maharey", - "email": ["fmaharey3g@marketwatch.com"], - "gender": "Female", - "ip_address": "93.222.164.112" - }, - { - "id": 126, - "first_name": "Melvyn", - "last_name": "Meharg", - "email": ["mmeharg3h@elpais.com"], - "gender": "Male", - "ip_address": "76.233.103.6" - }, - { - "id": 127, - "first_name": "Dino", - "last_name": "Seydlitz", - "email": ["dseydlitz3i@amazon.co.jp"], - "gender": "Male", - "ip_address": "21.4.221.23" - }, - { - "id": 128, - "first_name": "Christoffer", - "last_name": "Mahody", - "email": ["cmahody3j@google.it"], - "gender": "Male", - "ip_address": "203.110.59.208" - }, - { - "id": 129, - "first_name": "Adham", - "last_name": "Guilfoyle", - "email": ["aguilfoyle3k@spiegel.de"], - "gender": "Male", - "ip_address": "85.151.164.144" - }, - { - "id": 130, - "first_name": "Andra", - "last_name": "Richings", - "email": ["arichings3l@yahoo.com"], - "gender": "Female", - "ip_address": "189.66.217.179" - }, - { - "id": 131, - "first_name": "Hobard", - "last_name": "Bourner", - "email": ["hbourner3m@paginegialle.it"], - "gender": "Male", - "ip_address": "107.115.192.191" - }, - { - "id": 132, - "first_name": "Leighton", - "last_name": "Drawmer", - "email": ["ldrawmer3n@spotify.com"], - "gender": "Male", - "ip_address": "246.92.225.4" - }, - { - "id": 133, - "first_name": "Krystyna", - "last_name": "McKendry", - "email": ["kmckendry3o@sakura.ne.jp"], - "gender": "Female", - "ip_address": "90.172.170.246" - }, - { - "id": 134, - "first_name": "Jakob", - "last_name": "Whitewood", - "email": ["jwhitewood3p@netlog.com"], - "gender": "Male", - "ip_address": "234.245.240.154" - }, - { - "id": 135, - "first_name": "Waiter", - "last_name": "Hearley", - "email": ["whearley3q@shop-pro.jp"], - "gender": "Male", - "ip_address": "239.134.183.197" - }, - { - "id": 136, - "first_name": "Cristin", - "last_name": "Bride", - "email": ["cbride3r@sitemeter.com"], - "gender": "Female", - "ip_address": "78.125.254.122" - }, - { - "id": 137, - "first_name": "Letizia", - "last_name": "Dovermann", - "email": ["ldovermann3s@nymag.com"], - "gender": "Female", - "ip_address": "30.211.78.171" - }, - { - "id": 138, - "first_name": "Leonora", - "last_name": "Hymor", - "email": ["lhymor3t@123-reg.co.uk"], - "gender": "Female", - "ip_address": "62.216.222.93" - }, - { - "id": 139, - "first_name": "Ann-marie", - "last_name": "Ferriby", - "email": ["aferriby3u@sciencedaily.com"], - "gender": "Female", - "ip_address": "71.126.39.193" - }, - { - "id": 140, - "first_name": "Galvin", - "last_name": "Bloxholm", - "email": ["gbloxholm3v@mapy.cz"], - "gender": "Male", - "ip_address": "217.79.201.24" - }, - { - "id": 141, - "first_name": "Tabbitha", - "last_name": "Pughsley", - "email": ["tpughsley3w@ask.com"], - "gender": "Female", - "ip_address": "250.34.86.119" - }, - { - "id": 142, - "first_name": "Karyl", - "last_name": "Mc Faul", - "email": ["kmcfaul3x@geocities.jp"], - "gender": "Female", - "ip_address": "78.38.139.232" - }, - { - "id": 143, - "first_name": "Halie", - "last_name": "Dakhov", - "email": ["hdakhov3y@elegantthemes.com"], - "gender": "Female", - "ip_address": "183.59.79.37" - }, - { - "id": 144, - "first_name": "Lyndy", - "last_name": "Geram", - "email": ["lgeram3z@hibu.com"], - "gender": "Female", - "ip_address": "230.126.31.149" - }, - { - "id": 145, - "first_name": "Jodee", - "last_name": "Sale", - "email": ["jsale40@rambler.ru"], - "gender": "Female", - "ip_address": "207.39.3.235" - }, - { - "id": 146, - "first_name": "Klara", - "last_name": "Brundell", - "email": ["kbrundell41@ft.com"], - "gender": "Female", - "ip_address": "200.81.139.82" - }, - { - "id": 147, - "first_name": "Derby", - "last_name": "Boyce", - "email": ["dboyce42@twitter.com"], - "gender": "Male", - "ip_address": "36.206.172.3" - }, - { - "id": 148, - "first_name": "Feodor", - "last_name": "Wyllie", - "email": ["fwyllie43@123-reg.co.uk"], - "gender": "Male", - "ip_address": "70.189.240.216" - }, - { - "id": 149, - "first_name": "Miller", - "last_name": "Brouard", - "email": ["mbrouard44@exblog.jp"], - "gender": "Male", - "ip_address": "193.60.198.29" - }, - { - "id": 150, - "first_name": "Constantine", - "last_name": "Traher", - "email": ["ctraher45@mayoclinic.com"], - "gender": "Male", - "ip_address": "21.215.92.32" - }, - { - "id": 151, - "first_name": "Amery", - "last_name": "Schuricke", - "email": ["aschuricke46@mozilla.org"], - "gender": "Male", - "ip_address": "11.183.232.66" - }, - { - "id": 152, - "first_name": "Joellyn", - "last_name": "Stockau", - "email": ["jstockau47@bbc.co.uk"], - "gender": "Female", - "ip_address": "125.184.175.9" - }, - { - "id": 153, - "first_name": "Shepard", - "last_name": "Conibere", - "email": ["sconibere48@va.gov"], - "gender": "Male", - "ip_address": "26.213.14.37" - }, - { - "id": 154, - "first_name": "Belita", - "last_name": "Van der Baaren", - "email": ["bvanderbaaren49@ameblo.jp"], - "gender": "Female", - "ip_address": "4.15.81.85" - }, - { - "id": 155, - "first_name": "Amabel", - "last_name": "Jerisch", - "email": ["ajerisch4a@earthlink.net"], - "gender": "Female", - "ip_address": "158.133.238.163" - }, - { - "id": 156, - "first_name": "Boigie", - "last_name": "Ferrelli", - "email": ["bferrelli4b@sourceforge.net"], - "gender": "Male", - "ip_address": "189.207.139.81" - }, - { - "id": 157, - "first_name": "Heath", - "last_name": "Debling", - "email": ["hdebling4c@shutterfly.com"], - "gender": "Female", - "ip_address": "164.32.223.4" - }, - { - "id": 158, - "first_name": "Ed", - "last_name": "Passey", - "email": ["epassey4d@qq.com"], - "gender": "Male", - "ip_address": "99.30.3.153" - }, - { - "id": 159, - "first_name": "Syd", - "last_name": "Worling", - "email": ["sworling4e@ebay.com"], - "gender": "Male", - "ip_address": "207.246.213.99" - }, - { - "id": 160, - "first_name": "Aila", - "last_name": "Cordero", - "email": ["acordero4f@desdev.cn"], - "gender": "Female", - "ip_address": "90.94.236.66" - }, - { - "id": 161, - "first_name": "Maximilien", - "last_name": "Luter", - "email": ["mluter4g@blinklist.com"], - "gender": "Male", - "ip_address": "94.236.176.121" - }, - { - "id": 162, - "first_name": "Lazare", - "last_name": "Tainton", - "email": ["ltainton4h@illinois.edu"], - "gender": "Male", - "ip_address": "82.145.103.13" - }, - { - "id": 163, - "first_name": "Dur", - "last_name": "Frediani", - "email": ["dfrediani4i@whitehouse.gov"], - "gender": "Male", - "ip_address": "115.115.120.142" - }, - { - "id": 164, - "first_name": "Pennie", - "last_name": "Kirkness", - "email": ["pkirkness4j@fotki.com"], - "gender": "Male", - "ip_address": "6.247.127.133" - }, - { - "id": 165, - "first_name": "Parker", - "last_name": "Ratter", - "email": ["pratter4k@examiner.com"], - "gender": "Male", - "ip_address": "70.19.245.145" - }, - { - "id": 166, - "first_name": "Logan", - "last_name": "Graeser", - "email": ["lgraeser4l@oracle.com"], - "gender": "Male", - "ip_address": "67.149.154.250" - }, - { - "id": 167, - "first_name": "Zechariah", - "last_name": "Whitechurch", - "email": ["zwhitechurch4m@cloudflare.com"], - "gender": "Male", - "ip_address": "54.202.17.144" - }, - { - "id": 168, - "first_name": "Kelvin", - "last_name": "Forton", - "email": ["kforton4n@bigcartel.com"], - "gender": "Male", - "ip_address": "174.4.8.180" - }, - { - "id": 169, - "first_name": "Kennan", - "last_name": "Swendell", - "email": ["kswendell4o@pinterest.com"], - "gender": "Male", - "ip_address": "208.147.49.13" - }, - { - "id": 170, - "first_name": "Bertie", - "last_name": "Tutin", - "email": ["btutin4p@360.cn"], - "gender": "Male", - "ip_address": "235.252.21.212" - }, - { - "id": 171, - "first_name": "Sutherlan", - "last_name": "Hauxwell", - "email": ["shauxwell4q@godaddy.com"], - "gender": "Male", - "ip_address": "176.105.196.87" - }, - { - "id": 172, - "first_name": "Barrett", - "last_name": "Sheldrake", - "email": ["bsheldrake4r@addtoany.com"], - "gender": "Male", - "ip_address": "127.10.58.185" - }, - { - "id": 173, - "first_name": "Gisela", - "last_name": "Valler", - "email": ["gvaller4s@redcross.org"], - "gender": "Female", - "ip_address": "62.198.3.31" - }, - { - "id": 174, - "first_name": "Nellie", - "last_name": "Janjic", - "email": ["njanjic4t@illinois.edu"], - "gender": "Female", - "ip_address": "137.93.61.206" - }, - { - "id": 175, - "first_name": "Menard", - "last_name": "Jarley", - "email": ["mjarley4u@wp.com"], - "gender": "Male", - "ip_address": "2.249.65.19" - }, - { - "id": 176, - "first_name": "Selby", - "last_name": "Loader", - "email": ["sloader4v@pbs.org"], - "gender": "Male", - "ip_address": "39.44.199.211" - }, - { - "id": 177, - "first_name": "Ezekiel", - "last_name": "Brownsworth", - "email": ["ebrownsworth4w@wordpress.org"], - "gender": "Male", - "ip_address": "151.147.235.165" - }, - { - "id": 178, - "first_name": "Demeter", - "last_name": "Bendig", - "email": ["dbendig4x@washington.edu"], - "gender": "Female", - "ip_address": "97.169.89.153" - }, - { - "id": 179, - "first_name": "Layla", - "last_name": "Caunt", - "email": ["lcaunt4y@answers.com"], - "gender": "Female", - "ip_address": "106.208.3.126" - }, - { - "id": 180, - "first_name": "Hamish", - "last_name": "Jupp", - "email": ["hjupp4z@mapquest.com"], - "gender": "Male", - "ip_address": "93.175.180.148" - }, - { - "id": 181, - "first_name": "Caresa", - "last_name": "Atteridge", - "email": ["catteridge50@dailymail.co.uk"], - "gender": "Female", - "ip_address": "133.74.41.206" - }, - { - "id": 182, - "first_name": "Sandy", - "last_name": "Braunle", - "email": ["sbraunle51@reverbnation.com"], - "gender": "Female", - "ip_address": "238.107.95.239" - }, - { - "id": 183, - "first_name": "Fonz", - "last_name": "Sotheby", - "email": ["fsotheby52@harvard.edu"], - "gender": "Male", - "ip_address": "12.217.38.65" - }, - { - "id": 184, - "first_name": "Corrie", - "last_name": "Wombwell", - "email": ["cwombwell53@tumblr.com"], - "gender": "Male", - "ip_address": "89.15.73.125" - }, - { - "id": 185, - "first_name": "Towney", - "last_name": "Sedgwick", - "email": ["tsedgwick54@dyndns.org"], - "gender": "Male", - "ip_address": "254.81.87.130" - }, - { - "id": 186, - "first_name": "Lyssa", - "last_name": "Conaboy", - "email": ["lconaboy55@paypal.com"], - "gender": "Female", - "ip_address": "60.227.248.95" - }, - { - "id": 187, - "first_name": "Kendal", - "last_name": "Steagall", - "email": ["ksteagall56@ibm.com"], - "gender": "Male", - "ip_address": "254.110.60.142" - }, - { - "id": 188, - "first_name": "Lek", - "last_name": "Harfleet", - "email": ["lharfleet57@desdev.cn"], - "gender": "Male", - "ip_address": "188.221.51.187" - }, - { - "id": 189, - "first_name": "Karna", - "last_name": "Caldeyroux", - "email": ["kcaldeyroux58@xrea.com"], - "gender": "Female", - "ip_address": "60.71.108.27" - }, - { - "id": 190, - "first_name": "Fleming", - "last_name": "Milkin", - "email": ["fmilkin59@multiply.com"], - "gender": "Male", - "ip_address": "185.126.240.171" - }, - { - "id": 191, - "first_name": "Terencio", - "last_name": "Cloy", - "email": ["tcloy5a@reverbnation.com"], - "gender": "Male", - "ip_address": "100.47.74.3" - }, - { - "id": 192, - "first_name": "Lynne", - "last_name": "Cornilleau", - "email": ["lcornilleau5b@e-recht24.de"], - "gender": "Female", - "ip_address": "249.51.252.93" - }, - { - "id": 193, - "first_name": "Drona", - "last_name": "Cheshir", - "email": ["dcheshir5c@ucoz.com"], - "gender": "Female", - "ip_address": "217.189.226.37" - }, - { - "id": 194, - "first_name": "Jock", - "last_name": "Culvey", - "email": ["jculvey5d@howstuffworks.com"], - "gender": "Male", - "ip_address": "123.225.197.30" - }, - { - "id": 195, - "first_name": "Libby", - "last_name": "Bennitt", - "email": ["lbennitt5e@java.com"], - "gender": "Female", - "ip_address": "241.13.218.208" - }, - { - "id": 196, - "first_name": "Nanci", - "last_name": "Kilminster", - "email": ["nkilminster5f@goo.ne.jp"], - "gender": "Female", - "ip_address": "125.229.211.161" - }, - { - "id": 197, - "first_name": "Tabor", - "last_name": "Hallgalley", - "email": ["thallgalley5g@bloglovin.com"], - "gender": "Male", - "ip_address": "78.11.245.140" - }, - { - "id": 198, - "first_name": "Antonin", - "last_name": "Milvarnie", - "email": ["amilvarnie5h@ucoz.com"], - "gender": "Male", - "ip_address": "34.231.57.251" - }, - { - "id": 199, - "first_name": "Lianne", - "last_name": "Camelli", - "email": ["lcamelli5i@canalblog.com"], - "gender": "Female", - "ip_address": "206.164.182.82" - }, - { - "id": 200, - "first_name": "Melvin", - "last_name": "Frankcom", - "email": ["mfrankcom5j@posterous.com"], - "gender": "Male", - "ip_address": "38.28.80.244" - }, - { - "id": 201, - "first_name": "Sallie", - "last_name": "Phipard-Shears", - "email": ["sphipardshears5k@salon.com"], - "gender": "Female", - "ip_address": "129.61.11.132" - }, - { - "id": 202, - "first_name": "Theda", - "last_name": "Cumbridge", - "email": ["tcumbridge5l@google.ca"], - "gender": "Female", - "ip_address": "36.158.42.70" - }, - { - "id": 203, - "first_name": "Kaja", - "last_name": "Yarranton", - "email": ["kyarranton5m@go.com"], - "gender": "Female", - "ip_address": "66.91.100.141" - }, - { - "id": 204, - "first_name": "Artair", - "last_name": "Paulus", - "email": ["apaulus5n@fda.gov"], - "gender": "Male", - "ip_address": "89.34.95.128" - }, - { - "id": 205, - "first_name": "Stephana", - "last_name": "Wallhead", - "email": ["swallhead5o@skype.com"], - "gender": "Female", - "ip_address": "184.139.15.28" - }, - { - "id": 206, - "first_name": "Dev", - "last_name": "Bloxholm", - "email": ["dbloxholm5p@issuu.com"], - "gender": "Male", - "ip_address": "194.5.232.251" - }, - { - "id": 207, - "first_name": "Aymer", - "last_name": "Lenahan", - "email": ["alenahan5q@purevolume.com"], - "gender": "Male", - "ip_address": "68.59.27.12" - }, - { - "id": 208, - "first_name": "Meredeth", - "last_name": "Colby", - "email": ["mcolby5r@apache.org"], - "gender": "Male", - "ip_address": "102.139.199.244" - }, - { - "id": 209, - "first_name": "Yulma", - "last_name": "Martschke", - "email": ["ymartschke5s@indiegogo.com"], - "gender": "Male", - "ip_address": "158.26.146.85" - }, - { - "id": 210, - "first_name": "Griswold", - "last_name": "Twinning", - "email": ["gtwinning5t@hubpages.com"], - "gender": "Male", - "ip_address": "181.137.188.218" - }, - { - "id": 211, - "first_name": "Rosalind", - "last_name": "O'Cannon", - "email": ["rocannon5u@is.gd"], - "gender": "Female", - "ip_address": "231.162.113.136" - }, - { - "id": 212, - "first_name": "Drusi", - "last_name": "Gildea", - "email": ["dgildea5v@cpanel.net"], - "gender": "Female", - "ip_address": "106.254.126.189" - }, - { - "id": 213, - "first_name": "Ardyth", - "last_name": "Rubel", - "email": ["arubel5w@cyberchimps.com"], - "gender": "Female", - "ip_address": "33.159.200.108" - }, - { - "id": 214, - "first_name": "Karee", - "last_name": "Fuke", - "email": ["kfuke5x@example.com"], - "gender": "Female", - "ip_address": "7.54.202.99" - }, - { - "id": 215, - "first_name": "Toinette", - "last_name": "Yoseloff", - "email": ["tyoseloff5y@geocities.jp"], - "gender": "Female", - "ip_address": "42.42.17.133" - }, - { - "id": 216, - "first_name": "Hanson", - "last_name": "Arnault", - "email": ["harnault5z@amazon.co.uk"], - "gender": "Male", - "ip_address": "210.238.169.248" - }, - { - "id": 217, - "first_name": "Nathanil", - "last_name": "Kell", - "email": ["nkell60@blog.com"], - "gender": "Male", - "ip_address": "6.164.197.57" - }, - { - "id": 218, - "first_name": "Oren", - "last_name": "Fraschetti", - "email": ["ofraschetti61@youtube.com"], - "gender": "Male", - "ip_address": "202.165.141.63" - }, - { - "id": 219, - "first_name": "Brockie", - "last_name": "Campbell", - "email": ["bcampbell62@amazon.co.uk"], - "gender": "Male", - "ip_address": "118.108.129.205" - }, - { - "id": 220, - "first_name": "Aurilia", - "last_name": "Mettrick", - "email": ["amettrick63@flavors.me"], - "gender": "Female", - "ip_address": "8.3.87.208" - }, - { - "id": 221, - "first_name": "Louella", - "last_name": "Ord", - "email": ["lord64@wikia.com"], - "gender": "Female", - "ip_address": "72.43.179.12" - }, - { - "id": 222, - "first_name": "Dallis", - "last_name": "Martell", - "email": ["dmartell65@harvard.edu"], - "gender": "Male", - "ip_address": "212.178.157.177" - }, - { - "id": 223, - "first_name": "Aluino", - "last_name": "Symons", - "email": ["asymons66@dion.ne.jp"], - "gender": "Male", - "ip_address": "146.52.154.2" - }, - { - "id": 224, - "first_name": "Giffer", - "last_name": "Hymers", - "email": ["ghymers67@vistaprint.com"], - "gender": "Male", - "ip_address": "123.35.20.146" - }, - { - "id": 225, - "first_name": "Vi", - "last_name": "Milberry", - "email": ["vmilberry68@wp.com"], - "gender": "Female", - "ip_address": "196.127.246.0" - }, - { - "id": 226, - "first_name": "Paulie", - "last_name": "Fewell", - "email": ["pfewell69@blogger.com"], - "gender": "Male", - "ip_address": "173.220.103.48" - }, - { - "id": 227, - "first_name": "Sayres", - "last_name": "Roly", - "email": ["sroly6a@wix.com"], - "gender": "Male", - "ip_address": "108.155.142.13" - }, - { - "id": 228, - "first_name": "Daniel", - "last_name": "Blakelock", - "email": ["dblakelock6b@kickstarter.com"], - "gender": "Male", - "ip_address": "252.101.170.51" - }, - { - "id": 229, - "first_name": "Hagen", - "last_name": "Jallin", - "email": ["hjallin6c@networksolutions.com"], - "gender": "Male", - "ip_address": "67.70.53.104" - }, - { - "id": 230, - "first_name": "Petunia", - "last_name": "Filippo", - "email": ["pfilippo6d@ow.ly"], - "gender": "Female", - "ip_address": "86.89.230.151" - }, - { - "id": 231, - "first_name": "Boony", - "last_name": "Shingles", - "email": ["bshingles6e@google.de"], - "gender": "Male", - "ip_address": "205.75.10.78" - }, - { - "id": 232, - "first_name": "Lew", - "last_name": "Harrisson", - "email": ["lharrisson6f@wikia.com"], - "gender": "Male", - "ip_address": "195.65.211.201" - }, - { - "id": 233, - "first_name": "Paulette", - "last_name": "Strangward", - "email": ["pstrangward6g@house.gov"], - "gender": "Female", - "ip_address": "23.254.2.234" - }, - { - "id": 234, - "first_name": "Thorn", - "last_name": "Jandl", - "email": ["tjandl6h@sfgate.com"], - "gender": "Male", - "ip_address": "170.84.35.42" - }, - { - "id": 235, - "first_name": "Marlane", - "last_name": "McArdle", - "email": ["mmcardle6i@opera.com"], - "gender": "Female", - "ip_address": "115.126.139.212" - }, - { - "id": 236, - "first_name": "Witty", - "last_name": "Linge", - "email": ["wlinge6j@twitter.com"], - "gender": "Male", - "ip_address": "58.165.94.28" - }, - { - "id": 237, - "first_name": "Yorgo", - "last_name": "Critcher", - "email": ["ycritcher6k@joomla.org"], - "gender": "Male", - "ip_address": "26.4.99.130" - }, - { - "id": 238, - "first_name": "Elene", - "last_name": "Southeran", - "email": ["esoutheran6l@wisc.edu"], - "gender": "Female", - "ip_address": "225.236.1.70" - }, - { - "id": 239, - "first_name": "Olenka", - "last_name": "Bumpass", - "email": ["obumpass6m@behance.net"], - "gender": "Female", - "ip_address": "137.186.108.11" - }, - { - "id": 240, - "first_name": "Leandra", - "last_name": "Coverly", - "email": ["lcoverly6n@hugedomains.com"], - "gender": "Female", - "ip_address": "185.145.167.93" - }, - { - "id": 241, - "first_name": "Bertie", - "last_name": "Good", - "email": ["bgood6o@globo.com"], - "gender": "Male", - "ip_address": "61.225.200.1" - }, - { - "id": 242, - "first_name": "Hank", - "last_name": "Alenov", - "email": ["halenov6p@army.mil"], - "gender": "Male", - "ip_address": "160.106.39.35" - }, - { - "id": 243, - "first_name": "Markus", - "last_name": "Pinchon", - "email": ["mpinchon6q@ucsd.edu"], - "gender": "Male", - "ip_address": "78.173.182.96" - }, - { - "id": 244, - "first_name": "Trista", - "last_name": "Hallard", - "email": ["thallard6r@rediff.com"], - "gender": "Female", - "ip_address": "120.245.203.174" - }, - { - "id": 245, - "first_name": "Arlyn", - "last_name": "Prettyjohns", - "email": ["aprettyjohns6s@aboutads.info"], - "gender": "Female", - "ip_address": "210.106.125.212" - }, - { - "id": 246, - "first_name": "Arlin", - "last_name": "Ivkovic", - "email": ["aivkovic6t@1und1.de"], - "gender": "Male", - "ip_address": "105.73.75.109" - }, - { - "id": 247, - "first_name": "Shawnee", - "last_name": "Alwell", - "email": ["salwell6u@phpbb.com"], - "gender": "Female", - "ip_address": "168.96.107.193" - }, - { - "id": 248, - "first_name": "Perry", - "last_name": "Carletti", - "email": ["pcarletti6v@ca.gov"], - "gender": "Female", - "ip_address": "147.36.205.178" - }, - { - "id": 249, - "first_name": "Gannie", - "last_name": "Zanardii", - "email": ["gzanardii6w@tamu.edu"], - "gender": "Male", - "ip_address": "58.200.52.222" - }, - { - "id": 250, - "first_name": "Leola", - "last_name": "Suttling", - "email": ["lsuttling6x@ocn.ne.jp"], - "gender": "Female", - "ip_address": "203.177.139.222" - }, - { - "id": 251, - "first_name": "Alexandrina", - "last_name": "Cohrs", - "email": ["acohrs6y@t-online.de"], - "gender": "Female", - "ip_address": "187.10.224.1" - }, - { - "id": 252, - "first_name": "Shell", - "last_name": "Jedrzaszkiewicz", - "email": ["sjedrzaszkiewicz6z@elpais.com"], - "gender": "Male", - "ip_address": "170.124.90.82" - }, - { - "id": 253, - "first_name": "Carlyn", - "last_name": "Cockran", - "email": ["ccockran70@exblog.jp"], - "gender": "Female", - "ip_address": "152.241.81.224" - }, - { - "id": 254, - "first_name": "Berenice", - "last_name": "Robardley", - "email": ["brobardley71@wp.com"], - "gender": "Female", - "ip_address": "121.115.144.4" - }, - { - "id": 255, - "first_name": "Ora", - "last_name": "Scudders", - "email": ["oscudders72@joomla.org"], - "gender": "Female", - "ip_address": "83.40.189.251" - }, - { - "id": 256, - "first_name": "Alexandrina", - "last_name": "Fenelon", - "email": ["afenelon73@weather.com"], - "gender": "Female", - "ip_address": "152.22.183.65" - }, - { - "id": 257, - "first_name": "Hanan", - "last_name": "Chartre", - "email": ["hchartre74@latimes.com"], - "gender": "Male", - "ip_address": "68.113.205.127" - }, - { - "id": 258, - "first_name": "Marsha", - "last_name": "Campes", - "email": ["mcampes75@123-reg.co.uk"], - "gender": "Female", - "ip_address": "108.69.156.26" - }, - { - "id": 259, - "first_name": "Prue", - "last_name": "Tylor", - "email": ["ptylor76@amazon.de"], - "gender": "Female", - "ip_address": "241.86.91.85" - }, - { - "id": 260, - "first_name": "Veronica", - "last_name": "Crossdale", - "email": ["vcrossdale77@blog.com"], - "gender": "Female", - "ip_address": "49.51.75.34" - }, - { - "id": 261, - "first_name": "Darrell", - "last_name": "Bidgod", - "email": ["dbidgod78@sina.com.cn"], - "gender": "Male", - "ip_address": "74.234.231.50" - }, - { - "id": 262, - "first_name": "Marleen", - "last_name": "Olivelli", - "email": ["molivelli79@macromedia.com"], - "gender": "Female", - "ip_address": "142.79.11.24" - }, - { - "id": 263, - "first_name": "Tom", - "last_name": "Diggins", - "email": ["tdiggins7a@networkadvertising.org"], - "gender": "Male", - "ip_address": "172.91.33.220" - }, - { - "id": 264, - "first_name": "Malissia", - "last_name": "Mascall", - "email": ["mmascall7b@last.fm"], - "gender": "Female", - "ip_address": "180.64.63.41" - }, - { - "id": 265, - "first_name": "Maynard", - "last_name": "Aitken", - "email": ["maitken7c@google.com.br"], - "gender": "Male", - "ip_address": "22.23.74.128" - }, - { - "id": 266, - "first_name": "Nydia", - "last_name": "Macak", - "email": ["nmacak7d@mac.com"], - "gender": "Female", - "ip_address": "195.13.79.189" - }, - { - "id": 267, - "first_name": "Marilin", - "last_name": "Kurdani", - "email": ["mkurdani7e@msn.com"], - "gender": "Female", - "ip_address": "36.66.198.200" - }, - { - "id": 268, - "first_name": "Johnny", - "last_name": "Stubbert", - "email": ["jstubbert7f@buzzfeed.com"], - "gender": "Male", - "ip_address": "218.127.200.248" - }, - { - "id": 269, - "first_name": "Borg", - "last_name": "Pevsner", - "email": ["bpevsner7g@latimes.com"], - "gender": "Male", - "ip_address": "225.118.10.194" - }, - { - "id": 270, - "first_name": "Alvis", - "last_name": "Dracey", - "email": ["adracey7h@google.ca"], - "gender": "Male", - "ip_address": "49.8.174.18" - }, - { - "id": 271, - "first_name": "Kacy", - "last_name": "Ricold", - "email": ["kricold7i@de.vu"], - "gender": "Female", - "ip_address": "161.195.185.39" - }, - { - "id": 272, - "first_name": "Laurence", - "last_name": "Carlill", - "email": ["lcarlill7j@illinois.edu"], - "gender": "Male", - "ip_address": "41.172.38.114" - }, - { - "id": 273, - "first_name": "Sigismundo", - "last_name": "Rockey", - "email": ["srockey7k@si.edu"], - "gender": "Male", - "ip_address": "103.237.102.254" - }, - { - "id": 274, - "first_name": "Darcey", - "last_name": "Denacamp", - "email": ["ddenacamp7l@archive.org"], - "gender": "Female", - "ip_address": "17.71.108.216" - }, - { - "id": 275, - "first_name": "Shanan", - "last_name": "Brealey", - "email": ["sbrealey7m@1688.com"], - "gender": "Male", - "ip_address": "196.82.160.204" - }, - { - "id": 276, - "first_name": "Zsazsa", - "last_name": "Walch", - "email": ["zwalch7n@china.com.cn"], - "gender": "Female", - "ip_address": "180.215.66.249" - }, - { - "id": 277, - "first_name": "Anderea", - "last_name": "Clifton", - "email": ["aclifton7o@4shared.com"], - "gender": "Female", - "ip_address": "45.69.132.246" - }, - { - "id": 278, - "first_name": "Anni", - "last_name": "Adkins", - "email": ["aadkins7p@arstechnica.com"], - "gender": "Female", - "ip_address": "225.211.178.143" - }, - { - "id": 279, - "first_name": "Townsend", - "last_name": "Fine", - "email": ["tfine7q@prweb.com"], - "gender": "Male", - "ip_address": "245.130.28.135" - }, - { - "id": 280, - "first_name": "Jerome", - "last_name": "Beedie", - "email": ["jbeedie7r@answers.com"], - "gender": "Male", - "ip_address": "13.50.228.186" - }, - { - "id": 281, - "first_name": "Sada", - "last_name": "Shieber", - "email": ["sshieber7s@blog.com"], - "gender": "Female", - "ip_address": "144.228.43.176" - }, - { - "id": 282, - "first_name": "Beltran", - "last_name": "Dunnett", - "email": ["bdunnett7t@vimeo.com"], - "gender": "Male", - "ip_address": "25.16.71.189" - }, - { - "id": 283, - "first_name": "Fulvia", - "last_name": "Exelby", - "email": ["fexelby7u@ehow.com"], - "gender": "Female", - "ip_address": "84.233.231.202" - }, - { - "id": 284, - "first_name": "Danni", - "last_name": "Bramsen", - "email": ["dbramsen7v@sbwire.com"], - "gender": "Female", - "ip_address": "45.30.171.222" - }, - { - "id": 285, - "first_name": "Ilise", - "last_name": "Tuffell", - "email": ["ituffell7w@imgur.com"], - "gender": "Female", - "ip_address": "210.86.11.229" - }, - { - "id": 286, - "first_name": "Nickie", - "last_name": "Arne", - "email": ["narne7x@rediff.com"], - "gender": "Male", - "ip_address": "56.207.222.209" - }, - { - "id": 287, - "first_name": "Kath", - "last_name": "Guichard", - "email": ["kguichard7y@chronoengine.com"], - "gender": "Female", - "ip_address": "40.242.18.208" - }, - { - "id": 288, - "first_name": "Tallou", - "last_name": "Gudge", - "email": ["tgudge7z@marriott.com"], - "gender": "Female", - "ip_address": "119.61.137.147" - }, - { - "id": 289, - "first_name": "Nicola", - "last_name": "Jecock", - "email": ["njecock80@google.nl"], - "gender": "Male", - "ip_address": "75.50.127.105" - }, - { - "id": 290, - "first_name": "Dorri", - "last_name": "Pirouet", - "email": ["dpirouet81@topsy.com"], - "gender": "Female", - "ip_address": "217.83.77.171" - }, - { - "id": 291, - "first_name": "Rancell", - "last_name": "Esbrook", - "email": ["resbrook82@nymag.com"], - "gender": "Male", - "ip_address": "235.68.181.254" - }, - { - "id": 292, - "first_name": "Janina", - "last_name": "Stoop", - "email": ["jstoop83@admin.ch"], - "gender": "Female", - "ip_address": "141.133.0.206" - }, - { - "id": 293, - "first_name": "Nananne", - "last_name": "Pusey", - "email": ["npusey84@storify.com"], - "gender": "Female", - "ip_address": "187.223.180.253" - }, - { - "id": 294, - "first_name": "Mead", - "last_name": "Castrillo", - "email": ["mcastrillo85@a8.net"], - "gender": "Female", - "ip_address": "57.67.241.112" - }, - { - "id": 295, - "first_name": "Tadio", - "last_name": "Biddy", - "email": ["tbiddy86@nsw.gov.au"], - "gender": "Male", - "ip_address": "207.94.119.165" - }, - { - "id": 296, - "first_name": "Fayre", - "last_name": "Waber", - "email": ["fwaber87@psu.edu"], - "gender": "Female", - "ip_address": "231.117.0.128" - }, - { - "id": 297, - "first_name": "Dillie", - "last_name": "Guirau", - "email": ["dguirau88@aol.com"], - "gender": "Male", - "ip_address": "53.93.8.248" - }, - { - "id": 298, - "first_name": "Inesita", - "last_name": "Brosetti", - "email": ["ibrosetti89@ox.ac.uk"], - "gender": "Female", - "ip_address": "170.37.69.114" - }, - { - "id": 299, - "first_name": "Pooh", - "last_name": "Gooley", - "email": ["pgooley8a@fema.gov"], - "gender": "Male", - "ip_address": "175.53.249.109" - }, - { - "id": 300, - "first_name": "Levi", - "last_name": "Possa", - "email": ["lpossa8b@pagesperso-orange.fr"], - "gender": "Male", - "ip_address": "68.123.192.81" - }, - { - "id": 301, - "first_name": "Lauralee", - "last_name": "Cushworth", - "email": ["lcushworth8c@bbc.co.uk"], - "gender": "Female", - "ip_address": "72.153.226.176" - }, - { - "id": 302, - "first_name": "Alano", - "last_name": "Richings", - "email": ["arichings8d@slideshare.net"], - "gender": "Male", - "ip_address": "220.106.198.172" - }, - { - "id": 303, - "first_name": "Gracie", - "last_name": "Attenborough", - "email": ["gattenborough8e@berkeley.edu"], - "gender": "Female", - "ip_address": "164.144.98.42" - }, - { - "id": 304, - "first_name": "Tore", - "last_name": "Emson", - "email": ["temson8f@studiopress.com"], - "gender": "Male", - "ip_address": "176.5.62.175" - }, - { - "id": 305, - "first_name": "Doug", - "last_name": "Schirak", - "email": ["dschirak8g@webmd.com"], - "gender": "Male", - "ip_address": "247.251.193.112" - }, - { - "id": 306, - "first_name": "Christoph", - "last_name": "Leyband", - "email": ["cleyband8h@sogou.com"], - "gender": "Male", - "ip_address": "184.26.73.110" - }, - { - "id": 307, - "first_name": "Kimberlee", - "last_name": "Mandre", - "email": ["kmandre8i@aol.com"], - "gender": "Female", - "ip_address": "163.147.128.169" - }, - { - "id": 308, - "first_name": "Leah", - "last_name": "Maria", - "email": ["lmaria8j@blogtalkradio.com"], - "gender": "Female", - "ip_address": "43.227.22.2" - }, - { - "id": 309, - "first_name": "Stanislaw", - "last_name": "Pettus", - "email": ["spettus8k@google.ca"], - "gender": "Male", - "ip_address": "130.157.59.163" - }, - { - "id": 310, - "first_name": "Bronny", - "last_name": "Creane", - "email": ["bcreane8l@jiathis.com"], - "gender": "Male", - "ip_address": "192.193.166.254" - }, - { - "id": 311, - "first_name": "Even", - "last_name": "Collete", - "email": ["ecollete8m@google.es"], - "gender": "Male", - "ip_address": "79.237.2.194" - }, - { - "id": 312, - "first_name": "Murry", - "last_name": "Shacklady", - "email": ["mshacklady8n@google.fr"], - "gender": "Male", - "ip_address": "201.46.248.65" - }, - { - "id": 313, - "first_name": "Marquita", - "last_name": "Skottle", - "email": ["mskottle8o@auda.org.au"], - "gender": "Female", - "ip_address": "130.208.219.58" - }, - { - "id": 314, - "first_name": "Rhett", - "last_name": "Pilipyak", - "email": ["rpilipyak8p@addtoany.com"], - "gender": "Male", - "ip_address": "5.229.238.24" - }, - { - "id": 315, - "first_name": "Alethea", - "last_name": "Cathery", - "email": ["acathery8q@amazon.de"], - "gender": "Female", - "ip_address": "191.89.210.246" - }, - { - "id": 316, - "first_name": "Brennen", - "last_name": "Yarnley", - "email": ["byarnley8r@washington.edu"], - "gender": "Male", - "ip_address": "59.80.68.38" - }, - { - "id": 317, - "first_name": "Audrey", - "last_name": "Aps", - "email": ["aaps8s@ed.gov"], - "gender": "Female", - "ip_address": "32.221.154.90" - }, - { - "id": 318, - "first_name": "Myranda", - "last_name": "Ranns", - "email": ["mranns8t@ebay.com"], - "gender": "Female", - "ip_address": "134.137.56.44" - }, - { - "id": 319, - "first_name": "Alika", - "last_name": "Tabour", - "email": ["atabour8u@acquirethisname.com"], - "gender": "Female", - "ip_address": "43.118.88.204" - }, - { - "id": 320, - "first_name": "Gasper", - "last_name": "Hathorn", - "email": ["ghathorn8v@bbc.co.uk"], - "gender": "Male", - "ip_address": "96.204.208.63" - }, - { - "id": 321, - "first_name": "Khalil", - "last_name": "Jahnel", - "email": ["kjahnel8w@usatoday.com"], - "gender": "Male", - "ip_address": "125.180.102.132" - }, - { - "id": 322, - "first_name": "Antonius", - "last_name": "Sedcole", - "email": ["asedcole8x@opera.com"], - "gender": "Male", - "ip_address": "104.233.212.141" - }, - { - "id": 323, - "first_name": "Brody", - "last_name": "Cuniam", - "email": ["bcuniam8y@twitter.com"], - "gender": "Male", - "ip_address": "140.179.47.128" - }, - { - "id": 324, - "first_name": "Luce", - "last_name": "Calbreath", - "email": ["lcalbreath8z@upenn.edu"], - "gender": "Female", - "ip_address": "92.144.112.138" - }, - { - "id": 325, - "first_name": "Eydie", - "last_name": "Battershall", - "email": ["ebattershall90@rakuten.co.jp"], - "gender": "Female", - "ip_address": "126.240.100.135" - }, - { - "id": 326, - "first_name": "Henka", - "last_name": "Dell Casa", - "email": ["hdellcasa91@meetup.com"], - "gender": "Female", - "ip_address": "211.197.201.211" - }, - { - "id": 327, - "first_name": "Rochester", - "last_name": "Talkington", - "email": ["rtalkington92@un.org"], - "gender": "Male", - "ip_address": "191.219.114.83" - }, - { - "id": 328, - "first_name": "Ronica", - "last_name": "Ralton", - "email": ["rralton93@mlb.com"], - "gender": "Female", - "ip_address": "131.153.169.49" - }, - { - "id": 329, - "first_name": "Fletcher", - "last_name": "Bissett", - "email": ["fbissett94@vinaora.com"], - "gender": "Male", - "ip_address": "125.161.41.36" - }, - { - "id": 330, - "first_name": "Bonnibelle", - "last_name": "Crosen", - "email": ["bcrosen95@nih.gov"], - "gender": "Female", - "ip_address": "116.151.164.243" - }, - { - "id": 331, - "first_name": "Timothea", - "last_name": "Rhule", - "email": ["trhule96@edublogs.org"], - "gender": "Female", - "ip_address": "105.159.239.173" - }, - { - "id": 332, - "first_name": "Margaretha", - "last_name": "Adenet", - "email": ["madenet97@free.fr"], - "gender": "Female", - "ip_address": "123.35.96.56" - }, - { - "id": 333, - "first_name": "Ruthy", - "last_name": "Bagge", - "email": ["rbagge98@nifty.com"], - "gender": "Female", - "ip_address": "126.2.15.20" - }, - { - "id": 334, - "first_name": "Ilka", - "last_name": "Beetles", - "email": ["ibeetles99@51.la"], - "gender": "Female", - "ip_address": "138.94.5.14" - }, - { - "id": 335, - "first_name": "Pattie", - "last_name": "McAless", - "email": ["pmcaless9a@dailymail.co.uk"], - "gender": "Male", - "ip_address": "117.168.250.240" - }, - { - "id": 336, - "first_name": "Norris", - "last_name": "Stodd", - "email": ["nstodd9b@xinhuanet.com"], - "gender": "Male", - "ip_address": "218.231.252.94" - }, - { - "id": 337, - "first_name": "Gerta", - "last_name": "Basham", - "email": ["gbasham9c@biglobe.ne.jp"], - "gender": "Female", - "ip_address": "253.0.143.255" - }, - { - "id": 338, - "first_name": "Russell", - "last_name": "Hawkshaw", - "email": ["rhawkshaw9d@samsung.com"], - "gender": "Male", - "ip_address": "162.255.141.92" - }, - { - "id": 339, - "first_name": "Shelia", - "last_name": "Rake", - "email": ["srake9e@e-recht24.de"], - "gender": "Female", - "ip_address": "171.201.85.23" - }, - { - "id": 340, - "first_name": "Lexi", - "last_name": "Mayoral", - "email": ["lmayoral9f@imdb.com"], - "gender": "Female", - "ip_address": "35.241.246.79" - }, - { - "id": 341, - "first_name": "Vallie", - "last_name": "Trowle", - "email": ["vtrowle9g@networkadvertising.org"], - "gender": "Female", - "ip_address": "163.24.147.173" - }, - { - "id": 342, - "first_name": "Patsy", - "last_name": "Ranby", - "email": ["pranby9h@altervista.org"], - "gender": "Male", - "ip_address": "12.205.65.121" - }, - { - "id": 343, - "first_name": "Torin", - "last_name": "Sage", - "email": ["tsage9i@example.com"], - "gender": "Male", - "ip_address": "243.190.175.219" - }, - { - "id": 344, - "first_name": "Latia", - "last_name": "Esselen", - "email": ["lesselen9j@furl.net"], - "gender": "Female", - "ip_address": "113.6.44.164" - }, - { - "id": 345, - "first_name": "Jacquelin", - "last_name": "Naisey", - "email": ["jnaisey9k@goo.gl"], - "gender": "Female", - "ip_address": "131.213.201.230" - }, - { - "id": 346, - "first_name": "Kari", - "last_name": "Pietersen", - "email": ["kpietersen9l@gravatar.com"], - "gender": "Female", - "ip_address": "248.172.158.82" - }, - { - "id": 347, - "first_name": "Yasmeen", - "last_name": "Crosio", - "email": ["ycrosio9m@imageshack.us"], - "gender": "Female", - "ip_address": "7.52.69.73" - }, - { - "id": 348, - "first_name": "Karel", - "last_name": "Inglesent", - "email": ["kinglesent9n@vkontakte.ru"], - "gender": "Male", - "ip_address": "178.76.20.164" - }, - { - "id": 349, - "first_name": "Rufus", - "last_name": "Villar", - "email": ["rvillar9o@alibaba.com"], - "gender": "Male", - "ip_address": "188.209.48.11" - }, - { - "id": 350, - "first_name": "Katheryn", - "last_name": "Shewan", - "email": ["kshewan9p@dion.ne.jp"], - "gender": "Female", - "ip_address": "53.39.18.132" - }, - { - "id": 351, - "first_name": "Vic", - "last_name": "Troucher", - "email": ["vtroucher9q@gravatar.com"], - "gender": "Male", - "ip_address": "46.164.145.98" - }, - { - "id": 352, - "first_name": "Fanny", - "last_name": "Bewshaw", - "email": ["fbewshaw9r@macromedia.com"], - "gender": "Female", - "ip_address": "189.85.47.217" - }, - { - "id": 353, - "first_name": "Camile", - "last_name": "Farnorth", - "email": ["cfarnorth9s@de.vu"], - "gender": "Female", - "ip_address": "192.170.41.133" - }, - { - "id": 354, - "first_name": "Dare", - "last_name": "Hammond", - "email": ["dhammond9t@icq.com"], - "gender": "Male", - "ip_address": "96.19.29.182" - }, - { - "id": 355, - "first_name": "Simone", - "last_name": "Satch", - "email": ["ssatch9u@bloglovin.com"], - "gender": "Female", - "ip_address": "39.83.243.2" - }, - { - "id": 356, - "first_name": "Jdavie", - "last_name": "Rase", - "email": ["jrase9v@wsj.com"], - "gender": "Male", - "ip_address": "192.53.19.75" - }, - { - "id": 357, - "first_name": "Eryn", - "last_name": "Hatzar", - "email": ["ehatzar9w@chicagotribune.com"], - "gender": "Female", - "ip_address": "87.255.24.173" - }, - { - "id": 358, - "first_name": "Clyve", - "last_name": "Duthy", - "email": ["cduthy9x@paypal.com"], - "gender": "Male", - "ip_address": "89.65.143.45" - }, - { - "id": 359, - "first_name": "Berry", - "last_name": "Doeg", - "email": ["bdoeg9y@tmall.com"], - "gender": "Female", - "ip_address": "74.189.33.86" - }, - { - "id": 360, - "first_name": "Martyn", - "last_name": "Baskerville", - "email": ["mbaskerville9z@github.com"], - "gender": "Male", - "ip_address": "144.29.11.230" - }, - { - "id": 361, - "first_name": "Marleah", - "last_name": "Larrington", - "email": ["mlarringtona0@smh.com.au"], - "gender": "Female", - "ip_address": "12.174.78.212" - }, - { - "id": 362, - "first_name": "Gwenni", - "last_name": "Daughton", - "email": ["gdaughtona1@umn.edu"], - "gender": "Female", - "ip_address": "208.115.194.236" - }, - { - "id": 363, - "first_name": "Robenia", - "last_name": "Ranfield", - "email": ["rranfielda2@omniture.com"], - "gender": "Female", - "ip_address": "221.140.134.42" - }, - { - "id": 364, - "first_name": "Loree", - "last_name": "Bindley", - "email": ["lbindleya3@aboutads.info"], - "gender": "Female", - "ip_address": "42.111.96.219" - }, - { - "id": 365, - "first_name": "Maggy", - "last_name": "Musgrave", - "email": ["mmusgravea4@tinyurl.com"], - "gender": "Female", - "ip_address": "132.238.59.28" - }, - { - "id": 366, - "first_name": "Oran", - "last_name": "McNern", - "email": ["omcnerna5@123-reg.co.uk"], - "gender": "Male", - "ip_address": "137.101.82.219" - }, - { - "id": 367, - "first_name": "Darline", - "last_name": "Briztman", - "email": ["dbriztmana6@google.ca"], - "gender": "Female", - "ip_address": "227.83.194.173" - }, - { - "id": 368, - "first_name": "Dillon", - "last_name": "Jochanany", - "email": ["djochananya7@youtube.com"], - "gender": "Male", - "ip_address": "106.25.125.124" - }, - { - "id": 369, - "first_name": "Donnell", - "last_name": "Warlton", - "email": ["dwarltona8@sphinn.com"], - "gender": "Male", - "ip_address": "219.12.28.252" - }, - { - "id": 370, - "first_name": "Bess", - "last_name": "Burdas", - "email": ["bburdasa9@hexun.com"], - "gender": "Female", - "ip_address": "255.105.237.166" - }, - { - "id": 371, - "first_name": "Avie", - "last_name": "Lowth", - "email": ["alowthaa@statcounter.com"], - "gender": "Female", - "ip_address": "39.54.6.148" - }, - { - "id": 372, - "first_name": "Dar", - "last_name": "Graham", - "email": ["dgrahamab@prlog.org"], - "gender": "Male", - "ip_address": "46.185.146.31" - }, - { - "id": 373, - "first_name": "Tally", - "last_name": "Delahunty", - "email": ["tdelahuntyac@gizmodo.com"], - "gender": "Male", - "ip_address": "113.254.57.239" - }, - { - "id": 374, - "first_name": "Roddie", - "last_name": "Manssuer", - "email": ["rmanssuerad@histats.com"], - "gender": "Male", - "ip_address": "113.235.228.180" - }, - { - "id": 375, - "first_name": "Joelle", - "last_name": "Gregoriou", - "email": ["jgregoriouae@tamu.edu"], - "gender": "Female", - "ip_address": "224.29.146.14" - }, - { - "id": 376, - "first_name": "Rebecca", - "last_name": "Christoffe", - "email": ["rchristoffeaf@flickr.com"], - "gender": "Female", - "ip_address": "160.6.144.222" - }, - { - "id": 377, - "first_name": "Hashim", - "last_name": "Arghent", - "email": ["harghentag@de.vu"], - "gender": "Male", - "ip_address": "223.22.230.147" - }, - { - "id": 378, - "first_name": "Nathalie", - "last_name": "Seville", - "email": ["nsevilleah@ifeng.com"], - "gender": "Female", - "ip_address": "152.213.4.0" - }, - { - "id": 379, - "first_name": "Susanne", - "last_name": "Summerlad", - "email": ["ssummerladai@liveinternet.ru"], - "gender": "Female", - "ip_address": "155.249.138.248" - }, - { - "id": 380, - "first_name": "Marney", - "last_name": "Whetnall", - "email": ["mwhetnallaj@jimdo.com"], - "gender": "Female", - "ip_address": "123.178.173.95" - }, - { - "id": 381, - "first_name": "Constantino", - "last_name": "Belone", - "email": ["cbeloneak@blogs.com"], - "gender": "Male", - "ip_address": "144.108.60.253" - }, - { - "id": 382, - "first_name": "Madalyn", - "last_name": "Moehler", - "email": ["mmoehleral@deviantart.com"], - "gender": "Female", - "ip_address": "5.175.80.214" - }, - { - "id": 383, - "first_name": "Dacy", - "last_name": "Bedinham", - "email": ["dbedinhamam@amazon.de"], - "gender": "Female", - "ip_address": "43.43.112.92" - }, - { - "id": 384, - "first_name": "Pollyanna", - "last_name": "Luchelli", - "email": ["pluchellian@list-manage.com"], - "gender": "Female", - "ip_address": "18.42.182.173" - }, - { - "id": 385, - "first_name": "Eileen", - "last_name": "Necolds", - "email": ["enecoldsao@ow.ly"], - "gender": "Female", - "ip_address": "15.144.10.213" - }, - { - "id": 386, - "first_name": "Wilow", - "last_name": "Greenstock", - "email": ["wgreenstockap@arstechnica.com"], - "gender": "Female", - "ip_address": "103.120.180.132" - }, - { - "id": 387, - "first_name": "Cash", - "last_name": "Munt", - "email": ["cmuntaq@php.net"], - "gender": "Male", - "ip_address": "231.17.213.27" - }, - { - "id": 388, - "first_name": "Earvin", - "last_name": "Rackstraw", - "email": ["erackstrawar@huffingtonpost.com"], - "gender": "Male", - "ip_address": "88.191.70.216" - }, - { - "id": 389, - "first_name": "Jillian", - "last_name": "Berthelmot", - "email": ["jberthelmotas@deviantart.com"], - "gender": "Female", - "ip_address": "102.110.51.209" - }, - { - "id": 390, - "first_name": "Wyatt", - "last_name": "Standfield", - "email": ["wstandfieldat@google.nl"], - "gender": "Male", - "ip_address": "128.232.190.207" - }, - { - "id": 391, - "first_name": "Ruttger", - "last_name": "McEwen", - "email": ["rmcewenau@senate.gov"], - "gender": "Male", - "ip_address": "158.120.195.205" - }, - { - "id": 392, - "first_name": "Filmer", - "last_name": "Balentyne", - "email": ["fbalentyneav@redcross.org"], - "gender": "Male", - "ip_address": "204.205.21.18" - }, - { - "id": 393, - "first_name": "John", - "last_name": "Rickaby", - "email": ["jrickabyaw@boston.com"], - "gender": "Male", - "ip_address": "135.82.121.40" - }, - { - "id": 394, - "first_name": "Glenden", - "last_name": "Borland", - "email": ["gborlandax@acquirethisname.com"], - "gender": "Male", - "ip_address": "109.127.2.231" - }, - { - "id": 395, - "first_name": "Marina", - "last_name": "Duligall", - "email": ["mduligallay@php.net"], - "gender": "Female", - "ip_address": "90.121.26.95" - }, - { - "id": 396, - "first_name": "Georg", - "last_name": "Caitlin", - "email": ["gcaitlinaz@msn.com"], - "gender": "Male", - "ip_address": "170.217.205.221" - }, - { - "id": 397, - "first_name": "Codi", - "last_name": "Wicks", - "email": ["cwicksb0@sciencedaily.com"], - "gender": "Female", - "ip_address": "247.47.86.118" - }, - { - "id": 398, - "first_name": "Ty", - "last_name": "Ashbolt", - "email": ["tashboltb1@imgur.com"], - "gender": "Male", - "ip_address": "84.80.216.154" - }, - { - "id": 399, - "first_name": "Sella", - "last_name": "McElvogue", - "email": ["smcelvogueb2@google.fr"], - "gender": "Female", - "ip_address": "116.3.116.177" - }, - { - "id": 400, - "first_name": "Vanny", - "last_name": "Folomin", - "email": ["vfolominb3@ihg.com"], - "gender": "Female", - "ip_address": "21.251.68.95" - }, - { - "id": 401, - "first_name": "Raddy", - "last_name": "Vicarey", - "email": ["rvicareyb4@printfriendly.com"], - "gender": "Male", - "ip_address": "164.63.103.193" - }, - { - "id": 402, - "first_name": "Deana", - "last_name": "Giblett", - "email": ["dgiblettb5@myspace.com"], - "gender": "Female", - "ip_address": "31.64.24.90" - }, - { - "id": 403, - "first_name": "Cad", - "last_name": "Dunton", - "email": ["cduntonb6@lulu.com"], - "gender": "Male", - "ip_address": "205.235.37.80" - }, - { - "id": 404, - "first_name": "Tammi", - "last_name": "Cicculini", - "email": ["tcicculinib7@google.com.hk"], - "gender": "Female", - "ip_address": "53.8.61.11" - }, - { - "id": 405, - "first_name": "Pablo", - "last_name": "Pervoe", - "email": ["ppervoeb8@opera.com"], - "gender": "Male", - "ip_address": "28.248.236.163" - }, - { - "id": 406, - "first_name": "Leeann", - "last_name": "Basilio", - "email": ["lbasiliob9@hugedomains.com"], - "gender": "Female", - "ip_address": "191.6.79.100" - }, - { - "id": 407, - "first_name": "Querida", - "last_name": "Umfrey", - "email": ["qumfreyba@cam.ac.uk"], - "gender": "Female", - "ip_address": "199.52.83.51" - }, - { - "id": 408, - "first_name": "Randal", - "last_name": "Kears", - "email": ["rkearsbb@about.me"], - "gender": "Male", - "ip_address": "77.74.207.54" - }, - { - "id": 409, - "first_name": "Mariska", - "last_name": "Hanhardt", - "email": ["mhanhardtbc@aol.com"], - "gender": "Female", - "ip_address": "118.11.102.80" - }, - { - "id": 410, - "first_name": "Read", - "last_name": "Bulfoot", - "email": ["rbulfootbd@salon.com"], - "gender": "Male", - "ip_address": "211.102.240.150" - }, - { - "id": 411, - "first_name": "Ferdy", - "last_name": "Ruseworth", - "email": ["fruseworthbe@so-net.ne.jp"], - "gender": "Male", - "ip_address": "193.132.197.89" - }, - { - "id": 412, - "first_name": "Randa", - "last_name": "Sanchez", - "email": ["rsanchezbf@youku.com"], - "gender": "Female", - "ip_address": "156.148.198.171" - }, - { - "id": 413, - "first_name": "Kinny", - "last_name": "Mulheron", - "email": ["kmulheronbg@gravatar.com"], - "gender": "Male", - "ip_address": "188.138.38.179" - }, - { - "id": 414, - "first_name": "Pate", - "last_name": "Minchinton", - "email": ["pminchintonbh@cdbaby.com"], - "gender": "Male", - "ip_address": "237.242.159.180" - }, - { - "id": 415, - "first_name": "Olympie", - "last_name": "Brookes", - "email": ["obrookesbi@ustream.tv"], - "gender": "Female", - "ip_address": "157.54.167.58" - }, - { - "id": 416, - "first_name": "Daisie", - "last_name": "Basso", - "email": ["dbassobj@netlog.com"], - "gender": "Female", - "ip_address": "210.177.194.89" - }, - { - "id": 417, - "first_name": "Chalmers", - "last_name": "Caldero", - "email": ["ccalderobk@mediafire.com"], - "gender": "Male", - "ip_address": "147.246.123.116" - }, - { - "id": 418, - "first_name": "Tate", - "last_name": "Camois", - "email": ["tcamoisbl@liveinternet.ru"], - "gender": "Male", - "ip_address": "250.95.73.224" - }, - { - "id": 419, - "first_name": "Theo", - "last_name": "Bunstone", - "email": ["tbunstonebm@ted.com"], - "gender": "Female", - "ip_address": "198.194.139.172" - }, - { - "id": 420, - "first_name": "Sharia", - "last_name": "Schulken", - "email": ["sschulkenbn@bandcamp.com"], - "gender": "Female", - "ip_address": "126.139.212.135" - }, - { - "id": 421, - "first_name": "Riley", - "last_name": "Shortall", - "email": ["rshortallbo@ucsd.edu"], - "gender": "Male", - "ip_address": "255.34.151.141" - }, - { - "id": 422, - "first_name": "Othelia", - "last_name": "Shirrell", - "email": ["oshirrellbp@salon.com"], - "gender": "Female", - "ip_address": "35.123.234.167" - }, - { - "id": 423, - "first_name": "Ervin", - "last_name": "Goodwell", - "email": ["egoodwellbq@360.cn"], - "gender": "Male", - "ip_address": "25.117.251.50" - }, - { - "id": 424, - "first_name": "Hoyt", - "last_name": "Skelly", - "email": ["hskellybr@mac.com"], - "gender": "Male", - "ip_address": "121.7.250.71" - }, - { - "id": 425, - "first_name": "Corrina", - "last_name": "Zini", - "email": ["czinibs@usgs.gov"], - "gender": "Female", - "ip_address": "13.215.96.220" - }, - { - "id": 426, - "first_name": "Reamonn", - "last_name": "Ayton", - "email": ["raytonbt@sbwire.com"], - "gender": "Male", - "ip_address": "128.226.53.250" - }, - { - "id": 427, - "first_name": "Misty", - "last_name": "O'Flaverty", - "email": ["moflavertybu@salon.com"], - "gender": "Female", - "ip_address": "75.93.162.108" - }, - { - "id": 428, - "first_name": "Danni", - "last_name": "Slocumb", - "email": ["dslocumbbv@admin.ch"], - "gender": "Female", - "ip_address": "184.49.232.132" - }, - { - "id": 429, - "first_name": "Ferris", - "last_name": "Print", - "email": ["fprintbw@163.com"], - "gender": "Male", - "ip_address": "231.195.194.192" - }, - { - "id": 430, - "first_name": "Rubin", - "last_name": "O'Gready", - "email": ["rogreadybx@symantec.com"], - "gender": "Male", - "ip_address": "95.5.134.12" - }, - { - "id": 431, - "first_name": "Janaye", - "last_name": "Kelshaw", - "email": ["jkelshawby@phpbb.com"], - "gender": "Female", - "ip_address": "14.110.38.195" - }, - { - "id": 432, - "first_name": "Eugenia", - "last_name": "Moggie", - "email": ["emoggiebz@wikimedia.org"], - "gender": "Female", - "ip_address": "238.48.211.27" - }, - { - "id": 433, - "first_name": "Bartlet", - "last_name": "Baudts", - "email": ["bbaudtsc0@mail.ru"], - "gender": "Male", - "ip_address": "87.210.24.149" - }, - { - "id": 434, - "first_name": "Karin", - "last_name": "Beamish", - "email": ["kbeamishc1@dot.gov"], - "gender": "Female", - "ip_address": "145.236.8.212" - }, - { - "id": 435, - "first_name": "Brittaney", - "last_name": "Maycey", - "email": ["bmayceyc2@biglobe.ne.jp"], - "gender": "Female", - "ip_address": "9.119.93.100" - }, - { - "id": 436, - "first_name": "Arne", - "last_name": "Bulmer", - "email": ["abulmerc3@bloglovin.com"], - "gender": "Male", - "ip_address": "141.190.113.223" - }, - { - "id": 437, - "first_name": "Emily", - "last_name": "Leather", - "email": ["eleatherc4@jimdo.com"], - "gender": "Female", - "ip_address": "205.250.69.5" - }, - { - "id": 438, - "first_name": "Jessika", - "last_name": "Wadly", - "email": ["jwadlyc5@europa.eu"], - "gender": "Female", - "ip_address": "86.206.94.251" - }, - { - "id": 439, - "first_name": "Talia", - "last_name": "Blackborough", - "email": ["tblackboroughc6@seattletimes.com"], - "gender": "Female", - "ip_address": "255.107.33.215" - }, - { - "id": 440, - "first_name": "Ema", - "last_name": "Ludye", - "email": ["eludyec7@linkedin.com"], - "gender": "Female", - "ip_address": "128.104.58.184" - }, - { - "id": 441, - "first_name": "Wilmette", - "last_name": "Andrioni", - "email": ["wandrionic8@ezinearticles.com"], - "gender": "Female", - "ip_address": "29.187.45.137" - }, - { - "id": 442, - "first_name": "Anselma", - "last_name": "Paxman", - "email": ["apaxmanc9@umich.edu"], - "gender": "Female", - "ip_address": "180.78.243.255" - }, - { - "id": 443, - "first_name": "Gordy", - "last_name": "Frankham", - "email": ["gfrankhamca@163.com"], - "gender": "Male", - "ip_address": "55.15.37.103" - }, - { - "id": 444, - "first_name": "Carlos", - "last_name": "Kennion", - "email": ["ckennioncb@fda.gov"], - "gender": "Male", - "ip_address": "200.145.139.99" - }, - { - "id": 445, - "first_name": "Arleta", - "last_name": "Lung", - "email": ["alungcc@google.ru"], - "gender": "Female", - "ip_address": "123.188.177.34" - }, - { - "id": 446, - "first_name": "Georas", - "last_name": "Silverthorn", - "email": ["gsilverthorncd@prweb.com"], - "gender": "Male", - "ip_address": "5.145.214.121" - }, - { - "id": 447, - "first_name": "Jaimie", - "last_name": "Fromant", - "email": ["jfromantce@abc.net.au"], - "gender": "Male", - "ip_address": "254.141.248.53" - }, - { - "id": 448, - "first_name": "Eveleen", - "last_name": "Fulk", - "email": ["efulkcf@adobe.com"], - "gender": "Female", - "ip_address": "210.50.95.135" - }, - { - "id": 449, - "first_name": "Parsifal", - "last_name": "Dwerryhouse", - "email": ["pdwerryhousecg@multiply.com"], - "gender": "Male", - "ip_address": "119.40.195.39" - }, - { - "id": 450, - "first_name": "Aurelie", - "last_name": "Tams", - "email": ["atamsch@google.co.uk"], - "gender": "Female", - "ip_address": "81.129.108.105" - }, - { - "id": 451, - "first_name": "Jeno", - "last_name": "Bruhn", - "email": ["jbruhnci@twitter.com"], - "gender": "Male", - "ip_address": "158.93.143.162" - }, - { - "id": 452, - "first_name": "Abigail", - "last_name": "Bordman", - "email": ["abordmancj@msn.com"], - "gender": "Female", - "ip_address": "240.208.163.124" - }, - { - "id": 453, - "first_name": "Corrine", - "last_name": "Andrez", - "email": ["candrezck@51.la"], - "gender": "Female", - "ip_address": "232.70.27.219" - }, - { - "id": 454, - "first_name": "Donnie", - "last_name": "Matushevich", - "email": ["dmatushevichcl@bloomberg.com"], - "gender": "Female", - "ip_address": "121.106.198.50" - }, - { - "id": 455, - "first_name": "Dicky", - "last_name": "Girling", - "email": ["dgirlingcm@storify.com"], - "gender": "Male", - "ip_address": "45.117.62.197" - }, - { - "id": 456, - "first_name": "Myra", - "last_name": "Maudsley", - "email": ["mmaudsleycn@blogspot.com"], - "gender": "Female", - "ip_address": "95.70.227.180" - }, - { - "id": 457, - "first_name": "Wilhelm", - "last_name": "Ballantyne", - "email": ["wballantyneco@netlog.com"], - "gender": "Male", - "ip_address": "237.46.238.11" - }, - { - "id": 458, - "first_name": "Christen", - "last_name": "Moylane", - "email": ["cmoylanecp@theatlantic.com"], - "gender": "Female", - "ip_address": "21.64.14.32" - }, - { - "id": 459, - "first_name": "Haroun", - "last_name": "Celier", - "email": ["hceliercq@phoca.cz"], - "gender": "Male", - "ip_address": "189.19.165.148" - }, - { - "id": 460, - "first_name": "Celestia", - "last_name": "Ewbanks", - "email": ["cewbankscr@umich.edu"], - "gender": "Female", - "ip_address": "201.120.120.21" - }, - { - "id": 461, - "first_name": "Stefanie", - "last_name": "MacAndreis", - "email": ["smacandreiscs@photobucket.com"], - "gender": "Female", - "ip_address": "97.214.213.82" - }, - { - "id": 462, - "first_name": "Henderson", - "last_name": "Deares", - "email": ["hdearesct@shareasale.com"], - "gender": "Male", - "ip_address": "137.100.24.87" - }, - { - "id": 463, - "first_name": "Mayer", - "last_name": "Turnpenny", - "email": ["mturnpennycu@mozilla.com"], - "gender": "Male", - "ip_address": "193.30.182.53" - }, - { - "id": 464, - "first_name": "Kara", - "last_name": "Weins", - "email": ["kweinscv@skyrock.com"], - "gender": "Female", - "ip_address": "240.34.186.182" - }, - { - "id": 465, - "first_name": "Cesare", - "last_name": "Straun", - "email": ["cstrauncw@google.com.br"], - "gender": "Male", - "ip_address": "47.107.57.42" - }, - { - "id": 466, - "first_name": "Janifer", - "last_name": "Parchment", - "email": ["jparchmentcx@ox.ac.uk"], - "gender": "Female", - "ip_address": "47.92.249.168" - }, - { - "id": 467, - "first_name": "Elbertina", - "last_name": "Storrie", - "email": ["estorriecy@sfgate.com"], - "gender": "Female", - "ip_address": "232.82.12.146" - }, - { - "id": 468, - "first_name": "Opal", - "last_name": "Cords", - "email": ["ocordscz@list-manage.com"], - "gender": "Female", - "ip_address": "97.169.170.23" - }, - { - "id": 469, - "first_name": "Kelbee", - "last_name": "Jefferys", - "email": ["kjefferysd0@dropbox.com"], - "gender": "Male", - "ip_address": "174.231.212.12" - }, - { - "id": 470, - "first_name": "Hatty", - "last_name": "Meiklejohn", - "email": ["hmeiklejohnd1@twitter.com"], - "gender": "Female", - "ip_address": "195.6.95.234" - }, - { - "id": 471, - "first_name": "Babita", - "last_name": "Hutcheon", - "email": ["bhutcheond2@zdnet.com"], - "gender": "Female", - "ip_address": "54.100.79.151" - }, - { - "id": 472, - "first_name": "Julie", - "last_name": "Mutton", - "email": ["jmuttond3@homestead.com"], - "gender": "Male", - "ip_address": "95.13.97.130" - }, - { - "id": 473, - "first_name": "Morgen", - "last_name": "Garratty", - "email": ["mgarrattyd4@dyndns.org"], - "gender": "Male", - "ip_address": "176.211.248.34" - }, - { - "id": 474, - "first_name": "Yorgos", - "last_name": "Dew", - "email": ["ydewd5@cnbc.com"], - "gender": "Male", - "ip_address": "152.80.245.186" - }, - { - "id": 475, - "first_name": "Israel", - "last_name": "Morratt", - "email": ["imorrattd6@123-reg.co.uk"], - "gender": "Male", - "ip_address": "39.220.153.163" - }, - { - "id": 476, - "first_name": "Shem", - "last_name": "Fromont", - "email": ["sfromontd7@tamu.edu"], - "gender": "Male", - "ip_address": "160.59.203.118" - }, - { - "id": 477, - "first_name": "Mahalia", - "last_name": "Summerscales", - "email": ["msummerscalesd8@bloomberg.com"], - "gender": "Female", - "ip_address": "194.69.195.0" - }, - { - "id": 478, - "first_name": "Hebert", - "last_name": "Spira", - "email": ["hspirad9@google.cn"], - "gender": "Male", - "ip_address": "248.176.137.88" - }, - { - "id": 479, - "first_name": "Igor", - "last_name": "Hasely", - "email": ["ihaselyda@latimes.com"], - "gender": "Male", - "ip_address": "148.77.137.47" - }, - { - "id": 480, - "first_name": "Lenka", - "last_name": "Dunderdale", - "email": ["ldunderdaledb@webnode.com"], - "gender": "Female", - "ip_address": "102.182.154.231" - }, - { - "id": 481, - "first_name": "Aluino", - "last_name": "Spinas", - "email": ["aspinasdc@ed.gov"], - "gender": "Male", - "ip_address": "180.21.100.24" - }, - { - "id": 482, - "first_name": "Silvana", - "last_name": "Dittson", - "email": ["sdittsondd@printfriendly.com"], - "gender": "Female", - "ip_address": "155.192.243.197" - }, - { - "id": 483, - "first_name": "Tracie", - "last_name": "Schuck", - "email": ["tschuckde@bbc.co.uk"], - "gender": "Male", - "ip_address": "159.186.194.144" - }, - { - "id": 484, - "first_name": "Leona", - "last_name": "McFie", - "email": ["lmcfiedf@youtube.com"], - "gender": "Female", - "ip_address": "15.42.67.193" - }, - { - "id": 485, - "first_name": "Chase", - "last_name": "Odlin", - "email": ["codlindg@etsy.com"], - "gender": "Male", - "ip_address": "220.36.147.110" - }, - { - "id": 486, - "first_name": "Bram", - "last_name": "Pergens", - "email": ["bpergensdh@unc.edu"], - "gender": "Male", - "ip_address": "87.88.230.23" - }, - { - "id": 487, - "first_name": "Marianne", - "last_name": "Akerman", - "email": ["makermandi@t-online.de"], - "gender": "Female", - "ip_address": "205.76.10.65" - }, - { - "id": 488, - "first_name": "Dulciana", - "last_name": "Lamblin", - "email": ["dlamblindj@tinyurl.com"], - "gender": "Female", - "ip_address": "140.245.97.188" - }, - { - "id": 489, - "first_name": "Ellerey", - "last_name": "Teece", - "email": ["eteecedk@si.edu"], - "gender": "Male", - "ip_address": "71.38.69.108" - }, - { - "id": 490, - "first_name": "Buddy", - "last_name": "Lebel", - "email": ["blebeldl@goodreads.com"], - "gender": "Male", - "ip_address": "7.99.27.78" - }, - { - "id": 491, - "first_name": "Garrick", - "last_name": "Tsarovic", - "email": ["gtsarovicdm@sogou.com"], - "gender": "Male", - "ip_address": "171.234.246.91" - }, - { - "id": 492, - "first_name": "Romain", - "last_name": "Tupie", - "email": ["rtupiedn@loc.gov"], - "gender": "Male", - "ip_address": "156.23.3.24" - }, - { - "id": 493, - "first_name": "Brendis", - "last_name": "Pennazzi", - "email": ["bpennazzido@creativecommons.org"], - "gender": "Male", - "ip_address": "15.242.239.222" - }, - { - "id": 494, - "first_name": "Grover", - "last_name": "Kinkaid", - "email": ["gkinkaiddp@w3.org"], - "gender": "Male", - "ip_address": "149.247.125.150" - }, - { - "id": 495, - "first_name": "Alina", - "last_name": "Jain", - "email": ["ajaindq@senate.gov"], - "gender": "Female", - "ip_address": "98.65.219.138" - }, - { - "id": 496, - "first_name": "Corney", - "last_name": "Fridd", - "email": ["cfridddr@hud.gov"], - "gender": "Male", - "ip_address": "207.123.101.200" - }, - { - "id": 497, - "first_name": "Bernie", - "last_name": "Eye", - "email": ["beyeds@boston.com"], - "gender": "Male", - "ip_address": "152.79.65.253" - }, - { - "id": 498, - "first_name": "Staford", - "last_name": "Coop", - "email": ["scoopdt@51.la"], - "gender": "Male", - "ip_address": "53.40.184.89" - }, - { - "id": 499, - "first_name": "Holly-anne", - "last_name": "Jaher", - "email": ["hjaherdu@columbia.edu"], - "gender": "Female", - "ip_address": "43.213.137.137" - }, - { - "id": 500, - "first_name": "Hobie", - "last_name": "Folkes", - "email": ["hfolkesdv@blogspot.com"], - "gender": "Male", - "ip_address": "82.62.193.255" - }, - { - "id": 501, - "first_name": "Schuyler", - "last_name": "Crop", - "email": ["scropdw@usa.gov"], - "gender": "Male", - "ip_address": "76.71.235.179" - }, - { - "id": 502, - "first_name": "Kennan", - "last_name": "Knapper", - "email": ["kknapperdx@so-net.ne.jp"], - "gender": "Male", - "ip_address": "30.213.68.90" - }, - { - "id": 503, - "first_name": "Gerik", - "last_name": "Havill", - "email": ["ghavilldy@tripod.com"], - "gender": "Male", - "ip_address": "78.201.188.44" - }, - { - "id": 504, - "first_name": "Michell", - "last_name": "McGuane", - "email": ["mmcguanedz@free.fr"], - "gender": "Female", - "ip_address": "32.60.64.235" - }, - { - "id": 505, - "first_name": "Kaja", - "last_name": "Giamelli", - "email": ["kgiamellie0@hc360.com"], - "gender": "Female", - "ip_address": "197.141.163.102" - }, - { - "id": 506, - "first_name": "Janean", - "last_name": "Doles", - "email": ["jdolese1@livejournal.com"], - "gender": "Female", - "ip_address": "184.53.12.234" - }, - { - "id": 507, - "first_name": "Felicia", - "last_name": "Ghest", - "email": ["fgheste2@accuweather.com"], - "gender": "Female", - "ip_address": "110.194.42.42" - }, - { - "id": 508, - "first_name": "Perrine", - "last_name": "Hemphill", - "email": ["phemphille3@answers.com"], - "gender": "Female", - "ip_address": "229.236.72.58" - }, - { - "id": 509, - "first_name": "Spense", - "last_name": "Jordine", - "email": ["sjordinee4@ucoz.ru"], - "gender": "Male", - "ip_address": "33.53.199.217" - }, - { - "id": 510, - "first_name": "Rosa", - "last_name": "Dunthorn", - "email": ["rdunthorne5@stumbleupon.com"], - "gender": "Female", - "ip_address": "210.1.216.67" - }, - { - "id": 511, - "first_name": "Isabelita", - "last_name": "Martinon", - "email": ["imartinone6@yelp.com"], - "gender": "Female", - "ip_address": "196.133.2.177" - }, - { - "id": 512, - "first_name": "Nowell", - "last_name": "Reynalds", - "email": ["nreynaldse7@google.co.uk"], - "gender": "Male", - "ip_address": "150.56.231.51" - }, - { - "id": 513, - "first_name": "Sigvard", - "last_name": "Glenn", - "email": ["sglenne8@angelfire.com"], - "gender": "Male", - "ip_address": "145.128.148.216" - }, - { - "id": 514, - "first_name": "Reyna", - "last_name": "Trevithick", - "email": ["rtrevithicke9@friendfeed.com"], - "gender": "Female", - "ip_address": "60.23.125.126" - }, - { - "id": 515, - "first_name": "Raimondo", - "last_name": "Checcucci", - "email": ["rcheccucciea@buzzfeed.com"], - "gender": "Male", - "ip_address": "162.177.229.216" - }, - { - "id": 516, - "first_name": "Marjie", - "last_name": "Roscow", - "email": ["mroscoweb@gravatar.com"], - "gender": "Female", - "ip_address": "220.132.77.169" - }, - { - "id": 517, - "first_name": "Osgood", - "last_name": "Thacke", - "email": ["othackeec@surveymonkey.com"], - "gender": "Male", - "ip_address": "39.252.108.115" - }, - { - "id": 518, - "first_name": "Dorita", - "last_name": "Dallas", - "email": ["ddallased@mozilla.com"], - "gender": "Female", - "ip_address": "32.52.193.127" - }, - { - "id": 519, - "first_name": "Moria", - "last_name": "Gorcke", - "email": ["mgorckeee@answers.com"], - "gender": "Female", - "ip_address": "192.42.67.220" - }, - { - "id": 520, - "first_name": "Roseanna", - "last_name": "Cooke", - "email": ["rcookeef@xrea.com"], - "gender": "Female", - "ip_address": "246.171.139.25" - }, - { - "id": 521, - "first_name": "Fannie", - "last_name": "Tibbits", - "email": ["ftibbitseg@bbc.co.uk"], - "gender": "Female", - "ip_address": "46.209.16.14" - }, - { - "id": 522, - "first_name": "Lil", - "last_name": "Gawke", - "email": ["lgawkeeh@hp.com"], - "gender": "Female", - "ip_address": "82.95.165.17" - }, - { - "id": 523, - "first_name": "Curtice", - "last_name": "Linford", - "email": ["clinfordei@dell.com"], - "gender": "Male", - "ip_address": "28.246.139.48" - }, - { - "id": 524, - "first_name": "Terrell", - "last_name": "Dufaire", - "email": ["tdufaireej@networkadvertising.org"], - "gender": "Male", - "ip_address": "103.232.0.154" - }, - { - "id": 525, - "first_name": "Amata", - "last_name": "McClinton", - "email": ["amcclintonek@barnesandnoble.com"], - "gender": "Female", - "ip_address": "225.32.32.149" - }, - { - "id": 526, - "first_name": "Carrol", - "last_name": "Baylay", - "email": ["cbaylayel@who.int"], - "gender": "Male", - "ip_address": "156.149.235.50" - }, - { - "id": 527, - "first_name": "Margette", - "last_name": "Todd", - "email": ["mtoddem@163.com"], - "gender": "Female", - "ip_address": "93.121.248.230" - }, - { - "id": 528, - "first_name": "Anica", - "last_name": "Gentle", - "email": ["agentleen@msn.com"], - "gender": "Female", - "ip_address": "179.203.156.125" - }, - { - "id": 529, - "first_name": "Thomasine", - "last_name": "Cloke", - "email": ["tclokeeo@pen.io"], - "gender": "Female", - "ip_address": "209.130.159.22" - }, - { - "id": 530, - "first_name": "Waverly", - "last_name": "McNeely", - "email": ["wmcneelyep@zimbio.com"], - "gender": "Male", - "ip_address": "152.138.73.78" - }, - { - "id": 531, - "first_name": "Dominga", - "last_name": "Bishell", - "email": ["dbishelleq@economist.com"], - "gender": "Female", - "ip_address": "51.245.160.109" - }, - { - "id": 532, - "first_name": "Quintin", - "last_name": "Dellenbrok", - "email": ["qdellenbroker@apache.org"], - "gender": "Male", - "ip_address": "40.162.182.242" - }, - { - "id": 533, - "first_name": "Kenn", - "last_name": "Tarbet", - "email": ["ktarbetes@imdb.com"], - "gender": "Male", - "ip_address": "161.120.222.147" - }, - { - "id": 534, - "first_name": "Huntley", - "last_name": "Edwardson", - "email": ["hedwardsonet@booking.com"], - "gender": "Male", - "ip_address": "134.7.97.114" - }, - { - "id": 535, - "first_name": "Richmound", - "last_name": "Cator", - "email": ["rcatoreu@nydailynews.com"], - "gender": "Male", - "ip_address": "91.69.187.103" - }, - { - "id": 536, - "first_name": "Northrup", - "last_name": "Whitmell", - "email": ["nwhitmellev@ebay.co.uk"], - "gender": "Male", - "ip_address": "250.147.86.151" - }, - { - "id": 537, - "first_name": "Alphonse", - "last_name": "Shaddock", - "email": ["ashaddockew@hhs.gov"], - "gender": "Male", - "ip_address": "87.100.66.89" - }, - { - "id": 538, - "first_name": "Corliss", - "last_name": "Blesdill", - "email": ["cblesdillex@infoseek.co.jp"], - "gender": "Female", - "ip_address": "102.120.249.148" - }, - { - "id": 539, - "first_name": "Britt", - "last_name": "Deavin", - "email": ["bdeaviney@hhs.gov"], - "gender": "Male", - "ip_address": "57.156.52.82" - }, - { - "id": 540, - "first_name": "Malinde", - "last_name": "Peatman", - "email": ["mpeatmanez@amazon.com"], - "gender": "Female", - "ip_address": "194.42.30.45" - }, - { - "id": 541, - "first_name": "Elonore", - "last_name": "Buntine", - "email": ["ebuntinef0@prnewswire.com"], - "gender": "Female", - "ip_address": "72.139.232.113" - }, - { - "id": 542, - "first_name": "Matelda", - "last_name": "Pountney", - "email": ["mpountneyf1@msu.edu"], - "gender": "Female", - "ip_address": "142.105.218.178" - }, - { - "id": 543, - "first_name": "Chastity", - "last_name": "Geldeford", - "email": ["cgeldefordf2@utexas.edu"], - "gender": "Female", - "ip_address": "165.236.71.95" - }, - { - "id": 544, - "first_name": "Shell", - "last_name": "Peattie", - "email": ["speattief3@smugmug.com"], - "gender": "Male", - "ip_address": "34.242.161.40" - }, - { - "id": 545, - "first_name": "Bea", - "last_name": "Balsom", - "email": ["bbalsomf4@weibo.com"], - "gender": "Female", - "ip_address": "212.141.232.175" - }, - { - "id": 546, - "first_name": "Pooh", - "last_name": "Gabbot", - "email": ["pgabbotf5@bizjournals.com"], - "gender": "Female", - "ip_address": "200.111.239.93" - }, - { - "id": 547, - "first_name": "Tiena", - "last_name": "Connerly", - "email": ["tconnerlyf6@privacy.gov.au"], - "gender": "Female", - "ip_address": "68.27.75.249" - }, - { - "id": 548, - "first_name": "Anastasie", - "last_name": "Abramzon", - "email": ["aabramzonf7@rediff.com"], - "gender": "Female", - "ip_address": "218.79.103.217" - }, - { - "id": 549, - "first_name": "Loree", - "last_name": "Danigel", - "email": ["ldanigelf8@comcast.net"], - "gender": "Female", - "ip_address": "180.144.208.7" - }, - { - "id": 550, - "first_name": "Hy", - "last_name": "Anglish", - "email": ["hanglishf9@mozilla.org"], - "gender": "Male", - "ip_address": "253.162.57.204" - }, - { - "id": 551, - "first_name": "Dorian", - "last_name": "Staresmeare", - "email": ["dstaresmearefa@tinypic.com"], - "gender": "Female", - "ip_address": "61.205.44.22" - }, - { - "id": 552, - "first_name": "Burke", - "last_name": "Jeremiah", - "email": ["bjeremiahfb@phpbb.com"], - "gender": "Male", - "ip_address": "92.37.164.63" - }, - { - "id": 553, - "first_name": "Israel", - "last_name": "Samber", - "email": ["isamberfc@amazon.com"], - "gender": "Male", - "ip_address": "123.168.152.156" - }, - { - "id": 554, - "first_name": "Deeyn", - "last_name": "Orable", - "email": ["dorablefd@live.com"], - "gender": "Female", - "ip_address": "127.185.213.108" - }, - { - "id": 555, - "first_name": "Roger", - "last_name": "Bradder", - "email": ["rbradderfe@skype.com"], - "gender": "Male", - "ip_address": "220.221.125.103" - }, - { - "id": 556, - "first_name": "Pattie", - "last_name": "Archard", - "email": ["parchardff@skype.com"], - "gender": "Female", - "ip_address": "124.113.154.99" - }, - { - "id": 557, - "first_name": "Fern", - "last_name": "Leathem", - "email": ["fleathemfg@ft.com"], - "gender": "Female", - "ip_address": "151.19.176.193" - }, - { - "id": 558, - "first_name": "Leanora", - "last_name": "Merlin", - "email": ["lmerlinfh@google.ca"], - "gender": "Female", - "ip_address": "122.66.245.140" - }, - { - "id": 559, - "first_name": "Raf", - "last_name": "Giraudo", - "email": ["rgiraudofi@cbslocal.com"], - "gender": "Female", - "ip_address": "148.71.176.150" - }, - { - "id": 560, - "first_name": "Devy", - "last_name": "Dearan", - "email": ["ddearanfj@ehow.com"], - "gender": "Male", - "ip_address": "175.96.234.47" - }, - { - "id": 561, - "first_name": "Una", - "last_name": "Chelnam", - "email": ["uchelnamfk@time.com"], - "gender": "Female", - "ip_address": "142.233.78.243" - }, - { - "id": 562, - "first_name": "Jillayne", - "last_name": "Crocken", - "email": ["jcrockenfl@guardian.co.uk"], - "gender": "Female", - "ip_address": "178.212.70.48" - }, - { - "id": 563, - "first_name": "Saundra", - "last_name": "Levison", - "email": ["slevisonfm@eepurl.com"], - "gender": "Male", - "ip_address": "228.130.41.225" - }, - { - "id": 564, - "first_name": "Daryl", - "last_name": "McFall", - "email": ["dmcfallfn@furl.net"], - "gender": "Male", - "ip_address": "202.245.190.137" - }, - { - "id": 565, - "first_name": "Linoel", - "last_name": "Jammes", - "email": ["ljammesfo@edublogs.org"], - "gender": "Male", - "ip_address": "131.113.254.210" - }, - { - "id": 566, - "first_name": "Gun", - "last_name": "Wallice", - "email": ["gwallicefp@umn.edu"], - "gender": "Male", - "ip_address": "43.72.197.198" - }, - { - "id": 567, - "first_name": "Hilliary", - "last_name": "Deviney", - "email": ["hdevineyfq@huffingtonpost.com"], - "gender": "Female", - "ip_address": "47.41.92.79" - }, - { - "id": 568, - "first_name": "Malia", - "last_name": "Smythe", - "email": ["msmythefr@sina.com.cn"], - "gender": "Female", - "ip_address": "192.101.217.46" - }, - { - "id": 569, - "first_name": "Chevalier", - "last_name": "Van Driel", - "email": ["cvandrielfs@drupal.org"], - "gender": "Male", - "ip_address": "16.149.94.59" - }, - { - "id": 570, - "first_name": "Lavena", - "last_name": "Stachini", - "email": ["lstachinift@google.co.uk"], - "gender": "Female", - "ip_address": "0.170.123.154" - }, - { - "id": 571, - "first_name": "Natka", - "last_name": "MacMearty", - "email": ["nmacmeartyfu@globo.com"], - "gender": "Female", - "ip_address": "221.246.140.209" - }, - { - "id": 572, - "first_name": "Thorsten", - "last_name": "Skocroft", - "email": ["tskocroftfv@parallels.com"], - "gender": "Male", - "ip_address": "96.80.67.46" - }, - { - "id": 573, - "first_name": "Devora", - "last_name": "Pollins", - "email": ["dpollinsfw@diigo.com"], - "gender": "Female", - "ip_address": "60.228.71.69" - }, - { - "id": 574, - "first_name": "Gilburt", - "last_name": "Grimster", - "email": ["ggrimsterfx@tinyurl.com"], - "gender": "Male", - "ip_address": "246.122.251.51" - }, - { - "id": 575, - "first_name": "Goddart", - "last_name": "O'Shee", - "email": ["gosheefy@house.gov"], - "gender": "Male", - "ip_address": "113.66.213.27" - }, - { - "id": 576, - "first_name": "Eadie", - "last_name": "Aubery", - "email": ["eauberyfz@shop-pro.jp"], - "gender": "Female", - "ip_address": "141.18.149.72" - }, - { - "id": 577, - "first_name": "Marla", - "last_name": "Claesens", - "email": ["mclaesensg0@opensource.org"], - "gender": "Female", - "ip_address": "117.47.112.85" - }, - { - "id": 578, - "first_name": "Aubrette", - "last_name": "Asmus", - "email": ["aasmusg1@wp.com"], - "gender": "Female", - "ip_address": "182.211.154.106" - }, - { - "id": 579, - "first_name": "Theobald", - "last_name": "Dewes", - "email": ["tdewesg2@moonfruit.com"], - "gender": "Male", - "ip_address": "174.184.23.153" - }, - { - "id": 580, - "first_name": "Brenda", - "last_name": "Polgreen", - "email": ["bpolgreeng3@globo.com"], - "gender": "Female", - "ip_address": "220.185.224.236" - }, - { - "id": 581, - "first_name": "Giraud", - "last_name": "Roper", - "email": ["groperg4@wordpress.org"], - "gender": "Male", - "ip_address": "192.120.109.60" - }, - { - "id": 582, - "first_name": "Gabie", - "last_name": "Sheerman", - "email": ["gsheermang5@salon.com"], - "gender": "Male", - "ip_address": "120.20.10.183" - }, - { - "id": 583, - "first_name": "Bern", - "last_name": "Lasham", - "email": ["blashamg6@usatoday.com"], - "gender": "Male", - "ip_address": "15.120.213.232" - }, - { - "id": 584, - "first_name": "Paulina", - "last_name": "Janek", - "email": ["pjanekg7@reverbnation.com"], - "gender": "Female", - "ip_address": "205.90.167.90" - }, - { - "id": 585, - "first_name": "Bearnard", - "last_name": "Duckworth", - "email": ["bduckworthg8@scribd.com"], - "gender": "Male", - "ip_address": "225.176.66.38" - }, - { - "id": 586, - "first_name": "Morganica", - "last_name": "Boken", - "email": ["mbokeng9@xing.com"], - "gender": "Female", - "ip_address": "117.81.173.102" - }, - { - "id": 587, - "first_name": "Amargo", - "last_name": "Fortie", - "email": ["afortiega@rambler.ru"], - "gender": "Female", - "ip_address": "222.249.37.175" - }, - { - "id": 588, - "first_name": "Nobie", - "last_name": "Wasielewicz", - "email": ["nwasielewiczgb@npr.org"], - "gender": "Male", - "ip_address": "202.228.79.249" - }, - { - "id": 589, - "first_name": "Auguste", - "last_name": "Gery", - "email": ["agerygc@free.fr"], - "gender": "Female", - "ip_address": "31.30.216.207" - }, - { - "id": 590, - "first_name": "Valina", - "last_name": "Steed", - "email": ["vsteedgd@state.tx.us"], - "gender": "Female", - "ip_address": "242.251.32.135" - }, - { - "id": 591, - "first_name": "Kelby", - "last_name": "Friman", - "email": ["kfrimange@wikimedia.org"], - "gender": "Male", - "ip_address": "127.208.125.107" - }, - { - "id": 592, - "first_name": "Tonie", - "last_name": "Budgett", - "email": ["tbudgettgf@army.mil"], - "gender": "Female", - "ip_address": "196.144.140.255" - }, - { - "id": 593, - "first_name": "Mateo", - "last_name": "Goadsby", - "email": ["mgoadsbygg@flickr.com"], - "gender": "Male", - "ip_address": "142.149.138.47" - }, - { - "id": 594, - "first_name": "Elizabeth", - "last_name": "Giacopini", - "email": ["egiacopinigh@pinterest.com"], - "gender": "Female", - "ip_address": "114.152.234.204" - }, - { - "id": 595, - "first_name": "Lindsay", - "last_name": "Meatyard", - "email": ["lmeatyardgi@newsvine.com"], - "gender": "Female", - "ip_address": "249.102.206.124" - }, - { - "id": 596, - "first_name": "Michaelina", - "last_name": "Fowler", - "email": ["mfowlergj@columbia.edu"], - "gender": "Female", - "ip_address": "200.132.85.77" - }, - { - "id": 597, - "first_name": "Franky", - "last_name": "Sopp", - "email": ["fsoppgk@utexas.edu"], - "gender": "Male", - "ip_address": "184.141.58.90" - }, - { - "id": 598, - "first_name": "Veradis", - "last_name": "Blankman", - "email": ["vblankmangl@yellowbook.com"], - "gender": "Female", - "ip_address": "247.182.240.12" - }, - { - "id": 599, - "first_name": "Becka", - "last_name": "Chritchlow", - "email": ["bchritchlowgm@sakura.ne.jp"], - "gender": "Female", - "ip_address": "20.236.180.164" - }, - { - "id": 600, - "first_name": "Sylvester", - "last_name": "Fareweather", - "email": ["sfareweathergn@washington.edu"], - "gender": "Male", - "ip_address": "54.3.111.166" - }, - { - "id": 601, - "first_name": "Drusilla", - "last_name": "Aubert", - "email": ["daubertgo@kickstarter.com"], - "gender": "Female", - "ip_address": "153.142.98.249" - }, - { - "id": 602, - "first_name": "Tildy", - "last_name": "Falck", - "email": ["tfalckgp@adobe.com"], - "gender": "Female", - "ip_address": "152.253.82.178" - }, - { - "id": 603, - "first_name": "Gwenny", - "last_name": "O'Daly", - "email": ["godalygq@japanpost.jp"], - "gender": "Female", - "ip_address": "196.59.13.248" - }, - { - "id": 604, - "first_name": "Jehanna", - "last_name": "Winney", - "email": ["jwinneygr@ning.com"], - "gender": "Female", - "ip_address": "231.41.31.43" - }, - { - "id": 605, - "first_name": "Tarah", - "last_name": "Dummigan", - "email": ["tdummigangs@shop-pro.jp"], - "gender": "Female", - "ip_address": "246.181.204.206" - }, - { - "id": 606, - "first_name": "Elset", - "last_name": "Warlock", - "email": ["ewarlockgt@yale.edu"], - "gender": "Female", - "ip_address": "254.166.255.163" - }, - { - "id": 607, - "first_name": "Pavlov", - "last_name": "Chiles", - "email": ["pchilesgu@virginia.edu"], - "gender": "Male", - "ip_address": "162.70.70.206" - }, - { - "id": 608, - "first_name": "Stan", - "last_name": "Varndell", - "email": ["svarndellgv@indiatimes.com"], - "gender": "Male", - "ip_address": "220.72.174.106" - }, - { - "id": 609, - "first_name": "Andras", - "last_name": "David", - "email": ["adavidgw@blogspot.com"], - "gender": "Male", - "ip_address": "31.20.112.215" - }, - { - "id": 610, - "first_name": "Jayson", - "last_name": "Drover", - "email": ["jdrovergx@163.com"], - "gender": "Male", - "ip_address": "149.126.37.98" - }, - { - "id": 611, - "first_name": "Ebenezer", - "last_name": "Jurca", - "email": ["ejurcagy@msn.com"], - "gender": "Male", - "ip_address": "157.131.21.174" - }, - { - "id": 612, - "first_name": "Robinett", - "last_name": "Hobson", - "email": ["rhobsongz@google.it"], - "gender": "Female", - "ip_address": "47.152.123.7" - }, - { - "id": 613, - "first_name": "Tally", - "last_name": "Guiness", - "email": ["tguinessh0@biblegateway.com"], - "gender": "Female", - "ip_address": "207.79.124.142" - }, - { - "id": 614, - "first_name": "Cosimo", - "last_name": "Carthy", - "email": ["ccarthyh1@rediff.com"], - "gender": "Male", - "ip_address": "149.91.44.86" - }, - { - "id": 615, - "first_name": "Skipton", - "last_name": "Yeliashev", - "email": ["syeliashevh2@plala.or.jp"], - "gender": "Male", - "ip_address": "118.191.173.28" - }, - { - "id": 616, - "first_name": "Liesa", - "last_name": "Olenin", - "email": ["loleninh3@hugedomains.com"], - "gender": "Female", - "ip_address": "97.251.213.194" - }, - { - "id": 617, - "first_name": "Justin", - "last_name": "Dunkirk", - "email": ["jdunkirkh4@hp.com"], - "gender": "Male", - "ip_address": "137.30.85.117" - }, - { - "id": 618, - "first_name": "Brittani", - "last_name": "Lansley", - "email": ["blansleyh5@dion.ne.jp"], - "gender": "Female", - "ip_address": "53.206.28.216" - }, - { - "id": 619, - "first_name": "Mal", - "last_name": "Ellerby", - "email": ["mellerbyh6@addthis.com"], - "gender": "Male", - "ip_address": "232.223.151.221" - }, - { - "id": 620, - "first_name": "Patience", - "last_name": "Mailes", - "email": ["pmailesh7@mtv.com"], - "gender": "Female", - "ip_address": "63.20.36.132" - }, - { - "id": 621, - "first_name": "Garv", - "last_name": "Cominoli", - "email": ["gcominolih8@google.com.hk"], - "gender": "Male", - "ip_address": "119.129.114.37" - }, - { - "id": 622, - "first_name": "Adelind", - "last_name": "Markel", - "email": ["amarkelh9@rambler.ru"], - "gender": "Female", - "ip_address": "132.198.92.196" - }, - { - "id": 623, - "first_name": "Papageno", - "last_name": "Hadlington", - "email": ["phadlingtonha@cdbaby.com"], - "gender": "Male", - "ip_address": "184.164.20.224" - }, - { - "id": 624, - "first_name": "Barclay", - "last_name": "McPhail", - "email": ["bmcphailhb@slate.com"], - "gender": "Male", - "ip_address": "88.5.251.169" - }, - { - "id": 625, - "first_name": "Frederique", - "last_name": "McGrae", - "email": ["fmcgraehc@parallels.com"], - "gender": "Female", - "ip_address": "51.138.106.184" - }, - { - "id": 626, - "first_name": "Kermie", - "last_name": "McCane", - "email": ["kmccanehd@washington.edu"], - "gender": "Male", - "ip_address": "144.54.71.212" - }, - { - "id": 627, - "first_name": "Arabella", - "last_name": "Bettison", - "email": ["abettisonhe@pcworld.com"], - "gender": "Female", - "ip_address": "77.134.101.57" - }, - { - "id": 628, - "first_name": "Normie", - "last_name": "Foynes", - "email": ["nfoyneshf@guardian.co.uk"], - "gender": "Male", - "ip_address": "251.46.196.202" - }, - { - "id": 629, - "first_name": "Krisha", - "last_name": "Binnie", - "email": ["kbinniehg@wunderground.com"], - "gender": "Male", - "ip_address": "75.214.206.160" - }, - { - "id": 630, - "first_name": "Elka", - "last_name": "Perfitt", - "email": ["eperfitthh@si.edu"], - "gender": "Female", - "ip_address": "101.3.240.217" - }, - { - "id": 631, - "first_name": "Field", - "last_name": "Champain", - "email": ["fchampainhi@mysql.com"], - "gender": "Male", - "ip_address": "105.91.165.83" - }, - { - "id": 632, - "first_name": "Hasty", - "last_name": "Urlin", - "email": ["hurlinhj@noaa.gov"], - "gender": "Male", - "ip_address": "122.152.127.69" - }, - { - "id": 633, - "first_name": "Thacher", - "last_name": "Scarce", - "email": ["tscarcehk@artisteer.com"], - "gender": "Male", - "ip_address": "16.130.240.26" - }, - { - "id": 634, - "first_name": "Merrielle", - "last_name": "Cockshot", - "email": ["mcockshothl@archive.org"], - "gender": "Female", - "ip_address": "153.249.172.190" - }, - { - "id": 635, - "first_name": "Nora", - "last_name": "Foran", - "email": ["nforanhm@tinypic.com"], - "gender": "Female", - "ip_address": "68.206.123.238" - }, - { - "id": 636, - "first_name": "Emmett", - "last_name": "Goodchild", - "email": ["egoodchildhn@netvibes.com"], - "gender": "Male", - "ip_address": "68.26.101.155" - }, - { - "id": 637, - "first_name": "Abbot", - "last_name": "Creboe", - "email": ["acreboeho@mapquest.com"], - "gender": "Male", - "ip_address": "110.59.103.76" - }, - { - "id": 638, - "first_name": "Cello", - "last_name": "Ciobotaru", - "email": ["cciobotaruhp@fda.gov"], - "gender": "Male", - "ip_address": "76.84.114.144" - }, - { - "id": 639, - "first_name": "Ollie", - "last_name": "Swaile", - "email": ["oswailehq@desdev.cn"], - "gender": "Male", - "ip_address": "152.252.4.25" - }, - { - "id": 640, - "first_name": "Baudoin", - "last_name": "Hurich", - "email": ["bhurichhr@harvard.edu"], - "gender": "Male", - "ip_address": "62.152.105.159" - }, - { - "id": 641, - "first_name": "Marietta", - "last_name": "Ellsom", - "email": ["mellsomhs@theglobeandmail.com"], - "gender": "Male", - "ip_address": "67.216.167.139" - }, - { - "id": 642, - "first_name": "Cameron", - "last_name": "Howlings", - "email": ["chowlingsht@mysql.com"], - "gender": "Male", - "ip_address": "193.47.87.6" - }, - { - "id": 643, - "first_name": "Ellwood", - "last_name": "Sleightholme", - "email": ["esleightholmehu@jigsy.com"], - "gender": "Male", - "ip_address": "200.251.121.32" - }, - { - "id": 644, - "first_name": "Flinn", - "last_name": "Mithun", - "email": ["fmithunhv@independent.co.uk"], - "gender": "Male", - "ip_address": "22.25.89.241" - }, - { - "id": 645, - "first_name": "Tiebold", - "last_name": "Shafier", - "email": ["tshafierhw@gravatar.com"], - "gender": "Male", - "ip_address": "181.127.72.144" - }, - { - "id": 646, - "first_name": "Sharai", - "last_name": "McSaul", - "email": ["smcsaulhx@techcrunch.com"], - "gender": "Female", - "ip_address": "159.64.178.83" - }, - { - "id": 647, - "first_name": "Hashim", - "last_name": "Slateford", - "email": ["hslatefordhy@yahoo.co.jp"], - "gender": "Male", - "ip_address": "38.66.44.66" - }, - { - "id": 648, - "first_name": "Tailor", - "last_name": "Daddow", - "email": ["tdaddowhz@engadget.com"], - "gender": "Male", - "ip_address": "213.192.12.202" - }, - { - "id": 649, - "first_name": "Stuart", - "last_name": "Edwick", - "email": ["sedwicki0@amazon.de"], - "gender": "Male", - "ip_address": "120.38.69.155" - }, - { - "id": 650, - "first_name": "Alden", - "last_name": "Genders", - "email": ["agendersi1@4shared.com"], - "gender": "Male", - "ip_address": "177.130.234.53" - }, - { - "id": 651, - "first_name": "Abby", - "last_name": "Dowsett", - "email": ["adowsetti2@chron.com"], - "gender": "Female", - "ip_address": "24.189.114.159" - }, - { - "id": 652, - "first_name": "Rodger", - "last_name": "McAless", - "email": ["rmcalessi3@exblog.jp"], - "gender": "Male", - "ip_address": "199.95.209.77" - }, - { - "id": 653, - "first_name": "Daren", - "last_name": "Toquet", - "email": ["dtoqueti4@vistaprint.com"], - "gender": "Male", - "ip_address": "229.184.81.92" - }, - { - "id": 654, - "first_name": "Mervin", - "last_name": "Point", - "email": ["mpointi5@amazon.co.uk"], - "gender": "Male", - "ip_address": "207.236.20.80" - }, - { - "id": 655, - "first_name": "Maggy", - "last_name": "Sharrem", - "email": ["msharremi6@freewebs.com"], - "gender": "Female", - "ip_address": "221.66.205.48" - }, - { - "id": 656, - "first_name": "Julieta", - "last_name": "Aggus", - "email": ["jaggusi7@fda.gov"], - "gender": "Female", - "ip_address": "151.13.104.97" - }, - { - "id": 657, - "first_name": "Rycca", - "last_name": "Gansbuhler", - "email": ["rgansbuhleri8@marketwatch.com"], - "gender": "Female", - "ip_address": "82.178.125.135" - }, - { - "id": 658, - "first_name": "Aubrey", - "last_name": "Weall", - "email": ["awealli9@harvard.edu"], - "gender": "Male", - "ip_address": "175.59.227.80" - }, - { - "id": 659, - "first_name": "Ilyse", - "last_name": "Farquarson", - "email": ["ifarquarsonia@wordpress.org"], - "gender": "Female", - "ip_address": "128.100.41.30" - }, - { - "id": 660, - "first_name": "Griffy", - "last_name": "Laity", - "email": ["glaityib@chron.com"], - "gender": "Male", - "ip_address": "231.75.35.246" - }, - { - "id": 661, - "first_name": "Eberhard", - "last_name": "Ghione", - "email": ["eghioneic@nih.gov"], - "gender": "Male", - "ip_address": "173.162.81.197" - }, - { - "id": 662, - "first_name": "Eddie", - "last_name": "Querrard", - "email": ["equerrardid@sourceforge.net"], - "gender": "Male", - "ip_address": "131.74.101.175" - }, - { - "id": 663, - "first_name": "Eugen", - "last_name": "Aiers", - "email": ["eaiersie@cornell.edu"], - "gender": "Male", - "ip_address": "200.200.205.57" - }, - { - "id": 664, - "first_name": "Flora", - "last_name": "Ucchino", - "email": ["fucchinoif@nymag.com"], - "gender": "Female", - "ip_address": "118.57.108.252" - }, - { - "id": 665, - "first_name": "Lissie", - "last_name": "Sherbrook", - "email": ["lsherbrookig@eepurl.com"], - "gender": "Female", - "ip_address": "164.23.221.125" - }, - { - "id": 666, - "first_name": "Angelo", - "last_name": "Dougill", - "email": ["adougillih@huffingtonpost.com"], - "gender": "Male", - "ip_address": "6.171.123.41" - }, - { - "id": 667, - "first_name": "Keefer", - "last_name": "Bison", - "email": ["kbisonii@go.com"], - "gender": "Male", - "ip_address": "79.55.252.47" - }, - { - "id": 668, - "first_name": "Norman", - "last_name": "Rozsa", - "email": ["nrozsaij@sbwire.com"], - "gender": "Male", - "ip_address": "187.193.33.0" - }, - { - "id": 669, - "first_name": "Linette", - "last_name": "Romayne", - "email": ["lromayneik@pbs.org"], - "gender": "Female", - "ip_address": "90.63.118.62" - }, - { - "id": 670, - "first_name": "Mervin", - "last_name": "Wiffill", - "email": ["mwiffillil@deliciousdays.com"], - "gender": "Male", - "ip_address": "171.122.193.130" - }, - { - "id": 671, - "first_name": "Anselm", - "last_name": "Eyrl", - "email": ["aeyrlim@usgs.gov"], - "gender": "Male", - "ip_address": "4.21.255.200" - }, - { - "id": 672, - "first_name": "Mair", - "last_name": "Broader", - "email": ["mbroaderin@xing.com"], - "gender": "Female", - "ip_address": "245.30.138.223" - }, - { - "id": 673, - "first_name": "Wendall", - "last_name": "Flanne", - "email": ["wflanneio@geocities.jp"], - "gender": "Male", - "ip_address": "213.135.244.232" - }, - { - "id": 674, - "first_name": "Isaak", - "last_name": "Blampy", - "email": ["iblampyip@boston.com"], - "gender": "Male", - "ip_address": "34.254.180.103" - }, - { - "id": 675, - "first_name": "Alfons", - "last_name": "Bond", - "email": ["abondiq@netscape.com"], - "gender": "Male", - "ip_address": "212.114.145.98" - }, - { - "id": 676, - "first_name": "Fifine", - "last_name": "Penk", - "email": ["fpenkir@wordpress.com"], - "gender": "Female", - "ip_address": "253.137.143.90" - }, - { - "id": 677, - "first_name": "Bibbye", - "last_name": "Freke", - "email": ["bfrekeis@addthis.com"], - "gender": "Female", - "ip_address": "85.178.250.6" - }, - { - "id": 678, - "first_name": "Dewain", - "last_name": "Klemencic", - "email": ["dklemencicit@alexa.com"], - "gender": "Male", - "ip_address": "82.151.116.8" - }, - { - "id": 679, - "first_name": "Vanny", - "last_name": "Morffew", - "email": ["vmorffewiu@webnode.com"], - "gender": "Female", - "ip_address": "28.119.206.200" - }, - { - "id": 680, - "first_name": "Betteanne", - "last_name": "Caw", - "email": ["bcawiv@google.fr"], - "gender": "Female", - "ip_address": "111.26.72.168" - }, - { - "id": 681, - "first_name": "Paquito", - "last_name": "Falkinder", - "email": ["pfalkinderiw@seesaa.net"], - "gender": "Male", - "ip_address": "158.169.63.227" - }, - { - "id": 682, - "first_name": "Cirillo", - "last_name": "Vlasenko", - "email": ["cvlasenkoix@ning.com"], - "gender": "Male", - "ip_address": "183.211.40.40" - }, - { - "id": 683, - "first_name": "Sheelah", - "last_name": "Serot", - "email": ["sserotiy@latimes.com"], - "gender": "Female", - "ip_address": "55.237.153.108" - }, - { - "id": 684, - "first_name": "Cirstoforo", - "last_name": "Wipper", - "email": ["cwipperiz@twitpic.com"], - "gender": "Male", - "ip_address": "120.205.131.104" - }, - { - "id": 685, - "first_name": "Rabi", - "last_name": "Paddon", - "email": ["rpaddonj0@mit.edu"], - "gender": "Male", - "ip_address": "101.129.71.228" - }, - { - "id": 686, - "first_name": "Lukas", - "last_name": "Matushenko", - "email": ["lmatushenkoj1@stumbleupon.com"], - "gender": "Male", - "ip_address": "192.89.146.183" - }, - { - "id": 687, - "first_name": "Elise", - "last_name": "Fassmann", - "email": ["efassmannj2@cnn.com"], - "gender": "Female", - "ip_address": "73.95.253.180" - }, - { - "id": 688, - "first_name": "Corey", - "last_name": "Bende", - "email": ["cbendej3@bing.com"], - "gender": "Male", - "ip_address": "89.200.24.13" - }, - { - "id": 689, - "first_name": "Lavinia", - "last_name": "Apfler", - "email": ["lapflerj4@huffingtonpost.com"], - "gender": "Female", - "ip_address": "174.112.5.241" - }, - { - "id": 690, - "first_name": "Inge", - "last_name": "Joskowicz", - "email": ["ijoskowiczj5@state.tx.us"], - "gender": "Female", - "ip_address": "75.22.226.93" - }, - { - "id": 691, - "first_name": "Walliw", - "last_name": "Tring", - "email": ["wtringj6@deviantart.com"], - "gender": "Female", - "ip_address": "24.180.140.10" - }, - { - "id": 692, - "first_name": "Imojean", - "last_name": "Bealton", - "email": ["ibealtonj7@nytimes.com"], - "gender": "Female", - "ip_address": "197.7.154.27" - }, - { - "id": 693, - "first_name": "Harley", - "last_name": "Esom", - "email": ["hesomj8@blog.com"], - "gender": "Male", - "ip_address": "13.129.104.244" - }, - { - "id": 694, - "first_name": "Adelbert", - "last_name": "Gye", - "email": ["agyej9@spotify.com"], - "gender": "Male", - "ip_address": "38.5.109.68" - }, - { - "id": 695, - "first_name": "Cordelia", - "last_name": "Colson", - "email": ["ccolsonja@bloomberg.com"], - "gender": "Female", - "ip_address": "151.50.228.14" - }, - { - "id": 696, - "first_name": "Timofei", - "last_name": "Woodthorpe", - "email": ["twoodthorpejb@europa.eu"], - "gender": "Male", - "ip_address": "218.157.67.76" - }, - { - "id": 697, - "first_name": "Delila", - "last_name": "Doche", - "email": ["ddochejc@virginia.edu"], - "gender": "Female", - "ip_address": "83.111.17.89" - }, - { - "id": 698, - "first_name": "Fina", - "last_name": "Powe", - "email": ["fpowejd@google.com.br"], - "gender": "Female", - "ip_address": "150.210.167.239" - }, - { - "id": 699, - "first_name": "Lexi", - "last_name": "Forrestill", - "email": ["lforrestillje@foxnews.com"], - "gender": "Female", - "ip_address": "87.101.183.50" - }, - { - "id": 700, - "first_name": "Cchaddie", - "last_name": "Born", - "email": ["cbornjf@xinhuanet.com"], - "gender": "Male", - "ip_address": "210.161.69.140" - }, - { - "id": 701, - "first_name": "Sabine", - "last_name": "Bebbington", - "email": ["sbebbingtonjg@google.ru"], - "gender": "Female", - "ip_address": "14.150.39.22" - }, - { - "id": 702, - "first_name": "Kare", - "last_name": "Ceillier", - "email": ["kceillierjh@wix.com"], - "gender": "Female", - "ip_address": "176.59.182.107" - }, - { - "id": 703, - "first_name": "Saxon", - "last_name": "Teanby", - "email": ["steanbyji@github.com"], - "gender": "Male", - "ip_address": "224.54.115.49" - }, - { - "id": 704, - "first_name": "Timi", - "last_name": "Hinge", - "email": ["thingejj@weebly.com"], - "gender": "Female", - "ip_address": "201.86.4.187" - }, - { - "id": 705, - "first_name": "Malanie", - "last_name": "Gerretsen", - "email": ["mgerretsenjk@home.pl"], - "gender": "Female", - "ip_address": "163.17.205.23" - }, - { - "id": 706, - "first_name": "Rochella", - "last_name": "Scurrah", - "email": ["rscurrahjl@mlb.com"], - "gender": "Female", - "ip_address": "62.192.82.220" - }, - { - "id": 707, - "first_name": "Aube", - "last_name": "Allsup", - "email": ["aallsupjm@discovery.com"], - "gender": "Male", - "ip_address": "4.96.9.219" - }, - { - "id": 708, - "first_name": "Kyle", - "last_name": "Shory", - "email": ["kshoryjn@ox.ac.uk"], - "gender": "Female", - "ip_address": "190.246.69.199" - }, - { - "id": 709, - "first_name": "Gale", - "last_name": "Dellow", - "email": ["gdellowjo@nps.gov"], - "gender": "Male", - "ip_address": "62.234.237.176" - }, - { - "id": 710, - "first_name": "Anna-maria", - "last_name": "Jeffery", - "email": ["ajefferyjp@chicagotribune.com"], - "gender": "Female", - "ip_address": "255.23.80.68" - }, - { - "id": 711, - "first_name": "Ewan", - "last_name": "Sear", - "email": ["esearjq@illinois.edu"], - "gender": "Male", - "ip_address": "204.33.239.109" - }, - { - "id": 712, - "first_name": "Trixie", - "last_name": "Jako", - "email": ["tjakojr@who.int"], - "gender": "Female", - "ip_address": "238.195.125.28" - }, - { - "id": 713, - "first_name": "Bing", - "last_name": "Bloxsome", - "email": ["bbloxsomejs@nature.com"], - "gender": "Male", - "ip_address": "221.80.23.52" - }, - { - "id": 714, - "first_name": "Erina", - "last_name": "Schubert", - "email": ["eschubertjt@ask.com"], - "gender": "Female", - "ip_address": "141.246.53.138" - }, - { - "id": 715, - "first_name": "Alford", - "last_name": "Vedekhov", - "email": ["avedekhovju@spiegel.de"], - "gender": "Male", - "ip_address": "190.236.152.176" - }, - { - "id": 716, - "first_name": "Albert", - "last_name": "Hainge", - "email": ["ahaingejv@salon.com"], - "gender": "Male", - "ip_address": "10.125.219.246" - }, - { - "id": 717, - "first_name": "Dedra", - "last_name": "Fairhurst", - "email": ["dfairhurstjw@list-manage.com"], - "gender": "Female", - "ip_address": "133.71.188.6" - }, - { - "id": 718, - "first_name": "Giavani", - "last_name": "Odhams", - "email": ["godhamsjx@pagesperso-orange.fr"], - "gender": "Male", - "ip_address": "198.77.193.154" - }, - { - "id": 719, - "first_name": "Barclay", - "last_name": "Lemon", - "email": ["blemonjy@nasa.gov"], - "gender": "Male", - "ip_address": "183.206.127.193" - }, - { - "id": 720, - "first_name": "Thurston", - "last_name": "Curson", - "email": ["tcursonjz@cargocollective.com"], - "gender": "Male", - "ip_address": "67.82.71.251" - }, - { - "id": 721, - "first_name": "Jerrome", - "last_name": "Cruwys", - "email": ["jcruwysk0@zdnet.com"], - "gender": "Male", - "ip_address": "224.253.159.127" - }, - { - "id": 722, - "first_name": "Madelaine", - "last_name": "Heyworth", - "email": ["mheyworthk1@auda.org.au"], - "gender": "Female", - "ip_address": "208.141.188.180" - }, - { - "id": 723, - "first_name": "Jourdain", - "last_name": "Flecknoe", - "email": ["jflecknoek2@ftc.gov"], - "gender": "Male", - "ip_address": "191.53.178.75" - }, - { - "id": 724, - "first_name": "Beatriz", - "last_name": "Whitehorn", - "email": ["bwhitehornk3@prnewswire.com"], - "gender": "Female", - "ip_address": "215.242.130.70" - }, - { - "id": 725, - "first_name": "Matthew", - "last_name": "Danser", - "email": ["mdanserk4@archive.org"], - "gender": "Male", - "ip_address": "252.44.196.28" - }, - { - "id": 726, - "first_name": "Claude", - "last_name": "Beeck", - "email": ["cbeeckk5@dion.ne.jp"], - "gender": "Female", - "ip_address": "20.64.232.229" - }, - { - "id": 727, - "first_name": "Kali", - "last_name": "Bickerdike", - "email": ["kbickerdikek6@nih.gov"], - "gender": "Female", - "ip_address": "167.1.32.55" - }, - { - "id": 728, - "first_name": "Mollie", - "last_name": "Sidney", - "email": ["msidneyk7@t-online.de"], - "gender": "Female", - "ip_address": "49.222.146.86" - }, - { - "id": 729, - "first_name": "Terrance", - "last_name": "Tortis", - "email": ["ttortisk8@netscape.com"], - "gender": "Male", - "ip_address": "240.12.20.111" - }, - { - "id": 730, - "first_name": "Joellen", - "last_name": "Cicchelli", - "email": ["jcicchellik9@jimdo.com"], - "gender": "Female", - "ip_address": "140.116.146.95" - }, - { - "id": 731, - "first_name": "Nathanil", - "last_name": "Massard", - "email": ["nmassardka@npr.org"], - "gender": "Male", - "ip_address": "213.226.57.106" - }, - { - "id": 732, - "first_name": "Ulysses", - "last_name": "Fullilove", - "email": ["ufullilovekb@deviantart.com"], - "gender": "Male", - "ip_address": "69.116.171.121" - }, - { - "id": 733, - "first_name": "Dasi", - "last_name": "Adcock", - "email": ["dadcockkc@epa.gov"], - "gender": "Female", - "ip_address": "1.9.97.166" - }, - { - "id": 734, - "first_name": "Leo", - "last_name": "Drabble", - "email": ["ldrabblekd@disqus.com"], - "gender": "Male", - "ip_address": "43.183.54.27" - }, - { - "id": 735, - "first_name": "Rhodia", - "last_name": "Shatliffe", - "email": ["rshatliffeke@pbs.org"], - "gender": "Female", - "ip_address": "175.165.151.159" - }, - { - "id": 736, - "first_name": "Bernadette", - "last_name": "Tather", - "email": ["btatherkf@4shared.com"], - "gender": "Female", - "ip_address": "65.159.169.205" - }, - { - "id": 737, - "first_name": "Valdemar", - "last_name": "Uzzell", - "email": ["vuzzellkg@sciencedirect.com"], - "gender": "Male", - "ip_address": "204.83.7.191" - }, - { - "id": 738, - "first_name": "Joyous", - "last_name": "Legerwood", - "email": ["jlegerwoodkh@hugedomains.com"], - "gender": "Female", - "ip_address": "51.114.215.173" - }, - { - "id": 739, - "first_name": "Philbert", - "last_name": "Succamore", - "email": ["psuccamoreki@homestead.com"], - "gender": "Male", - "ip_address": "198.157.181.79" - }, - { - "id": 740, - "first_name": "Alfons", - "last_name": "Mabbs", - "email": ["amabbskj@hibu.com"], - "gender": "Male", - "ip_address": "190.200.81.173" - }, - { - "id": 741, - "first_name": "Katy", - "last_name": "Kunkler", - "email": ["kkunklerkk@scientificamerican.com"], - "gender": "Female", - "ip_address": "152.24.108.24" - }, - { - "id": 742, - "first_name": "Lyell", - "last_name": "O'Flaherty", - "email": ["loflahertykl@cnn.com"], - "gender": "Male", - "ip_address": "205.139.63.143" - }, - { - "id": 743, - "first_name": "Guendolen", - "last_name": "Nelm", - "email": ["gnelmkm@com.com"], - "gender": "Female", - "ip_address": "106.107.121.125" - }, - { - "id": 744, - "first_name": "Antony", - "last_name": "Euplate", - "email": ["aeuplatekn@nifty.com"], - "gender": "Male", - "ip_address": "178.40.53.153" - }, - { - "id": 745, - "first_name": "Alene", - "last_name": "L'Hommeau", - "email": ["alhommeauko@stanford.edu"], - "gender": "Female", - "ip_address": "85.246.118.64" - }, - { - "id": 746, - "first_name": "Sansone", - "last_name": "Younger", - "email": ["syoungerkp@amazonaws.com"], - "gender": "Male", - "ip_address": "121.213.67.65" - }, - { - "id": 747, - "first_name": "Kitti", - "last_name": "Rosenfeld", - "email": ["krosenfeldkq@abc.net.au"], - "gender": "Female", - "ip_address": "221.8.154.52" - }, - { - "id": 748, - "first_name": "Humfrey", - "last_name": "Naylor", - "email": ["hnaylorkr@tmall.com"], - "gender": "Male", - "ip_address": "26.68.81.6" - }, - { - "id": 749, - "first_name": "Pia", - "last_name": "Softley", - "email": ["psoftleyks@sphinn.com"], - "gender": "Female", - "ip_address": "136.182.234.172" - }, - { - "id": 750, - "first_name": "Amie", - "last_name": "Bendixen", - "email": ["abendixenkt@etsy.com"], - "gender": "Female", - "ip_address": "50.185.153.200" - }, - { - "id": 751, - "first_name": "Andres", - "last_name": "Rutherfoord", - "email": ["arutherfoordku@chron.com"], - "gender": "Male", - "ip_address": "20.174.237.3" - }, - { - "id": 752, - "first_name": "Taddeo", - "last_name": "Caldera", - "email": ["tcalderakv@dropbox.com"], - "gender": "Male", - "ip_address": "14.140.71.55" - }, - { - "id": 753, - "first_name": "Blaine", - "last_name": "Pentecost", - "email": ["bpentecostkw@economist.com"], - "gender": "Male", - "ip_address": "216.112.76.141" - }, - { - "id": 754, - "first_name": "Emlyn", - "last_name": "Bruton", - "email": ["ebrutonkx@alexa.com"], - "gender": "Female", - "ip_address": "109.187.246.206" - }, - { - "id": 755, - "first_name": "Olly", - "last_name": "Delue", - "email": ["odelueky@behance.net"], - "gender": "Female", - "ip_address": "10.45.151.27" - }, - { - "id": 756, - "first_name": "Etti", - "last_name": "Tayler", - "email": ["etaylerkz@tripod.com"], - "gender": "Female", - "ip_address": "34.108.55.72" - }, - { - "id": 757, - "first_name": "Burtie", - "last_name": "Waeland", - "email": ["bwaelandl0@npr.org"], - "gender": "Male", - "ip_address": "101.166.202.144" - }, - { - "id": 758, - "first_name": "Cori", - "last_name": "Orsman", - "email": ["corsmanl1@ca.gov"], - "gender": "Female", - "ip_address": "33.24.77.218" - }, - { - "id": 759, - "first_name": "Rubi", - "last_name": "Ellins", - "email": ["rellinsl2@twitpic.com"], - "gender": "Female", - "ip_address": "36.53.90.105" - }, - { - "id": 760, - "first_name": "Ivonne", - "last_name": "Ashbridge", - "email": ["iashbridgel3@ocn.ne.jp"], - "gender": "Female", - "ip_address": "41.212.235.5" - }, - { - "id": 761, - "first_name": "Marjory", - "last_name": "Lemmanbie", - "email": ["mlemmanbiel4@flickr.com"], - "gender": "Female", - "ip_address": "222.147.10.185" - }, - { - "id": 762, - "first_name": "Hugues", - "last_name": "Helgass", - "email": ["hhelgassl5@rakuten.co.jp"], - "gender": "Male", - "ip_address": "188.225.250.154" - }, - { - "id": 763, - "first_name": "Huey", - "last_name": "Elegood", - "email": ["helegoodl6@army.mil"], - "gender": "Male", - "ip_address": "97.90.25.66" - }, - { - "id": 764, - "first_name": "Rivalee", - "last_name": "Lind", - "email": ["rlindl7@blogs.com"], - "gender": "Female", - "ip_address": "220.20.224.243" - }, - { - "id": 765, - "first_name": "Amble", - "last_name": "D'Cruze", - "email": ["adcruzel8@shop-pro.jp"], - "gender": "Male", - "ip_address": "172.190.247.192" - }, - { - "id": 766, - "first_name": "Reynolds", - "last_name": "Missenden", - "email": ["rmissendenl9@hatena.ne.jp"], - "gender": "Male", - "ip_address": "224.157.70.89" - }, - { - "id": 767, - "first_name": "Sheppard", - "last_name": "Persich", - "email": ["spersichla@mapquest.com"], - "gender": "Male", - "ip_address": "226.197.125.100" - }, - { - "id": 768, - "first_name": "Ivette", - "last_name": "Bridger", - "email": ["ibridgerlb@flickr.com"], - "gender": "Female", - "ip_address": "220.174.110.214" - }, - { - "id": 769, - "first_name": "Andy", - "last_name": "Melmore", - "email": ["amelmorelc@1und1.de"], - "gender": "Female", - "ip_address": "60.212.253.213" - }, - { - "id": 770, - "first_name": "Marlie", - "last_name": "Sowerbutts", - "email": ["msowerbuttsld@phpbb.com"], - "gender": "Female", - "ip_address": "38.234.82.16" - }, - { - "id": 771, - "first_name": "Rudolfo", - "last_name": "Tarren", - "email": ["rtarrenle@google.co.jp"], - "gender": "Male", - "ip_address": "245.49.52.96" - }, - { - "id": 772, - "first_name": "Neville", - "last_name": "Van der Kruis", - "email": ["nvanderkruislf@cam.ac.uk"], - "gender": "Male", - "ip_address": "55.47.171.158" - }, - { - "id": 773, - "first_name": "Luisa", - "last_name": "Varne", - "email": ["lvarnelg@biblegateway.com"], - "gender": "Female", - "ip_address": "208.244.90.147" - }, - { - "id": 774, - "first_name": "Paxon", - "last_name": "Dowse", - "email": ["pdowselh@imdb.com"], - "gender": "Male", - "ip_address": "90.9.190.76" - }, - { - "id": 775, - "first_name": "Electra", - "last_name": "Fick", - "email": ["efickli@furl.net"], - "gender": "Female", - "ip_address": "57.81.26.81" - }, - { - "id": 776, - "first_name": "Aloin", - "last_name": "Benedite", - "email": ["abeneditelj@indiegogo.com"], - "gender": "Male", - "ip_address": "103.243.188.87" - }, - { - "id": 777, - "first_name": "Wilfrid", - "last_name": "Wolverson", - "email": ["wwolversonlk@twitter.com"], - "gender": "Male", - "ip_address": "111.6.248.59" - }, - { - "id": 778, - "first_name": "Jerrie", - "last_name": "Sisey", - "email": ["jsiseyll@bloglovin.com"], - "gender": "Female", - "ip_address": "125.128.99.251" - }, - { - "id": 779, - "first_name": "Norby", - "last_name": "Yashin", - "email": ["nyashinlm@nymag.com"], - "gender": "Male", - "ip_address": "128.46.230.181" - }, - { - "id": 780, - "first_name": "Chicky", - "last_name": "Carslaw", - "email": ["ccarslawln@storify.com"], - "gender": "Male", - "ip_address": "16.140.162.156" - }, - { - "id": 781, - "first_name": "Koenraad", - "last_name": "Chansonnau", - "email": ["kchansonnaulo@newsvine.com"], - "gender": "Male", - "ip_address": "137.94.20.128" - }, - { - "id": 782, - "first_name": "Fred", - "last_name": "Erskine", - "email": ["ferskinelp@nbcnews.com"], - "gender": "Female", - "ip_address": "222.61.207.143" - }, - { - "id": 783, - "first_name": "Morgun", - "last_name": "Jindra", - "email": ["mjindralq@imgur.com"], - "gender": "Male", - "ip_address": "37.49.189.103" - }, - { - "id": 784, - "first_name": "Nolana", - "last_name": "Core", - "email": ["ncorelr@comcast.net"], - "gender": "Female", - "ip_address": "239.154.197.73" - }, - { - "id": 785, - "first_name": "Flossie", - "last_name": "Stoltz", - "email": ["fstoltzls@pen.io"], - "gender": "Female", - "ip_address": "239.150.164.7" - }, - { - "id": 786, - "first_name": "Shalne", - "last_name": "Roscam", - "email": ["sroscamlt@bandcamp.com"], - "gender": "Female", - "ip_address": "239.100.51.170" - }, - { - "id": 787, - "first_name": "Quinlan", - "last_name": "Apperley", - "email": ["qapperleylu@time.com"], - "gender": "Male", - "ip_address": "9.11.95.13" - }, - { - "id": 788, - "first_name": "Agustin", - "last_name": "Scholz", - "email": ["ascholzlv@eepurl.com"], - "gender": "Male", - "ip_address": "152.244.28.100" - }, - { - "id": 789, - "first_name": "Mickie", - "last_name": "Bridgement", - "email": ["mbridgementlw@privacy.gov.au"], - "gender": "Male", - "ip_address": "215.201.103.28" - }, - { - "id": 790, - "first_name": "Melania", - "last_name": "Eadmeades", - "email": ["meadmeadeslx@google.com.au"], - "gender": "Female", - "ip_address": "25.19.239.117" - }, - { - "id": 791, - "first_name": "Sammy", - "last_name": "Norssister", - "email": ["snorssisterly@g.co"], - "gender": "Male", - "ip_address": "60.63.37.192" - }, - { - "id": 792, - "first_name": "Kathi", - "last_name": "Jeger", - "email": ["kjegerlz@kickstarter.com"], - "gender": "Female", - "ip_address": "0.243.124.23" - }, - { - "id": 793, - "first_name": "Gilly", - "last_name": "Kliner", - "email": ["gklinerm0@ca.gov"], - "gender": "Female", - "ip_address": "224.84.148.171" - }, - { - "id": 794, - "first_name": "Dorena", - "last_name": "Fresson", - "email": ["dfressonm1@bizjournals.com"], - "gender": "Female", - "ip_address": "110.36.133.171" - }, - { - "id": 795, - "first_name": "Roxi", - "last_name": "Laycock", - "email": ["rlaycockm2@gmpg.org"], - "gender": "Female", - "ip_address": "89.138.232.37" - }, - { - "id": 796, - "first_name": "Clarie", - "last_name": "Salling", - "email": ["csallingm3@furl.net"], - "gender": "Female", - "ip_address": "212.54.18.184" - }, - { - "id": 797, - "first_name": "Audrey", - "last_name": "Grubbe", - "email": ["agrubbem4@e-recht24.de"], - "gender": "Female", - "ip_address": "52.84.26.212" - }, - { - "id": 798, - "first_name": "Si", - "last_name": "Harlin", - "email": ["sharlinm5@taobao.com"], - "gender": "Male", - "ip_address": "157.147.251.238" - }, - { - "id": 799, - "first_name": "Gerhardt", - "last_name": "Snookes", - "email": ["gsnookesm6@cisco.com"], - "gender": "Male", - "ip_address": "94.1.145.5" - }, - { - "id": 800, - "first_name": "Erma", - "last_name": "Goeff", - "email": ["egoeffm7@sciencedirect.com"], - "gender": "Female", - "ip_address": "137.224.132.241" - }, - { - "id": 801, - "first_name": "Elton", - "last_name": "Ramsbottom", - "email": ["eramsbottomm8@businessinsider.com"], - "gender": "Male", - "ip_address": "92.120.149.221" - }, - { - "id": 802, - "first_name": "Franzen", - "last_name": "Hurt", - "email": ["fhurtm9@paginegialle.it"], - "gender": "Male", - "ip_address": "245.186.184.101" - }, - { - "id": 803, - "first_name": "Lulita", - "last_name": "Tunn", - "email": ["ltunnma@google.com.br"], - "gender": "Female", - "ip_address": "122.231.148.248" - }, - { - "id": 804, - "first_name": "Nadean", - "last_name": "Manhare", - "email": ["nmanharemb@hao123.com"], - "gender": "Female", - "ip_address": "43.31.205.42" - }, - { - "id": 805, - "first_name": "Bobby", - "last_name": "Hume", - "email": ["bhumemc@huffingtonpost.com"], - "gender": "Male", - "ip_address": "168.67.221.111" - }, - { - "id": 806, - "first_name": "Darius", - "last_name": "Ertel", - "email": ["dertelmd@xinhuanet.com"], - "gender": "Male", - "ip_address": "155.247.159.213" - }, - { - "id": 807, - "first_name": "Natasha", - "last_name": "Grzegorzewski", - "email": ["ngrzegorzewskime@youku.com"], - "gender": "Female", - "ip_address": "97.41.51.27" - }, - { - "id": 808, - "first_name": "Rani", - "last_name": "Wrey", - "email": ["rwreymf@china.com.cn"], - "gender": "Female", - "ip_address": "190.91.145.123" - }, - { - "id": 809, - "first_name": "Roslyn", - "last_name": "Upstell", - "email": ["rupstellmg@wiley.com"], - "gender": "Female", - "ip_address": "44.109.165.55" - }, - { - "id": 810, - "first_name": "Arron", - "last_name": "Abson", - "email": ["aabsonmh@squidoo.com"], - "gender": "Male", - "ip_address": "199.201.88.51" - }, - { - "id": 811, - "first_name": "Kare", - "last_name": "Furmston", - "email": ["kfurmstonmi@wunderground.com"], - "gender": "Female", - "ip_address": "2.209.190.16" - }, - { - "id": 812, - "first_name": "Meridel", - "last_name": "Molesworth", - "email": ["mmolesworthmj@merriam-webster.com"], - "gender": "Female", - "ip_address": "88.189.38.97" - }, - { - "id": 813, - "first_name": "Rowena", - "last_name": "Bettis", - "email": ["rbettismk@t.co"], - "gender": "Female", - "ip_address": "215.235.50.12" - }, - { - "id": 814, - "first_name": "Rahal", - "last_name": "Coldham", - "email": ["rcoldhamml@adobe.com"], - "gender": "Female", - "ip_address": "38.93.80.244" - }, - { - "id": 815, - "first_name": "Caspar", - "last_name": "Hammonds", - "email": ["chammondsmm@multiply.com"], - "gender": "Male", - "ip_address": "223.80.82.207" - }, - { - "id": 816, - "first_name": "Cora", - "last_name": "McIlvaney", - "email": ["cmcilvaneymn@yellowbook.com"], - "gender": "Female", - "ip_address": "68.93.3.232" - }, - { - "id": 817, - "first_name": "Stephi", - "last_name": "Lemanu", - "email": ["slemanumo@joomla.org"], - "gender": "Female", - "ip_address": "162.189.219.123" - }, - { - "id": 818, - "first_name": "Lita", - "last_name": "McGonnell", - "email": ["lmcgonnellmp@theatlantic.com"], - "gender": "Female", - "ip_address": "175.112.18.179" - }, - { - "id": 819, - "first_name": "Sid", - "last_name": "Wiggett", - "email": ["swiggettmq@blog.com"], - "gender": "Male", - "ip_address": "105.71.240.174" - }, - { - "id": 820, - "first_name": "Wallis", - "last_name": "Buddle", - "email": ["wbuddlemr@upenn.edu"], - "gender": "Male", - "ip_address": "231.130.255.71" - }, - { - "id": 821, - "first_name": "Mac", - "last_name": "West-Frimley", - "email": ["mwestfrimleyms@photobucket.com"], - "gender": "Male", - "ip_address": "129.182.60.57" - }, - { - "id": 822, - "first_name": "Fredra", - "last_name": "Leil", - "email": ["fleilmt@ed.gov"], - "gender": "Female", - "ip_address": "186.30.106.24" - }, - { - "id": 823, - "first_name": "Dinny", - "last_name": "Pisco", - "email": ["dpiscomu@dailymotion.com"], - "gender": "Female", - "ip_address": "156.245.51.244" - }, - { - "id": 824, - "first_name": "Pippa", - "last_name": "Rowley", - "email": ["prowleymv@un.org"], - "gender": "Female", - "ip_address": "171.26.33.56" - }, - { - "id": 825, - "first_name": "Pippo", - "last_name": "Croke", - "email": ["pcrokemw@trellian.com"], - "gender": "Male", - "ip_address": "110.204.79.143" - }, - { - "id": 826, - "first_name": "Muhammad", - "last_name": "McOrkil", - "email": ["mmcorkilmx@dailymail.co.uk"], - "gender": "Male", - "ip_address": "19.189.162.79" - }, - { - "id": 827, - "first_name": "Park", - "last_name": "Warlow", - "email": ["pwarlowmy@princeton.edu"], - "gender": "Male", - "ip_address": "136.208.86.101" - }, - { - "id": 828, - "first_name": "Agustin", - "last_name": "Faley", - "email": ["afaleymz@google.es"], - "gender": "Male", - "ip_address": "117.220.99.167" - }, - { - "id": 829, - "first_name": "Ezechiel", - "last_name": "Fairfoot", - "email": ["efairfootn0@accuweather.com"], - "gender": "Male", - "ip_address": "166.11.102.196" - }, - { - "id": 830, - "first_name": "Christean", - "last_name": "McArthur", - "email": ["cmcarthurn1@army.mil"], - "gender": "Female", - "ip_address": "235.233.210.32" - }, - { - "id": 831, - "first_name": "Betsy", - "last_name": "Labba", - "email": ["blabban2@deviantart.com"], - "gender": "Female", - "ip_address": "43.171.59.228" - }, - { - "id": 832, - "first_name": "Clovis", - "last_name": "Brizland", - "email": ["cbrizlandn3@constantcontact.com"], - "gender": "Female", - "ip_address": "52.44.173.199" - }, - { - "id": 833, - "first_name": "Brock", - "last_name": "Frodsham", - "email": ["bfrodshamn4@virginia.edu"], - "gender": "Male", - "ip_address": "70.210.106.91" - }, - { - "id": 834, - "first_name": "Caprice", - "last_name": "Launder", - "email": ["claundern5@odnoklassniki.ru"], - "gender": "Female", - "ip_address": "183.55.76.202" - }, - { - "id": 835, - "first_name": "Grace", - "last_name": "Marritt", - "email": ["gmarrittn6@google.es"], - "gender": "Female", - "ip_address": "22.253.234.41" - }, - { - "id": 836, - "first_name": "Margaretha", - "last_name": "Probyn", - "email": ["mprobynn7@indiegogo.com"], - "gender": "Female", - "ip_address": "72.94.40.179" - }, - { - "id": 837, - "first_name": "Enoch", - "last_name": "Hiers", - "email": ["ehiersn8@mac.com"], - "gender": "Male", - "ip_address": "128.23.198.91" - }, - { - "id": 838, - "first_name": "Garvin", - "last_name": "Laurence", - "email": ["glaurencen9@unc.edu"], - "gender": "Male", - "ip_address": "106.190.196.39" - }, - { - "id": 839, - "first_name": "Adore", - "last_name": "Ginglell", - "email": ["aginglellna@wunderground.com"], - "gender": "Female", - "ip_address": "178.40.211.246" - }, - { - "id": 840, - "first_name": "Mata", - "last_name": "Van Schafflaer", - "email": ["mvanschafflaernb@mashable.com"], - "gender": "Male", - "ip_address": "217.97.108.36" - }, - { - "id": 841, - "first_name": "Kort", - "last_name": "McLukie", - "email": ["kmclukienc@tamu.edu"], - "gender": "Male", - "ip_address": "62.227.198.54" - }, - { - "id": 842, - "first_name": "Humfried", - "last_name": "Halliburton", - "email": ["hhalliburtonnd@elpais.com"], - "gender": "Male", - "ip_address": "139.24.44.101" - }, - { - "id": 843, - "first_name": "Minnaminnie", - "last_name": "Crozier", - "email": ["mcrozierne@rambler.ru"], - "gender": "Female", - "ip_address": "254.22.58.171" - }, - { - "id": 844, - "first_name": "Theodore", - "last_name": "Mullett", - "email": ["tmullettnf@aol.com"], - "gender": "Male", - "ip_address": "202.61.143.28" - }, - { - "id": 845, - "first_name": "Irina", - "last_name": "Lewington", - "email": ["ilewingtonng@delicious.com"], - "gender": "Female", - "ip_address": "55.55.235.124" - }, - { - "id": 846, - "first_name": "Ahmad", - "last_name": "Masser", - "email": ["amassernh@columbia.edu"], - "gender": "Male", - "ip_address": "86.120.190.138" - }, - { - "id": 847, - "first_name": "Cissy", - "last_name": "Keetch", - "email": ["ckeetchni@privacy.gov.au"], - "gender": "Female", - "ip_address": "52.6.149.32" - }, - { - "id": 848, - "first_name": "Claudianus", - "last_name": "Sarra", - "email": ["csarranj@pcworld.com"], - "gender": "Male", - "ip_address": "207.157.51.85" - }, - { - "id": 849, - "first_name": "Orelia", - "last_name": "Elster", - "email": ["oelsternk@accuweather.com"], - "gender": "Female", - "ip_address": "226.210.65.209" - }, - { - "id": 850, - "first_name": "Humfrid", - "last_name": "Aronstein", - "email": ["haronsteinnl@oracle.com"], - "gender": "Male", - "ip_address": "220.110.140.114" - }, - { - "id": 851, - "first_name": "Kane", - "last_name": "Guidotti", - "email": ["kguidottinm@sina.com.cn"], - "gender": "Male", - "ip_address": "86.252.86.108" - }, - { - "id": 852, - "first_name": "Quintus", - "last_name": "Smeeton", - "email": ["qsmeetonnn@comsenz.com"], - "gender": "Male", - "ip_address": "189.152.132.86" - }, - { - "id": 853, - "first_name": "Cathlene", - "last_name": "Vezey", - "email": ["cvezeyno@guardian.co.uk"], - "gender": "Female", - "ip_address": "61.169.86.57" - }, - { - "id": 854, - "first_name": "Hervey", - "last_name": "Leete", - "email": ["hleetenp@booking.com"], - "gender": "Male", - "ip_address": "237.146.25.62" - }, - { - "id": 855, - "first_name": "Artur", - "last_name": "Garm", - "email": ["agarmnq@live.com"], - "gender": "Male", - "ip_address": "26.31.235.98" - }, - { - "id": 856, - "first_name": "Isac", - "last_name": "Etherington", - "email": ["ietheringtonnr@domainmarket.com"], - "gender": "Male", - "ip_address": "216.162.63.15" - }, - { - "id": 857, - "first_name": "Milty", - "last_name": "Vaughan-Hughes", - "email": ["mvaughanhughesns@blinklist.com"], - "gender": "Male", - "ip_address": "124.86.195.250" - }, - { - "id": 858, - "first_name": "Immanuel", - "last_name": "Yuryev", - "email": ["iyuryevnt@smh.com.au"], - "gender": "Male", - "ip_address": "135.68.77.218" - }, - { - "id": 859, - "first_name": "Hinda", - "last_name": "Dumsday", - "email": ["hdumsdaynu@ezinearticles.com"], - "gender": "Female", - "ip_address": "103.205.207.202" - }, - { - "id": 860, - "first_name": "Sinclare", - "last_name": "Antley", - "email": ["santleynv@tamu.edu"], - "gender": "Male", - "ip_address": "29.159.157.136" - }, - { - "id": 861, - "first_name": "Nikita", - "last_name": "Chapellow", - "email": ["nchapellownw@foxnews.com"], - "gender": "Male", - "ip_address": "191.254.255.58" - }, - { - "id": 862, - "first_name": "Leonore", - "last_name": "Mulhall", - "email": ["lmulhallnx@ebay.com"], - "gender": "Female", - "ip_address": "224.90.108.42" - }, - { - "id": 863, - "first_name": "Alden", - "last_name": "Gimblett", - "email": ["agimblettny@soundcloud.com"], - "gender": "Male", - "ip_address": "151.176.231.116" - }, - { - "id": 864, - "first_name": "Allina", - "last_name": "Middlemass", - "email": ["amiddlemassnz@woothemes.com"], - "gender": "Female", - "ip_address": "119.70.62.165" - }, - { - "id": 865, - "first_name": "Bryon", - "last_name": "Davidowich", - "email": ["bdavidowicho0@zdnet.com"], - "gender": "Male", - "ip_address": "184.142.245.19" - }, - { - "id": 866, - "first_name": "Annice", - "last_name": "Plastow", - "email": ["aplastowo1@issuu.com"], - "gender": "Female", - "ip_address": "29.237.201.207" - }, - { - "id": 867, - "first_name": "Tally", - "last_name": "Moyser", - "email": ["tmoysero2@amazon.de"], - "gender": "Female", - "ip_address": "115.69.74.55" - }, - { - "id": 868, - "first_name": "Germayne", - "last_name": "Kleinstub", - "email": ["gkleinstubo3@rambler.ru"], - "gender": "Male", - "ip_address": "60.126.230.191" - }, - { - "id": 869, - "first_name": "Noby", - "last_name": "Sadgrove", - "email": ["nsadgroveo4@mediafire.com"], - "gender": "Male", - "ip_address": "77.71.122.122" - }, - { - "id": 870, - "first_name": "Chancey", - "last_name": "Ewens", - "email": ["cewenso5@paypal.com"], - "gender": "Male", - "ip_address": "96.150.31.121" - }, - { - "id": 871, - "first_name": "Teddi", - "last_name": "Hully", - "email": ["thullyo6@deviantart.com"], - "gender": "Female", - "ip_address": "241.100.218.139" - }, - { - "id": 872, - "first_name": "Karly", - "last_name": "Louthe", - "email": ["kloutheo7@usnews.com"], - "gender": "Female", - "ip_address": "42.249.110.162" - }, - { - "id": 873, - "first_name": "Clayson", - "last_name": "Sparsholt", - "email": ["csparsholto8@163.com"], - "gender": "Male", - "ip_address": "139.83.67.190" - }, - { - "id": 874, - "first_name": "Myrvyn", - "last_name": "Marton", - "email": ["mmartono9@nature.com"], - "gender": "Male", - "ip_address": "248.10.89.246" - }, - { - "id": 875, - "first_name": "Meghann", - "last_name": "Phillip", - "email": ["mphillipoa@huffingtonpost.com"], - "gender": "Female", - "ip_address": "105.139.188.230" - }, - { - "id": 876, - "first_name": "Blinny", - "last_name": "Zink", - "email": ["bzinkob@odnoklassniki.ru"], - "gender": "Female", - "ip_address": "164.177.238.146" - }, - { - "id": 877, - "first_name": "Monika", - "last_name": "Markel", - "email": ["mmarkeloc@eepurl.com"], - "gender": "Female", - "ip_address": "113.6.189.84" - }, - { - "id": 878, - "first_name": "Natal", - "last_name": "Bemment", - "email": ["nbemmentod@amazon.co.jp"], - "gender": "Male", - "ip_address": "86.149.217.250" - }, - { - "id": 879, - "first_name": "Welby", - "last_name": "Skin", - "email": ["wskinoe@bloglines.com"], - "gender": "Male", - "ip_address": "63.38.91.29" - }, - { - "id": 880, - "first_name": "Gil", - "last_name": "Domenget", - "email": ["gdomengetof@ucoz.com"], - "gender": "Male", - "ip_address": "13.190.211.201" - }, - { - "id": 881, - "first_name": "Rufus", - "last_name": "Cregin", - "email": ["rcreginog@w3.org"], - "gender": "Male", - "ip_address": "181.245.182.34" - }, - { - "id": 882, - "first_name": "Garrot", - "last_name": "Stefanovic", - "email": ["gstefanovicoh@gov.uk"], - "gender": "Male", - "ip_address": "140.117.185.79" - }, - { - "id": 883, - "first_name": "Marvin", - "last_name": "Extal", - "email": ["mextaloi@dagondesign.com"], - "gender": "Male", - "ip_address": "130.110.175.10" - }, - { - "id": 884, - "first_name": "Kelsi", - "last_name": "Cornil", - "email": ["kcorniloj@linkedin.com"], - "gender": "Female", - "ip_address": "19.236.243.252" - }, - { - "id": 885, - "first_name": "Ulberto", - "last_name": "Jacobsen", - "email": ["ujacobsenok@mozilla.org"], - "gender": "Male", - "ip_address": "181.81.38.123" - }, - { - "id": 886, - "first_name": "Eran", - "last_name": "Dolby", - "email": ["edolbyol@parallels.com"], - "gender": "Female", - "ip_address": "31.230.222.110" - }, - { - "id": 887, - "first_name": "Merwyn", - "last_name": "Durno", - "email": ["mdurnoom@blogger.com"], - "gender": "Male", - "ip_address": "164.92.117.187" - }, - { - "id": 888, - "first_name": "Timothee", - "last_name": "Kyston", - "email": ["tkystonon@ebay.com"], - "gender": "Male", - "ip_address": "79.92.188.22" - }, - { - "id": 889, - "first_name": "Luciana", - "last_name": "Gapper", - "email": ["lgapperoo@networkadvertising.org"], - "gender": "Female", - "ip_address": "77.219.99.188" - }, - { - "id": 890, - "first_name": "Malynda", - "last_name": "Millward", - "email": ["mmillwardop@soup.io"], - "gender": "Female", - "ip_address": "250.181.29.158" - }, - { - "id": 891, - "first_name": "Kelsey", - "last_name": "Izakof", - "email": ["kizakofoq@twitpic.com"], - "gender": "Male", - "ip_address": "45.85.134.182" - }, - { - "id": 892, - "first_name": "Callida", - "last_name": "Kirrage", - "email": ["ckirrageor@jugem.jp"], - "gender": "Female", - "ip_address": "50.137.67.103" - }, - { - "id": 893, - "first_name": "Erich", - "last_name": "Hurdidge", - "email": ["ehurdidgeos@google.es"], - "gender": "Male", - "ip_address": "178.66.88.70" - }, - { - "id": 894, - "first_name": "Alie", - "last_name": "Cunnow", - "email": ["acunnowot@walmart.com"], - "gender": "Female", - "ip_address": "51.13.62.175" - }, - { - "id": 895, - "first_name": "Adi", - "last_name": "Milella", - "email": ["amilellaou@foxnews.com"], - "gender": "Female", - "ip_address": "146.142.208.177" - }, - { - "id": 896, - "first_name": "Corie", - "last_name": "Penbarthy", - "email": ["cpenbarthyov@sciencedaily.com"], - "gender": "Female", - "ip_address": "102.181.33.69" - }, - { - "id": 897, - "first_name": "Peyton", - "last_name": "Archibould", - "email": ["parchibouldow@addtoany.com"], - "gender": "Male", - "ip_address": "241.42.17.123" - }, - { - "id": 898, - "first_name": "Charlton", - "last_name": "Alwin", - "email": ["calwinox@discovery.com"], - "gender": "Male", - "ip_address": "211.226.122.80" - }, - { - "id": 899, - "first_name": "Vera", - "last_name": "Purdy", - "email": ["vpurdyoy@cyberchimps.com"], - "gender": "Female", - "ip_address": "87.81.95.59" - }, - { - "id": 900, - "first_name": "Brose", - "last_name": "Bracchi", - "email": ["bbracchioz@unicef.org"], - "gender": "Male", - "ip_address": "81.15.174.76" - }, - { - "id": 901, - "first_name": "Bryn", - "last_name": "Taffurelli", - "email": ["btaffurellip0@ft.com"], - "gender": "Male", - "ip_address": "121.253.63.150" - }, - { - "id": 902, - "first_name": "Maudie", - "last_name": "Christley", - "email": ["mchristleyp1@soundcloud.com"], - "gender": "Female", - "ip_address": "21.197.214.147" - }, - { - "id": 903, - "first_name": "Charlena", - "last_name": "Exon", - "email": ["cexonp2@icio.us"], - "gender": "Female", - "ip_address": "125.23.243.111" - }, - { - "id": 904, - "first_name": "Grethel", - "last_name": "Franses", - "email": ["gfransesp3@trellian.com"], - "gender": "Female", - "ip_address": "2.100.87.187" - }, - { - "id": 905, - "first_name": "Thorin", - "last_name": "Penrose", - "email": ["tpenrosep4@un.org"], - "gender": "Male", - "ip_address": "20.167.67.138" - }, - { - "id": 906, - "first_name": "Dew", - "last_name": "Pryke", - "email": ["dprykep5@squidoo.com"], - "gender": "Male", - "ip_address": "242.140.227.111" - }, - { - "id": 907, - "first_name": "Harvey", - "last_name": "Milam", - "email": ["hmilamp6@yahoo.com"], - "gender": "Male", - "ip_address": "212.41.219.115" - }, - { - "id": 908, - "first_name": "Joelle", - "last_name": "List", - "email": ["jlistp7@g.co"], - "gender": "Female", - "ip_address": "4.148.209.34" - }, - { - "id": 909, - "first_name": "Sheffie", - "last_name": "Mordie", - "email": ["smordiep8@alibaba.com"], - "gender": "Male", - "ip_address": "62.131.119.79" - }, - { - "id": 910, - "first_name": "Jessika", - "last_name": "Lachaize", - "email": ["jlachaizep9@sciencedirect.com"], - "gender": "Female", - "ip_address": "168.33.0.161" - }, - { - "id": 911, - "first_name": "Athena", - "last_name": "Winterbottom", - "email": ["awinterbottompa@cisco.com"], - "gender": "Female", - "ip_address": "2.223.68.175" - }, - { - "id": 912, - "first_name": "Sal", - "last_name": "Huygen", - "email": ["shuygenpb@sciencedaily.com"], - "gender": "Male", - "ip_address": "178.20.128.234" - }, - { - "id": 913, - "first_name": "Isabelita", - "last_name": "Shambrooke", - "email": ["ishambrookepc@chicagotribune.com"], - "gender": "Female", - "ip_address": "65.195.100.230" - }, - { - "id": 914, - "first_name": "Brod", - "last_name": "Skym", - "email": ["bskympd@fema.gov"], - "gender": "Male", - "ip_address": "111.86.216.126" - }, - { - "id": 915, - "first_name": "Essy", - "last_name": "Pollock", - "email": ["epollockpe@senate.gov"], - "gender": "Female", - "ip_address": "103.46.162.131" - }, - { - "id": 916, - "first_name": "Caspar", - "last_name": "Gillitt", - "email": ["cgillittpf@ocn.ne.jp"], - "gender": "Male", - "ip_address": "163.195.195.208" - }, - { - "id": 917, - "first_name": "Mary", - "last_name": "Brattell", - "email": ["mbrattellpg@skype.com"], - "gender": "Female", - "ip_address": "182.237.0.48" - }, - { - "id": 918, - "first_name": "Olimpia", - "last_name": "Gahagan", - "email": ["ogahaganph@about.com"], - "gender": "Female", - "ip_address": "169.71.180.56" - }, - { - "id": 919, - "first_name": "Joyce", - "last_name": "Jouannot", - "email": ["jjouannotpi@about.com"], - "gender": "Female", - "ip_address": "107.237.126.96" - }, - { - "id": 920, - "first_name": "Bengt", - "last_name": "Bicksteth", - "email": ["bbickstethpj@ycombinator.com"], - "gender": "Male", - "ip_address": "128.40.144.1" - }, - { - "id": 921, - "first_name": "Minni", - "last_name": "Oliveras", - "email": ["moliveraspk@house.gov"], - "gender": "Female", - "ip_address": "151.74.33.30" - }, - { - "id": 922, - "first_name": "Kelcey", - "last_name": "Croydon", - "email": ["kcroydonpl@alexa.com"], - "gender": "Female", - "ip_address": "247.3.203.44" - }, - { - "id": 923, - "first_name": "Maxi", - "last_name": "Parsonage", - "email": ["mparsonagepm@cpanel.net"], - "gender": "Female", - "ip_address": "235.156.196.61" - }, - { - "id": 924, - "first_name": "Fidelio", - "last_name": "Haberjam", - "email": ["fhaberjampn@ehow.com"], - "gender": "Male", - "ip_address": "227.21.61.223" - }, - { - "id": 925, - "first_name": "Yanaton", - "last_name": "Camilletti", - "email": ["ycamillettipo@barnesandnoble.com"], - "gender": "Male", - "ip_address": "94.193.22.12" - }, - { - "id": 926, - "first_name": "Nonnah", - "last_name": "Medler", - "email": ["nmedlerpp@sitemeter.com"], - "gender": "Female", - "ip_address": "110.174.165.202" - }, - { - "id": 927, - "first_name": "Alica", - "last_name": "Pigott", - "email": ["apigottpq@shutterfly.com"], - "gender": "Female", - "ip_address": "54.41.226.96" - }, - { - "id": 928, - "first_name": "Dayle", - "last_name": "Kinleyside", - "email": ["dkinleysidepr@myspace.com"], - "gender": "Female", - "ip_address": "199.244.242.248" - }, - { - "id": 929, - "first_name": "Frants", - "last_name": "Theze", - "email": ["fthezeps@ucoz.ru"], - "gender": "Male", - "ip_address": "29.165.54.182" - }, - { - "id": 930, - "first_name": "Gerda", - "last_name": "Tunnoch", - "email": ["gtunnochpt@hud.gov"], - "gender": "Female", - "ip_address": "227.236.199.230" - }, - { - "id": 931, - "first_name": "Joaquin", - "last_name": "Grishin", - "email": ["jgrishinpu@studiopress.com"], - "gender": "Male", - "ip_address": "190.227.242.210" - }, - { - "id": 932, - "first_name": "Odella", - "last_name": "Wainscot", - "email": ["owainscotpv@typepad.com"], - "gender": "Female", - "ip_address": "44.252.52.118" - }, - { - "id": 933, - "first_name": "Sandye", - "last_name": "Lomasna", - "email": ["slomasnapw@webnode.com"], - "gender": "Female", - "ip_address": "28.47.102.235" - }, - { - "id": 934, - "first_name": "Leonelle", - "last_name": "Hurdidge", - "email": ["lhurdidgepx@tinypic.com"], - "gender": "Female", - "ip_address": "175.24.224.193" - }, - { - "id": 935, - "first_name": "Deny", - "last_name": "Iston", - "email": ["distonpy@telegraph.co.uk"], - "gender": "Female", - "ip_address": "67.173.16.6" - }, - { - "id": 936, - "first_name": "Zed", - "last_name": "Medlicott", - "email": ["zmedlicottpz@desdev.cn"], - "gender": "Male", - "ip_address": "60.51.254.223" - }, - { - "id": 937, - "first_name": "Wilie", - "last_name": "Munkley", - "email": ["wmunkleyq0@sitemeter.com"], - "gender": "Female", - "ip_address": "115.111.84.193" - }, - { - "id": 938, - "first_name": "Mela", - "last_name": "Elijah", - "email": ["melijahq1@tripod.com"], - "gender": "Female", - "ip_address": "52.35.27.58" - }, - { - "id": 939, - "first_name": "Willetta", - "last_name": "Guitel", - "email": ["wguitelq2@vinaora.com"], - "gender": "Female", - "ip_address": "231.1.116.33" - }, - { - "id": 940, - "first_name": "Jorrie", - "last_name": "Oswald", - "email": ["joswaldq3@fc2.com"], - "gender": "Female", - "ip_address": "227.49.3.202" - }, - { - "id": 941, - "first_name": "Ludwig", - "last_name": "Gansbuhler", - "email": ["lgansbuhlerq4@state.tx.us"], - "gender": "Male", - "ip_address": "245.230.183.246" - }, - { - "id": 942, - "first_name": "Tiphany", - "last_name": "Jerome", - "email": ["tjeromeq5@nydailynews.com"], - "gender": "Female", - "ip_address": "51.0.155.133" - }, - { - "id": 943, - "first_name": "Bastian", - "last_name": "McNamara", - "email": ["bmcnamaraq6@reverbnation.com"], - "gender": "Male", - "ip_address": "157.68.128.40" - }, - { - "id": 944, - "first_name": "Evelyn", - "last_name": "Hellin", - "email": ["ehellinq7@huffingtonpost.com"], - "gender": "Female", - "ip_address": "20.165.132.238" - }, - { - "id": 945, - "first_name": "Allyn", - "last_name": "Herreran", - "email": ["aherreranq8@shareasale.com"], - "gender": "Male", - "ip_address": "159.214.22.106" - }, - { - "id": 946, - "first_name": "Linn", - "last_name": "Plumtree", - "email": ["lplumtreeq9@barnesandnoble.com"], - "gender": "Male", - "ip_address": "21.141.69.235" - }, - { - "id": 947, - "first_name": "Cosmo", - "last_name": "Holyard", - "email": ["cholyardqa@usatoday.com"], - "gender": "Male", - "ip_address": "109.31.205.165" - }, - { - "id": 948, - "first_name": "Gerrilee", - "last_name": "Merrigan", - "email": ["gmerriganqb@answers.com"], - "gender": "Female", - "ip_address": "81.23.137.80" - }, - { - "id": 949, - "first_name": "Augustin", - "last_name": "Symondson", - "email": ["asymondsonqc@dot.gov"], - "gender": "Male", - "ip_address": "200.233.21.103" - }, - { - "id": 950, - "first_name": "Morie", - "last_name": "Venton", - "email": ["mventonqd@163.com"], - "gender": "Male", - "ip_address": "196.73.76.146" - }, - { - "id": 951, - "first_name": "Alphonse", - "last_name": "Parmenter", - "email": ["aparmenterqe@yahoo.com"], - "gender": "Male", - "ip_address": "229.243.233.39" - }, - { - "id": 952, - "first_name": "Baird", - "last_name": "Kovacs", - "email": ["bkovacsqf@yandex.ru"], - "gender": "Male", - "ip_address": "52.48.20.153" - }, - { - "id": 953, - "first_name": "Janeczka", - "last_name": "Scruby", - "email": ["jscrubyqg@jiathis.com"], - "gender": "Female", - "ip_address": "63.128.112.175" - }, - { - "id": 954, - "first_name": "Tanney", - "last_name": "Surplice", - "email": ["tsurpliceqh@opensource.org"], - "gender": "Male", - "ip_address": "88.75.218.233" - }, - { - "id": 955, - "first_name": "Elston", - "last_name": "Scholes", - "email": ["escholesqi@booking.com"], - "gender": "Male", - "ip_address": "21.100.25.237" - }, - { - "id": 956, - "first_name": "Bartie", - "last_name": "Mead", - "email": ["bmeadqj@bizjournals.com"], - "gender": "Male", - "ip_address": "168.69.183.235" - }, - { - "id": 957, - "first_name": "Petra", - "last_name": "Pavlitschek", - "email": ["ppavlitschekqk@economist.com"], - "gender": "Female", - "ip_address": "186.244.167.254" - }, - { - "id": 958, - "first_name": "Curr", - "last_name": "Gaw", - "email": ["cgawql@biglobe.ne.jp"], - "gender": "Male", - "ip_address": "2.239.29.245" - }, - { - "id": 959, - "first_name": "Allin", - "last_name": "Beneix", - "email": ["abeneixqm@yelp.com"], - "gender": "Male", - "ip_address": "202.10.31.12" - }, - { - "id": 960, - "first_name": "Wade", - "last_name": "Walker", - "email": ["wwalkerqn@telegraph.co.uk"], - "gender": "Male", - "ip_address": "118.218.186.127" - }, - { - "id": 961, - "first_name": "Bridget", - "last_name": "Gemelli", - "email": ["bgemelliqo@shop-pro.jp"], - "gender": "Female", - "ip_address": "94.127.128.236" - }, - { - "id": 962, - "first_name": "Feodor", - "last_name": "Doumic", - "email": ["fdoumicqp@house.gov"], - "gender": "Male", - "ip_address": "66.5.241.237" - }, - { - "id": 963, - "first_name": "Wilhelmina", - "last_name": "Whichelow", - "email": ["wwhichelowqq@biglobe.ne.jp"], - "gender": "Female", - "ip_address": "124.74.0.178" - }, - { - "id": 964, - "first_name": "Lionel", - "last_name": "Alejo", - "email": ["lalejoqr@theglobeandmail.com"], - "gender": "Male", - "ip_address": "137.194.89.55" - }, - { - "id": 965, - "first_name": "Sherilyn", - "last_name": "Mayers", - "email": ["smayersqs@imageshack.us"], - "gender": "Female", - "ip_address": "23.194.162.215" - }, - { - "id": 966, - "first_name": "Hertha", - "last_name": "Sawell", - "email": ["hsawellqt@tinypic.com"], - "gender": "Female", - "ip_address": "162.123.67.11" - }, - { - "id": 967, - "first_name": "Colver", - "last_name": "Pluck", - "email": ["cpluckqu@nsw.gov.au"], - "gender": "Male", - "ip_address": "74.255.90.105" - }, - { - "id": 968, - "first_name": "Clio", - "last_name": "Chesterton", - "email": ["cchestertonqv@usa.gov"], - "gender": "Female", - "ip_address": "31.154.18.179" - }, - { - "id": 969, - "first_name": "Ambur", - "last_name": "Holliar", - "email": ["aholliarqw@rambler.ru"], - "gender": "Female", - "ip_address": "168.182.199.187" - }, - { - "id": 970, - "first_name": "Lynett", - "last_name": "Ormerod", - "email": ["lormerodqx@g.co"], - "gender": "Female", - "ip_address": "20.145.196.72" - }, - { - "id": 971, - "first_name": "Jamesy", - "last_name": "Hartburn", - "email": ["jhartburnqy@mit.edu"], - "gender": "Male", - "ip_address": "145.242.132.46" - }, - { - "id": 972, - "first_name": "Rene", - "last_name": "MacAne", - "email": ["rmacaneqz@godaddy.com"], - "gender": "Female", - "ip_address": "157.117.207.232" - }, - { - "id": 973, - "first_name": "Odey", - "last_name": "Cino", - "email": ["ocinor0@yolasite.com"], - "gender": "Male", - "ip_address": "130.63.28.57" - }, - { - "id": 974, - "first_name": "Quinlan", - "last_name": "Jesson", - "email": ["qjessonr1@ftc.gov"], - "gender": "Male", - "ip_address": "254.186.156.1" - }, - { - "id": 975, - "first_name": "Penn", - "last_name": "Bayns", - "email": ["pbaynsr2@craigslist.org"], - "gender": "Male", - "ip_address": "70.133.132.109" - }, - { - "id": 976, - "first_name": "Ingelbert", - "last_name": "Braine", - "email": ["ibrainer3@dyndns.org"], - "gender": "Male", - "ip_address": "221.192.4.232" - }, - { - "id": 977, - "first_name": "Meredeth", - "last_name": "Middle", - "email": ["mmiddler4@pinterest.com"], - "gender": "Male", - "ip_address": "167.91.210.170" - }, - { - "id": 978, - "first_name": "Bone", - "last_name": "Peabody", - "email": ["bpeabodyr5@imdb.com"], - "gender": "Male", - "ip_address": "69.155.27.227" - }, - { - "id": 979, - "first_name": "Carie", - "last_name": "Chellam", - "email": ["cchellamr6@noaa.gov"], - "gender": "Female", - "ip_address": "69.143.144.47" - }, - { - "id": 980, - "first_name": "Julieta", - "last_name": "Stannah", - "email": ["jstannahr7@cnet.com"], - "gender": "Female", - "ip_address": "156.209.33.246" - }, - { - "id": 981, - "first_name": "Isiahi", - "last_name": "Heales", - "email": ["ihealesr8@surveymonkey.com"], - "gender": "Male", - "ip_address": "208.99.61.16" - }, - { - "id": 982, - "first_name": "Renate", - "last_name": "Chilles", - "email": ["rchillesr9@vk.com"], - "gender": "Female", - "ip_address": "133.100.31.56" - }, - { - "id": 983, - "first_name": "Dorree", - "last_name": "Cromer", - "email": ["dcromerra@stanford.edu"], - "gender": "Female", - "ip_address": "18.170.238.201" - }, - { - "id": 984, - "first_name": "Cherrita", - "last_name": "Valens-Smith", - "email": ["cvalenssmithrb@ibm.com"], - "gender": "Female", - "ip_address": "55.141.95.252" - }, - { - "id": 985, - "first_name": "Suzy", - "last_name": "Matuszinski", - "email": ["smatuszinskirc@google.nl"], - "gender": "Female", - "ip_address": "85.126.54.9" - }, - { - "id": 986, - "first_name": "Ancell", - "last_name": "Markovic", - "email": ["amarkovicrd@ask.com"], - "gender": "Male", - "ip_address": "250.37.172.75" - }, - { - "id": 987, - "first_name": "Dame", - "last_name": "Tripe", - "email": ["dtripere@hostgator.com"], - "gender": "Male", - "ip_address": "205.93.114.233" - }, - { - "id": 988, - "first_name": "Osbourne", - "last_name": "Puddan", - "email": ["opuddanrf@reverbnation.com"], - "gender": "Male", - "ip_address": "88.150.1.153" - }, - { - "id": 989, - "first_name": "Cecil", - "last_name": "Waterhowse", - "email": ["cwaterhowserg@csmonitor.com"], - "gender": "Male", - "ip_address": "86.225.246.173" - }, - { - "id": 990, - "first_name": "Dermot", - "last_name": "Tax", - "email": ["dtaxrh@wunderground.com"], - "gender": "Male", - "ip_address": "54.82.90.106" - }, - { - "id": 991, - "first_name": "Paula", - "last_name": "Giovannelli", - "email": ["pgiovannelliri@ucoz.com"], - "gender": "Female", - "ip_address": "244.197.237.182" - }, - { - "id": 992, - "first_name": "Henry", - "last_name": "Carden", - "email": ["hcardenrj@squidoo.com"], - "gender": "Male", - "ip_address": "53.67.72.7" - }, - { - "id": 993, - "first_name": "Salvador", - "last_name": "Kittel", - "email": ["skittelrk@cocolog-nifty.com"], - "gender": "Male", - "ip_address": "230.157.218.28" - }, - { - "id": 994, - "first_name": "Jordon", - "last_name": "Dudmarsh", - "email": ["jdudmarshrl@sphinn.com"], - "gender": "Male", - "ip_address": "103.115.162.158" - }, - { - "id": 995, - "first_name": "Harlin", - "last_name": "Garshore", - "email": ["hgarshorerm@360.cn"], - "gender": "Male", - "ip_address": "127.122.235.109" - }, - { - "id": 996, - "first_name": "Sheilah", - "last_name": "Christopher", - "email": ["schristopherrn@mlb.com"], - "gender": "Female", - "ip_address": "185.9.7.193" - }, - { - "id": 997, - "first_name": "Che", - "last_name": "Denisovich", - "email": ["cdenisovichro@un.org"], - "gender": "Male", - "ip_address": "26.108.98.159" - }, - { - "id": 998, - "first_name": "Yule", - "last_name": "Bortol", - "email": ["ybortolrp@wikispaces.com"], - "gender": "Male", - "ip_address": "20.123.151.220" - }, - { - "id": 999, - "first_name": "Wyatan", - "last_name": "Puttick", - "email": ["wputtickrq@so-net.ne.jp"], - "gender": "Male", - "ip_address": "19.166.174.149" - }, - { - "id": 1000, - "first_name": "Joel", - "last_name": "Cudworth", - "email": ["jcudworthrr@bandcamp.com"], - "gender": "Male", - "ip_address": "205.171.134.59" - } -] \ No newline at end of file diff --git a/transformer.go b/transformer.go index 3c80f6e..de7a16d 100644 --- a/transformer.go +++ b/transformer.go @@ -7,7 +7,7 @@ package gocqlx import ( "reflect" - "github.com/gocql/gocql" + gocql "github.com/apache/cassandra-gocql-driver/v2" ) // Transformer transforms the value of the named parameter to another value. diff --git a/udt.go b/udt.go index cc11f4e..4199286 100644 --- a/udt.go +++ b/udt.go @@ -8,7 +8,7 @@ import ( "fmt" "reflect" - "github.com/gocql/gocql" + gocql "github.com/apache/cassandra-gocql-driver/v2" "github.com/scylladb/go-reflectx" )