// Path: core/src/main/java/fixio/fixprotocol/FixConst.java
// public class FixConst {
// 
//     public static final ZoneId DEFAULT_ZONE_ID = ZoneOffset.UTC;
// 
//     public static final String DATE_PATTERN = "yyyyMMdd";
//     //
//     public static final String TIME_PATTERN_SECONDS = "HH:mm:ss";
//     public static final String TIME_PATTERN_MILLIS = "HH:mm:ss.SSS";
//     public static final String TIME_PATTERN_MICROS = "HH:mm:ss.SSSSSS";
//     public static final String TIME_PATTERN_NANOS = "HH:mm:ss.nnnnnnnnn";
//     public static final String TIME_PATTERN_PICOS = "HH:mm:ss.nnnnnnnnn'000'"; // not supported by java.time at the moment, use nanos and pad '000'
//     //
//     public static final String DATE_TIME_PATTERN_SECONDS = DATE_PATTERN + "-" + TIME_PATTERN_SECONDS;
//     public static final String DATE_TIME_PATTERN_MILLIS = DATE_PATTERN + "-" + TIME_PATTERN_MILLIS;
//     public static final String DATE_TIME_PATTERN_MICROS = DATE_PATTERN + "-" + TIME_PATTERN_MICROS;
//     public static final String DATE_TIME_PATTERN_NANOS = DATE_PATTERN + "-" + TIME_PATTERN_NANOS;
//     public static final String DATE_TIME_PATTERN_PICOS = DATE_PATTERN + "-" + TIME_PATTERN_PICOS;
//     //
//     public static final int TIME_PATTERN_SECONDS_LENGTH = TIME_PATTERN_SECONDS.length();
//     public static final int TIME_PATTERN_MILLIS_LENGTH = TIME_PATTERN_MILLIS.length();
//     public static final int TIME_PATTERN_MICROS_LENGTH = TIME_PATTERN_MICROS.length();
//     public static final int TIME_PATTERN_NANOS_LENGTH = TIME_PATTERN_NANOS.length();
//     public static final int TIME_PATTERN_PICOS_LENGTH = TIME_PATTERN_PICOS.length();
//     //
//     public static final int DATE_TIME_PATTERN_SECONDS_LENGTH = DATE_TIME_PATTERN_SECONDS.length();
//     public static final int DATE_TIME_PATTERN_MILLIS_LENGTH = DATE_TIME_PATTERN_MILLIS.length();
//     public static final int DATE_TIME_PATTERN_MICROS_LENGTH = DATE_TIME_PATTERN_MICROS.length();
//     public static final int DATE_TIME_PATTERN_NANOS_LENGTH = DATE_TIME_PATTERN_NANOS.length();
//     public static final int DATE_TIME_PATTERN_PICOS_LENGTH = DATE_TIME_PATTERN_PICOS.length();
//     //
//     public static final DateTimeFormatterWrapper DATE_FORMATTER = new DateTimeFormatterWrapper(DATE_PATTERN, DEFAULT_ZONE_ID);
//     //
//     public static final DateTimeFormatterWrapper TIME_FORMATTER_SECONDS = new DateTimeFormatterWrapper(TIME_PATTERN_SECONDS, DEFAULT_ZONE_ID);
//     public static final DateTimeFormatterWrapper TIME_FORMATTER_MILLIS = new DateTimeFormatterWrapper(TIME_PATTERN_MILLIS, DEFAULT_ZONE_ID);
//     public static final DateTimeFormatterWrapper TIME_FORMATTER_MICROS = new DateTimeFormatterWrapper(TIME_PATTERN_MICROS, DEFAULT_ZONE_ID);
//     public static final DateTimeFormatterWrapper TIME_FORMATTER_NANOS = new DateTimeFormatterWrapper(TIME_PATTERN_NANOS, DEFAULT_ZONE_ID);
//     public static final DateTimeFormatterWrapper TIME_FORMATTER_PICOS = new DateTimeFormatterWrapper(TIME_PATTERN_PICOS, DEFAULT_ZONE_ID);
//     //
//     public static final DateTimeFormatterWrapper DATE_TIME_FORMATTER_SECONDS = new DateTimeFormatterWrapper(DATE_TIME_PATTERN_SECONDS, DEFAULT_ZONE_ID);
//     public static final DateTimeFormatterWrapper DATE_TIME_FORMATTER_MILLIS = new DateTimeFormatterWrapper(DATE_TIME_PATTERN_MILLIS, DEFAULT_ZONE_ID);
//     public static final DateTimeFormatterWrapper DATE_TIME_FORMATTER_MICROS = new DateTimeFormatterWrapper(DATE_TIME_PATTERN_MICROS, DEFAULT_ZONE_ID);
//     public static final DateTimeFormatterWrapper DATE_TIME_FORMATTER_NANOS = new DateTimeFormatterWrapper(DATE_TIME_PATTERN_NANOS, DEFAULT_ZONE_ID);
//     public static final DateTimeFormatterWrapper DATE_TIME_FORMATTER_PICOS = new DateTimeFormatterWrapper(DATE_TIME_PATTERN_PICOS, DEFAULT_ZONE_ID);
// 
//     private FixConst() {
//         // to prevent instatiation
//     }
// 
//     public enum TimeStampPrecision {
//         SECONDS,
//         MILLIS,
//         MICROS,
//         NANOS,
//         PICOS
//     }
// 
// }


import fixio.fixprotocol.FixConst;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
        return properties;
    }

    private void loadProperties(String resource) {
        try {
            final InputStream inputStream = getClass().getResourceAsStream(resource);
            if (inputStream == null) {
                LOGGER.error("Can't read FixSessionSettings from {}", resource);
                throw new IllegalArgumentException("Resource not found: " + resource);
            }
            properties.load(inputStream);
        } catch (IOException e) {
            String message = "Unable to load FixSessionSettings from " + resource;
            LOGGER.error(message, e);
            throw new IllegalArgumentException(message, e);
        }
    }

    @Override
    public boolean isResetMsgSeqNum() {
        return Boolean.parseBoolean(properties.getProperty("ResetOnLogon", "true"));
    }

    @Override
    public int getHeartbeatInterval() {
        return Integer.parseInt(properties.getProperty("HeartBtInt", "60"));
    }

    @Override
    public String getTimeStampPrecision() {// "SECONDS", "MILLIS", "MICROS", "NANOS". Default is "MILLIS"
// Path: core/src/main/java/fixio/fixprotocol/FixConst.java
// public class FixConst {
// 
//     public static final ZoneId DEFAULT_ZONE_ID = ZoneOffset.UTC;
// 
//     public static final String DATE_PATTERN = "yyyyMMdd";
//     //
//     public static final String TIME_PATTERN_SECONDS = "HH:mm:ss";
//     public static final String TIME_PATTERN_MILLIS = "HH:mm:ss.SSS";
//     public static final String TIME_PATTERN_MICROS = "HH:mm:ss.SSSSSS";
//     public static final String TIME_PATTERN_NANOS = "HH:mm:ss.nnnnnnnnn";
//     public static final String TIME_PATTERN_PICOS = "HH:mm:ss.nnnnnnnnn'000'"; // not supported by java.time at the moment, use nanos and pad '000'
//     //
//     public static final String DATE_TIME_PATTERN_SECONDS = DATE_PATTERN + "-" + TIME_PATTERN_SECONDS;
//     public static final String DATE_TIME_PATTERN_MILLIS = DATE_PATTERN + "-" + TIME_PATTERN_MILLIS;
//     public static final String DATE_TIME_PATTERN_MICROS = DATE_PATTERN + "-" + TIME_PATTERN_MICROS;
//     public static final String DATE_TIME_PATTERN_NANOS = DATE_PATTERN + "-" + TIME_PATTERN_NANOS;
//     public static final String DATE_TIME_PATTERN_PICOS = DATE_PATTERN + "-" + TIME_PATTERN_PICOS;
//     //
//     public static final int TIME_PATTERN_SECONDS_LENGTH = TIME_PATTERN_SECONDS.length();
//     public static final int TIME_PATTERN_MILLIS_LENGTH = TIME_PATTERN_MILLIS.length();
//     public static final int TIME_PATTERN_MICROS_LENGTH = TIME_PATTERN_MICROS.length();
//     public static final int TIME_PATTERN_NANOS_LENGTH = TIME_PATTERN_NANOS.length();
//     public static final int TIME_PATTERN_PICOS_LENGTH = TIME_PATTERN_PICOS.length();
//     //
//     public static final int DATE_TIME_PATTERN_SECONDS_LENGTH = DATE_TIME_PATTERN_SECONDS.length();
//     public static final int DATE_TIME_PATTERN_MILLIS_LENGTH = DATE_TIME_PATTERN_MILLIS.length();
//     public static final int DATE_TIME_PATTERN_MICROS_LENGTH = DATE_TIME_PATTERN_MICROS.length();
//     public static final int DATE_TIME_PATTERN_NANOS_LENGTH = DATE_TIME_PATTERN_NANOS.length();
//     public static final int DATE_TIME_PATTERN_PICOS_LENGTH = DATE_TIME_PATTERN_PICOS.length();
//     //
//     public static final DateTimeFormatterWrapper DATE_FORMATTER = new DateTimeFormatterWrapper(DATE_PATTERN, DEFAULT_ZONE_ID);
//     //
//     public static final DateTimeFormatterWrapper TIME_FORMATTER_SECONDS = new DateTimeFormatterWrapper(TIME_PATTERN_SECONDS, DEFAULT_ZONE_ID);
//     public static final DateTimeFormatterWrapper TIME_FORMATTER_MILLIS = new DateTimeFormatterWrapper(TIME_PATTERN_MILLIS, DEFAULT_ZONE_ID);
//     public static final DateTimeFormatterWrapper TIME_FORMATTER_MICROS = new DateTimeFormatterWrapper(TIME_PATTERN_MICROS, DEFAULT_ZONE_ID);
//     public static final DateTimeFormatterWrapper TIME_FORMATTER_NANOS = new DateTimeFormatterWrapper(TIME_PATTERN_NANOS, DEFAULT_ZONE_ID);
//     public static final DateTimeFormatterWrapper TIME_FORMATTER_PICOS = new DateTimeFormatterWrapper(TIME_PATTERN_PICOS, DEFAULT_ZONE_ID);
//     //
//     public static final DateTimeFormatterWrapper DATE_TIME_FORMATTER_SECONDS = new DateTimeFormatterWrapper(DATE_TIME_PATTERN_SECONDS, DEFAULT_ZONE_ID);
//     public static final DateTimeFormatterWrapper DATE_TIME_FORMATTER_MILLIS = new DateTimeFormatterWrapper(DATE_TIME_PATTERN_MILLIS, DEFAULT_ZONE_ID);
//     public static final DateTimeFormatterWrapper DATE_TIME_FORMATTER_MICROS = new DateTimeFormatterWrapper(DATE_TIME_PATTERN_MICROS, DEFAULT_ZONE_ID);
//     public static final DateTimeFormatterWrapper DATE_TIME_FORMATTER_NANOS = new DateTimeFormatterWrapper(DATE_TIME_PATTERN_NANOS, DEFAULT_ZONE_ID);
//     public static final DateTimeFormatterWrapper DATE_TIME_FORMATTER_PICOS = new DateTimeFormatterWrapper(DATE_TIME_PATTERN_PICOS, DEFAULT_ZONE_ID);
// 
//     private FixConst() {
//         // to prevent instatiation
//     }
// 
//     public enum TimeStampPrecision {
//         SECONDS,
//         MILLIS,
//         MICROS,
//         NANOS,
//         PICOS
//     }
// 
// }


// Path: core/src/main/java/fixio/netty/pipeline/client/PropertyFixSessionSettingsProviderImpl.java
import fixio.fixprotocol.FixConst;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

        return properties;
    }

    private void loadProperties(String resource) {
        try {
            final InputStream inputStream = getClass().getResourceAsStream(resource);
            if (inputStream == null) {
                LOGGER.error("Can't read FixSessionSettings from {}", resource);
                throw new IllegalArgumentException("Resource not found: " + resource);
            }
            properties.load(inputStream);
        } catch (IOException e) {
            String message = "Unable to load FixSessionSettings from " + resource;
            LOGGER.error(message, e);
            throw new IllegalArgumentException(message, e);
        }
    }

    @Override
    public boolean isResetMsgSeqNum() {
        return Boolean.parseBoolean(properties.getProperty("ResetOnLogon", "true"));
    }

    @Override
    public int getHeartbeatInterval() {
        return Integer.parseInt(properties.getProperty("HeartBtInt", "60"));
    }

    @Override
    public String getTimeStampPrecision() {// "SECONDS", "MILLIS", "MICROS", "NANOS". Default is "MILLIS"
        return properties.getProperty("TimeStampPrecision", FixConst.TimeStampPrecision.MILLIS.toString()).trim();