Compare commits
No commits in common. "feature-waveRecord" and "develop" have entirely different histories.
feature-wa
...
develop
|
|
@ -1,77 +0,0 @@
|
||||||
// Package config define config struct of wave record project
|
|
||||||
package config
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"fmt"
|
|
||||||
"strings"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"wave_record/constant"
|
|
||||||
"wave_record/log"
|
|
||||||
|
|
||||||
"github.com/spf13/viper"
|
|
||||||
)
|
|
||||||
|
|
||||||
// WaveRecordConfig define config of wave record struct
|
|
||||||
type WaveRecordConfig struct {
|
|
||||||
MonitorDir string
|
|
||||||
BackupDir string
|
|
||||||
ParseConcurrentQuantity int // parse comtrade file concurrent quantity
|
|
||||||
MongoDBURI string
|
|
||||||
MongoDBDataBase string
|
|
||||||
InfluxDBURL string
|
|
||||||
InfluxDBToken string
|
|
||||||
InfluxDBOrg string
|
|
||||||
InfluxDBBucket string
|
|
||||||
LCfg log.CutLogConfig // log config
|
|
||||||
}
|
|
||||||
|
|
||||||
// ComtradeDataStorageConfig define config struct of storage comtrade data
|
|
||||||
type ComtradeDataStorageConfig struct {
|
|
||||||
Ctx context.Context
|
|
||||||
DelChan chan string
|
|
||||||
DBName string
|
|
||||||
ConfigFilePath string
|
|
||||||
DataFilePath string
|
|
||||||
}
|
|
||||||
|
|
||||||
// ReadAndInitConfig return wave record project config struct
|
|
||||||
func ReadAndInitConfig(configDir, configName, configType string) (waveRecordConfig WaveRecordConfig) {
|
|
||||||
config := viper.New()
|
|
||||||
config.AddConfigPath(configDir)
|
|
||||||
config.SetConfigName(configName)
|
|
||||||
config.SetConfigType(configType)
|
|
||||||
if err := config.ReadInConfig(); err != nil {
|
|
||||||
if _, ok := err.(viper.ConfigFileNotFoundError); ok {
|
|
||||||
panic("can not find conifg file")
|
|
||||||
}
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
waveRecordConfig.MonitorDir = config.GetString("comtrade_monitor_dir")
|
|
||||||
waveRecordConfig.BackupDir = config.GetString("comtrade_backup_dir")
|
|
||||||
// init mongodb config from config.yaml
|
|
||||||
mongoDBHost := config.GetString("mongodb_host")
|
|
||||||
mongoDBPort := config.GetString("mongodb_port")
|
|
||||||
waveRecordConfig.MongoDBURI = strings.Join([]string{"mongodb://", mongoDBHost, ":", mongoDBPort}, "")
|
|
||||||
waveRecordConfig.MongoDBDataBase = config.GetString("mongodb_database")
|
|
||||||
// init influxdb config from config.yaml
|
|
||||||
influxDBHost := config.GetString("influxdb_host")
|
|
||||||
influxDBPort := config.GetString("influxdb_port")
|
|
||||||
waveRecordConfig.InfluxDBURL = strings.Join([]string{"http://", influxDBHost, ":", influxDBPort}, "")
|
|
||||||
waveRecordConfig.InfluxDBToken = config.GetString("influxdb_token")
|
|
||||||
waveRecordConfig.InfluxDBOrg = config.GetString("influxdb_org")
|
|
||||||
waveRecordConfig.InfluxDBBucket = config.GetString("influxdb_bucket")
|
|
||||||
// init zap log config from config.yaml
|
|
||||||
waveRecordConfig.LCfg.Mode = config.GetString("log_mode")
|
|
||||||
waveRecordConfig.LCfg.Level = config.GetString("log_level")
|
|
||||||
waveRecordConfig.LCfg.FileName = fmt.Sprintf(config.GetString("log_filepath"), time.Now().Format(constant.LogTimeFormate))
|
|
||||||
waveRecordConfig.LCfg.MaxSize = config.GetInt("log_maxsize")
|
|
||||||
waveRecordConfig.LCfg.MaxBackups = config.GetInt("log_maxbackups")
|
|
||||||
waveRecordConfig.LCfg.MaxAge = config.GetInt("log_maxage")
|
|
||||||
|
|
||||||
waveRecordConfig.ParseConcurrentQuantity = config.GetInt("parse_concurrent_quantity")
|
|
||||||
|
|
||||||
return waveRecordConfig
|
|
||||||
}
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
comtrade_monitor_dir: "/home/douxu/comtrade_file/"
|
|
||||||
comtrade_backup_dir: "/home/douxu/comtrade_file_backup/"
|
|
||||||
|
|
||||||
mongodb_host: "localhost"
|
|
||||||
mongodb_port: "27017"
|
|
||||||
mongodb_database: "wave_record"
|
|
||||||
|
|
||||||
influxdb_host: "localhost"
|
|
||||||
influxdb_port: "8086"
|
|
||||||
influxdb_token: "lCuiQ316qlly3iFeoi1EUokPJ0XxW-5lnG-3rXsKaaZSjfuxO5EaZfFdrNGM7Zlrdk1PrN_7TOsM_SCu9Onyew=="
|
|
||||||
influxdb_org: "coslight"
|
|
||||||
influxdb_bucket: "wave_record"
|
|
||||||
|
|
||||||
log_mode: "development"
|
|
||||||
log_level: "debug"
|
|
||||||
log_filepath: "/home/douxu/log/wave_record-%s.log"
|
|
||||||
log_maxsize: 1
|
|
||||||
log_maxbackups: 5
|
|
||||||
log_maxage: 30
|
|
||||||
|
|
||||||
parse_concurrent_quantity: 10
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
// Package constant define constant value
|
|
||||||
package constant
|
|
||||||
|
|
||||||
import "errors"
|
|
||||||
|
|
||||||
// ErrNotFindDatFile define error for not find comtrade data file
|
|
||||||
var ErrNotFindDatFile = errors.New("can not find dat file in map")
|
|
||||||
|
|
||||||
// ErrNotSupportFileType define error for not support file type
|
|
||||||
var ErrNotSupportFileType = errors.New("not support file type")
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
// Package constant define constant value
|
|
||||||
package constant
|
|
||||||
|
|
||||||
const (
|
|
||||||
// ConfigFileSuffix define comtrade config file suffix
|
|
||||||
ConfigFileSuffix = ".cfg"
|
|
||||||
// DataFileSuffix define comtrade data file suffix
|
|
||||||
DataFileSuffix = ".dat"
|
|
||||||
// MixFileSuffix define comtrade mix file suffix
|
|
||||||
MixFileSuffix = ".cff"
|
|
||||||
)
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
// Package constant define constant value
|
|
||||||
package constant
|
|
||||||
|
|
||||||
const (
|
|
||||||
// DevelopmentLogMode define development operator environment for wave record project
|
|
||||||
DevelopmentLogMode = "development"
|
|
||||||
// ProductionLogMode define production operator environment for wave record project
|
|
||||||
ProductionLogMode = "production"
|
|
||||||
)
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
// Package constant define constant value
|
|
||||||
package constant
|
|
||||||
|
|
||||||
const (
|
|
||||||
// LogTimeFormate define time format for log file name
|
|
||||||
LogTimeFormate = "2006-01-02 15:04:05"
|
|
||||||
)
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
||||||
// Package database define database operation functions
|
|
||||||
package database
|
|
||||||
|
|
||||||
import (
|
|
||||||
"sync"
|
|
||||||
|
|
||||||
influxdb2 "github.com/influxdata/influxdb-client-go/v2"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
influxDBOnce sync.Once
|
|
||||||
_globalInfluxDBClient *influxdb2.Client
|
|
||||||
_globalInfluxDBMu sync.RWMutex
|
|
||||||
)
|
|
||||||
|
|
||||||
// InfluxDBClient returns the global InfluxDB client.It's safe for concurrent use.
|
|
||||||
func InfluxDBClient() *influxdb2.Client {
|
|
||||||
_globalInfluxDBMu.RLock()
|
|
||||||
client := _globalInfluxDBClient
|
|
||||||
_globalInfluxDBMu.RUnlock()
|
|
||||||
return client
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetInfluxDBInstance return instance of InfluxDB client
|
|
||||||
func GetInfluxDBInstance(influxDBURL, token string) *influxdb2.Client {
|
|
||||||
mongoOnce.Do(func() {
|
|
||||||
_globalInfluxDBClient = initInfluxDBClient(influxDBURL, token)
|
|
||||||
})
|
|
||||||
return _globalInfluxDBClient
|
|
||||||
}
|
|
||||||
|
|
||||||
// initInfluxDBClient return successfully initialized InfluxDB client
|
|
||||||
func initInfluxDBClient(influxDBURL, token string) *influxdb2.Client {
|
|
||||||
influxDBClient := influxdb2.NewClient(influxDBURL, token)
|
|
||||||
return &influxDBClient
|
|
||||||
}
|
|
||||||
|
|
@ -1,48 +0,0 @@
|
||||||
// Package database define database operation functions
|
|
||||||
package database
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
influxdb2 "github.com/influxdata/influxdb-client-go/v2"
|
|
||||||
"github.com/influxdata/influxdb-client-go/v2/api"
|
|
||||||
"go.uber.org/zap"
|
|
||||||
)
|
|
||||||
|
|
||||||
// WriterPointIntoInfluxDB return the result of storing point into influxdb
|
|
||||||
func WriterPointIntoInfluxDB(ctx context.Context, writeAPI api.WriteAPIBlocking, measurement string, tags map[string]string, fields map[string]interface{}) error {
|
|
||||||
// TODO 增加api创建示例
|
|
||||||
// aPI := client.WriteAPIBlocking("my-org", "my-bucket")
|
|
||||||
point := influxdb2.NewPoint(measurement, tags, fields, time.Now())
|
|
||||||
return writeAPI.WritePoint(ctx, point)
|
|
||||||
}
|
|
||||||
|
|
||||||
// QueryPointFromInfluxDB return the result of query from influxdb by special parameters
|
|
||||||
// Get query client
|
|
||||||
// queryAPI := client.QueryAPI(org)
|
|
||||||
func QueryPointFromInfluxDB(ctx context.Context, queryAPI api.QueryAPI, logger *zap.Logger) ([]interface{}, error) {
|
|
||||||
dataList := make([]interface{}, 0)
|
|
||||||
// get query result
|
|
||||||
// TODO 增加初始化示例
|
|
||||||
query := InitQueryByPara()
|
|
||||||
results, err := queryAPI.Query(ctx, query)
|
|
||||||
if err != nil {
|
|
||||||
logger.Error("query data by parameters failed", zap.Error(err))
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
for results.Next() {
|
|
||||||
if results.TableChanged() {
|
|
||||||
logger.Info("find new result table", zap.String("table_metadata", results.TableMetadata().String()))
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
dataList = append(dataList, results.Record().Value())
|
|
||||||
}
|
|
||||||
|
|
||||||
if results.Err() != nil {
|
|
||||||
logger.Error("query parsing error failed", zap.Error(results.Err()))
|
|
||||||
return nil, results.Err()
|
|
||||||
}
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
|
|
@ -1,135 +0,0 @@
|
||||||
// Package database define database operation functions
|
|
||||||
package database
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"strings"
|
|
||||||
)
|
|
||||||
|
|
||||||
// InfluxDBQueryPara define struct of influxdb query parameters
|
|
||||||
type InfluxDBQueryPara struct {
|
|
||||||
Bucket string `json:"bucket"`
|
|
||||||
Measurement string `json:"measurement"`
|
|
||||||
Start string `json:"start"`
|
|
||||||
Stop string `json:"stop"`
|
|
||||||
Field string `json:"field"`
|
|
||||||
// Value float64 `json:"value"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// QueryPara define influxdb query parameters interface
|
|
||||||
type QueryPara interface {
|
|
||||||
apply(string) string
|
|
||||||
}
|
|
||||||
|
|
||||||
// BucketQueryPara define influxdb bucket query parameter
|
|
||||||
type BucketQueryPara string
|
|
||||||
|
|
||||||
func (b BucketQueryPara) apply(query string) string {
|
|
||||||
template := " from(bucket:\"{bucketId}\") "
|
|
||||||
template = strings.Replace(template, "{bucketId}", string(b), -1)
|
|
||||||
return query + template
|
|
||||||
}
|
|
||||||
|
|
||||||
// WithBucket define func of set bucket parameter in query statment
|
|
||||||
func WithBucket(bucketID string) BucketQueryPara {
|
|
||||||
return BucketQueryPara(bucketID)
|
|
||||||
}
|
|
||||||
|
|
||||||
// MeasurementQueryPara define influxdb measurement query parameter
|
|
||||||
type MeasurementQueryPara string
|
|
||||||
|
|
||||||
func (m MeasurementQueryPara) apply(query string) string {
|
|
||||||
template := " |> filter(fn: (r) => r[\"_measurement\"] == \"{measurement}\") "
|
|
||||||
template = strings.Replace(template, "{measurement}", string(m), -1)
|
|
||||||
return query + template
|
|
||||||
}
|
|
||||||
|
|
||||||
// WithMeasurement define func of set measurement parameter in query statment
|
|
||||||
func WithMeasurement(measurement string) MeasurementQueryPara {
|
|
||||||
return MeasurementQueryPara(measurement)
|
|
||||||
}
|
|
||||||
|
|
||||||
// RangeTimeQueryPara define influxdb range query parameter
|
|
||||||
type RangeTimeQueryPara struct {
|
|
||||||
StartTime string
|
|
||||||
StopTime string
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r RangeTimeQueryPara) apply(query string) string {
|
|
||||||
template := " |> range(start: {start}, stop: {stop}) "
|
|
||||||
template = strings.Replace(template, "{start}", r.StartTime, -1)
|
|
||||||
template = strings.Replace(template, "{stop}", r.StopTime, -1)
|
|
||||||
return query + template
|
|
||||||
}
|
|
||||||
|
|
||||||
// WithRangeTime define func of set range parameter in query statment
|
|
||||||
func WithRangeTime(startTime, stopTime string) RangeTimeQueryPara {
|
|
||||||
return RangeTimeQueryPara{StartTime: startTime, StopTime: stopTime}
|
|
||||||
}
|
|
||||||
|
|
||||||
// FieldQueryPara define influxdb field query parameter
|
|
||||||
type FieldQueryPara struct {
|
|
||||||
Fields []string
|
|
||||||
Operator string
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f FieldQueryPara) apply(query string) string {
|
|
||||||
fieldTemplate := "r[\"_field\"] == \"{value}\""
|
|
||||||
filterTemplate := " |> filter(fn: (r) => {field_template}) "
|
|
||||||
fieldBuilder := strings.Builder{}
|
|
||||||
for index, field := range f.Fields {
|
|
||||||
if index > 0 {
|
|
||||||
operator := " " + f.Operator + " "
|
|
||||||
fieldBuilder.Write([]byte(operator))
|
|
||||||
}
|
|
||||||
filedContent := strings.Replace(fieldTemplate, "{value}", field, -1)
|
|
||||||
fieldBuilder.Write([]byte(filedContent))
|
|
||||||
}
|
|
||||||
filterTemplate = strings.Replace(filterTemplate, "{field_template}", fieldBuilder.String(), -1)
|
|
||||||
return query + filterTemplate
|
|
||||||
}
|
|
||||||
|
|
||||||
// WithField define func of set field parameter in query statment
|
|
||||||
func WithField(fields []string, operator string) FieldQueryPara {
|
|
||||||
return FieldQueryPara{Fields: fields, Operator: operator}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TagQueryPara define influxdb tag query parameter
|
|
||||||
type TagQueryPara struct {
|
|
||||||
Tag []string
|
|
||||||
Value []string
|
|
||||||
Operator string
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t TagQueryPara) apply(query string) string {
|
|
||||||
tagTemplate := "r[\"{tag}\"] == \"{value}\""
|
|
||||||
filterTemplate := " |> filter(fn: (r) => {tag_template}) "
|
|
||||||
tagBuilder := strings.Builder{}
|
|
||||||
for i := 0; i < len(t.Tag); i++ {
|
|
||||||
if i > 0 {
|
|
||||||
operator := " " + t.Operator + " "
|
|
||||||
tagBuilder.Write([]byte(operator))
|
|
||||||
}
|
|
||||||
tagContent := strings.Replace(tagTemplate, "{tag}", t.Tag[i], -1)
|
|
||||||
tagContent = strings.Replace(tagContent, "{value}", t.Value[i], -1)
|
|
||||||
fmt.Printf("tagContent:%v\n", tagContent)
|
|
||||||
tagBuilder.Write([]byte(tagContent))
|
|
||||||
}
|
|
||||||
|
|
||||||
filterTemplate = strings.Replace(filterTemplate, "{tag_template}", tagBuilder.String(), -1)
|
|
||||||
return query + filterTemplate
|
|
||||||
}
|
|
||||||
|
|
||||||
// WithTag define func of set tag parameter in query statment
|
|
||||||
func WithTag(tag []string, value []string, operator string) TagQueryPara {
|
|
||||||
return TagQueryPara{Tag: tag, Value: value, Operator: operator}
|
|
||||||
}
|
|
||||||
|
|
||||||
// InitQueryByPara define func of init influxdb query statment
|
|
||||||
func InitQueryByPara(paras ...QueryPara) (queryCmd string) {
|
|
||||||
for _, para := range paras {
|
|
||||||
queryCmd = para.apply(queryCmd)
|
|
||||||
}
|
|
||||||
fmt.Printf("queryCmd:%v\n", queryCmd)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
@ -1,44 +0,0 @@
|
||||||
// Package database define database operation functions
|
|
||||||
package database
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"sync"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
|
||||||
"go.mongodb.org/mongo-driver/mongo/options"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
mongoOnce sync.Once
|
|
||||||
_globalMongoClient *mongo.Client
|
|
||||||
_globalMongoMu sync.RWMutex
|
|
||||||
)
|
|
||||||
|
|
||||||
// MongoDBClient returns the global MongoDB client.It's safe for concurrent use.
|
|
||||||
func MongoDBClient() *mongo.Client {
|
|
||||||
_globalMongoMu.RLock()
|
|
||||||
client := _globalMongoClient
|
|
||||||
_globalMongoMu.RUnlock()
|
|
||||||
return client
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetMongoDBInstance return instance of MongoDB client
|
|
||||||
func GetMongoDBInstance(ctx context.Context, mongoDBURI string) *mongo.Client {
|
|
||||||
mongoOnce.Do(func() {
|
|
||||||
_globalMongoClient = initMongoDBClient(ctx, mongoDBURI)
|
|
||||||
})
|
|
||||||
return _globalMongoClient
|
|
||||||
}
|
|
||||||
|
|
||||||
// initMongoDBClient return successfully initialized MongoDB client
|
|
||||||
func initMongoDBClient(ctx context.Context, mongoDBURI string) *mongo.Client {
|
|
||||||
ctx, cancel := context.WithTimeout(ctx, 10*time.Second)
|
|
||||||
defer cancel()
|
|
||||||
mongoDBClient, err := mongo.Connect(ctx, options.Client().ApplyURI(mongoDBURI))
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return mongoDBClient
|
|
||||||
}
|
|
||||||
|
|
@ -1,61 +0,0 @@
|
||||||
// Package database define database operation functions
|
|
||||||
package database
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"wave_record/go-comtrade"
|
|
||||||
|
|
||||||
"go.mongodb.org/mongo-driver/bson"
|
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
|
||||||
"go.uber.org/zap"
|
|
||||||
)
|
|
||||||
|
|
||||||
// StorageComtradeIntoMongoDB return the result of storing comtrade data into mongoDB
|
|
||||||
func StorageComtradeIntoMongoDB(ctx context.Context, comtradeData *comtrade.Comtrade, collection *mongo.Collection, logger *zap.Logger) error {
|
|
||||||
comtradeBson, err := bson.Marshal(comtradeData)
|
|
||||||
if err != nil {
|
|
||||||
logger.Error("bson marshal comtrade data failed", zap.Error(err))
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = collection.InsertOne(ctx, comtradeBson)
|
|
||||||
if err != nil {
|
|
||||||
logger.Error("insert comtrade data into mongoDB failed", zap.Error(err))
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO 增加mongodb查找示例
|
|
||||||
// var key, value string
|
|
||||||
// doc := bson.D{} // 创建一个空的bson.D文档
|
|
||||||
|
|
||||||
// // 添加键值对
|
|
||||||
// doc = append(doc, bson.E{Key: key, Value: value})
|
|
||||||
//
|
|
||||||
|
|
||||||
// FindComtradeIntoMongoDB return the query results of comtrade data with specified conditions in MongoDB
|
|
||||||
func FindComtradeIntoMongoDB(ctx context.Context, filter bson.D, collection *mongo.Collection, logger *zap.Logger) ([]*comtrade.Comtrade, error) {
|
|
||||||
var results []*comtrade.Comtrade
|
|
||||||
|
|
||||||
cur, err := collection.Find(ctx, filter, nil)
|
|
||||||
if err != nil {
|
|
||||||
logger.Error("")
|
|
||||||
}
|
|
||||||
for cur.Next(ctx) {
|
|
||||||
var element comtrade.Comtrade
|
|
||||||
err := cur.Decode(&element)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
}
|
|
||||||
results = append(results, &element)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := cur.Err(); err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
}
|
|
||||||
cur.Close(ctx)
|
|
||||||
return results, nil
|
|
||||||
}
|
|
||||||
|
|
@ -1,76 +0,0 @@
|
||||||
// Package fileparse define related functions for comtrade data processing
|
|
||||||
package fileparse
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"os"
|
|
||||||
"path/filepath"
|
|
||||||
"sync"
|
|
||||||
|
|
||||||
"wave_record/constant"
|
|
||||||
|
|
||||||
"github.com/fsnotify/fsnotify"
|
|
||||||
"github.com/panjf2000/ants/v2"
|
|
||||||
"go.uber.org/zap"
|
|
||||||
)
|
|
||||||
|
|
||||||
// DirWatch define function for monitoring directories and passing add file name to channels
|
|
||||||
func DirWatch(monitorDir string, addChan chan string) {
|
|
||||||
logger := zap.L()
|
|
||||||
|
|
||||||
watcher, err := fsnotify.NewWatcher()
|
|
||||||
if err != nil {
|
|
||||||
logger.Error("create dir watcher failed:", zap.Error(err))
|
|
||||||
}
|
|
||||||
defer watcher.Close()
|
|
||||||
|
|
||||||
err = watcher.Add(monitorDir)
|
|
||||||
if err != nil {
|
|
||||||
logger.Error("add monitor dir failed:", zap.Error(err))
|
|
||||||
}
|
|
||||||
|
|
||||||
for {
|
|
||||||
select {
|
|
||||||
case event, ok := <-watcher.Events:
|
|
||||||
if !ok {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if event.Op&fsnotify.Create == fsnotify.Create {
|
|
||||||
logger.Info("file add in watcher dir", zap.String("file_name", event.Name))
|
|
||||||
addChan <- event.Name
|
|
||||||
}
|
|
||||||
|
|
||||||
if event.Op&fsnotify.Remove == fsnotify.Remove {
|
|
||||||
logger.Info("file remove in watcher dir", zap.String("file_name", event.Name))
|
|
||||||
}
|
|
||||||
case err, ok := <-watcher.Errors:
|
|
||||||
if !ok {
|
|
||||||
logger.Error("monitor watcher error channel closed", zap.Bool("channel_status", ok))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
logger.Error("monitor watcher error occurred", zap.Error(err))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TraverseMonitorDir define function for traverse the files existing in the directory
|
|
||||||
func TraverseMonitorDir(ctx context.Context, monitorDir string, dbName string, comtradeMap *sync.Map, addChan chan string, delChan chan string, pool *ants.PoolWithFunc) {
|
|
||||||
logger := zap.L()
|
|
||||||
err := filepath.Walk(monitorDir, func(path string, info os.FileInfo, err error) error {
|
|
||||||
if err != nil {
|
|
||||||
logger.Error("accessing a path failed", zap.Error(err))
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
fileSuffix := filepath.Ext(path)
|
|
||||||
if !info.IsDir() && fileSuffix == constant.ConfigFileSuffix {
|
|
||||||
processComtradeFile(ctx, path, monitorDir, dbName, comtradeMap, addChan, delChan, pool, logger)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
logger.Error("traversing files that already exist in the monitor directory failed", zap.Error(err))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,158 +0,0 @@
|
||||||
// Package fileparse define related functions for comtrade data processing
|
|
||||||
package fileparse
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
"path/filepath"
|
|
||||||
"strings"
|
|
||||||
"sync"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"wave_record/config"
|
|
||||||
"wave_record/constant"
|
|
||||||
"wave_record/database"
|
|
||||||
"wave_record/go-comtrade"
|
|
||||||
"wave_record/util"
|
|
||||||
|
|
||||||
"github.com/panjf2000/ants/v2"
|
|
||||||
"go.uber.org/zap"
|
|
||||||
)
|
|
||||||
|
|
||||||
// ParseFunc define ants concourrent exec func
|
|
||||||
var ParseFunc = func(parseConfig interface{}) {
|
|
||||||
logger := zap.L()
|
|
||||||
comtradeStorageConfig, ok := parseConfig.(config.ComtradeDataStorageConfig)
|
|
||||||
if !ok {
|
|
||||||
logger.Error("conversion comtrade parameter config type failed")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
fileName := filepath.Base(comtradeStorageConfig.ConfigFilePath)
|
|
||||||
comtradeData, err := parseComtradeData(comtradeStorageConfig.ConfigFilePath, comtradeStorageConfig.DataFilePath)
|
|
||||||
if err != nil {
|
|
||||||
logger.Error("parsing comtrade data failed", zap.String("fileName", fileName), zap.Error(err))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
collection := database.MongoDBClient().Database(comtradeStorageConfig.DBName).Collection(comtradeData.Conf.StationName)
|
|
||||||
ctx, cancel := context.WithTimeout(comtradeStorageConfig.Ctx, 5*time.Second)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
err = database.
|
|
||||||
StorageComtradeIntoMongoDB(ctx, comtradeData, collection, logger)
|
|
||||||
if err != nil {
|
|
||||||
logger.Error("stroage comtrade data info mongoDB failed", zap.String("fileName", fileName), zap.Error(err))
|
|
||||||
}
|
|
||||||
comtradeStorageConfig.DelChan <- comtradeStorageConfig.ConfigFilePath
|
|
||||||
comtradeStorageConfig.DelChan <- comtradeStorageConfig.DataFilePath
|
|
||||||
}
|
|
||||||
|
|
||||||
func parseComtradeData(configFilePath, dataFilePath string) (*comtrade.Comtrade, error) {
|
|
||||||
logger := zap.L()
|
|
||||||
|
|
||||||
comtrade, err := comtrade.ParseComtrade(configFilePath, dataFilePath)
|
|
||||||
if err != nil {
|
|
||||||
logger.Error("parse comtrade file failed", zap.Error(err))
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return comtrade, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// ParseComtradeFile define comtrade file parse func
|
|
||||||
func ParseComtradeFile(ctx context.Context, monitorDir string, dbName string, addChan chan string, delChan chan string, comtradeMap *sync.Map, pool *ants.PoolWithFunc) {
|
|
||||||
logger := zap.L()
|
|
||||||
|
|
||||||
for {
|
|
||||||
addFilePath, ok := <-addChan
|
|
||||||
if !ok {
|
|
||||||
logger.Error("monitor add channel closed", zap.Bool("channel_status", ok))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
err := processComtradeFile(ctx, addFilePath, monitorDir, dbName, comtradeMap, addChan, delChan, pool, logger)
|
|
||||||
if err != nil {
|
|
||||||
if errors.Is(err, constant.ErrNotFindDatFile) {
|
|
||||||
logger.Info("process comtrade file failed", zap.String("err", err.Error()))
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
logger.Error("process comtrade file failed", zap.Error(err))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func processComtradeFile(ctx context.Context, addFilePath string, monitorDir string, dbName string, comtradeMap *sync.Map, addChan chan string, delChan chan string, pool *ants.PoolWithFunc, logger *zap.Logger) error {
|
|
||||||
lastElement := filepath.Base(addFilePath)
|
|
||||||
fileName := strings.Split(lastElement, ".")[0]
|
|
||||||
fileExtension := filepath.Ext(lastElement)
|
|
||||||
|
|
||||||
switch fileExtension {
|
|
||||||
case constant.ConfigFileSuffix:
|
|
||||||
err := processConfigFile(ctx, dbName, addFilePath, delChan, comtradeMap, pool)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("process comtrade failed:%w", err)
|
|
||||||
}
|
|
||||||
case constant.DataFileSuffix:
|
|
||||||
err := processDataFile(monitorDir, fileName, addFilePath, comtradeMap, addChan)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("process comtrade failed:%w", err)
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
logger.Warn("no support file style", zap.String("file_style", fileExtension))
|
|
||||||
time.Sleep(5 * time.Second)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func processConfigFile(ctx context.Context, dbName string, configFilePath string, delchan chan string, comtradeMap *sync.Map, pool *ants.PoolWithFunc) error {
|
|
||||||
dataFilePath, err := util.FileNameConvert(configFilePath)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("process config file failed:%w", err)
|
|
||||||
}
|
|
||||||
exist := util.FileExists(dataFilePath)
|
|
||||||
if !exist {
|
|
||||||
comtradeMap.Store(configFilePath, "")
|
|
||||||
return constant.ErrNotFindDatFile
|
|
||||||
}
|
|
||||||
|
|
||||||
pool.Invoke(config.ComtradeDataStorageConfig{
|
|
||||||
Ctx: ctx,
|
|
||||||
DelChan: delchan,
|
|
||||||
DBName: dbName,
|
|
||||||
ConfigFilePath: configFilePath,
|
|
||||||
DataFilePath: dataFilePath,
|
|
||||||
})
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func processDataFile(monitorDir string, fileName string, dataFilePath string, comtradeMap *sync.Map, addChan chan string) error {
|
|
||||||
configFileName := strings.Join([]string{fileName, constant.ConfigFileSuffix}, "")
|
|
||||||
configFilePath := filepath.Join(monitorDir, configFileName)
|
|
||||||
exist := util.FileExists(configFilePath)
|
|
||||||
if exist {
|
|
||||||
comtradeMap.Store(configFilePath, dataFilePath)
|
|
||||||
addChan <- configFilePath
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
// addChan <- dataFilePath
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// MoveComtradeFile define comtrade file remove from comtradeMap and move comtrade file from monitor dir to backup dir func
|
|
||||||
func MoveComtradeFile(backupDir string, comtradeMap *sync.Map, delChan chan string) {
|
|
||||||
logger := zap.L()
|
|
||||||
for {
|
|
||||||
filePath := <-delChan
|
|
||||||
fileName := filepath.Base(filePath)
|
|
||||||
fileExtension := filepath.Ext(fileName)
|
|
||||||
if fileExtension == constant.ConfigFileSuffix {
|
|
||||||
comtradeMap.Delete(filePath)
|
|
||||||
}
|
|
||||||
backupFilePath := filepath.Join(backupDir, fileName)
|
|
||||||
err := util.RemoveFile(filePath, backupFilePath)
|
|
||||||
if err != nil {
|
|
||||||
logger.Error("remove file to backup dir failed", zap.Error(err))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
# go-comtrade
|
|
||||||
|
|
||||||
comtrade文件Golang解析库,基于电力系统暂态数据交换通用格式(Common format of transient data exechange COMTRADE for power systems)的GB/T 22386-2008/IEC 60255-24:2001标准对相关文件进行解析,后续预计支持GB/T 14598.24-2017/IEC 60255-24:2013
|
|
||||||
|
|
@ -1,70 +0,0 @@
|
||||||
package comtrade
|
|
||||||
|
|
||||||
// AnalogChan 模拟通道
|
|
||||||
type AnalogChan struct {
|
|
||||||
An uint32 `json:"an"` //模拟通道索引号
|
|
||||||
ChId string `json:"ch_id"` //通道标识
|
|
||||||
Ph string `json:"ph"` //通道相别标识
|
|
||||||
Ccbm string `json:"ccbm"` //被监视的电路元件
|
|
||||||
Uu string `json:"uu"` //通道单位
|
|
||||||
A float32 `json:"a"` //通道增益系数
|
|
||||||
B float32 `json:"b"` //通道偏移量
|
|
||||||
Skew float32 `json:"skew"` //通道时滞
|
|
||||||
Min float32 `json:"min"` //通道最小值
|
|
||||||
Max float32 `json:"max"` //通道最大值
|
|
||||||
Primary float32 `json:"primary"` //一次系数
|
|
||||||
Secondary float32 `json:"secondary"` //二次系数
|
|
||||||
PS string `json:"ps"` //一次二次标识
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AnalogChan) GetAn() uint32 {
|
|
||||||
return c.An
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AnalogChan) GetChId() string {
|
|
||||||
return c.ChId
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AnalogChan) GetPh() string {
|
|
||||||
return c.Ph
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AnalogChan) GetCcbm() string {
|
|
||||||
return c.Ccbm
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AnalogChan) GetUu() string {
|
|
||||||
return c.Uu
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AnalogChan) GetA() float32 {
|
|
||||||
return c.A
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AnalogChan) GetB() float32 {
|
|
||||||
return c.B
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AnalogChan) GetSkew() float32 {
|
|
||||||
return c.Skew
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AnalogChan) GetMin() float32 {
|
|
||||||
return c.Min
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AnalogChan) GetMax() float32 {
|
|
||||||
return c.Max
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AnalogChan) GetPrimary() float32 {
|
|
||||||
return c.Primary
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AnalogChan) GetSecondary() float32 {
|
|
||||||
return c.Secondary
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *AnalogChan) GetPS() string {
|
|
||||||
return c.PS
|
|
||||||
}
|
|
||||||
|
|
@ -1,85 +0,0 @@
|
||||||
package comtrade
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"io"
|
|
||||||
"os"
|
|
||||||
"strconv"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Parse ASCIIData ASCIIData is the ascii data of a comtrade data file.
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
Add(TypeASCII, func() Parser {
|
|
||||||
return &ASCIIData{}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
type ASCIIData struct{}
|
|
||||||
|
|
||||||
func (a *ASCIIData) Parse(filePath string, analogNum, digitalNum, endSamp uint32) (*Data, error) {
|
|
||||||
comtradeData := &Data{}
|
|
||||||
datFile, err := os.Open(filePath)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
defer datFile.Close()
|
|
||||||
|
|
||||||
content, err := io.ReadAll(datFile)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
lines := bytes.Split(content, []byte("\n"))
|
|
||||||
if len(lines)-1 != int(endSamp) {
|
|
||||||
return nil, ErrInvalidFile
|
|
||||||
}
|
|
||||||
|
|
||||||
comtradeData.AnalogData = make([]AnalogData, int(endSamp))
|
|
||||||
comtradeData.DigitalData = make([]DigitalData, int(endSamp))
|
|
||||||
|
|
||||||
for i := 0; i < int(endSamp); i++ {
|
|
||||||
comtradeData.AnalogData[i].Data = make([]int32, analogNum)
|
|
||||||
comtradeData.DigitalData[i].Data = make([]uint8, digitalNum)
|
|
||||||
}
|
|
||||||
|
|
||||||
total := 1 + 1 + int(analogNum) + int(digitalNum)
|
|
||||||
var tempList [][]byte
|
|
||||||
for i := 0; i < int(endSamp); i++ {
|
|
||||||
tempList = bytes.Split(lines[i], []byte(","))
|
|
||||||
if len(tempList) != total {
|
|
||||||
return nil, ErrReadFirstLine
|
|
||||||
}
|
|
||||||
|
|
||||||
if value, err := strconv.Atoi(ByteToString(tempList[0])); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else {
|
|
||||||
comtradeData.AnalogData[i].N = uint32(value)
|
|
||||||
comtradeData.DigitalData[i].N = uint32(value)
|
|
||||||
}
|
|
||||||
|
|
||||||
if value, err := strconv.Atoi(ByteToString(tempList[1])); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else {
|
|
||||||
comtradeData.AnalogData[i].Timestamp = uint32(value)
|
|
||||||
comtradeData.DigitalData[i].Timestamp = uint32(value)
|
|
||||||
}
|
|
||||||
|
|
||||||
for j := 0; j < int(analogNum); j++ {
|
|
||||||
if value, err := strconv.ParseInt(ByteToString(tempList[j+2]), 10, 64); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else {
|
|
||||||
comtradeData.AnalogData[i].Data[j] = int32(value)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for j := 0; j < int(digitalNum); j++ {
|
|
||||||
if value, err := strconv.ParseInt(ByteToString(tempList[j+2+int(analogNum)]), 10, 64); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else {
|
|
||||||
comtradeData.DigitalData[i].Data[j] = uint8(value)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return comtradeData, nil
|
|
||||||
}
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
package comtrade
|
|
||||||
|
|
||||||
import (
|
|
||||||
"reflect"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestASCIIData_Parse(t *testing.T) {
|
|
||||||
filePath := "testdata/test2.cfg"
|
|
||||||
cfg, err := ParseComtradeCfg(filePath)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("ParseComtradeCfg() error = %v", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
a := &ASCIIData{}
|
|
||||||
dat, err := a.Parse("testdata/test2.dat", cfg.AnalogNum, cfg.DigitalNum, cfg.EndSamp[len(cfg.EndSamp)-1])
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("Parse() error = %v", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if reflect.TypeOf(dat) != reflect.TypeOf(&Data{}) {
|
|
||||||
t.Errorf("Parse() got = %v", dat)
|
|
||||||
}
|
|
||||||
t.Log(dat)
|
|
||||||
}
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
package comtrade
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
Add(TypeBinary32, func() Parser {
|
|
||||||
return &Binary32Data{}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// Binary32Data TODO
|
|
||||||
type Binary32Data struct {
|
|
||||||
}
|
|
||||||
|
|
||||||
func (b *Binary32Data) Parse(filePath string, analogNum, digitalNum, endSamp uint32) (*Data, error) {
|
|
||||||
return &Data{}, nil
|
|
||||||
}
|
|
||||||
|
|
@ -1,112 +0,0 @@
|
||||||
package comtrade
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/binary"
|
|
||||||
"math"
|
|
||||||
"os"
|
|
||||||
)
|
|
||||||
|
|
||||||
// BinaryData is the binary data of a comtrade data file
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
Add(TypeBinary, func() Parser {
|
|
||||||
return &BinaryData{}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 读取数据文件
|
|
||||||
// 1、采样序号和时标,均以四字节,无符号二进制格式存储
|
|
||||||
// 2、模拟通道采样数据,binary两个字节,binary32四个字节二进制补码形式存储
|
|
||||||
// 3、每16个状态通道以两个字节一组存储,字的最低为对应该组16个状态通道中最小编号通道
|
|
||||||
// 4、每次采样字节数=(模拟通道数 * 每个采样数据占据字节数)+(状态通道数 / 16 * 2) + 4 + 4
|
|
||||||
// 5、每个采样数据占据字节数=2或4,取决于数据格式,2表示binary,4表示binary32
|
|
||||||
|
|
||||||
// 05,667,-760,1274,72,61,-140,-502,0,0,0,0,1,1
|
|
||||||
// 05 00 00 00
|
|
||||||
// 9B 02 00 00 667
|
|
||||||
// 08 FD -760
|
|
||||||
// FA 04 1274
|
|
||||||
// 48 00 72
|
|
||||||
// 3D 00 61
|
|
||||||
// 74 FF -140
|
|
||||||
// 0A FE -502
|
|
||||||
// 30 00 0,0,0,0,1,1
|
|
||||||
type BinaryData struct{}
|
|
||||||
|
|
||||||
func (b *BinaryData) Parse(filePath string, analogNum, digitalNum, endSamp uint32) (*Data, error) {
|
|
||||||
comtradeData := &Data{}
|
|
||||||
|
|
||||||
// 打开文件
|
|
||||||
file, err := os.Open(filePath)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
defer file.Close()
|
|
||||||
|
|
||||||
comtradeData.AnalogData = make([]AnalogData, int(endSamp))
|
|
||||||
comtradeData.DigitalData = make([]DigitalData, int(endSamp))
|
|
||||||
|
|
||||||
for i := 0; i < int(endSamp); i++ {
|
|
||||||
comtradeData.AnalogData[i].Data = make([]int32, analogNum)
|
|
||||||
comtradeData.DigitalData[i].Data = make([]uint8, digitalNum)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 计算状态通道组数
|
|
||||||
digitalCount := int(math.Ceil(float64(digitalNum) / 16.0))
|
|
||||||
remainder := int(digitalNum % 16)
|
|
||||||
|
|
||||||
for i := 0; i < int(endSamp); i++ {
|
|
||||||
var (
|
|
||||||
sampleIndex uint32
|
|
||||||
timestamp uint32
|
|
||||||
)
|
|
||||||
// 解析采样序号
|
|
||||||
if err := binary.Read(file, binary.LittleEndian, &sampleIndex); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
comtradeData.AnalogData[i].N = sampleIndex
|
|
||||||
comtradeData.DigitalData[i].N = sampleIndex
|
|
||||||
|
|
||||||
// 解析采样时标
|
|
||||||
if err = binary.Read(file, binary.LittleEndian, ×tamp); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
comtradeData.AnalogData[i].Timestamp = timestamp
|
|
||||||
comtradeData.DigitalData[i].Timestamp = timestamp
|
|
||||||
|
|
||||||
// 解析模拟通道采样数据
|
|
||||||
for m := 0; m < int(analogNum); m++ {
|
|
||||||
var tmp int16
|
|
||||||
if err := binary.Read(file, binary.LittleEndian, &tmp); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else {
|
|
||||||
comtradeData.AnalogData[i].Data[m] = int32(tmp)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 3、每16个状态通道以两个字节一组存储,字的最低为对应该组16个状态通道中最小编号通道
|
|
||||||
// 4、每次采样字节数=(模拟通道数 * 每个采样数据占据字节数)+(状态通道数 / 16 * 2) + 4 + 4
|
|
||||||
// 5、每个采样数据占据字节数=2或4,取决于数据格式,2表示binary,4表示binary32
|
|
||||||
|
|
||||||
stateData := make([]uint16, digitalCount)
|
|
||||||
for n, datum := range stateData {
|
|
||||||
data := datum
|
|
||||||
if err := binary.Read(file, binary.LittleEndian, &data); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
stateData[n] = data
|
|
||||||
}
|
|
||||||
for h, datum := range stateData {
|
|
||||||
if remainder != 0 && h == digitalCount-1 {
|
|
||||||
for j := 0; j < remainder; j++ {
|
|
||||||
comtradeData.DigitalData[i].Data[(h*16)+j] = uint8(uint((datum >> uint(j)) & 0x0001))
|
|
||||||
}
|
|
||||||
break
|
|
||||||
}
|
|
||||||
for k := 0; k < 16; k++ {
|
|
||||||
comtradeData.DigitalData[i].Data[(h*16)+k] = uint8(uint((datum >> uint(k)) & 0x0001))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return comtradeData, nil
|
|
||||||
}
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
package comtrade
|
|
||||||
|
|
||||||
import (
|
|
||||||
"reflect"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestBinaryData_Parse(t *testing.T) {
|
|
||||||
filePath := "testdata/test1.cfg"
|
|
||||||
cfg, err := ParseComtradeCfg(filePath)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("ParseComtradeCfg() error = %v", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
b := &BinaryData{}
|
|
||||||
dat, err := b.Parse("testdata/test1.dat", cfg.AnalogNum, cfg.DigitalNum, cfg.EndSamp[len(cfg.EndSamp)-1])
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("Parse() error = %v", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if reflect.TypeOf(dat) != reflect.TypeOf(&Data{}) {
|
|
||||||
t.Errorf("Parse() got = %v", dat)
|
|
||||||
}
|
|
||||||
t.Log(dat)
|
|
||||||
}
|
|
||||||
|
|
@ -1,40 +0,0 @@
|
||||||
package comtrade
|
|
||||||
|
|
||||||
type Comtrade struct {
|
|
||||||
Conf *ComtradeCfg
|
|
||||||
Data *Data
|
|
||||||
}
|
|
||||||
|
|
||||||
func ParseComtrade(configurePath, datafilePath string) (comtrade *Comtrade, err error) {
|
|
||||||
c := &Comtrade{}
|
|
||||||
c.Conf, err = c.parseComtradeConfig(configurePath)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
c.Data, err = c.parseComtradeData(datafilePath)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return c, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Comtrade) parseComtradeConfig(configurePath string) (*ComtradeCfg, error) {
|
|
||||||
comtradeConfig, err := ParseComtradeCfg(configurePath)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return comtradeConfig, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Comtrade) parseComtradeData(datafilePath string) (*Data, error) {
|
|
||||||
creator, ok := Parsers[c.Conf.Ft]
|
|
||||||
if !ok {
|
|
||||||
return nil, ErrUnknownTypeOfData
|
|
||||||
}
|
|
||||||
parser := creator()
|
|
||||||
comtradeData, err := parser.Parse(datafilePath, c.Conf.GetAnalogNum(), c.Conf.GetDigitalNum(), c.Conf.GetEndSamp()[len(c.Conf.GetEndSamp())-1])
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return comtradeData, nil
|
|
||||||
}
|
|
||||||
|
|
@ -1,110 +0,0 @@
|
||||||
package comtrade
|
|
||||||
|
|
||||||
import (
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
type ComtradeCfg struct {
|
|
||||||
StationName string `json:"station_name"` //厂站名称
|
|
||||||
RecDevID string `json:"rec_dev_id"` //记录设备ID
|
|
||||||
RevYear uint16 `json:"rev_year"` //COMTRADE版本年份 1991、1999、2013
|
|
||||||
Total uint32 `json:"total"` //总通道数
|
|
||||||
AnalogNum uint32 `json:"analog_num"` //模拟通道数
|
|
||||||
DigitalNum uint32 `json:"digital_num"` //数字/状态通道数
|
|
||||||
Analog []AnalogChan `json:"analog"` //模拟通道
|
|
||||||
Digital []DigitalChan `json:"digital"` //数字/状态通道
|
|
||||||
Lf float32 `json:"lf"` //标称频率
|
|
||||||
Nrates uint16 `json:"nrates"` //采样率个数
|
|
||||||
Samp []float32 `json:"samp"` //采样率
|
|
||||||
EndSamp []uint32 `json:"end_samp"` //最末采样序号
|
|
||||||
FirstDataTime time.Time `json:"first_data_time"` //第一条数据时间
|
|
||||||
TriggerTime time.Time `json:"trigger_time"` //采样触发时间
|
|
||||||
Ft string `json:"ft"` //数据文件类型,ASCII、BINARY、BINARY32、FLOAT32
|
|
||||||
|
|
||||||
// 2017
|
|
||||||
TimeMult float32 `json:"time_mult"` //时间倍率因子
|
|
||||||
TimeCode string `json:"time_code"` //时间编码
|
|
||||||
LocalCode string `json:"local_code"` //本地编码
|
|
||||||
TmqCode uint8 `json:"tmq_code"` //采样时间品质
|
|
||||||
Leapsec uint8 `json:"leapsec"` //闰秒标识符
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cc *ComtradeCfg) GetStationName() string {
|
|
||||||
return cc.StationName
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cc *ComtradeCfg) GetRecDevID() string {
|
|
||||||
return cc.RecDevID
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cc *ComtradeCfg) GetRevYear() uint16 {
|
|
||||||
return cc.RevYear
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cc *ComtradeCfg) GetTotal() uint32 {
|
|
||||||
return cc.Total
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cc *ComtradeCfg) GetAnalogNum() uint32 {
|
|
||||||
return cc.AnalogNum
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cc *ComtradeCfg) GetDigitalNum() uint32 {
|
|
||||||
return cc.DigitalNum
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cc *ComtradeCfg) GetLf() float32 {
|
|
||||||
return cc.Lf
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cc *ComtradeCfg) GetNrates() uint16 {
|
|
||||||
return cc.Nrates
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cc *ComtradeCfg) GetSamp() []float32 {
|
|
||||||
return cc.Samp
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cc *ComtradeCfg) GetEndSamp() []uint32 {
|
|
||||||
return cc.EndSamp
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cc *ComtradeCfg) GetTriggerTime() time.Time {
|
|
||||||
return cc.TriggerTime
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cc *ComtradeCfg) GetFirstDataTime() time.Time {
|
|
||||||
return cc.FirstDataTime
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cc *ComtradeCfg) GetFt() string {
|
|
||||||
return cc.Ft
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cc *ComtradeCfg) GetTimeMult() float32 {
|
|
||||||
return cc.TimeMult
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cc *ComtradeCfg) GetTimeCode() string {
|
|
||||||
return cc.TimeCode
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cc *ComtradeCfg) GetLocalCode() string {
|
|
||||||
return cc.LocalCode
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cc *ComtradeCfg) GetTmqCode() uint8 {
|
|
||||||
return cc.TmqCode
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cc *ComtradeCfg) GetLeapsec() uint8 {
|
|
||||||
return cc.Leapsec
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cc *ComtradeCfg) GetAnalog() []AnalogChan {
|
|
||||||
return cc.Analog
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cc *ComtradeCfg) GetDigital() []DigitalChan {
|
|
||||||
return cc.Digital
|
|
||||||
}
|
|
||||||
|
|
@ -1,272 +0,0 @@
|
||||||
package comtrade
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"fmt"
|
|
||||||
"io"
|
|
||||||
"os"
|
|
||||||
"strconv"
|
|
||||||
"strings"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
func ParseComtradeCfg(filePath string) (*ComtradeCfg, error) {
|
|
||||||
cfgFile, err := os.Open(filePath)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
defer cfgFile.Close()
|
|
||||||
|
|
||||||
comtradeCfg := &ComtradeCfg{}
|
|
||||||
var tempList [][]byte
|
|
||||||
content, err := io.ReadAll(cfgFile)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
lines := bytes.Split(content, []byte("\n"))
|
|
||||||
|
|
||||||
// read first line
|
|
||||||
tempList = bytes.Split(lines[0], []byte(","))
|
|
||||||
if len(tempList) < 3 {
|
|
||||||
return nil, ErrReadFirstLine
|
|
||||||
}
|
|
||||||
// station_name, rec_dev_id, rev_year
|
|
||||||
comtradeCfg.StationName = ByteToString(tempList[0])
|
|
||||||
comtradeCfg.RecDevID = ByteToString(tempList[1])
|
|
||||||
if value, err := strconv.ParseUint(ByteToString(tempList[2]), 10, 16); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else {
|
|
||||||
comtradeCfg.RevYear = uint16(value)
|
|
||||||
}
|
|
||||||
|
|
||||||
// read second line
|
|
||||||
tempList = bytes.Split(lines[1], []byte(","))
|
|
||||||
if len(tempList) < 3 {
|
|
||||||
return nil, ErrReadSecondLine
|
|
||||||
}
|
|
||||||
|
|
||||||
// total channel number
|
|
||||||
if value, err := strconv.ParseUint(ByteToString(tempList[0]), 10, 16); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else {
|
|
||||||
comtradeCfg.Total = uint32(value)
|
|
||||||
}
|
|
||||||
if !bytes.Contains(tempList[1], []byte("A")) || !bytes.Contains(tempList[2], []byte("D")) {
|
|
||||||
return nil, ErrReadADChannel
|
|
||||||
}
|
|
||||||
// analog channel total number
|
|
||||||
if value, err := strconv.ParseUint(string(bytes.TrimSuffix(bytes.TrimSpace(tempList[1]), []byte("A"))), 10, 64); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else {
|
|
||||||
comtradeCfg.AnalogNum = uint32(value)
|
|
||||||
}
|
|
||||||
// digit channel total number
|
|
||||||
if value, err := strconv.ParseUint(string(bytes.TrimSuffix(bytes.TrimSpace(tempList[2]), []byte("D"))), 10, 64); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else {
|
|
||||||
comtradeCfg.DigitalNum = uint32(value)
|
|
||||||
}
|
|
||||||
|
|
||||||
// initialize analog and digital channels
|
|
||||||
comtradeCfg.Analog = make([]AnalogChan, comtradeCfg.AnalogNum)
|
|
||||||
comtradeCfg.Digital = make([]DigitalChan, comtradeCfg.DigitalNum)
|
|
||||||
|
|
||||||
// 读取模拟通道 read analog channels
|
|
||||||
for i := 0; i < int(comtradeCfg.AnalogNum); i++ {
|
|
||||||
tempList = bytes.Split(lines[2+i], []byte(","))
|
|
||||||
if len(tempList) < 10 {
|
|
||||||
return nil, ErrReadAnalogChannel
|
|
||||||
}
|
|
||||||
// 通道索引号 An
|
|
||||||
if num, err := strconv.ParseInt(ByteToString(tempList[0]), 10, 64); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else {
|
|
||||||
comtradeCfg.Analog[i].An = uint32(num)
|
|
||||||
}
|
|
||||||
// 通道标识 ch_id,通道相标识 ph
|
|
||||||
comtradeCfg.Analog[i].ChId = ByteToString(tempList[1])
|
|
||||||
comtradeCfg.Analog[i].Ph = ByteToString(tempList[2])
|
|
||||||
// 被监视的电路元件 ccbm, 通道单位 uu
|
|
||||||
comtradeCfg.Analog[i].Ccbm = ByteToString(tempList[3])
|
|
||||||
comtradeCfg.Analog[i].Uu = ByteToString(tempList[4])
|
|
||||||
// 通道增益系数 a
|
|
||||||
if num, err := strconv.ParseFloat(ByteToString(tempList[5]), 64); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else {
|
|
||||||
comtradeCfg.Analog[i].A = float32(num)
|
|
||||||
}
|
|
||||||
// 通道偏移量 b
|
|
||||||
if num, err := strconv.ParseFloat(ByteToString(tempList[6]), 64); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else {
|
|
||||||
comtradeCfg.Analog[i].B = float32(num)
|
|
||||||
}
|
|
||||||
// 从采样时刻开始的通道时滞 skew
|
|
||||||
if num, err := strconv.ParseFloat(ByteToString(tempList[7]), 64); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else {
|
|
||||||
comtradeCfg.Analog[i].Skew = float32(num)
|
|
||||||
}
|
|
||||||
// Min Value at current channel
|
|
||||||
if num, err := strconv.ParseFloat(ByteToString(tempList[8]), 64); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else {
|
|
||||||
comtradeCfg.Analog[i].Min = float32(num)
|
|
||||||
}
|
|
||||||
// Max Value at current channel
|
|
||||||
if num, err := strconv.ParseFloat(ByteToString(tempList[9]), 64); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else {
|
|
||||||
comtradeCfg.Analog[i].Max = float32(num)
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(tempList) > 10 {
|
|
||||||
if num, err := strconv.ParseFloat(ByteToString(tempList[10]), 64); err == nil {
|
|
||||||
comtradeCfg.Analog[i].Primary = float32(num)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if len(tempList) > 11 {
|
|
||||||
if num, err := strconv.ParseFloat(ByteToString(tempList[11]), 64); err == nil {
|
|
||||||
comtradeCfg.Analog[i].Secondary = float32(num)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// read digit channels
|
|
||||||
for i := 0; i < int(comtradeCfg.DigitalNum); i++ {
|
|
||||||
tempList = bytes.Split(lines[2+int(comtradeCfg.AnalogNum)+i], []byte(","))
|
|
||||||
if len(tempList) < 3 {
|
|
||||||
return nil, ErrReadDigitalChannel
|
|
||||||
}
|
|
||||||
if num, err := strconv.Atoi(ByteToString(tempList[0])); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else {
|
|
||||||
comtradeCfg.Digital[i].Dn = uint32(num)
|
|
||||||
}
|
|
||||||
comtradeCfg.Digital[i].ChId = ByteToString(tempList[1])
|
|
||||||
comtradeCfg.Digital[i].Ph = ByteToString(tempList[2])
|
|
||||||
|
|
||||||
// checking vector length to avoid IndexError
|
|
||||||
if len(tempList) > 3 {
|
|
||||||
// channel element (usually null)
|
|
||||||
comtradeCfg.Digital[i].Ccbm = ByteToString(tempList[3])
|
|
||||||
}
|
|
||||||
if len(tempList) > 4 {
|
|
||||||
if num, err := strconv.ParseUint(ByteToString(tempList[4]), 10, 64); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else {
|
|
||||||
comtradeCfg.Digital[i].Y = uint8(num)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// read frequency
|
|
||||||
var line uint32 = 2
|
|
||||||
tempList = bytes.Split(lines[line+comtradeCfg.Total], []byte(","))
|
|
||||||
if num, err := strconv.ParseFloat(ByteToString(tempList[0]), 64); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else {
|
|
||||||
comtradeCfg.Lf = float32(num)
|
|
||||||
line++
|
|
||||||
}
|
|
||||||
|
|
||||||
// read sampling rate num
|
|
||||||
tempList = bytes.Split(lines[line+comtradeCfg.Total], []byte(","))
|
|
||||||
if num, err := strconv.ParseUint(ByteToString(tempList[0]), 10, 64); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else {
|
|
||||||
comtradeCfg.Nrates = uint16(num)
|
|
||||||
line++
|
|
||||||
}
|
|
||||||
|
|
||||||
// read Sample and endSample
|
|
||||||
for i := 0; i < int(comtradeCfg.Nrates); i++ {
|
|
||||||
tempList = bytes.Split(lines[line+uint32(i)+comtradeCfg.Total], []byte(","))
|
|
||||||
if len(tempList) < 2 {
|
|
||||||
return nil, ErrReadSample
|
|
||||||
}
|
|
||||||
if num, err := strconv.ParseFloat(ByteToString(tempList[0]), 64); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else {
|
|
||||||
comtradeCfg.Samp = append(comtradeCfg.Samp, float32(num))
|
|
||||||
}
|
|
||||||
if num, err := strconv.ParseFloat(ByteToString(tempList[1]), 64); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else {
|
|
||||||
comtradeCfg.EndSamp = append(comtradeCfg.EndSamp, uint32(num))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
line += uint32(comtradeCfg.Nrates)
|
|
||||||
|
|
||||||
// init comtrade config time parse layout
|
|
||||||
timeParseLayout := DateTimeLayout
|
|
||||||
firstDataTimeStr := ByteToString(lines[line+comtradeCfg.Total])
|
|
||||||
if len(firstDataTimeStr) < DefaultTimeLayoutLen {
|
|
||||||
timeParseLayout = CosLightDateTimeLayout
|
|
||||||
}
|
|
||||||
|
|
||||||
// read first data time (dd/mm/yyyy,hh:mm:ss.ssssss)
|
|
||||||
if start, err := time.Parse(timeParseLayout, firstDataTimeStr); err != nil {
|
|
||||||
if strings.Contains(err.Error(), MonthOutOfRange) {
|
|
||||||
timeParseLayout = DateTimeLayout2
|
|
||||||
// try to parse date reverse month and day: mm/dd/yyyy
|
|
||||||
if start, err = time.Parse(timeParseLayout, firstDataTimeStr); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else {
|
|
||||||
comtradeCfg.FirstDataTime = start
|
|
||||||
line++
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
comtradeCfg.FirstDataTime = start
|
|
||||||
line++
|
|
||||||
}
|
|
||||||
|
|
||||||
// read trigger time (dd/mm/yyyy,hh:mm:ss.ssssss)
|
|
||||||
triggerTimeStr := ByteToString(lines[line+comtradeCfg.Total])
|
|
||||||
if trigger, err := time.Parse(timeParseLayout, triggerTimeStr); err != nil {
|
|
||||||
if strings.Contains(err.Error(), MonthOutOfRange) {
|
|
||||||
// try to parse date reverse month and day
|
|
||||||
if trigger, err = time.Parse(timeParseLayout, triggerTimeStr); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else {
|
|
||||||
comtradeCfg.TriggerTime = trigger
|
|
||||||
line++
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
comtradeCfg.TriggerTime = trigger
|
|
||||||
line++
|
|
||||||
}
|
|
||||||
|
|
||||||
// read data file type
|
|
||||||
tempList = bytes.Split(lines[line+comtradeCfg.Total], []byte(","))
|
|
||||||
// convert ft value to upper style
|
|
||||||
comtradeCfg.Ft = strings.ToUpper(ByteToString(tempList[0]))
|
|
||||||
fmt.Printf("ft vavlue:%v\n", comtradeCfg.Ft)
|
|
||||||
|
|
||||||
// read time multiplication factor
|
|
||||||
line++
|
|
||||||
tempList = bytes.Split(lines[line+comtradeCfg.Total], []byte(","))
|
|
||||||
if !bytes.Equal(tempList[0], []byte("")) {
|
|
||||||
num, err := strconv.ParseFloat(ByteToString(tempList[0]), 64)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
comtradeCfg.TimeMult = float32(num)
|
|
||||||
} else {
|
|
||||||
comtradeCfg.TimeMult = 1
|
|
||||||
line++
|
|
||||||
}
|
|
||||||
return comtradeCfg, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func ByteToString(b []byte) string {
|
|
||||||
return strings.TrimSpace(string(b))
|
|
||||||
}
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
package comtrade
|
|
||||||
|
|
||||||
import (
|
|
||||||
"reflect"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestParseComtradeCfg(t *testing.T) {
|
|
||||||
filePath := "testdata/test1.cfg"
|
|
||||||
got, err := ParseComtradeCfg(filePath)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("ParseComtradeCfg() error = %v", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if reflect.TypeOf(got) != reflect.TypeOf(&ComtradeCfg{}) {
|
|
||||||
t.Errorf("ParseComtradeCfg() got = %v", got)
|
|
||||||
}
|
|
||||||
t.Log(got.StationName)
|
|
||||||
}
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
package comtrade
|
|
||||||
|
|
||||||
// Data is the data of a comtrade file.
|
|
||||||
type Data struct {
|
|
||||||
AnalogData []AnalogData
|
|
||||||
DigitalData []DigitalData
|
|
||||||
}
|
|
||||||
|
|
||||||
// AnalogData is the analog data of a comtrade file.
|
|
||||||
type AnalogData struct {
|
|
||||||
N uint32 `json:"n"` //模拟通道序号
|
|
||||||
Timestamp uint32 `json:"timestamp"` //模拟通道时标
|
|
||||||
Data []int32 `json:"data"` //模拟通道数据
|
|
||||||
}
|
|
||||||
|
|
||||||
// DigitalData is the digital data of a comtrade file.
|
|
||||||
type DigitalData struct {
|
|
||||||
N uint32 `json:"n"` //数字通道序号
|
|
||||||
Timestamp uint32 `json:"timestamp"` //数字通道时标
|
|
||||||
Data []uint8 `json:"data"` //数字通道数据
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cd *Data) GetAnalogData() []AnalogData {
|
|
||||||
return cd.AnalogData
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cd *Data) GetDigitalData() []DigitalData {
|
|
||||||
return cd.DigitalData
|
|
||||||
}
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
package comtrade
|
|
||||||
|
|
||||||
// DigitalChan 数字通道
|
|
||||||
type DigitalChan struct {
|
|
||||||
Dn uint32 `json:"dn"` //数字/状态通道索引号
|
|
||||||
ChId string `json:"ch_id"` //通道标识
|
|
||||||
Ph string `json:"ph"` //通道相别标识
|
|
||||||
Ccbm string `json:"ccbm"` //被监视的电路元件
|
|
||||||
Y uint8 `json:"y"` //通道状态
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *DigitalChan) GetDn() uint32 {
|
|
||||||
return c.Dn
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *DigitalChan) GetChId() string {
|
|
||||||
return c.ChId
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *DigitalChan) GetPh() string {
|
|
||||||
return c.Ph
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *DigitalChan) GetCcbm() string {
|
|
||||||
return c.Ccbm
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *DigitalChan) GetY() uint8 {
|
|
||||||
return c.Y
|
|
||||||
}
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
package comtrade
|
|
||||||
|
|
||||||
import "errors"
|
|
||||||
|
|
||||||
var (
|
|
||||||
ErrUnknownTypeOfData = errors.New("unknown type of data")
|
|
||||||
ErrInvalidFile = errors.New("invalid file")
|
|
||||||
ErrReadFirstLine = errors.New("read first line error")
|
|
||||||
ErrReadSecondLine = errors.New("read second line error")
|
|
||||||
ErrReadADChannel = errors.New("read A/D channel num line error")
|
|
||||||
ErrReadAnalogChannel = errors.New("read analog channel line error")
|
|
||||||
ErrReadDigitalChannel = errors.New("read digital channel line error")
|
|
||||||
ErrReadSample = errors.New("read sample error")
|
|
||||||
)
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
// Package main define comtrade file analyzing example Functions
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"flag"
|
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"wave_record/go-comtrade"
|
|
||||||
// "server.baseware.net/CL-Softwares/go-comtrade"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
configFile = flag.String("config", "testdata/test1.cfg", "config file path")
|
|
||||||
dataFile = flag.String("data", "testdata/test1.dat", "data file path")
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
flag.Parse()
|
|
||||||
|
|
||||||
c, err := comtrade.ParseComtrade(*configFile, *dataFile)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Println(c.Conf)
|
|
||||||
}
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
package comtrade
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
Add(TypeFloat32, func() Parser {
|
|
||||||
return &Float32Data{}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// Float32Data TODO
|
|
||||||
type Float32Data struct {
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *Float32Data) Parse(filePath string, analogNum, digitalNum, endSamp uint32) (*Data, error) {
|
|
||||||
return &Data{}, nil
|
|
||||||
}
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
package comtrade
|
|
||||||
|
|
||||||
// https://github.com/influxdata/telegraf/blob/master/plugins/parsers/registry.go
|
|
||||||
|
|
||||||
// Creator is the function to create a new parser
|
|
||||||
type Creator func() Parser
|
|
||||||
|
|
||||||
// Parsers contains the registry of all known parsers (following the new style)
|
|
||||||
var Parsers = map[string]Creator{}
|
|
||||||
|
|
||||||
// Add adds a parser to the registry. Usually this function is called in the plugin's init function
|
|
||||||
func Add(name string, creator Creator) {
|
|
||||||
Parsers[name] = creator
|
|
||||||
}
|
|
||||||
|
|
@ -1,113 +0,0 @@
|
||||||
Strathmore 275kV,1,2001
|
|
||||||
104,20A,84D
|
|
||||||
1,LINE SUM ILA,,,A,2.181993E-02,0,0,-32767,32767,1.00000000,1.00000000,P
|
|
||||||
2,LINE SUM ILB,,,A,1.450719E-02,0,0,-32767,32767,1.00000000,1.00000000,P
|
|
||||||
3,LINE SUM ILC,,,A,1.133065E-01,0,0,-32767,32767,1.00000000,1.00000000,P
|
|
||||||
4,LINE SUM IN,,,A,1.092105E-01,0,0,-32767,32767,1.00000000,1.00000000,P
|
|
||||||
5,REM1 SUM ILA,,,A,1.989423E-02,0,0,-32767,32767,1.00000000,1.00000000,P
|
|
||||||
6,REM1 SUM ILB,,,A,1.388269E-02,0,0,-32767,32767,1.00000000,1.00000000,P
|
|
||||||
7,REM1 SUM ILC,,,A,1.004310E-01,0,0,-32767,32767,1.00000000,1.00000000,P
|
|
||||||
8,REM1 SUM IN,,,A,8.381079E-02,0,0,-32767,32767,1.00000000,1.00000000,P
|
|
||||||
9,LINE ULA,,,V,7.933214E+00,0,0,-32767,32767,1.00000000,1.00000000,P
|
|
||||||
10,LINE ULB,,,V,8.101845E+00,0,0,-32767,32767,1.00000000,1.00000000,P
|
|
||||||
11,LINE ULC,,,V,9.667931E+00,0,0,-32767,32767,1.00000000,1.00000000,P
|
|
||||||
12,LINE UN,,,V,8.350841E+00,0,0,-32767,32767,1.00000000,1.00000000,P
|
|
||||||
13,I DIFF LA,,,one,4.157818E-03,0,0,-32767,32767,1.00000000,1.00000000,P
|
|
||||||
14,I DIFF LB,,,one,4.068515E-03,0,0,-32767,32767,1.00000000,1.00000000,P
|
|
||||||
15,I DIFF LC,,,one,1.899858E-01,0,0,-32767,32767,1.00000000,1.00000000,P
|
|
||||||
16,I BIAS,,,A,6.681344E-02,0,0,-32767,32767,1.00000000,1.00000000,P
|
|
||||||
17,I DIFF LA MAG,,,A,2.440047E-03,0,0,-32767,32767,1.00000000,1.00000000,P
|
|
||||||
18,I DIFF LB MAG,,,A,2.881186E-03,0,0,-32767,32767,1.00000000,1.00000000,P
|
|
||||||
19,I DIFF LC MAG,,,A,1.145064E-01,0,0,-32767,32767,1.00000000,1.00000000,P
|
|
||||||
20,I DIFF NS MAG,,,A,3.879977E-02,0,0,-32767,32767,1.00000000,1.00000000,P
|
|
||||||
1,87L Id>StartA,,,0
|
|
||||||
2,87L Id>StartB,,,0
|
|
||||||
3,87L Id>StartC,,,0
|
|
||||||
4,87L Id>Trip A,,,0
|
|
||||||
5,87L Id>Trip B,,,0
|
|
||||||
6,87L Id>Trip C,,,0
|
|
||||||
7,87L Tr Local,,,0
|
|
||||||
8,87L Tr Remote,,,0
|
|
||||||
9,67N Start FW,,,0
|
|
||||||
10,67N Start RV,,,0
|
|
||||||
11,67NComSchTrp,,,0
|
|
||||||
12,LED Reset,,,0
|
|
||||||
13,67 I>Start LA,,,0
|
|
||||||
14,67 I>Start LB,,,0
|
|
||||||
15,67 I>Start LC,,,0
|
|
||||||
16,67 I> Trip,,,0
|
|
||||||
17,BusCB Trip LA,,,0
|
|
||||||
18,BusCB Trip LB,,,0
|
|
||||||
19,BusCB Trip LC,,,0
|
|
||||||
20,TieCB Trip LA,,,0
|
|
||||||
21,TieCB Trip LB,,,0
|
|
||||||
22,TieCB Trip LC,,,0
|
|
||||||
23,BusCB StBF LA,,,0
|
|
||||||
24,BusCB StBF LB,,,0
|
|
||||||
25,BusCB StBF LC,,,0
|
|
||||||
26,Bus CB Master,,,0
|
|
||||||
27,Tie CB Master,,,0
|
|
||||||
28,Rx AR Perm 1P,,,0
|
|
||||||
29,Rx AR 1PTProg,,,0
|
|
||||||
30,Tx AR Start,,,0
|
|
||||||
31,Tx AR Trip 3P,,,0
|
|
||||||
32,Tx AR Inhibit,,,0
|
|
||||||
33,BusCB 3P Trip,,,0
|
|
||||||
34,TieCB 3PTrip,,,0
|
|
||||||
35,87L 2 Harm LA,,,0
|
|
||||||
36,87L 2 Harm LB,,,0
|
|
||||||
37,87L 2 Harm LC,,,0
|
|
||||||
38,87L 5 Harm LA,,,0
|
|
||||||
39,87L 5 Harm LB,,,0
|
|
||||||
40,87L 5 Harm LC,,,0
|
|
||||||
41,87L Blocked,,,0
|
|
||||||
42,87L Restrnd,,,0
|
|
||||||
43,87L Unrestrnd,,,0
|
|
||||||
44,87L Enhanced,,,0
|
|
||||||
45,87LSustndCurr,,,0
|
|
||||||
46,Open CT Alarm,,,0
|
|
||||||
47,67 2Harmonic,,,0
|
|
||||||
48,67N 2Harmonic,,,0
|
|
||||||
49,ParamSetGrp 1,,,0
|
|
||||||
50,BusMec St CBF,,,0
|
|
||||||
51,TieMec St CBF,,,0
|
|
||||||
52,Spare Input1,,,0
|
|
||||||
53,Spare Input2,,,0
|
|
||||||
54,Spare Input3,,,0
|
|
||||||
55,MU1 DataError,,,0
|
|
||||||
56,MU1SynchAlarm,,,0
|
|
||||||
57,MU1SampleLost,,,0
|
|
||||||
58,MU1-IED Drift,,,0
|
|
||||||
59,MU1 Test Mode,,,0
|
|
||||||
60,MU2 DataError,,,0
|
|
||||||
61,MU2SynchAlarm,,,0
|
|
||||||
62,MU2SampleLost,,,0
|
|
||||||
63,MU2-IED Drift,,,0
|
|
||||||
64,MU2 Test Mode,,,0
|
|
||||||
65,MU3 DataError,,,0
|
|
||||||
66,MU3SynchAlarm,,,0
|
|
||||||
67,MU3SampleLost,,,0
|
|
||||||
68,MU3-IED Drift,,,0
|
|
||||||
69,MU3 Test Mode,,,0
|
|
||||||
70,TieCB StBF LA,,,0
|
|
||||||
71,TieCB StBF LB,,,0
|
|
||||||
72,TieCB StBF LC,,,0
|
|
||||||
73,LDCM1CommFail,,,0
|
|
||||||
74,Rx DTT3 no BU,,,0
|
|
||||||
75,A10TxDTT3noBU,,,0
|
|
||||||
76,IO-Card Fail,,,0
|
|
||||||
77,AR Isolated,,,0
|
|
||||||
78,Rx DTT1withBU,,,0
|
|
||||||
79,Rx Perm DEF,,,0
|
|
||||||
80,Tx Perm DEF,,,0
|
|
||||||
81,67 Start FW,,,0
|
|
||||||
82,67 Start RV,,,0
|
|
||||||
83,VT SupplyFail,,,0
|
|
||||||
84,Dist Rec Made,,,0
|
|
||||||
50
|
|
||||||
1
|
|
||||||
1000,11001
|
|
||||||
31/03/2017,22:01:11.125094
|
|
||||||
31/03/2017,22:01:12.126097
|
|
||||||
BINARY
|
|
||||||
1
|
|
||||||
Binary file not shown.
|
|
@ -1,40 +0,0 @@
|
||||||
南自线路保护PSL603,78,1999
|
|
||||||
22,15A,7D
|
|
||||||
1,1-Ia,A,,A,0.001740,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
|
||||||
2,2-Ib,B,,A,0.001740,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
|
||||||
3,3-Ic,C,,A,0.001740,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
|
||||||
4,4-3I0,N,,A,0.001740,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
|
||||||
5,5-Ua,A,,V,0.003052,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
|
||||||
6,6-Ub,B,,V,0.003052,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
|
||||||
7,7-Uc,C,,V,0.003052,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
|
||||||
8,8-3U0,N,,V,0.012207,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
|
||||||
9,9-AI,N,, ,1.000000,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
|
||||||
10,10-AI,N,, ,1.000000,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
|
||||||
11,11-AI,N,, ,1.000000,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
|
||||||
12,12-AI,N,, ,1.000000,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
|
||||||
13,13-AI,N,, ,1.000000,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
|
||||||
14,14-AI,N,, ,1.000000,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
|
||||||
15,15-AI,N,, ,1.000000,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
|
||||||
1,1-A相跳闸,,,0
|
|
||||||
2,2-B相跳闸,,,0
|
|
||||||
3,3-C相跳闸,,,0
|
|
||||||
4,4-永跳,,,0
|
|
||||||
5,5-两组开关A相跳位,,,0
|
|
||||||
6,6-两组开关B相跳位,,,0
|
|
||||||
7,7-两组开关C相跳位,,,0
|
|
||||||
50
|
|
||||||
10
|
|
||||||
1000,200
|
|
||||||
1000,400
|
|
||||||
1000,600
|
|
||||||
1000,800
|
|
||||||
1000,950
|
|
||||||
1000,950
|
|
||||||
1000,950
|
|
||||||
1000,950
|
|
||||||
1000,950
|
|
||||||
1000,950
|
|
||||||
24/12/2012,17:30:48.384000
|
|
||||||
24/12/2012,17:30:48.384000
|
|
||||||
ASCII
|
|
||||||
1
|
|
||||||
|
|
@ -1,950 +0,0 @@
|
||||||
1,0,000571,000010,000037,000013,000031,000015,000033,000020,000000,000000,000000,000000,000000,000000,000000,0,0,0,0,0,0,0
|
|
||||||
2,1000,000207,000008,000034,000014,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
3,2000,-000170,000010,000036,000013,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
4,3000,-000532,000009,000041,000015,000033,000015,000035,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
5,4000,-000836,000009,000036,000013,000033,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
6,5000,-001057,000009,000035,000013,000034,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
7,6000,-001172,000008,000037,000013,000039,000017,000035,000023,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
8,7000,-001168,000009,000035,000013,000037,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
9,8000,-001052,000002,000035,000012,000039,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
10,9000,-000823,000008,000037,000013,000040,000013,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
11,10000,-000512,000010,000037,000014,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
12,11000,-000152,000008,000037,000016,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
13,12000,000227,000010,000037,000014,000041,000010,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
14,13000,000592,000010,000036,000013,000040,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
15,14000,000896,000010,000035,000014,000039,000010,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
16,15000,001115,000010,000037,000013,000035,000011,000025,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
17,16000,001229,000009,000037,000015,000035,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
18,17000,001225,000008,000037,000014,000033,000012,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
19,18000,001106,000009,000033,000009,000032,000013,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
20,19000,000879,000010,000037,000013,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
21,20000,000573,000010,000037,000014,000032,000015,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
22,21000,000209,000008,000036,000014,000031,000015,000034,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
23,22000,-000170,000008,000036,000013,000031,000015,000036,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
24,23000,-000533,000008,000036,000014,000034,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
25,24000,-000835,000011,000035,000013,000035,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
26,25000,-001057,000008,000035,000013,000035,000014,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
27,26000,-001171,000009,000035,000011,000035,000015,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
28,27000,-001168,000009,000035,000014,000041,000017,000031,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
29,28000,-001047,000008,000035,000013,000040,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
30,29000,-000821,000009,000036,000012,000040,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
31,30000,-000513,000009,000036,000014,000041,000013,000026,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
32,31000,-000154,000008,000035,000011,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
33,32000,000229,000010,000037,000014,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
34,33000,000590,000010,000037,000014,000038,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
35,34000,000897,000009,000037,000014,000037,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
36,35000,001116,000011,000037,000014,000037,000011,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
37,36000,001230,000010,000037,000012,000035,000011,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
38,37000,001226,000009,000036,000014,000033,000012,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
39,38000,001106,000009,000037,000014,000033,000013,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
40,39000,000886,000013,000038,000013,000033,000014,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
41,40000,000570,000009,000036,000013,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
42,41000,000209,000008,000037,000014,000032,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
43,42000,-000171,000009,000035,000014,000031,000014,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
44,43000,-000531,000008,000035,000013,000029,000013,000032,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
45,44000,-000836,000009,000035,000014,000033,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
46,45000,-001056,000009,000036,000013,000034,000014,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
47,46000,-001173,000010,000036,000014,000037,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
48,47000,-001168,000009,000036,000013,000038,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
49,48000,-001048,000010,000041,000018,000038,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
50,49000,-000823,000008,000035,000013,000039,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
51,50000,-000514,000006,000036,000014,000040,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
52,51000,-000152,000010,000037,000014,000042,000014,000029,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
53,52000,000229,000010,000036,000014,000041,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
54,53000,000593,000011,000037,000014,000039,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
55,54000,000896,000010,000037,000014,000037,000013,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
56,55000,001116,000010,000037,000012,000037,000010,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
57,56000,001230,000009,000037,000013,000034,000010,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
58,57000,001227,000009,000037,000014,000033,000011,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
59,58000,001107,000008,000036,000014,000036,000016,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
60,59000,000881,000010,000037,000014,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
61,60000,000570,000009,000036,000014,000031,000015,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
62,61000,000209,000009,000036,000013,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
63,62000,-000170,000008,000035,000014,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
64,63000,-000532,000009,000035,000013,000033,000017,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
65,64000,-000836,000009,000035,000013,000034,000015,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
66,65000,-001057,000009,000036,000013,000035,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
67,66000,-001172,000007,000036,000013,000039,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
68,67000,-001169,000006,000036,000014,000037,000014,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
69,68000,-001048,000007,000036,000014,000038,000013,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
70,69000,-000823,000009,000037,000014,000040,000014,000029,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
71,70000,-000514,000009,000035,000014,000039,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
72,71000,-000152,000009,000036,000014,000042,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
73,72000,000229,000010,000037,000014,000036,000007,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
74,73000,000590,000009,000035,000013,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
75,74000,000894,000009,000035,000015,000038,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
76,75000,001115,000009,000036,000013,000037,000011,000026,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
77,76000,001230,000010,000036,000014,000036,000011,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
78,77000,001227,000009,000036,000011,000033,000012,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
79,78000,001106,000010,000036,000014,000033,000013,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
80,79000,000881,000010,000036,000012,000031,000013,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
81,80000,000570,000011,000037,000013,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
82,81000,000208,000008,000036,000013,000030,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
83,82000,-000169,000009,000035,000013,000031,000016,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
84,83000,-000533,000007,000036,000014,000033,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
85,84000,-000836,000008,000037,000014,000034,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
86,85000,-001056,000009,000034,000015,000036,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
87,86000,-001171,000010,000035,000013,000034,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
88,87000,-001168,000008,000035,000014,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
89,88000,-001047,000009,000036,000013,000039,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
90,89000,-000822,000009,000036,000014,000039,000013,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
91,90000,-000514,000006,000037,000014,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
92,91000,-000152,000010,000033,000012,000040,000009,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
93,92000,000229,000010,000036,000014,000040,000010,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
94,93000,000588,000010,000037,000013,000037,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
95,94000,000895,000010,000037,000014,000035,000009,000025,000017,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
96,95000,001116,000009,000037,000014,000037,000010,000025,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
97,96000,001229,000009,000037,000014,000033,000013,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
98,97000,001227,000009,000037,000014,000033,000011,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
99,98000,001106,000010,000037,000013,000033,000014,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
100,99000,000880,000009,000038,000012,000031,000013,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
101,100000,000571,000008,000035,000013,000029,000013,000031,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
102,101000,000211,000008,000037,000014,000032,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
103,102000,-000171,000007,000037,000015,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
104,103000,-000531,000009,000035,000014,000033,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
105,104000,-000838,000009,000035,000015,000034,000015,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
106,105000,-001056,000010,000036,000014,000035,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
107,106000,-001171,000010,000036,000013,000037,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
108,107000,-001168,000009,000035,000013,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
109,108000,-001048,000008,000035,000014,000038,000014,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
110,109000,-000823,000008,000037,000011,000040,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
111,110000,-000511,000010,000036,000014,000040,000012,000027,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
112,111000,-000152,000009,000037,000013,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
113,112000,000228,000010,000035,000013,000041,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
114,113000,000589,000011,000033,000013,000037,000009,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
115,114000,000895,000009,000037,000013,000037,000010,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
116,115000,001116,000010,000036,000012,000035,000011,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
117,116000,001230,000010,000038,000011,000035,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
118,117000,001226,000010,000037,000014,000033,000012,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
119,118000,001107,000010,000038,000013,000031,000013,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
120,119000,000881,000009,000036,000011,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
121,120000,000573,000010,000032,000008,000031,000015,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
122,121000,000209,000009,000036,000013,000032,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
123,122000,-000171,000009,000036,000014,000032,000015,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
124,123000,-000531,000008,000035,000014,000029,000015,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
125,124000,-000836,000009,000035,000013,000033,000016,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
126,125000,-001060,000005,000036,000014,000035,000018,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
127,126000,-001172,000009,000036,000013,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
128,127000,-001168,000009,000036,000012,000039,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
129,128000,-001048,000009,000037,000013,000037,000011,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
130,129000,-000822,000009,000035,000014,000040,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
131,130000,-000513,000010,000036,000014,000041,000011,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
132,131000,-000154,000009,000036,000013,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
133,132000,000227,000009,000035,000013,000041,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
134,133000,000591,000010,000038,000015,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
135,134000,000895,000009,000038,000014,000038,000011,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
136,135000,001116,000009,000037,000014,000037,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
137,136000,001231,000009,000037,000014,000033,000010,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
138,137000,001226,000007,000037,000013,000034,000012,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
139,138000,001105,000008,000037,000014,000031,000014,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
140,139000,000877,000006,000036,000014,000031,000012,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
141,140000,000573,000009,000037,000014,000032,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
142,141000,000209,000009,000035,000012,000029,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
143,142000,-000171,000008,000035,000013,000029,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
144,143000,-000531,000008,000037,000014,000028,000010,000031,000017,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
145,144000,-000837,000008,000036,000014,000034,000015,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
146,145000,-001058,000008,000035,000013,000035,000016,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
147,146000,-001172,000008,000035,000014,000036,000015,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
148,147000,-001167,000010,000032,000009,000039,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
149,148000,-001048,000009,000035,000014,000039,000014,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
150,149000,-000822,000011,000036,000013,000039,000013,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
151,150000,-000513,000008,000037,000013,000040,000011,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
152,151000,-000154,000007,000036,000014,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
153,152000,000230,000010,000035,000013,000040,000010,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
154,153000,000589,000010,000038,000014,000037,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
155,154000,000896,000008,000035,000014,000037,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
156,155000,001114,000010,000037,000013,000039,000012,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
157,156000,001230,000009,000038,000013,000035,000012,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
158,157000,001228,000009,000036,000014,000034,000011,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
159,158000,001107,000010,000037,000015,000032,000013,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
160,159000,000880,000009,000036,000013,000031,000014,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
161,160000,000570,000009,000036,000013,000031,000014,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
162,161000,000207,000008,000036,000012,000031,000017,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
163,162000,-000170,000009,000037,000013,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
164,163000,-000531,000008,000036,000013,000032,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
165,164000,-000837,000008,000036,000012,000033,000015,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
166,165000,-001057,000008,000037,000014,000035,000017,000038,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
167,166000,-001172,000008,000036,000014,000036,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
168,167000,-001170,000009,000037,000014,000038,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
169,168000,-001049,000008,000037,000014,000039,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
170,169000,-000822,000009,000035,000014,000037,000010,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
171,170000,-000512,000008,000037,000013,000040,000011,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
172,171000,-000153,000008,000037,000013,000041,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
173,172000,000228,000009,000037,000013,000041,000011,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
174,173000,000591,000010,000036,000012,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
175,174000,000895,000010,000036,000014,000038,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
176,175000,001115,000009,000037,000013,000035,000012,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
177,176000,001230,000010,000038,000013,000035,000011,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
178,177000,001228,000011,000037,000013,000033,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
179,178000,001107,000009,000037,000014,000033,000014,000026,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
180,179000,000879,000008,000037,000014,000033,000015,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
181,180000,000574,000011,000037,000014,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
182,181000,000210,000009,000037,000014,000030,000016,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
183,182000,-000170,000010,000037,000013,000030,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
184,183000,-000531,000008,000035,000011,000030,000014,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
185,184000,-000836,000009,000036,000013,000035,000018,000034,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
186,185000,-001057,000008,000035,000014,000036,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
187,186000,-001170,000009,000036,000013,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
188,187000,-001168,000011,000037,000013,000038,000014,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
189,188000,-001047,000010,000037,000015,000037,000014,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
190,189000,-000821,000009,000036,000013,000040,000013,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
191,190000,-000515,000010,000037,000012,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
192,191000,-000152,000009,000037,000013,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
193,192000,000230,000010,000038,000013,000041,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
194,193000,000590,000011,000035,000013,000040,000011,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
195,194000,000896,000011,000036,000012,000037,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
196,195000,001115,000009,000035,000011,000035,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
197,196000,001230,000010,000037,000014,000032,000009,000028,000017,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
198,197000,001227,000011,000038,000014,000033,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
199,198000,001106,000011,000036,000014,000032,000013,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
200,199000,000881,000011,000035,000014,000031,000015,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
201,17092000,-000512,000011,000037,000013,000039,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
202,17093000,-000152,000010,000037,000013,000041,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
203,17094000,000227,000011,000036,000013,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
204,17095000,000590,000009,000036,000013,000038,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
205,17096000,000895,000008,000035,000013,000038,000010,000024,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
206,17097000,001116,000009,000038,000015,000036,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
207,17098000,001228,000008,000036,000013,000035,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
208,17099000,001227,000010,000037,000014,000034,000014,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
209,17100000,001106,000010,000036,000013,000032,000012,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
210,17101000,000881,000010,000036,000013,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
211,17102000,000571,000009,000040,000015,000033,000017,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
212,17103000,000210,000010,000037,000014,000032,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
213,17104000,-000170,000009,000036,000015,000033,000016,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
214,17105000,-000532,000010,000037,000015,000031,000015,000035,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
215,17106000,-000837,000008,000035,000013,000033,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
216,17107000,-001056,000009,000037,000013,000035,000017,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
217,17108000,-001173,000009,000031,000009,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
218,17109000,-001168,000009,000035,000014,000037,000015,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
219,17110000,-001047,000008,000035,000013,000040,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
220,17111000,-000823,000009,000037,000013,000039,000014,000026,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
221,17112000,-000515,000008,000036,000013,000040,000013,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
222,17113000,-000152,000009,000036,000014,000039,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
223,17114000,000228,000009,000037,000014,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
224,17115000,000589,000010,000037,000014,000038,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
225,17116000,000895,000010,000035,000012,000038,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
226,17117000,001115,000009,000037,000014,000033,000006,000028,000017,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
227,17118000,001230,000010,000038,000014,000036,000012,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
228,17119000,001227,000010,000035,000014,000033,000012,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
229,17120000,001107,000011,000037,000013,000034,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
230,17121000,000881,000010,000036,000014,000031,000013,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
231,17122000,000571,000010,000040,000013,000032,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
232,17123000,000209,000008,000038,000013,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
233,17124000,-000171,000009,000036,000014,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
234,17125000,-000531,000008,000036,000012,000031,000016,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
235,17126000,-000836,000011,000036,000014,000035,000017,000035,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
236,17127000,-001057,000009,000037,000013,000035,000015,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
237,17128000,-001172,000008,000036,000013,000037,000015,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
238,17129000,-001163,000012,000036,000014,000038,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
239,17130000,-001048,000009,000036,000013,000039,000014,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
240,17131000,-000822,000008,000036,000013,000040,000014,000029,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
241,17132000,-000512,000009,000037,000014,000041,000014,000027,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
242,17133000,-000152,000009,000036,000014,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
243,17134000,000228,000009,000035,000014,000041,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
244,17135000,000590,000010,000035,000013,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
245,17136000,000895,000010,000037,000013,000038,000011,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
246,17137000,001114,000008,000037,000013,000037,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
247,17138000,001232,000013,000033,000012,000034,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
248,17139000,001226,000010,000036,000012,000033,000012,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
249,17140000,001106,000010,000037,000014,000033,000013,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
250,17141000,000881,000007,000036,000015,000031,000014,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
251,17142000,000570,000009,000036,000013,000030,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
252,17143000,000209,000008,000037,000014,000031,000017,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
253,17144000,-000168,000010,000035,000014,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
254,17145000,-000532,000008,000035,000014,000033,000018,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
255,17146000,-000836,000008,000035,000014,000033,000016,000035,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
256,17147000,-001056,000008,000036,000013,000035,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
257,17148000,-001172,000008,000038,000015,000037,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
258,17149000,-001169,000008,000036,000014,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
259,17150000,-001048,000009,000035,000015,000039,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
260,17151000,-000823,000008,000036,000012,000041,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
261,17152000,-000511,000010,000037,000014,000041,000012,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
262,17153000,-000153,000008,000036,000014,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
263,17154000,000230,000010,000036,000014,000041,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
264,17155000,000589,000008,000038,000013,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
265,17156000,000895,000009,000036,000014,000038,000010,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
266,17157000,001115,000009,000037,000014,000037,000010,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
267,17158000,001228,000008,000037,000013,000035,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
268,17159000,001222,000005,000038,000013,000032,000011,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
269,17160000,001106,000010,000038,000014,000031,000013,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
270,17161000,000881,000010,000037,000014,000032,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
271,17162000,000570,000009,000038,000015,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
272,17163000,000209,000010,000036,000013,000027,000011,000034,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
273,17164000,-000170,000009,000035,000014,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
274,17165000,-000531,000010,000034,000013,000033,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
275,17166000,-000837,000010,000035,000011,000034,000016,000036,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
276,17167000,-001057,000009,000036,000013,000035,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
277,17168000,-001172,000009,000036,000012,000037,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
278,17169000,-001169,000008,000036,000011,000037,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
279,17170000,-001049,000008,000036,000013,000037,000012,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
280,17171000,-000823,000010,000036,000014,000040,000013,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
281,17172000,-000516,000006,000035,000012,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
282,17173000,-000152,000009,000035,000013,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
283,17174000,000229,000009,000035,000013,000040,000010,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
284,17175000,000589,000009,000040,000017,000037,000008,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
285,17176000,000895,000010,000037,000015,000037,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
286,17177000,001117,000009,000037,000015,000035,000011,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
287,17178000,001229,000010,000036,000015,000035,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
288,17179000,001227,000010,000037,000014,000033,000011,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
289,17180000,001106,000010,000036,000014,000031,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
290,17181000,000879,000008,000040,000017,000032,000014,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
291,17182000,000570,000009,000035,000012,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
292,17183000,000209,000009,000036,000013,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
293,17184000,-000170,000007,000036,000013,000032,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
294,17185000,-000531,000009,000035,000013,000036,000019,000033,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
295,17186000,-000836,000008,000036,000013,000033,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
296,17187000,-001056,000009,000035,000013,000035,000018,000034,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
297,17188000,-001171,000008,000036,000013,000036,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
298,17189000,-001170,000009,000035,000011,000037,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
299,17190000,-001048,000009,000036,000014,000039,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
300,17191000,-000821,000008,000035,000013,000039,000012,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
301,17192000,-000514,000009,000035,000014,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
302,17193000,-000152,000009,000036,000015,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
303,17194000,000231,000011,000039,000015,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
304,17195000,000591,000010,000036,000014,000039,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
305,17196000,000895,000010,000036,000012,000038,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
306,17197000,001116,000009,000037,000015,000035,000009,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
307,17198000,001230,000009,000036,000014,000033,000011,000026,000017,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
308,17199000,001226,000009,000037,000013,000034,000011,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
309,17200000,001104,000008,000037,000014,000031,000013,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
310,17201000,000880,000010,000037,000013,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
311,17202000,000571,000008,000037,000014,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
312,17203000,000209,000009,000035,000012,000031,000014,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
313,17204000,-000171,000009,000035,000013,000031,000017,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
314,17205000,-000531,000009,000036,000013,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
315,17206000,-000836,000008,000035,000013,000033,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
316,17207000,-001057,000008,000035,000014,000034,000016,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
317,17208000,-001173,000009,000035,000013,000036,000016,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
318,17209000,-001168,000009,000037,000014,000037,000016,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
319,17210000,-001046,000008,000035,000013,000038,000014,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
320,17211000,-000823,000008,000036,000013,000039,000012,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
321,17212000,-000515,000008,000037,000014,000040,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
322,17213000,-000148,000013,000035,000014,000041,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
323,17214000,000228,000008,000037,000014,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
324,17215000,000590,000010,000036,000014,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
325,17216000,000895,000010,000038,000014,000038,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
326,17217000,001116,000009,000037,000014,000036,000008,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
327,17218000,001230,000009,000038,000013,000034,000012,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
328,17219000,001227,000010,000037,000015,000033,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
329,17220000,001106,000009,000038,000014,000032,000013,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
330,17221000,000880,000009,000036,000013,000031,000014,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
331,17222000,000575,000012,000033,000010,000032,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
332,17223000,000209,000010,000037,000013,000031,000016,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
333,17224000,-000170,000007,000035,000013,000032,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
334,17225000,-000531,000009,000036,000013,000034,000017,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
335,17226000,-000837,000008,000036,000013,000033,000016,000035,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
336,17227000,-001056,000009,000037,000014,000035,000016,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
337,17228000,-001172,000008,000036,000012,000037,000016,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
338,17229000,-001169,000009,000036,000012,000036,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
339,17230000,-001048,000009,000035,000012,000036,000010,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
340,17231000,-000821,000010,000036,000014,000037,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
341,17232000,-000512,000009,000036,000013,000041,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
342,17233000,-000153,000009,000037,000014,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
343,17234000,000228,000009,000036,000013,000041,000011,000027,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
344,17235000,000590,000009,000042,000018,000038,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
345,17236000,000896,000011,000037,000013,000038,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
346,17237000,001115,000011,000036,000014,000036,000011,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
347,17238000,001230,000010,000037,000014,000036,000012,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
348,17239000,001228,000010,000036,000014,000033,000012,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
349,17240000,001109,000011,000037,000014,000032,000014,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
350,17241000,000886,000014,000037,000014,000032,000013,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
351,17242000,000571,000009,000037,000014,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
352,17243000,000209,000009,000037,000012,000030,000015,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
353,17244000,-000171,000008,000038,000013,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
354,17245000,-000531,000009,000036,000011,000028,000011,000034,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
355,17246000,-000836,000009,000035,000014,000033,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
356,17247000,-001056,000009,000036,000013,000034,000016,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
357,17248000,-001172,000008,000034,000013,000037,000016,000034,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
358,17249000,-001164,000011,000036,000015,000037,000014,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
359,17250000,-001048,000008,000036,000013,000039,000013,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
360,17251000,-000823,000008,000035,000014,000042,000013,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
361,17252000,-000514,000008,000035,000013,000041,000011,000025,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
362,17253000,-000151,000010,000038,000013,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
363,17254000,000228,000009,000036,000013,000041,000008,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
364,17255000,000590,000009,000037,000014,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
365,17256000,000895,000009,000036,000013,000038,000011,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
366,17257000,001116,000010,000040,000017,000037,000012,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
367,17258000,001231,000009,000038,000013,000036,000010,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
368,17259000,001226,000009,000038,000014,000034,000011,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
369,17260000,001107,000009,000037,000013,000033,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
370,17261000,000880,000008,000036,000013,000031,000013,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
371,17262000,000570,000009,000035,000013,000032,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
372,17263000,000213,000013,000038,000014,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
373,17264000,-000170,000009,000037,000014,000031,000017,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
374,17265000,-000532,000009,000036,000014,000031,000016,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
375,17266000,-000836,000008,000036,000013,000035,000016,000035,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
376,17267000,-001058,000008,000035,000012,000036,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
377,17268000,-001172,000007,000036,000013,000037,000016,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
378,17269000,-001169,000009,000036,000014,000038,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
379,17270000,-001048,000009,000035,000012,000037,000013,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
380,17271000,-000823,000009,000037,000014,000044,000016,000029,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
381,17272000,-000512,000010,000035,000014,000041,000012,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
382,17273000,-000152,000010,000035,000012,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
383,17274000,000229,000010,000034,000013,000042,000011,000027,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
384,17275000,000590,000010,000035,000014,000037,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
385,17276000,000895,000011,000040,000016,000038,000009,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
386,17277000,001115,000011,000036,000013,000037,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
387,17278000,001229,000010,000037,000014,000033,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
388,17279000,001227,000008,000036,000014,000033,000011,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
389,17280000,001106,000009,000037,000014,000033,000012,000034,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
390,17281000,000881,000009,000036,000014,000033,000014,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
391,17282000,000577,000013,000036,000014,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
392,17283000,000209,000009,000037,000014,000031,000017,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
393,17284000,-000170,000008,000035,000012,000029,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
394,17285000,-000532,000009,000037,000014,000033,000017,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
395,17286000,-000836,000007,000035,000014,000036,000018,000033,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
396,17287000,-001057,000008,000035,000014,000035,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
397,17288000,-001172,000008,000033,000014,000036,000015,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
398,17289000,-001168,000009,000036,000014,000036,000015,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
399,17290000,-001048,000008,000037,000014,000039,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
400,17291000,-000824,000009,000035,000013,000040,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
401,17092000,-001057,000009,000035,000014,000036,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
402,17093000,-001171,000008,000035,000013,000037,000014,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
403,17094000,-001168,000008,000035,000013,000038,000014,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
404,17095000,-001047,000010,000035,000012,000039,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
405,17096000,-000825,000008,000035,000012,000040,000014,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
406,17097000,-000514,000008,000036,000014,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
407,17098000,-000151,000010,000037,000013,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
408,17099000,000228,000009,000036,000012,000039,000010,000025,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
409,17100000,000591,000009,000037,000014,000038,000010,000022,000017,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
410,17101000,000896,000010,000037,000015,000037,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
411,17102000,001114,000007,000037,000014,000035,000011,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
412,17103000,001229,000008,000036,000014,000035,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
413,17104000,001227,000009,000037,000013,000033,000011,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
414,17105000,001106,000008,000037,000014,000033,000013,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
415,17106000,000881,000009,000037,000015,000033,000016,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
416,17107000,000570,000010,000037,000013,000032,000017,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
417,17108000,000209,000009,000036,000014,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
418,17109000,-000170,000009,000036,000011,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
419,17110000,-000531,000007,000035,000012,000032,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
420,17111000,-000838,000007,000035,000013,000033,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
421,17112000,-001059,000009,000037,000015,000037,000017,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
422,17113000,-001171,000010,000036,000013,000036,000016,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
423,17114000,-001168,000009,000035,000013,000038,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
424,17115000,-001047,000008,000036,000013,000039,000014,000035,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
425,17116000,-000823,000007,000036,000013,000040,000013,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
426,17117000,-000512,000008,000037,000015,000040,000012,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
427,17118000,-000153,000009,000035,000013,000040,000011,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
428,17119000,000229,000011,000037,000013,000040,000010,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
429,17120000,000591,000010,000040,000017,000041,000012,000027,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
430,17121000,000895,000009,000036,000015,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
431,17122000,001115,000010,000039,000014,000035,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
432,17123000,001230,000009,000037,000013,000034,000010,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
433,17124000,001228,000010,000037,000013,000033,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
434,17125000,001106,000010,000037,000012,000033,000014,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
435,17126000,000880,000008,000037,000013,000032,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
436,17127000,000571,000010,000041,000017,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
437,17128000,000209,000010,000037,000015,000032,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
438,17129000,-000170,000010,000037,000014,000031,000017,000034,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
439,17130000,-000531,000009,000035,000014,000031,000015,000034,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
440,17131000,-000836,000007,000035,000013,000034,000016,000037,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
441,17132000,-001060,000008,000035,000013,000035,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
442,17133000,-001171,000008,000035,000014,000037,000016,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
443,17134000,-001168,000009,000037,000013,000039,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
444,17135000,-001048,000008,000035,000013,000039,000011,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
445,17136000,-000823,000009,000035,000014,000040,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
446,17137000,-000514,000009,000036,000014,000041,000011,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
447,17138000,-000152,000009,000037,000014,000041,000011,000027,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
448,17139000,000228,000010,000036,000013,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
449,17140000,000590,000009,000036,000014,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
450,17141000,000895,000010,000041,000019,000037,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
451,17142000,001116,000011,000038,000014,000037,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
452,17143000,001230,000011,000037,000013,000035,000012,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
453,17144000,001228,000010,000037,000014,000031,000013,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
454,17145000,001106,000010,000036,000013,000030,000011,000029,000017,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
455,17146000,000881,000010,000037,000013,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
456,17147000,000571,000008,000037,000013,000030,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
457,17148000,000206,000003,000037,000014,000030,000014,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
458,17149000,-000170,000009,000036,000014,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
459,17150000,-000532,000008,000036,000013,000033,000017,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
460,17151000,-000836,000007,000038,000014,000034,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
461,17152000,-001057,000010,000035,000012,000035,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
462,17153000,-001171,000008,000035,000014,000036,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
463,17154000,-001168,000008,000036,000014,000037,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
464,17155000,-001049,000008,000036,000014,000040,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
465,17156000,-000823,000008,000033,000010,000040,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
466,17157000,-000513,000008,000035,000014,000040,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
467,17158000,-000154,000009,000036,000013,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
468,17159000,000228,000008,000037,000012,000043,000013,000029,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
469,17160000,000591,000010,000036,000013,000038,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
470,17161000,000897,000010,000036,000014,000038,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
471,17162000,001116,000010,000038,000015,000036,000011,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
472,17163000,001229,000010,000037,000013,000036,000010,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
473,17164000,001228,000010,000037,000014,000034,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
474,17165000,001107,000009,000039,000014,000035,000015,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
475,17166000,000881,000009,000037,000013,000033,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
476,17167000,000570,000009,000037,000014,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
477,17168000,000209,000009,000037,000014,000032,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
478,17169000,-000172,000008,000036,000014,000032,000015,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
479,17170000,-000533,000008,000035,000013,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
480,17171000,-000837,000009,000033,000010,000035,000015,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
481,17172000,-001057,000009,000035,000014,000036,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
482,17173000,-001172,000010,000036,000014,000037,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
483,17174000,-001168,000008,000036,000013,000037,000015,000037,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
484,17175000,-001046,000011,000036,000013,000039,000015,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
485,17176000,-000822,000008,000036,000014,000040,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
486,17177000,-000514,000008,000036,000014,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
487,17178000,-000152,000008,000038,000016,000037,000009,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
488,17179000,000228,000009,000037,000013,000039,000009,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
489,17180000,000591,000008,000037,000013,000040,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
490,17181000,000895,000010,000036,000013,000037,000010,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
491,17182000,001116,000008,000037,000013,000036,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
492,17183000,001229,000010,000036,000014,000034,000011,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
493,17184000,001228,000010,000041,000018,000033,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
494,17185000,001106,000010,000037,000013,000031,000013,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
495,17186000,000882,000010,000037,000013,000031,000012,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
496,17187000,000571,000009,000037,000012,000033,000015,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
497,17188000,000211,000009,000037,000014,000031,000015,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
498,17189000,-000173,000007,000035,000014,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
499,17190000,-000535,000005,000036,000013,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
500,17191000,-000838,000008,000036,000012,000033,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
501,17192000,-001057,000009,000037,000014,000036,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
502,17193000,-001172,000009,000035,000014,000033,000011,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
503,17194000,-001168,000008,000035,000014,000038,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
504,17195000,-001047,000010,000035,000013,000039,000013,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
505,17196000,-000822,000008,000038,000014,000039,000014,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
506,17197000,-000514,000008,000034,000011,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
507,17198000,-000152,000010,000036,000013,000042,000012,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
508,17199000,000228,000008,000035,000013,000040,000011,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
509,17200000,000589,000010,000037,000014,000041,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
510,17201000,000895,000010,000037,000014,000037,000013,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
511,17202000,001118,000012,000038,000015,000036,000011,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
512,17203000,001232,000012,000035,000014,000036,000012,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
513,17204000,001227,000010,000036,000013,000033,000011,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
514,17205000,001106,000009,000035,000013,000033,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
515,17206000,000879,000008,000037,000014,000035,000015,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
516,17207000,000571,000010,000036,000013,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
517,17208000,000211,000010,000035,000014,000031,000014,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
518,17209000,-000171,000009,000036,000014,000031,000016,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
519,17210000,-000532,000009,000036,000014,000032,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
520,17211000,-000836,000010,000037,000014,000033,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
521,17212000,-001057,000009,000034,000011,000035,000017,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
522,17213000,-001172,000010,000037,000012,000037,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
523,17214000,-001169,000008,000035,000014,000038,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
524,17215000,-001047,000008,000036,000013,000040,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
525,17216000,-000824,000008,000036,000014,000039,000014,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
526,17217000,-000513,000009,000036,000014,000041,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
527,17218000,-000153,000009,000036,000011,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
528,17219000,000228,000009,000041,000017,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
529,17220000,000591,000010,000035,000013,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
530,17221000,000895,000010,000038,000015,000039,000010,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
531,17222000,001114,000009,000036,000013,000036,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
532,17223000,001230,000009,000037,000013,000035,000011,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
533,17224000,001226,000010,000036,000013,000033,000011,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
534,17225000,001109,000011,000037,000013,000032,000013,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
535,17226000,000881,000010,000037,000013,000032,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
536,17227000,000571,000009,000038,000013,000031,000013,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
537,17228000,000209,000009,000037,000011,000030,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
538,17229000,-000170,000009,000035,000013,000031,000014,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
539,17230000,-000531,000008,000036,000013,000034,000014,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
540,17231000,-000838,000009,000037,000014,000033,000018,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
541,17232000,-001058,000009,000037,000012,000036,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
542,17233000,-001172,000007,000034,000012,000034,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
543,17234000,-001168,000009,000035,000012,000039,000018,000029,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
544,17235000,-001047,000008,000036,000013,000038,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
545,17236000,-000822,000009,000036,000013,000041,000014,000032,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
546,17237000,-000512,000010,000036,000013,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
547,17238000,-000152,000010,000036,000014,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
548,17239000,000228,000009,000036,000011,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
549,17240000,000589,000010,000036,000012,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
550,17241000,000895,000009,000037,000013,000037,000008,000026,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
551,17242000,001116,000009,000038,000014,000035,000011,000022,000017,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
552,17243000,001230,000009,000035,000013,000035,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
553,17244000,001227,000011,000037,000014,000031,000012,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
554,17245000,001107,000010,000036,000014,000032,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
555,17246000,000881,000010,000036,000014,000031,000014,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
556,17247000,000571,000010,000038,000014,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
557,17248000,000209,000008,000035,000013,000029,000014,000034,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
558,17249000,-000170,000009,000035,000013,000032,000016,000034,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
559,17250000,-000531,000009,000034,000012,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
560,17251000,-000836,000009,000036,000014,000034,000015,000035,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
561,17252000,-001057,000008,000035,000013,000037,000017,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
562,17253000,-001170,000010,000031,000009,000037,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
563,17254000,-001168,000008,000036,000012,000039,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
564,17255000,-001048,000008,000037,000013,000039,000014,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
565,17256000,-000821,000010,000036,000014,000039,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
566,17257000,-000517,000005,000036,000013,000040,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
567,17258000,-000154,000008,000036,000012,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
568,17259000,000229,000010,000036,000013,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
569,17260000,000591,000010,000040,000016,000042,000013,000027,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
570,17261000,000895,000009,000036,000014,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
571,17262000,001116,000009,000036,000013,000036,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
572,17263000,001230,000009,000037,000013,000035,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
573,17264000,001226,000009,000037,000013,000033,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
574,17265000,001106,000010,000037,000013,000031,000012,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
575,17266000,000878,000008,000035,000012,000033,000014,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
576,17267000,000573,000010,000036,000015,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
577,17268000,000209,000009,000037,000014,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
578,17269000,-000171,000009,000036,000012,000032,000016,000034,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
579,17270000,-000533,000008,000037,000012,000031,000016,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
580,17271000,-000836,000009,000035,000014,000033,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
581,17272000,-001054,000011,000038,000013,000037,000017,000033,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
582,17273000,-001170,000010,000035,000013,000035,000015,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
583,17274000,-001169,000008,000037,000014,000040,000015,000032,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
584,17275000,-001047,000008,000036,000012,000041,000016,000031,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
585,17276000,-000822,000008,000035,000014,000040,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
586,17277000,-000513,000008,000036,000013,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
587,17278000,-000152,000008,000035,000014,000040,000012,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
588,17279000,000228,000011,000038,000015,000038,000012,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
589,17280000,000589,000010,000036,000014,000038,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
590,17281000,000893,000009,000037,000014,000038,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
591,17282000,001114,000010,000036,000014,000035,000009,000026,000017,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
592,17283000,001229,000009,000037,000013,000035,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
593,17284000,001226,000009,000039,000015,000034,000012,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
594,17285000,001102,000007,000036,000013,000031,000013,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
595,17286000,000881,000008,000037,000013,000031,000014,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
596,17287000,000571,000009,000037,000014,000033,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
597,17288000,000209,000009,000035,000011,000029,000015,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
598,17289000,-000170,000008,000036,000014,000031,000014,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
599,17290000,-000532,000008,000036,000014,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
600,17291000,-000836,000008,000036,000014,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
601,17092000,000590,000009,000036,000014,000040,000010,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
602,17093000,000897,000009,000038,000014,000037,000011,000026,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
603,17094000,001115,000010,000036,000014,000034,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
604,17095000,001228,000008,000037,000014,000035,000012,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
605,17096000,001225,000010,000035,000013,000033,000013,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
606,17097000,001106,000010,000037,000013,000032,000012,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
607,17098000,000882,000010,000036,000014,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
608,17099000,000570,000009,000037,000014,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
609,17100000,000209,000009,000036,000013,000031,000016,000036,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
610,17101000,-000172,000007,000036,000013,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
611,17102000,-000530,000010,000035,000012,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
612,17103000,-000836,000008,000035,000014,000033,000017,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
613,17104000,-001057,000008,000035,000012,000035,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
614,17105000,-001172,000009,000037,000016,000038,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
615,17106000,-001168,000008,000035,000014,000037,000013,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
616,17107000,-001049,000008,000035,000014,000037,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
617,17108000,-000823,000008,000034,000013,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
618,17109000,-000514,000008,000035,000011,000040,000014,000029,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
619,17110000,-000150,000012,000034,000011,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
620,17111000,000228,000009,000035,000013,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
621,17112000,000590,000010,000037,000014,000038,000011,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
622,17113000,000897,000010,000037,000013,000037,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
623,17114000,001114,000009,000037,000013,000037,000011,000025,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
624,17115000,001230,000009,000037,000014,000034,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
625,17116000,001228,000010,000037,000013,000032,000011,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
626,17117000,001102,000003,000038,000013,000033,000011,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
627,17118000,000881,000008,000036,000013,000032,000013,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
628,17119000,000570,000009,000034,000013,000032,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
629,17120000,000210,000008,000035,000011,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
630,17121000,-000170,000009,000037,000014,000028,000013,000034,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
631,17122000,-000532,000009,000035,000014,000033,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
632,17123000,-000836,000008,000037,000014,000034,000016,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
633,17124000,-001057,000009,000036,000013,000035,000015,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
634,17125000,-001172,000009,000035,000013,000036,000016,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
635,17126000,-001167,000010,000036,000011,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
636,17127000,-001047,000010,000037,000013,000040,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
637,17128000,-000823,000007,000036,000014,000039,000011,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
638,17129000,-000514,000009,000035,000012,000041,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
639,17130000,-000152,000009,000037,000014,000040,000010,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
640,17131000,000231,000011,000037,000014,000041,000011,000027,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
641,17132000,000590,000010,000037,000014,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
642,17133000,000896,000009,000037,000013,000039,000009,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
643,17134000,001114,000010,000037,000013,000036,000011,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
644,17135000,001230,000009,000037,000013,000039,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
645,17136000,001228,000010,000037,000014,000030,000007,000030,000017,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
646,17137000,001108,000010,000037,000014,000032,000014,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
647,17138000,000881,000009,000036,000015,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
648,17139000,000573,000010,000037,000015,000033,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
649,17140000,000209,000009,000037,000014,000031,000016,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
650,17141000,-000168,000011,000037,000013,000031,000015,000035,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
651,17142000,-000532,000009,000040,000018,000031,000015,000034,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
652,17143000,-000836,000010,000036,000012,000033,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
653,17144000,-001058,000010,000037,000014,000035,000016,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
654,17145000,-001172,000009,000036,000014,000037,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
655,17146000,-001168,000009,000036,000014,000037,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
656,17147000,-001051,000005,000036,000013,000037,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
657,17148000,-000823,000008,000036,000013,000039,000012,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
658,17149000,-000513,000008,000035,000011,000039,000010,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
659,17150000,-000153,000009,000040,000018,000041,000014,000028,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
660,17151000,000228,000009,000036,000014,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
661,17152000,000589,000010,000036,000013,000040,000009,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
662,17153000,000897,000011,000037,000014,000038,000011,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
663,17154000,001115,000010,000038,000014,000036,000011,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
664,17155000,001230,000008,000038,000013,000035,000011,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
665,17156000,001224,000009,000038,000014,000033,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
666,17157000,001107,000010,000037,000015,000033,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
667,17158000,000880,000011,000038,000013,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
668,17159000,000571,000010,000037,000014,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
669,17160000,000209,000008,000038,000013,000031,000014,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
670,17161000,-000170,000008,000036,000014,000031,000016,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
671,17162000,-000530,000008,000037,000013,000031,000017,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
672,17163000,-000836,000009,000036,000013,000033,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
673,17164000,-001058,000008,000035,000012,000035,000018,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
674,17165000,-001170,000009,000039,000014,000035,000014,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
675,17166000,-001168,000009,000035,000012,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
676,17167000,-001048,000009,000038,000011,000040,000013,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
677,17168000,-000823,000009,000035,000013,000040,000014,000029,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
678,17169000,-000514,000008,000036,000013,000040,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
679,17170000,-000153,000009,000035,000014,000041,000012,000027,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
680,17171000,000228,000010,000036,000013,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
681,17172000,000590,000009,000036,000014,000039,000009,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
682,17173000,000893,000010,000036,000014,000036,000010,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
683,17174000,001114,000009,000037,000015,000036,000011,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
684,17175000,001232,000010,000038,000014,000035,000012,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
685,17176000,001228,000011,000038,000014,000033,000012,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
686,17177000,001107,000009,000037,000013,000033,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
687,17178000,000881,000010,000037,000015,000031,000013,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
688,17179000,000571,000009,000036,000014,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
689,17180000,000209,000009,000037,000014,000029,000013,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
690,17181000,-000171,000009,000035,000014,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
691,17182000,-000532,000009,000037,000015,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
692,17183000,-000837,000008,000035,000011,000033,000016,000035,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
693,17184000,-001058,000008,000035,000013,000035,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
694,17185000,-001172,000010,000031,000009,000037,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
695,17186000,-001169,000009,000034,000011,000038,000015,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
696,17187000,-001048,000009,000036,000013,000040,000014,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
697,17188000,-000823,000009,000036,000014,000040,000012,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
698,17189000,-000512,000010,000035,000013,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
699,17190000,-000152,000009,000035,000014,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
700,17191000,000228,000010,000035,000012,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
701,17192000,000590,000010,000038,000015,000041,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
702,17193000,000895,000010,000036,000014,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
703,17194000,001115,000010,000037,000014,000036,000010,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
704,17195000,001230,000009,000037,000014,000035,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
705,17196000,001226,000010,000037,000012,000034,000012,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
706,17197000,001107,000010,000037,000013,000033,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
707,17198000,000884,000013,000039,000016,000033,000013,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
708,17199000,000573,000011,000037,000013,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
709,17200000,000210,000010,000037,000013,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
710,17201000,-000170,000009,000037,000014,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
711,17202000,-000531,000009,000036,000014,000033,000015,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
712,17203000,-000838,000006,000035,000013,000033,000016,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
713,17204000,-001056,000008,000035,000014,000035,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
714,17205000,-001172,000008,000036,000013,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
715,17206000,-001169,000008,000039,000015,000038,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
716,17207000,-001048,000008,000035,000014,000040,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
717,17208000,-000823,000008,000035,000013,000039,000014,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
718,17209000,-000514,000009,000037,000013,000039,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
719,17210000,-000154,000008,000036,000011,000039,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
720,17211000,000228,000009,000031,000010,000039,000011,000025,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
721,17212000,000590,000009,000036,000014,000040,000010,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
722,17213000,000895,000010,000036,000013,000037,000010,000026,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
723,17214000,001116,000010,000036,000014,000037,000012,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
724,17215000,001230,000009,000036,000014,000033,000010,000022,000016,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
725,17216000,001226,000007,000036,000012,000033,000014,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
726,17217000,001102,000004,000037,000013,000031,000012,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
727,17218000,000881,000009,000037,000014,000033,000014,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
728,17219000,000573,000009,000038,000013,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
729,17220000,000210,000008,000036,000011,000031,000013,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
730,17221000,-000171,000010,000036,000013,000033,000018,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
731,17222000,-000531,000009,000035,000013,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
732,17223000,-000836,000008,000036,000014,000035,000016,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
733,17224000,-001056,000009,000037,000013,000035,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
734,17225000,-001169,000013,000037,000013,000036,000015,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
735,17226000,-001168,000008,000035,000014,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
736,17227000,-001047,000009,000037,000013,000037,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
737,17228000,-000823,000009,000035,000013,000039,000013,000027,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
738,17229000,-000515,000009,000036,000014,000039,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
739,17230000,-000158,000003,000036,000014,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
740,17231000,000228,000009,000036,000012,000039,000012,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
741,17232000,000591,000008,000035,000012,000040,000010,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
742,17233000,000895,000008,000040,000017,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
743,17234000,001117,000009,000037,000014,000035,000011,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
744,17235000,001230,000009,000037,000014,000035,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
745,17236000,001226,000011,000038,000014,000033,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
746,17237000,001106,000009,000037,000013,000032,000014,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
747,17238000,000881,000010,000036,000012,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
748,17239000,000568,000007,000035,000012,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
749,17240000,000210,000009,000037,000014,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
750,17241000,-000168,000009,000036,000014,000031,000016,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
751,17242000,-000533,000010,000036,000013,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
752,17243000,-000836,000010,000035,000011,000033,000016,000036,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
753,17244000,-001057,000008,000036,000013,000036,000016,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
754,17245000,-001170,000010,000036,000014,000037,000018,000033,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
755,17246000,-001169,000009,000035,000014,000038,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
756,17247000,-001049,000009,000036,000014,000040,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
757,17248000,-000823,000008,000035,000015,000039,000011,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
758,17249000,-000513,000010,000037,000012,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
759,17250000,-000153,000010,000035,000012,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
760,17251000,000229,000010,000036,000013,000038,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
761,17252000,000591,000011,000037,000014,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
762,17253000,000894,000010,000036,000014,000037,000011,000026,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
763,17254000,001117,000011,000036,000015,000037,000009,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
764,17255000,001230,000010,000036,000014,000036,000012,000026,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
765,17256000,001226,000009,000036,000013,000034,000012,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
766,17257000,001108,000009,000037,000014,000034,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
767,17258000,000875,000004,000037,000014,000031,000013,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
768,17259000,000570,000010,000036,000015,000031,000016,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
769,17260000,000209,000008,000037,000014,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
770,17261000,-000170,000010,000036,000012,000030,000015,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
771,17262000,-000531,000009,000036,000014,000033,000018,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
772,17263000,-000837,000008,000037,000014,000032,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
773,17264000,-001057,000008,000035,000012,000035,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
774,17265000,-001173,000008,000036,000013,000036,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
775,17266000,-001170,000009,000033,000009,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
776,17267000,-001048,000010,000036,000013,000040,000014,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
777,17268000,-000822,000007,000037,000013,000038,000011,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
778,17269000,-000515,000008,000036,000013,000042,000014,000029,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
779,17270000,-000151,000009,000036,000015,000038,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
780,17271000,000225,000006,000036,000014,000038,000009,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
781,17272000,000589,000009,000037,000014,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
782,17273000,000896,000009,000035,000012,000037,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
783,17274000,001116,000010,000035,000012,000037,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
784,17275000,001230,000009,000037,000014,000035,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
785,17276000,001226,000010,000037,000013,000033,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
786,17277000,001106,000011,000036,000013,000033,000012,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
787,17278000,000881,000010,000037,000014,000031,000013,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
788,17279000,000570,000008,000036,000011,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
789,17280000,000211,000009,000035,000012,000031,000016,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
790,17281000,-000170,000009,000037,000014,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
791,17282000,-000531,000010,000036,000014,000031,000016,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
792,17283000,-000836,000009,000037,000014,000034,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
793,17284000,-001056,000008,000035,000013,000034,000017,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
794,17285000,-001174,000007,000036,000014,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
795,17286000,-001169,000008,000035,000014,000037,000015,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
796,17287000,-001047,000009,000035,000013,000039,000014,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
797,17288000,-000823,000010,000037,000014,000037,000009,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
798,17289000,-000513,000008,000035,000013,000040,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
799,17290000,-000152,000010,000035,000015,000040,000010,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
800,17291000,000228,000009,000036,000014,000040,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
801,17092000,-000836,000010,000036,000012,000034,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
802,17093000,-001058,000008,000036,000014,000035,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
803,17094000,-001172,000006,000035,000014,000038,000016,000034,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
804,17095000,-001168,000009,000036,000014,000037,000016,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
805,17096000,-001043,000011,000036,000013,000040,000014,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
806,17097000,-000822,000008,000035,000013,000039,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
807,17098000,-000512,000010,000037,000013,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
808,17099000,-000152,000009,000037,000015,000037,000009,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
809,17100000,000228,000009,000037,000013,000039,000010,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
810,17101000,000589,000010,000037,000013,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
811,17102000,000893,000009,000037,000014,000037,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
812,17103000,001115,000009,000037,000014,000037,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
813,17104000,001229,000010,000038,000014,000034,000012,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
814,17105000,001230,000012,000037,000015,000033,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
815,17106000,001107,000009,000037,000012,000033,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
816,17107000,000881,000010,000037,000014,000032,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
817,17108000,000570,000009,000035,000012,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
818,17109000,000209,000009,000037,000013,000029,000012,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
819,17110000,-000170,000008,000037,000013,000031,000016,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
820,17111000,-000533,000008,000036,000014,000031,000016,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
821,17112000,-000836,000007,000034,000013,000033,000016,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
822,17113000,-001057,000009,000035,000013,000034,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
823,17114000,-001171,000010,000036,000014,000037,000016,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
824,17115000,-001168,000008,000035,000014,000035,000011,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
825,17116000,-001047,000008,000036,000014,000039,000014,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
826,17117000,-000824,000008,000036,000013,000039,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
827,17118000,-000514,000009,000036,000014,000040,000012,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
828,17119000,-000154,000007,000036,000013,000041,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
829,17120000,000228,000009,000034,000011,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
830,17121000,000589,000009,000038,000014,000041,000011,000027,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
831,17122000,000896,000008,000037,000014,000039,000010,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
832,17123000,001116,000009,000037,000014,000036,000011,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
833,17124000,001229,000010,000037,000014,000034,000011,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
834,17125000,001228,000009,000037,000013,000033,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
835,17126000,001104,000007,000036,000014,000032,000013,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
836,17127000,000881,000009,000037,000013,000030,000014,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
837,17128000,000573,000008,000037,000014,000031,000014,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
838,17129000,000209,000009,000037,000013,000031,000014,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
839,17130000,-000169,000009,000037,000014,000029,000014,000031,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
840,17131000,-000530,000008,000037,000013,000032,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
841,17132000,-000836,000008,000036,000013,000035,000018,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
842,17133000,-001057,000010,000035,000012,000036,000016,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
843,17134000,-001170,000009,000035,000012,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
844,17135000,-001168,000009,000037,000014,000039,000014,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
845,17136000,-001047,000008,000036,000013,000039,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
846,17137000,-000824,000009,000036,000013,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
847,17138000,-000512,000008,000037,000013,000043,000015,000030,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
848,17139000,-000152,000008,000035,000014,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
849,17140000,000228,000008,000037,000014,000041,000012,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
850,17141000,000589,000009,000036,000014,000040,000011,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
851,17142000,000895,000009,000036,000014,000037,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
852,17143000,001115,000010,000036,000014,000037,000010,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
853,17144000,001231,000009,000036,000014,000036,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
854,17145000,001228,000011,000037,000014,000030,000007,000029,000016,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
855,17146000,001106,000009,000037,000013,000032,000013,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
856,17147000,000881,000009,000036,000013,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
857,17148000,000570,000009,000035,000013,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
858,17149000,000209,000009,000036,000012,000032,000017,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
859,17150000,-000172,000007,000035,000012,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
860,17151000,-000531,000009,000033,000011,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
861,17152000,-000836,000009,000036,000012,000033,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
862,17153000,-001057,000007,000037,000013,000035,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
863,17154000,-001172,000009,000036,000013,000035,000015,000037,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
864,17155000,-001170,000006,000036,000014,000037,000016,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
865,17156000,-001047,000009,000037,000013,000039,000012,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
866,17157000,-000823,000008,000035,000012,000039,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
867,17158000,-000512,000009,000034,000013,000039,000010,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
868,17159000,-000152,000009,000036,000014,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
869,17160000,000228,000008,000035,000014,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
870,17161000,000591,000010,000037,000013,000039,000011,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
871,17162000,000895,000010,000037,000014,000037,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
872,17163000,001114,000011,000039,000013,000036,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
873,17164000,001232,000010,000041,000018,000035,000011,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
874,17165000,001227,000009,000038,000013,000033,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
875,17166000,001106,000011,000036,000014,000032,000013,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
876,17167000,000881,000009,000036,000014,000033,000013,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
877,17168000,000573,000009,000037,000014,000030,000015,000037,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
878,17169000,000209,000010,000036,000014,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
879,17170000,-000172,000007,000036,000014,000031,000016,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
880,17171000,-000532,000008,000036,000013,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
881,17172000,-000836,000008,000035,000012,000033,000013,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
882,17173000,-001057,000008,000035,000013,000039,000019,000032,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
883,17174000,-001170,000008,000036,000014,000035,000016,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
884,17175000,-001168,000007,000037,000014,000037,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
885,17176000,-001047,000008,000036,000013,000040,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
886,17177000,-000819,000012,000036,000013,000039,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
887,17178000,-000514,000008,000037,000012,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
888,17179000,-000153,000010,000038,000013,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
889,17180000,000228,000009,000036,000013,000040,000011,000025,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
890,17181000,000590,000008,000037,000014,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
891,17182000,000896,000009,000037,000013,000037,000012,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
892,17183000,001116,000010,000037,000014,000036,000012,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
893,17184000,001231,000010,000035,000014,000035,000011,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
894,17185000,001226,000010,000036,000013,000035,000011,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
895,17186000,001106,000008,000037,000012,000033,000013,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
896,17187000,000881,000011,000037,000013,000033,000015,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
897,17188000,000571,000008,000037,000014,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
898,17189000,000211,000010,000035,000014,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
899,17190000,-000170,000007,000035,000014,000031,000018,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
900,17191000,-000533,000007,000035,000013,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
901,17192000,-000838,000010,000033,000010,000035,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
902,17193000,-001057,000008,000036,000014,000034,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
903,17194000,-001172,000008,000035,000014,000035,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
904,17195000,-001169,000008,000035,000014,000038,000013,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
905,17196000,-001044,000012,000037,000014,000041,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
906,17197000,-000823,000008,000035,000013,000040,000011,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
907,17198000,-000514,000009,000036,000013,000039,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
908,17199000,-000152,000009,000037,000015,000037,000009,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
909,17200000,000228,000008,000036,000014,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
910,17201000,000590,000009,000036,000013,000040,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
911,17202000,000895,000010,000036,000013,000040,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
912,17203000,001115,000010,000037,000014,000037,000010,000026,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
913,17204000,001228,000009,000035,000014,000035,000011,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
914,17205000,001226,000010,000035,000014,000033,000012,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
915,17206000,001106,000010,000037,000013,000033,000011,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
916,17207000,000881,000008,000037,000013,000031,000013,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
917,17208000,000570,000008,000038,000013,000030,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
918,17209000,000209,000008,000036,000014,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
919,17210000,-000170,000010,000037,000014,000033,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
920,17211000,-000532,000009,000037,000014,000032,000017,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
921,17212000,-000836,000008,000035,000012,000033,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
922,17213000,-001057,000008,000039,000015,000036,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
923,17214000,-001172,000010,000036,000014,000036,000015,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
924,17215000,-001168,000010,000035,000015,000037,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
925,17216000,-001047,000008,000037,000014,000040,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
926,17217000,-000823,000007,000035,000013,000039,000013,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
927,17218000,-000514,000009,000033,000010,000040,000013,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
928,17219000,-000151,000010,000037,000013,000041,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
929,17220000,000228,000010,000036,000013,000038,000010,000026,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
930,17221000,000591,000009,000037,000014,000039,000011,000025,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
931,17222000,000895,000008,000038,000015,000038,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
932,17223000,001112,000006,000037,000014,000035,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
933,17224000,001230,000010,000037,000013,000034,000011,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
934,17225000,001227,000010,000035,000014,000033,000012,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
935,17226000,001107,000009,000036,000012,000033,000011,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
936,17227000,000881,000008,000037,000014,000036,000017,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
937,17228000,000571,000009,000035,000014,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
938,17229000,000209,000008,000035,000013,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
939,17230000,-000170,000009,000036,000013,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
940,17231000,-000531,000009,000036,000013,000032,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
941,17232000,-000836,000009,000035,000014,000034,000015,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
942,17233000,-001057,000008,000036,000015,000035,000016,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
943,17234000,-001172,000009,000035,000014,000036,000014,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
944,17235000,-001169,000008,000037,000012,000042,000019,000034,000024,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
945,17236000,-001047,000008,000035,000013,000039,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
946,17237000,-000823,000010,000036,000013,000039,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
947,17238000,-000514,000008,000036,000012,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
948,17239000,-000152,000008,000039,000013,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
949,17240000,000228,000009,000036,000014,000035,000006,000027,000017,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
950,17241000,000590,000011,000035,000014,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
package comtrade
|
|
||||||
|
|
||||||
const (
|
|
||||||
// define len of dd/mm/yyyy,HH:MM:SS.mmmmmm style
|
|
||||||
DefaultTimeLayoutLen = 26
|
|
||||||
// dd/mm/yyyy,HH:MM:SS.mmmmmm
|
|
||||||
DateTimeLayout = "02/01/2006,15:04:05.000000"
|
|
||||||
// mm/dd/yyyy,HH:MM:SS.mmmmmm
|
|
||||||
DateTimeLayout2 = "01/02/2006,15:04:05.000000"
|
|
||||||
// mm/dd/yyyy,HH:MM:SS.mmm
|
|
||||||
CosLightDateTimeLayout = "02/01/2006,15:04:05.000"
|
|
||||||
|
|
||||||
Rcv1991 = 1991
|
|
||||||
Rcv1999 = 1999
|
|
||||||
Rcv2013 = 2013
|
|
||||||
Rcv2017 = 2017
|
|
||||||
|
|
||||||
TypeASCII = "ASCII"
|
|
||||||
TypeBinary = "BINARY"
|
|
||||||
TypeBinary32 = "BINARY32"
|
|
||||||
TypeFloat32 = "FLOAT32"
|
|
||||||
|
|
||||||
NoLeapSecInRecord = 0 // 记录中没有闰秒 no leap seconds are included in the record
|
|
||||||
AddLeapSecToRecord = 1 // 在记录中增加闰秒 add leap seconds to the record
|
|
||||||
RemoveLeapSecFromRecord = 2 // 在记录中删除闰秒 remove leap seconds from the record
|
|
||||||
ClockSourceNotDefinedLeapSecFunc = 3 // 时钟源没有闰秒功能 the clock source does not have leap second functionality.
|
|
||||||
|
|
||||||
MonthOutOfRange = "month out of range"
|
|
||||||
)
|
|
||||||
|
|
||||||
type Parser interface {
|
|
||||||
Parse(filePath string, analogNum, digitalNum, endSamp uint32) (*Data, error)
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
package comtrade
|
|
||||||
|
|
||||||
const Release = "v0.0.3"
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
||||||
module wave_record
|
|
||||||
|
|
||||||
go 1.22.5
|
|
||||||
|
|
||||||
require (
|
|
||||||
github.com/fsnotify/fsnotify v1.7.0
|
|
||||||
github.com/natefinch/lumberjack v2.0.0+incompatible
|
|
||||||
github.com/panjf2000/ants/v2 v2.10.0
|
|
||||||
github.com/spf13/viper v1.19.0
|
|
||||||
// github.com/yonwoo9/go-comtrade v0.0.3
|
|
||||||
go.mongodb.org/mongo-driver v1.16.0
|
|
||||||
go.uber.org/zap v1.21.0
|
|
||||||
)
|
|
||||||
|
|
||||||
require (
|
|
||||||
github.com/BurntSushi/toml v1.4.0 // indirect
|
|
||||||
github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect
|
|
||||||
github.com/golang/snappy v0.0.4 // indirect
|
|
||||||
github.com/google/uuid v1.4.0 // indirect
|
|
||||||
github.com/hashicorp/hcl v1.0.0 // indirect
|
|
||||||
github.com/influxdata/influxdb-client-go/v2 v2.13.0
|
|
||||||
github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 // indirect
|
|
||||||
github.com/klauspost/compress v1.17.2 // indirect
|
|
||||||
github.com/magiconair/properties v1.8.7 // indirect
|
|
||||||
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
|
||||||
github.com/montanaflynn/stats v0.7.1 // indirect
|
|
||||||
github.com/oapi-codegen/runtime v1.0.0 // indirect
|
|
||||||
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
|
|
||||||
github.com/sagikazarmark/locafero v0.4.0 // indirect
|
|
||||||
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
|
|
||||||
github.com/sourcegraph/conc v0.3.0 // indirect
|
|
||||||
github.com/spf13/afero v1.11.0 // indirect
|
|
||||||
github.com/spf13/cast v1.6.0 // indirect
|
|
||||||
github.com/spf13/pflag v1.0.5 // indirect
|
|
||||||
github.com/subosito/gotenv v1.6.0 // indirect
|
|
||||||
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
|
|
||||||
github.com/xdg-go/scram v1.1.2 // indirect
|
|
||||||
github.com/xdg-go/stringprep v1.0.4 // indirect
|
|
||||||
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
|
|
||||||
go.uber.org/atomic v1.9.0 // indirect
|
|
||||||
go.uber.org/multierr v1.10.0 // indirect
|
|
||||||
golang.org/x/crypto v0.22.0 // indirect
|
|
||||||
golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect
|
|
||||||
golang.org/x/net v0.23.0 // indirect
|
|
||||||
golang.org/x/sync v0.7.0 // indirect
|
|
||||||
golang.org/x/sys v0.19.0 // indirect
|
|
||||||
golang.org/x/text v0.14.0 // indirect
|
|
||||||
gopkg.in/ini.v1 v1.67.0 // indirect
|
|
||||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
|
|
||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
|
||||||
)
|
|
||||||
|
|
@ -1,175 +0,0 @@
|
||||||
github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
|
|
||||||
github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
|
|
||||||
github.com/RaveNoX/go-jsoncommentstrip v1.0.0/go.mod h1:78ihd09MekBnJnxpICcwzCMzGrKSKYe4AqU6PDYYpjk=
|
|
||||||
github.com/apapsch/go-jsonmerge/v2 v2.0.0 h1:axGnT1gRIfimI7gJifB699GoE/oq+F2MU7Dml6nw9rQ=
|
|
||||||
github.com/apapsch/go-jsonmerge/v2 v2.0.0/go.mod h1:lvDnEdqiQrp0O42VQGgmlKpxL1AP2+08jFMw88y4klk=
|
|
||||||
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
|
|
||||||
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
|
|
||||||
github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w=
|
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
|
||||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
|
|
||||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
|
||||||
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
|
|
||||||
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
|
|
||||||
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
|
|
||||||
github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
|
|
||||||
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
|
|
||||||
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
|
||||||
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
|
||||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
|
||||||
github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=
|
|
||||||
github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
|
||||||
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
|
|
||||||
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
|
|
||||||
github.com/influxdata/influxdb-client-go/v2 v2.13.0 h1:ioBbLmR5NMbAjP4UVA5r9b5xGjpABD7j65pI8kFphDM=
|
|
||||||
github.com/influxdata/influxdb-client-go/v2 v2.13.0/go.mod h1:k+spCbt9hcvqvUiz0sr5D8LolXHqAAOfPw9v/RIRHl4=
|
|
||||||
github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 h1:W9WBk7wlPfJLvMCdtV4zPulc4uCPrlywQOmbFOhgQNU=
|
|
||||||
github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo=
|
|
||||||
github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE=
|
|
||||||
github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4=
|
|
||||||
github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
|
|
||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
|
||||||
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
|
|
||||||
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
|
|
||||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
|
||||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
|
||||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
|
||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
|
||||||
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
|
|
||||||
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
|
|
||||||
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
|
|
||||||
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
|
||||||
github.com/montanaflynn/stats v0.7.1 h1:etflOAAHORrCC44V+aR6Ftzort912ZU+YLiSTuV8eaE=
|
|
||||||
github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=
|
|
||||||
github.com/natefinch/lumberjack v2.0.0+incompatible h1:4QJd3OLAMgj7ph+yZTuX13Ld4UpgHp07nNdFX7mqFfM=
|
|
||||||
github.com/natefinch/lumberjack v2.0.0+incompatible/go.mod h1:Wi9p2TTF5DG5oU+6YfsmYQpsTIOm0B1VNzQg9Mw6nPk=
|
|
||||||
github.com/oapi-codegen/runtime v1.0.0 h1:P4rqFX5fMFWqRzY9M/3YF9+aPSPPB06IzP2P7oOxrWo=
|
|
||||||
github.com/oapi-codegen/runtime v1.0.0/go.mod h1:LmCUMQuPB4M/nLXilQXhHw+BLZdDb18B34OO356yJ/A=
|
|
||||||
github.com/panjf2000/ants/v2 v2.10.0 h1:zhRg1pQUtkyRiOFo2Sbqwjp0GfBNo9cUY2/Grpx1p+8=
|
|
||||||
github.com/panjf2000/ants/v2 v2.10.0/go.mod h1:7ZxyxsqE4vvW0M7LSD8aI3cKwgFhBHbxnlN8mDqHa1I=
|
|
||||||
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
|
|
||||||
github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
|
|
||||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
|
||||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
|
||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
|
||||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
|
|
||||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
|
||||||
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
|
|
||||||
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
|
|
||||||
github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ=
|
|
||||||
github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4=
|
|
||||||
github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE=
|
|
||||||
github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
|
|
||||||
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
|
|
||||||
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
|
|
||||||
github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=
|
|
||||||
github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY=
|
|
||||||
github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0=
|
|
||||||
github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
|
|
||||||
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
|
||||||
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
|
||||||
github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI=
|
|
||||||
github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg=
|
|
||||||
github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad/go.mod h1:qLr4V1qq6nMqFKkMo8ZTx3f+BZEkzsRUY10Xsm2mwU0=
|
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
|
||||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
|
||||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
|
||||||
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
|
|
||||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
|
||||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
|
||||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
|
||||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
|
||||||
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
|
||||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
|
||||||
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
|
||||||
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
|
||||||
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
|
|
||||||
github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
|
|
||||||
github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=
|
|
||||||
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
|
|
||||||
github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY=
|
|
||||||
github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4=
|
|
||||||
github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8=
|
|
||||||
github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM=
|
|
||||||
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA=
|
|
||||||
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
|
|
||||||
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
|
||||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
|
||||||
go.mongodb.org/mongo-driver v1.16.0 h1:tpRsfBJMROVHKpdGyc1BBEzzjDUWjItxbVSZ8Ls4BQ4=
|
|
||||||
go.mongodb.org/mongo-driver v1.16.0/go.mod h1:oB6AhJQvFQL4LEHyXi6aJzQJtBiTQHiAd83l0GdFaiw=
|
|
||||||
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
|
||||||
go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
|
|
||||||
go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
|
||||||
go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI=
|
|
||||||
go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
|
|
||||||
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
|
|
||||||
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.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8=
|
|
||||||
go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw=
|
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
|
||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
|
||||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
|
||||||
golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
|
|
||||||
golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
|
|
||||||
golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g=
|
|
||||||
golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k=
|
|
||||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
|
||||||
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
|
||||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
|
||||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
|
||||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
|
||||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
|
||||||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
|
||||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
|
||||||
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
|
|
||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
|
|
||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
|
||||||
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
|
|
||||||
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
|
||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
|
|
||||||
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
|
||||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
|
||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
|
||||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
|
||||||
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
|
|
||||||
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
|
||||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
|
||||||
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
|
||||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
|
||||||
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
|
||||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
|
||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
|
||||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
|
||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
|
||||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
|
|
||||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
|
||||||
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
|
|
||||||
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
|
||||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
|
|
||||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
|
|
||||||
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
|
|
||||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
|
||||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
|
||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
|
||||||
|
|
@ -1,84 +0,0 @@
|
||||||
// Package log define log struct of wave record project
|
|
||||||
package log
|
|
||||||
|
|
||||||
import (
|
|
||||||
"os"
|
|
||||||
"sync"
|
|
||||||
|
|
||||||
"wave_record/constant"
|
|
||||||
|
|
||||||
"github.com/natefinch/lumberjack"
|
|
||||||
"go.uber.org/zap"
|
|
||||||
"go.uber.org/zap/zapcore"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
logger *zap.Logger
|
|
||||||
once sync.Once
|
|
||||||
)
|
|
||||||
|
|
||||||
// CutLogConfig define log config of wave record project
|
|
||||||
type CutLogConfig struct {
|
|
||||||
Mode string `json:"mode"` // Mode 日志模式 development、production
|
|
||||||
Level string `json:"level"` // Level 最低日志等级,DEBUG<INFO<WARN<ERROR<FATAL INFO-->收集INFO等级以上的日志
|
|
||||||
FileName string `json:"file_name"` // FileName 日志文件位置
|
|
||||||
MaxSize int `json:"max_size"` // MaxSize 进行切割之前,日志文件的最大大小(MB为单位)默认为100MB
|
|
||||||
MaxAge int `json:"max_age"` // MaxAge 是根据文件名中编码的时间戳保留旧日志文件的最大天数。
|
|
||||||
MaxBackups int `json:"max_backups"` // MaxBackups 是要保留的旧日志文件的最大数量。默认是保留所有旧的日志文件(尽管 MaxAge 可能仍会导致它们被删除)
|
|
||||||
}
|
|
||||||
|
|
||||||
// getEncoder responsible for setting the log format for encoding
|
|
||||||
func getEncoder() zapcore.Encoder {
|
|
||||||
encoderConfig := zap.NewProductionEncoderConfig()
|
|
||||||
// serialization time eg:2006-01-02 15:04:05
|
|
||||||
encoderConfig.EncodeTime = zapcore.TimeEncoderOfLayout("2006-01-02 15:04:05")
|
|
||||||
encoderConfig.TimeKey = "time"
|
|
||||||
encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
|
|
||||||
encoderConfig.EncodeCaller = zapcore.ShortCallerEncoder
|
|
||||||
return zapcore.NewJSONEncoder(encoderConfig)
|
|
||||||
}
|
|
||||||
|
|
||||||
// getLogWriter responsible for setting the location of log storage
|
|
||||||
func getLogWriter(mode, filename string, maxsize, maxBackup, maxAge int) zapcore.WriteSyncer {
|
|
||||||
lumberJackLogger := &lumberjack.Logger{
|
|
||||||
Filename: filename, // log file position
|
|
||||||
MaxSize: maxsize, // log file maxsize
|
|
||||||
MaxAge: maxAge, // maximum number of day files retained
|
|
||||||
MaxBackups: maxBackup, // maximum number of old files retained
|
|
||||||
Compress: false, // whether to compress
|
|
||||||
}
|
|
||||||
|
|
||||||
syncConsole := zapcore.AddSync(os.Stderr)
|
|
||||||
if mode == constant.DevelopmentLogMode {
|
|
||||||
return syncConsole
|
|
||||||
}
|
|
||||||
|
|
||||||
syncFile := zapcore.AddSync(lumberJackLogger)
|
|
||||||
return zapcore.NewMultiWriteSyncer(syncFile, syncConsole)
|
|
||||||
}
|
|
||||||
|
|
||||||
// initLogger return successfully initialized zap logger
|
|
||||||
func initLogger(lCfg CutLogConfig) *zap.Logger {
|
|
||||||
writeSyncer := getLogWriter(lCfg.Mode, lCfg.FileName, lCfg.MaxSize, lCfg.MaxBackups, lCfg.MaxAge)
|
|
||||||
encoder := getEncoder()
|
|
||||||
|
|
||||||
l := new(zapcore.Level)
|
|
||||||
err := l.UnmarshalText([]byte(lCfg.Level))
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
core := zapcore.NewCore(encoder, writeSyncer, l)
|
|
||||||
logger = zap.New(core, zap.AddCaller())
|
|
||||||
zap.ReplaceGlobals(logger)
|
|
||||||
|
|
||||||
return logger
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetLoggerInstance return instance of zap logger
|
|
||||||
func GetLoggerInstance(lCfg CutLogConfig) *zap.Logger {
|
|
||||||
once.Do(func() {
|
|
||||||
logger = initLogger(lCfg)
|
|
||||||
})
|
|
||||||
return logger
|
|
||||||
}
|
|
||||||
|
|
@ -1,82 +0,0 @@
|
||||||
// Package main define wave record project entry function
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"flag"
|
|
||||||
"sync"
|
|
||||||
|
|
||||||
"wave_record/config"
|
|
||||||
"wave_record/database"
|
|
||||||
"wave_record/fileparse"
|
|
||||||
"wave_record/log"
|
|
||||||
|
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
|
||||||
"go.uber.org/zap"
|
|
||||||
|
|
||||||
influxdb2 "github.com/influxdata/influxdb-client-go/v2"
|
|
||||||
"github.com/panjf2000/ants/v2"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
comtradeConfigDir = flag.String("comtrade_config_dir", "./config", "config file dir of wave record project")
|
|
||||||
comtradeConfigName = flag.String("comtrade_config_name", "config", "config file name of wave record project")
|
|
||||||
comtradeConfigType = flag.String("comtrade_config_type", "yaml", "config file type of wave record project")
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
waveRecordConfig config.WaveRecordConfig
|
|
||||||
addChan chan string
|
|
||||||
delChan chan string
|
|
||||||
comtradeMap sync.Map
|
|
||||||
mongoDBClient *mongo.Client
|
|
||||||
influxDBClient *influxdb2.Client
|
|
||||||
logger *zap.Logger
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
addChan = make(chan string, 10)
|
|
||||||
delChan = make(chan string, 10)
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
flag.Parse()
|
|
||||||
ctx := context.TODO()
|
|
||||||
|
|
||||||
waveRecordConfig = config.ReadAndInitConfig(*comtradeConfigDir, *comtradeConfigName, *comtradeConfigType)
|
|
||||||
|
|
||||||
// init mongoDBClient
|
|
||||||
mongoDBClient = database.GetMongoDBInstance(ctx, waveRecordConfig.MongoDBURI)
|
|
||||||
|
|
||||||
defer func() {
|
|
||||||
if err := mongoDBClient.Disconnect(ctx); err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
// init influxDBClient
|
|
||||||
influxDBClient = database.GetInfluxDBInstance(waveRecordConfig.InfluxDBURL, waveRecordConfig.InfluxDBToken)
|
|
||||||
defer func() {
|
|
||||||
client := *influxDBClient
|
|
||||||
client.Close()
|
|
||||||
}()
|
|
||||||
|
|
||||||
// init logger
|
|
||||||
logger = log.GetLoggerInstance(waveRecordConfig.LCfg)
|
|
||||||
defer logger.Sync()
|
|
||||||
|
|
||||||
pool, err := ants.NewPoolWithFunc(waveRecordConfig.ParseConcurrentQuantity, fileparse.ParseFunc)
|
|
||||||
if err != nil {
|
|
||||||
logger.Error("init concurrent parse task pool failed", zap.Error(err))
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
defer ants.Release()
|
|
||||||
|
|
||||||
go fileparse.DirWatch(waveRecordConfig.MonitorDir, addChan)
|
|
||||||
|
|
||||||
go fileparse.MoveComtradeFile(waveRecordConfig.BackupDir, &comtradeMap, delChan)
|
|
||||||
|
|
||||||
fileparse.TraverseMonitorDir(ctx, waveRecordConfig.MonitorDir, waveRecordConfig.MongoDBDataBase, &comtradeMap, addChan, delChan, pool)
|
|
||||||
|
|
||||||
fileparse.ParseComtradeFile(ctx, waveRecordConfig.MonitorDir, waveRecordConfig.MongoDBDataBase, addChan, delChan, &comtradeMap, pool)
|
|
||||||
}
|
|
||||||
|
|
@ -1,60 +0,0 @@
|
||||||
// Package util define universal utility functions
|
|
||||||
package util
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
"io/fs"
|
|
||||||
"os"
|
|
||||||
"os/exec"
|
|
||||||
"path/filepath"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"wave_record/constant"
|
|
||||||
)
|
|
||||||
|
|
||||||
// FileExists return boolean value result specifying whether the file path exists
|
|
||||||
func FileExists(filePath string) bool {
|
|
||||||
_, err := os.Stat(filePath)
|
|
||||||
// return !os.IsNotExist(err)
|
|
||||||
return !errors.Is(err, fs.ErrNotExist)
|
|
||||||
}
|
|
||||||
|
|
||||||
func commandExec(name string, args ...string) (outString string, err error) {
|
|
||||||
var stdout bytes.Buffer
|
|
||||||
var stderr bytes.Buffer
|
|
||||||
|
|
||||||
cmd := exec.Command(name, args...)
|
|
||||||
cmd.Stdout = &stdout
|
|
||||||
cmd.Stderr = &stderr
|
|
||||||
|
|
||||||
err = cmd.Run()
|
|
||||||
outString = stdout.String()
|
|
||||||
if err != nil {
|
|
||||||
err = fmt.Errorf("exec failed:%v,stderr=%s. name=%s,args=%v", err, stderr.String(), name, args)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// RemoveFile return file movement result
|
|
||||||
func RemoveFile(src, dst string) error {
|
|
||||||
_, err := commandExec("mv", src, dst)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// FileNameConvert return the absolute path of the converted config file or data file
|
|
||||||
func FileNameConvert(filePath string) (string, error) {
|
|
||||||
dirPath := filepath.Dir(filePath)
|
|
||||||
fileName := filepath.Base(filePath)
|
|
||||||
name := strings.Split(fileName, ".")[0]
|
|
||||||
suffix := filepath.Ext(fileName)
|
|
||||||
if suffix == constant.ConfigFileSuffix {
|
|
||||||
fileName := strings.Join([]string{name, constant.DataFileSuffix}, "")
|
|
||||||
return filepath.Join(dirPath, fileName), nil
|
|
||||||
} else if suffix == constant.DataFileSuffix {
|
|
||||||
fileName := strings.Join([]string{name, constant.ConfigFileSuffix}, "")
|
|
||||||
return filepath.Join(dirPath, fileName), nil
|
|
||||||
}
|
|
||||||
return "", constant.ErrNotSupportFileType
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue